Quantum algorithms for combinatorial optimization