[Algorytmy] Algorytm poszukiwania najkrótszej drogi

gabrysb1995
Użytkownik
Użytkownik
Posty: 96
Rejestracja: 12 mar 2011, o 14:27
Płeć: Mężczyzna
Lokalizacja: Przemyśl
Podziękował: 27 razy

[Algorytmy] Algorytm poszukiwania najkrótszej drogi

Post autor: gabrysb1995 »

Potrzebny jest mi taki algorytm, który na wejściu dostawałby:
  • tablicę \(\displaystyle{ n \cdot n}\) punktów
  • listę obszarów zabronionych w kształcie prostokątów
  • dwa punkty
Chciałbym, żeby ten algorytm znajdywał najkrótszą odległość pomiędzy tymi dwoma punktami, bez przechodzenia przez obszary zabronione.

Jedyny pomysł to sprawdzenie wszystkich możliwości postaci łamanych pomiędzy punktami i wierzchołkami obszarów zabronionych, sprawdzenie które są dopuszczalne, a które przez te obszary przechodzą i na koniec znalezienia miniumum.

Jednak nie uśmiecha mi się pisanie go(chyba, że nie będzie innego wyjścia :p ), więc mam takie pytanie czy ktoś już napisał kiedyś taką funkcję i jest ona w jakieś bibliotece C++/ albo jest jej pseudokod gdzieś w internecie? Prawdopodobnie będzie trzeba ułożyć graf z tych wierzchołków i znalezienie algorytmem Dijkstry najkrótszą ścieżkę.

Edit. Algorytm DiJkstry znajdę, bardziej mi chodzi o sprawdzanie czy ścieżka jest dopuszczalna, czy zabroniona.
Ostatnio zmieniony 31 paź 2015, o 14:42 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Algorytmy] Algorytm poszukiwania najkrótszej drogi

Post autor: Afish »

Używając Dijkstry operujesz na grafie, więc nie rób krawędzi z obszaru niezabronionego do zabronionego.
Do takich rzeczy najczęściej używa się algorytmu A*.
Jeżeli krawędzie nie mają wag, to wystarczy BFS.
ODPOWIEDZ