On some simple heuristics for combinatorial optimization
Many combinatorial optimization problems that are of practical and theoretical interest are NP-hard. Assuming P≠NP, there is no efficient (i.e. polynomial time) algorithm which can solve instances of such problems to optimality. In some cases, it is possible to approximate the optimal solution within a reasonable bounds efficiently. In other cases, not much is known from theoretical point of view. However, practical instances can in many cases still be solved with acceptable solution quality within reasonable time. There are basically two complementing heuristic approaches. On one hand, there is an extensive area of so-called metaheuristics where the basic idea is to search the space of all feasible solutions by either small changes of the existing solution(s) or combining the information from the known solutions to obtain new candidates. These metaheuristics are very time consuming. On the other hand, there are usually very fast constructive heuristics that build feasible solutions, but the quality of solutions expected is sometimes very poor.