2013-02-24 11 views
5

Pracuję nad projektem z wirtualnym robotem (Turtles w modie ComputerCraft dla Minecrafta), w którym robot znalazłby się w labiryncie tuneli i musiałby się w nich poruszać. Świat jest już dogodnie podzielony na płytki (ich dwuwymiarowy wykres kartezjański, z wartością logiczną, którą można przejechać/nie można do nich przypisać), a robot budujący tunele na bieżąco je mapuje.Wyszukiwanie ścieżek za pomocą teleporterów

Ponadto istnieją "skróty" teleportów rozsiane po obszarach, w których roboty muszą szybko się między nimi znaleźć.

Pytanie brzmi: Jaki jest najlepszy sposób, aby znaleźć drogę do celu? W jaki sposób system identyfikuje obszary, które potrzebują teleportów? A * jest najsławniejszym algorytmem, ale czy istnieją inne, które mogą lepiej pasować do aplikacji? Należy pamiętać, że mam bardzo małe doświadczenie z algorytmami odnajdywania ścieżek, więc aby zrozumieć, trzeba rozłożyć je na terminy podstawowe. Jakieś sugestie?

+3

Dlaczego nie spróbować najpierw A * i zobaczyć, jak działa? –

+0

Z pewnością mógłbym, ale zakładam, że A * nie bierze pod uwagę "skrótów", takich jak teleporty, bez hackowania. Będę musiał sprawdzić, jak działa algorytm trochę więcej. – Schilcote

+0

Co hackować? Myślę, że A * może pracować z krawędziami o zerowej długości. Jestem ciekawy. –

Odpowiedz

2

Jedynym problemem z użyciem A * jest znalezienie admissible heuristic dla Twojego problemu. Na szczęście na to pytanie już udzielono odpowiedzi: here.

W jaki sposób system identyfikuje obszary, które potrzebują teleportów?

To zależy od tego, dokąd żółw faktycznie się przemieszcza. Jeśli zawsze porusza się do/z tego samego punktu początkowego/końcowego, odpowiedź jest banalna: dodaj teleporty na początku i na końcu. Dla bardziej skomplikowanych ustawień, zgaduję, że jest to NP-trudne; jeśli to prawda, będziesz musiał spojrzeć na global-optimization strategies(lub po prostu wypróbować kilka losowych pozycji i wybrać najlepszą).

Powiązane problemy