Un problema de programación particular que encontré recientemente se reduce a encontrar caminos hamiltonianos en una cuadrícula rectangular que se vería algo así como,
A 0 0 0
0 0 0 0
0 0 C D
¿Cuáles son algunas heurísticas efectivas que podrían aplicarse para encontrarlas y, en particular, técnicas para recortar / descartar rutas en el camino?
Editar: solo para aclarar, los bordes se forman cuando los elementos se conectan horizontal y verticalmente, pero no diagonalmente. El problema también establece que cualquier elemento marcado con 0 puede usarse para formar una ruta, pero los elementos que no son 0 son "obstáculos" que deben evitarse.
A-0-0-0
|
0-0-0-0
|
0-0-C D
podría ser un camino, por ejemplo. Otro puede ser,
A 0-0-0
| | |
0 0 0-0
| | |
0-0 C D