2012-02-18 10 views
10

Kilka dni temu, Ktoś zapytał mnie, czy w naszym środowisku znajdują się agenci i chcą przejść ze swoich źródeł do miejsc docelowych, w jaki sposób możemy znaleźć najkrótszą ścieżkę dla wszystkich takie, że nie powinny mieć konfliktu podczas spaceru.Jak znaleźć najkrótszą ścieżkę w dynamicznej sytuacji

Problem polega na tym, że wszyscy agenci jednocześnie chodzą w środowisku (co może być modelowane przez nieukierunkowany wykres ważony) i nie powinniśmy mieć kolizji. Myślałem o tym, ale nie mogłem znaleźć optymalnej ścieżki dla nich wszystkich. Ale na pewno jest zbyt wiele heurystycznych pomysłów na ten problem.

Załóżmy wejście jest wykresem G (V, E), środki m, które są w: s , S , ..., S m węzły wykresie na starcie i powinien przejść do węzłów D , ... D m na końcu. Również może być tam jest konflikt w węzłach S i lub D i ... ale konflikty te nie są ważne, nie powinny one mieć konflikt, gdy są one w ich wewnętrznych węzłów swojej drodze.

Jeśli ich ścieżka nie powinna mieć tego samego węzła wewnętrznego, będzie to pewnego rodzaju problem z k-disjoint paths, który jest NPC, ale w tym przypadku ścieżki mogą mieć te same węzły, ale agent nie powinien znajdować się w tym samym węźle w tym samym czasie. Nie wiem, czy mogę podać dokładny opis problemu, czy nie. Jeśli jest mylące, powiedz mi w komentarzach, aby go edytować.

Czy istnieje optymalny i szybki algorytm (optymalnie, mam na myśli, że suma długości wszystkich ścieżek jest możliwie najmniejsza, a przez szybki mam na myśli dobry algorytm wielomianowy).

+0

Czy agenci mogą pozostać w danym węźle? Czy oni muszą chodzić w każdej iteracji? (Możesz wymodelować koszt pozostania, tworząc krawędź przechodzącą do samego węzła) – Zeta

+0

@Zeta, Faktycznie Tak, ale nie powiedziałem tego, ponieważ myślałem, że będzie to bardziej skomplikowane. Ale jeśli masz na to rozwiązanie, byłoby miło. –

+0

Nie mam rozwiązania (jeszcze), przepraszam, ale zmieni to najlepsze możliwe rozwiązania: [Przykład] (http://i.imgur.com/I6vAP.png). Jeśli oczekiwanie nie jest dozwolone, wówczas minimalna suma wszystkich długości wynosi '100 + 100 + 2 = 202'. Jeśli czekanie jest dozwolone i kosztuje mniej niż 66 (np. 40), wówczas minimalna suma wszystkich długości wynosi '40 + 1 + 1 + 40 + 40 + 1 + 1 + 2 = 42 + 82 + 2 = 126'. – Zeta

Odpowiedz

5

Google ujawnia dwa linki, które mogą być pomocne:

EDIT: z rozdziału książki (pierwszy link):

Istnieje wiele podejść do planu ścieżki w systemie z wieloma robotami [sic], jednak znalezienie optymalnego rozwiązania o wartości jest NP-trudne. Hopcraft i in. (1984) upraszczają problem z planowaniem do problemu przenoszenia prostokątów w prostokątnym pojemniku. Udowodnili twardość NP znajdującą plan z danej konfiguracji do konfiguracji celu z najmniejszą liczbą kroków . W związku z tym wszelkie możliwe podejścia do planowania ścieżek są kompromisem między wydajnością a dokładnością wyniku.

nie mogę znaleźć oryginalnego papieru przez Hopcroft on-line, ale biorąc pod uwagę, że cytat, podejrzewam problem one zredukowane zadania nawigacyjnego jest podobna do Rush Hour, który jest PSPACE-zupełny.

+0

Twoje odwołuje papiery mówić o różnych heurystyk, która nie jest trudne (mówiłem, że w moim pytaniu), ja bym z prośbą o dokładnym algorytmem. Może być dla pierwszego OP (który zadał mi to pytanie), heurystyki są fajne, ale dla mnie interesujący jest dokładny algorytm lub NP-Completeness. –

+0

Zaktualizowałem odpowiedź cytatem z pierwszego linku; problem wydaje się być NP-trudny. – DataWraith

+0

Dobrze, byłoby to NP-trudne, a nie NP-zupełne, ma sens. – ldog

0

Jeśli jest to tylko kwestia dotarcia z punktu A do punktu B dla każdego robota, można po prostu użyć algorytmu wyszukiwarki jak A* (A Star) lub Best-First.

Daj mu prostą heurystykę, taką jak suma odległości od celu.

wyszukiwania
+0

Prostsze heurystyczny jest znalezienie najkrótszej drogi do wszystkich z nich, a następnie algorytm run, jeśli robota ma kolizji z innymi za pośrednictwem priorytet zatrzymać go i uruchamiania innych robotów, algorytm ten jest szybki i kończy się szybko (nie jest to trudne, aby pokazać), szukam dokładnego algorytmu. –

Powiązane problemy