Algoritmo A* (A star)


Introduzione

A* (A star) è un algoritmo per trovare un percorso tra due punti, anche in presenza di ostacoli http://en.wikipedia.org/wiki/A*. Massimo (un amico del poli) ha scritto un programma simile; così mi sono interessato all'algoritmo, e ho voluto provare anch'io.

Installazione: Linux

Basta scaricare il file A_star.tar.gz e installare le relative dipendenze (su Ubuntu "sudo apt-get install libwxbase2.8 libwxgtk2.8 wx-common" L'archivio compresso contiene una versione precompilata nella cartella bin/release oltre ai sorgenti e al file di progetto per Code::Blocks (rilasciati sotto licenza GPL). L'implementazione è ancora in versione "beta", in quanto, sebbene l'algoritmo trovi sempre un percorso quando è possiblie, talvolta il percorso non è ottimale.

Installazione: Windows

Basta scaricare il file A_star.tar.gz. L'archivio compresso contiene una versione precompilata nella cartella A_star (windows)\bin\release oltre ai sorgenti e al file di progetto per Code::Blocks (rilasciati sotto licenza GPL). Se non avete installato Code::Blocks con la versione precompilata delle wxWidgets occorre anche scaricare questo file: wx_runtime.tar.gz che contiene due dll da copiare in C:\WINDOWS\system32

Usare il programma

Per disegnare i muri basta fare clic col mouse sulla griglia, per cancellare dei muri basta fare Shift+clic, mentre per cancellare tutti i muri c'è il pulsante "clear walls". Con il pulsante "start" si avvia l'algoritmo (esegue 10 passi al secondo), mentre il pulsante "step" serve a far avanzare l'algoritmo un passo alla volta. Il pulsante "reset" cancella il percorso. Le caselle azzurre sono quelle che fanno parte della "closed list", mentre quelle grigie fanno parte della "open list" (vedere la spiegazione su wikipedia).