complete algorithms