120 likes | 358 Views
Grafy. Najkrótsza ścieżka w grafie Algorytm Dijkstry. Najkrótsza ścieżka w grafie Algorytm Dijkstry. algorytmDijkstry(ważony prosty digraf, wierzchołek pierwszy) for wszystkich wierzchołków v aktOdległość(pierwszy)=0; doSprawdzenia=wszystkie wierzchołki;
E N D
Grafy Najkrótsza ścieżka w grafie Algorytm Dijkstry
Najkrótsza ścieżka w grafieAlgorytm Dijkstry algorytmDijkstry(ważony prosty digraf, wierzchołek pierwszy) for wszystkich wierzchołków v aktOdległość(pierwszy)=0; doSprawdzenia=wszystkie wierzchołki; while doSprawdzenia nie jest pusty v=wierzchołek z doSprawdzenia o minimalnej wartości aktOdległość(v); usuń v z doSprawdzenia; for wszystkich wierzchołków u siąsiadujących z v i będących w doSprawdzenia if aktOdległość(u)>aktOdległość(v)+waga(krawęź(vu)) aktOdległość(u=aktOdległość(v)+waga(krawęź(vu)); poprzednik(u)=v;
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 PrzykładStart 1 – koniec 6 j – wierzchołek tj – tymczasowa droga minimalna do wierz. j popj – wierzcholek poprzedni do wierz. j
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 Przykład Szukamy sąsiadów dla wierzchołka 1 W tabelce w tj wpisujemy wartość drogi tymczasowej. W kolumnie popj wpisujemy etykietę wierzchołka poprzedniego.
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 Przykład Wybieramy wartość najmniejszą w tj i wierzchołek usuwamy ze zbioru doSprawdzenia i szukamy sąsiadów tego wierzchołka Tam gdzie się nic nie zmienia przepisujemy poprzednią wartość
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 Przykład tj =2, j=3
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 Przykład tj =3, j=4
Przykład 2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 tj =3, j=4
2 1 3 5 8 4 6 1 1 3 5 3 2 2 2 Przykład
Bibliografia • A. Drozdek, „C++. Algorytmy i struktury danych”, Helion, Gliwice 2004;