Hi, these are some instructions so you can enjoy my Sokoban solver if you
don't speak Catalan.
The applet requires a recent installation of a recent (1.3+, but get 1.4 for
best results) of the Java browser plugin, that you can get here.
Usage: the 'sokoban solver' button just displays an about box, the first drop
down lets you choose one of the bundled maps or the map editor (Editor de
mapes). The second drop down lets you choose the resolution method; manual
solver (you can use your keyboard cursors and 'u' for undo) and a configurable
tree search ('cerca d'arbre'). Clicking on the 'Som hi' button starts the
resolution process.
If you have chosen the tree search, the solver will ask you a few questions
to help you tailor the solve process:
- 'Tipus de situacio': it determines the node expansion performed by the
applet. 'Situacio Simple' means that it considers individual man movements and
'Situacio Complexa' works considering block pushes. In most cases, 'Situacio
Complexa' will solve the map faster, but the solution might be non-optimal in
regard to man-movements.
- 'Detectar blocs encallats' is 'stuck block detections'. If you choose
'si'/'yes', then the applet won't consider moving block to positions from
where a block cannot be pushed to a goal square. In most cases, enabling this
detection speeds up the process considerably.
- 'Ordre de la cerca': this chooses in which order the different movements
are considered:
- 'Cost acumulat': this means the applet will process the possible
movements tree with a breadth first algorithm; it won't consider positions
at depth n until it has considered all up to depth n-1. This guarantees that
the solution will find will be that of the lowest depth (and thus will be an
optimal solution), but it's usually the slowest method
- 'Distancia minima als objectius': this means that the applet will
examine first the most 'promising' positions first (in regards to the chosen
heuristic), doing what is known as a 'best first search' algorithm. This is
usually the fastest method, but it returns non-optimal solutions.
- 'Cost mes distancia': this balances position depth and heuristics in
what's known as an A* search. If the heuristic fits some conditions, the
solution will be optimal. This is usually a little bit faster than 'Cost
acumulat'.
- 'Tipus d'heuristica' lets you choose which heuristic function will be used
(if you have chosen an order which uses heuristics:
- 'Distancia de Manhattan Simple': the heuristic function is the sum of
each blocks Manhattan distance to the nearest goal square. This heuristic is
very simple and might get confused in very simple maps.
- 'Distancia en empentes': this heuristic function is the sum of the
minimum number of pushes needed to take each block to the nearest (in block
pushes) goal square. In some situations, this is slower than 'Distancia de
Manhattan Simple', but most of the time it is much better.