  solution approaches  approximation algorithms  constructive heuristics  dynamic programming  genetic algorithms  greedy algorithm  greedy randomized adaptive search procedures  heuristics  integer programming  local search  metaheuristics  multistart  polynomially solvable special cases  0-SAT  planar clique  pseudo-polynomial algorithms  semi-greedy algorithms  simulated annealing  tabu search  