9
V = {1,2,3,4,5,6} E = {(1-2,3),(1-4,3),(2-3,2),(3-1,6),(3-6,1),(4- 5,1),(5-3,1),(5-6,2),(6-4,3)} Będziemy wyznaczać najkrótsze ścieżki pomiędzy wyróżnionym wierzchołkiem (źródłem), a wszystkimi pozostałymi wierzchołkami w grafie.

Algorytm Dijkstry (przykład)

  • Upload
    derry

  • View
    116

  • Download
    0

Embed Size (px)

DESCRIPTION

Algorytm Dijkstry (przykład). Będziemy wyznaczać najkrótsze ścieżki pomiędzy wyróżnionym wierzchołkiem (źródłem), a wszystkimi pozostałymi wierzchołkami w grafie. V = { 1 ,2,3,4,5,6} E = {(1-2,3),(1-4,3),(2-3,2),(3-1,6),(3-6,1),(4-5,1),(5-3,1),(5-6,2),(6-4,3)}. Algorytm Dijkstry (przykład CD.). - PowerPoint PPT Presentation

Citation preview

V = {1,2,3,4,5,6}E = {(1-2,3),(1-4,3),(2-3,2),(3-1,6),(3-6,1),(4-5,1),(5-3,1),(5-6,2),(6-4,3)}

Będziemy wyznaczać najkrótsze ścieżki pomiędzy wyróżnionym wierzchołkiem (źródłem), a wszystkimi pozostałymi wierzchołkami w grafie.

Tworzymy dwa zbiory S (wierzchołki, dla których są policzone najkrótsze ścieżki) oraz Q (wierzchołki jeszcze nie przetworzone). Zbiór S jest początkowo pusty. Zbiór Q obejmuje wszystkie wierzchołki grafu.

Dla każdego wierzchołka v ustawiamy d(v) ← ∞. Dla wybranego wierzchołka vo ustawiamy d(vo)← 0. Ustawiamy również p(v) ← 0.

W zbiorze Q szukamy wierzchołka o najmniejszym d - wierzchołek 1 - przenosimy go do zbioru S. Następnie sprawdzamy wartość d jego sąsiadów (wierzchołki 2 i 4). Jeśli ich d jest większe od kosztu d(1) + w(1,v), to modyfikujemy d i p dla tych wierzchołków.

W zbiorze Q szukamy wierzchołka o najmniejszym d. Są dwa takie wierzchołki: 2 i 4 o d=3. Wybieramy arbitralnie wierzchołek nr 2 i przenosimy go do zbioru S. Wierzchołek 2 posiada tylko jednego sąsiada - 3. Modyfikujemy odpowiednio d[3] i p[3]

W zbiorze Q szukamy wierzchołka o najmniejszym d. Teraz jest to wierzchołek 4 o d[4] = 3. Przenosimy go do zbioru S. Wierzchołek 4 posiada tylko jednego sąsiada - 5. Modyfikujemy odpowiednio d[5] i p[5].

W zbiorze Q szukamy wierzchołka o najmniejszym d. Jest to wierzchołek 5 o d[5] = 4. Przenosimy go do zbioru S. Wierzchołek 5 posiada dwóch sąsiadów: 3 i 6. Ponieważ d[3]=5 jest takie samo jak d[5] + waga(5-3) = 4+1=5, nie modyfikujemy parametrów d i p dla wierzchołka 3. Do modyfikacji jest tylko wierzchołek 6.

W zbiorze Q szukamy wierzchołka o najmniejszym d. Jest to wierzchołek 3 o d[3] = 5. Przenosimy go do zbioru S. Wierzchołek 3 posiada dwóch sąsiadów: 1 i 6. Ponieważ wierzchołek 1 jest już w zbiorze S, to nie bierzemy go pod uwagę. Drugi wierzchołek posiada d[6]=6, czyli takie samo jak d[3]+waga(3-6)=5+1=6. Nie modyfikujemy zatem wierzchołka 6.

Do zbioru S przenosimy ostatni wierzchołek z Q. Wierzchołek ten nie posiada sąsiadów w Q połączonych z nim krawędzią, dlatego nic nie modyfikujemy. Ponieważ zbiór Q stał się pusty, algorytm kończymy.