home

Welcome to the great heuristics wiki
(by @galiN and @mrOhad ).

Many algorithmic problems consider as NP-hard which mean that it can take years for a supercomputer to solve the problem for a large input. In order to speed up the algorithm we are using experience based techniques, which are related to the specific problem, yet the usage of those heuristics is a trade off with optimality. By definition, Heuristics are "rules of thumb", educated guesses, intuitive judgments or simply common sense. A heuristic method is particularly used to rapidly come to a solution that is hoped to be close to the best possible answer, or 'optimal solution'. Heuristics are typically used when there is no known method to find an optimal solution, under the given constraints (of time, space etc.) or at all. There are different types of heuristics, the most well known type of heuristic is a heuristic function which can be used as part of some algorithms as the IDA* and promises optimality in case of admissibility, heuristic can be the entire algorithm as well that works by a specific rule of thumb and it can be a utility that makes algorithm more efficient like the pattern database heuristic which is similar to the way that a human brain works.
 * (New entries: IDA*, Misspelling) **
 * < **Known Problems**:
 * N-Puzzle
 * Graph coloring
 * Rubik's cube
 * Travelling salesman problem
 * Misspelling
 * Phonetic Misspelling
 * Ongoing work:**
 * Chess
 * Tower of Hanoi || **Heuristics** :
 * Manhattan distance
 * 3D Manhattan distance
 * pattern database
 * First Fit
 * Degree based ordering
 * Hamming distance
 * Levenshtein distance
 * Misplaced tiles
 * Nilsson's Sequence Score
 * Tiles out of row and column
 * N-MaxSwap
 * N-Swap
 * Nearest Neighbor
 * Greedy
 * Insertion Heuristics
 * Christofides
 * X-Y

||< **Known Search Algorithms:**
 * IDA*
 * A*
 * [|D*]
 * [|IDDFS]
 * [|Heuristic function]
 * [|Brute force]

||