greater than the sum of both parts.

+<h3 id="new_solver_is_too_slow">I Started Writing a Freecell Solver (of my own) but it is too slow. What can I do?</h3>

+The problem with many naïve Freecell solving solutions is that, while they

+can succeed in solving many Freecell deals, they may fail spectacularly in

+the general case. Furthermore, Generalised Freecell (where there is an

+arbitrary number of ranks) was shown to be

+an <a href="http://en.wikipedia.org/wiki/NP-complete">NP-complete problem</a>

+and as a result, it is unlikely that no efficient solution for solving that

+You can try inspecting the code of Freecell Solver or one of the

+<a href="$(ROOT)/links.html#other_solvers">other solvers</a> for insights, but

+note that their code (and especially Freecell Solver's) may be somewhat

+complex, and hard to understand for people with relatively little experience.

+You can also pursue some of the

+<a href="$(ROOT)/docs/">Freecell Solver documentation</a> as well as the

+<a href="http://tech.groups.yahoo.com/group/fc-solve-discuss/">archives of

+the fc-solve-discuss mailing list</a> for some insights and ideas.

+Here is some general tips:

+Make sure that the positions in the graph of the game are represented as a

+single segment of memory (normally a C struct) and can be compared for

+equivalence easily (using memcmp() or a similar function).

+Use an efficient data structure to hold the states in the collection such as

+a hash table or a self-balancing binary tree.

+Often randomising the solution (see Freecell Solver's Random-DFS scan

+which was inspired by a different solver called Freecell Tool can help

+Freecell Solver makes heavy use of switch tasking: having several different

+searches operate on the same board, until the first search yields a solution.

+This normally yields a solution quicker than a singular scan.

+Consider implementing moves as meta-moves: sequences of several single-card

+and/or sequence moves that implement a certain ends. This can yield a solution

+faster than using single-card moves (also known as atomic moves).

+Finally, note that we could use a helping hand with Freecell Solver, and the

+authors of other open-source solvers may be happy for help as well, so if

+you want to improve something more mature, then contact us.