Znajdowanie najkrótszej ścieżki w grafie

0

Dzień dobry,

Chcę napisać algorytm, który znajdzie najkrótszą scieżkę w grafie nieskierowanym z jednego wierzchołka do drugiego. Próbowałem wykorzystać algorytm Dijkstry, ale niezbyt dobrze idzie mi z jego implementacją, mianowicie wyznaczam wierzchołek startowy, wyznaczam odległości do jego sąsiadów, ale nie wiem jak przejść dalej tzn. jak od tych sąsiadów wyznaczyć ich sąsiadów, czy trzeba to zrobić jakąś pętlą, czy może rekurencyjnie? Próbowałem posiłkować się materiałami z tej strony: http://eduinf.waw.pl/inf/alg/001_search/0138.php jednak nie mogę zrozumieć jak modyfikować tych sąsiadów w przykładzie z C++. Może ktoś mógłby udzielić mi jakiejś porady, ewentualnie zasugerować inne rozwiązanie?

0

Mam fajną implementację w javie:

http://www.baeldung.com/java-dijkstra

Może pomoże.

0

Jest jeszcze A-star (A*), niedawno implementowałem do mojej gry i działa całkiem fajnie, chociaż nie zawsze jest to najkrótsza ścieżka.

Bardzo pomocny opis :)
http://www.policyalmanac.org/games/aStarTutorial.htm

0

Tutaj masz to bardziej zwięźle i przejrzyście opisane:
http://www.algorytm.org/algorytmy-grafowe/algorytm-dijkstry.html

jedyna trudność w tym algorytmie właśnie występuje w wyznaczaniu który kolejny wierzchołek przetworzyć, bo nie każdy język programowania udostępnia strukturę danych o właściwościach kopca/kolejki priorytetowej i czasem trzeba ją napisać z palca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1