2013-02-24 16 views
5

Sto lavorando a un progetto con un robot virtuale (Turtles nel mod di ComputerCraft per Minecraft), in cui il robot si trova in un labirinto di tunnel e deve spostarsi all'interno di essi. Il mondo è già suddiviso in riquadri (un grafico cartesiano 2D, con un valore booleano passabile/non passabile per ciascuno), e il robot che costruisce i tunnel li mapperà mentre va.Pathfinding with teleporters

Inoltre, ci sono "scorciatoie" per il teleporter sparse nelle aree in cui i robot devono spostarsi rapidamente tra loro.

La domanda è: qual è il modo migliore per avere il percorso del robot verso la sua destinazione? In che modo il sistema identifica le aree che necessitano di teletrasporto? A * è l'algoritmo più famoso, ma ce ne sono altri che potrebbero adattarsi meglio all'applicazione? Tieni presente che ho pochissima esperienza con gli algoritmi di individuazione dei percorsi, quindi potresti dover rompere le cose in termini di base per farmi capire. Eventuali suggerimenti?

+3

Perché non provare A * prima e vedere come si comporta? –

+0

Certamente, ma suppongo che A * non prenda in considerazione "scorciatoie" come i teletrasportatori senza un trucco. Dovrò esaminare in che modo l'algoritmo funziona un po 'di più. – Schilcote

+0

Quale modifica? Penso che A * possa funzionare bene con i bordi di lunghezza zero. Sono curioso. –

risposta

2

L'unico problema con l'utilizzo di A * è trovare un admissible heuristic per il tuo problema. Fortunatamente, questo è già stato risposto here.

In che modo il sistema identifica le aree che necessitano di teletrasporto?

Dipende da dove si sta effettivamente spostando la tartaruga da/verso. Se si sposta sempre verso/dallo stesso punto di inizio/fine, la risposta è banale: aggiungi teleport all'inizio e alla fine. Per configurazioni più complicate, la mia ipotesi sarebbe che questo è NP-hard; se è vero, dovrai cercare global-optimization strategies(o semplicemente provare un po 'di posizioni casuali e prendere il migliore).