View
229
Download
0
Category
Preview:
Citation preview
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Grafy c.d. — cykl Eulera, algorytm Dijkstry iBellmana-Forda
zajecia 6.
Marcin Andrychowicz, Tomasz Kulczynski, BłazejOsinski
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Problem mostów królewieckich
Mosty Graf
1
2
3
4
Cykl EuleraCykl Eulera to cykl, który przechodzi przez wszystkiekrawedzie grafu dokładnie raz.
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Problem mostów królewieckich
Mosty Graf
1
2
3
4
Cykl EuleraCykl Eulera to cykl, który przechodzi przez wszystkiekrawedzie grafu dokładnie raz.
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Problem mostów królewieckich
Mosty Graf
1
2
3
4
Cykl EuleraCykl Eulera to cykl, który przechodzi przez wszystkiekrawedzie grafu dokładnie raz.
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Przykład cyklu Eulera:
7
1 2
3 4
5
6
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Pytaniaczy graf posiada cykl Eulera? (czy jest tzw.eulerowski)jak znalezc dowolny cykl Eulera?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera
Pytaniaczy graf posiada cykl Eulera? (czy jest tzw.eulerowski)jak znalezc dowolny cykl Eulera?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Euler?
GrafDlaczego ponizszy graf nie posiada cyklu Eulera?
1
2
3
4
Warunki konieczne:parzystosc stopni wierzchołkówspójnosc
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Euler?
GrafDlaczego ponizszy graf nie posiada cyklu Eulera?
1
2
3
4
Warunki konieczne:parzystosc stopni wierzchołkówspójnosc
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Euler?
GrafDlaczego ponizszy graf nie posiada cyklu Eulera?
1
2
3
4
Warunki konieczne:parzystosc stopni wierzchołkówspójnosc
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Euler?
GrafDlaczego ponizszy graf nie posiada cyklu Eulera?
1
2
3
4
Warunki konieczne:parzystosc stopni wierzchołkówspójnosc
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Eulera?
Podane warunki sa dostateczne!
dowód przez indukcje wzgledem ilosci krawedzibaza: dla grafu bez krawedzi zachodzikrok indukcyjny: zaczynamy z dowolnego wierzchołka vi poruszamy sie az trafimy znów do v . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Eulera?
Podane warunki sa dostateczne!
dowód przez indukcje wzgledem ilosci krawedzibaza: dla grafu bez krawedzi zachodzikrok indukcyjny: zaczynamy z dowolnego wierzchołka vi poruszamy sie az trafimy znów do v . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Czy graf posiada cykl Eulera?
Podane warunki sa dostateczne!
dowód przez indukcje wzgledem ilosci krawedzibaza: dla grafu bez krawedzi zachodzikrok indukcyjny: zaczynamy z dowolnego wierzchołka vi poruszamy sie az trafimy znów do v . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Dowód c.d.
Graf
7
1 2
3 4
5
6
Co dalej?
dlaczego trafilismy do v?w pozostałej czesci grafu cykl Eulera istnieje —(7,1,2,3,4,2,7)
łaczymy oba cykle — (7,5,4,6,7,1,2,3,4,2,7)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sciezka Eulera
Sciezka EuleraSciezka Eulera — sciezka przechodzaca przez kazdakrawedz dokładnie raz nie bedaca cyklemgraf musi byc spójnyniech p i k beda poczatkiem i koncem sciezki Eulerapo dodaniu krawedzi łaczacej p i k otrzymujemy grafeulerowskizatem w grafie musza istniec dokładnie dwa wierzchołkinieparzystego stopnia
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sciezka Eulera
Sciezka EuleraSciezka Eulera — sciezka przechodzaca przez kazdakrawedz dokładnie raz nie bedaca cyklemgraf musi byc spójnyniech p i k beda poczatkiem i koncem sciezki Eulerapo dodaniu krawedzi łaczacej p i k otrzymujemy grafeulerowskizatem w grafie musza istniec dokładnie dwa wierzchołkinieparzystego stopnia
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sciezka Eulera
Sciezka EuleraSciezka Eulera — sciezka przechodzaca przez kazdakrawedz dokładnie raz nie bedaca cyklemgraf musi byc spójnyniech p i k beda poczatkiem i koncem sciezki Eulerapo dodaniu krawedzi łaczacej p i k otrzymujemy grafeulerowskizatem w grafie musza istniec dokładnie dwa wierzchołkinieparzystego stopnia
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sciezka Eulera
Sciezka EuleraSciezka Eulera — sciezka przechodzaca przez kazdakrawedz dokładnie raz nie bedaca cyklemgraf musi byc spójnyniech p i k beda poczatkiem i koncem sciezki Eulerapo dodaniu krawedzi łaczacej p i k otrzymujemy grafeulerowskizatem w grafie musza istniec dokładnie dwa wierzchołkinieparzystego stopnia
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sciezka Eulera
Sciezka EuleraSciezka Eulera — sciezka przechodzaca przez kazdakrawedz dokładnie raz nie bedaca cyklemgraf musi byc spójnyniech p i k beda poczatkiem i koncem sciezki Eulerapo dodaniu krawedzi łaczacej p i k otrzymujemy grafeulerowskizatem w grafie musza istniec dokładnie dwa wierzchołkinieparzystego stopnia
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera w grafach skierowanych
Warunki konieczne:z wierzchołka nr. 1 da sie dojsc do kazdego innegodo kazdego wierzchołka wchodzi tyle samo krawedzi ilez niego wychodzipowyzsze warunki sa dostateczne
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera w grafach skierowanych
Warunki konieczne:z wierzchołka nr. 1 da sie dojsc do kazdego innegodo kazdego wierzchołka wchodzi tyle samo krawedzi ilez niego wychodzipowyzsze warunki sa dostateczne
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Cykl Eulera w grafach skierowanych
Warunki konieczne:z wierzchołka nr. 1 da sie dojsc do kazdego innegodo kazdego wierzchołka wchodzi tyle samo krawedzi ilez niego wychodzipowyzsze warunki sa dostateczne
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Wyznaczanie cyklu Eulera
Wyznaczanie cyklu Eulera
umiemy juz sprawdzic czy cykl Eulera istnieje, ale jakgo znalezc?słuzy do tego algorytm Fleury’ego, który działatroche na zasadzie opisanego dowodudziała zarówno dla grafów skierowanych jak inieskierowanychjest rekurencyjnyzaczynamy od dowolnego wierzchołka
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Wyznaczanie cyklu Eulera
Wyznaczanie cyklu Eulera
umiemy juz sprawdzic czy cykl Eulera istnieje, ale jakgo znalezc?słuzy do tego algorytm Fleury’ego, który działatroche na zasadzie opisanego dowodudziała zarówno dla grafów skierowanych jak inieskierowanychjest rekurencyjnyzaczynamy od dowolnego wierzchołka
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Wyznaczanie cyklu Eulera
Wyznaczanie cyklu Eulera
umiemy juz sprawdzic czy cykl Eulera istnieje, ale jakgo znalezc?słuzy do tego algorytm Fleury’ego, który działatroche na zasadzie opisanego dowodudziała zarówno dla grafów skierowanych jak inieskierowanychjest rekurencyjnyzaczynamy od dowolnego wierzchołka
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Wyznaczanie cyklu Eulera
Wyznaczanie cyklu Eulera
umiemy juz sprawdzic czy cykl Eulera istnieje, ale jakgo znalezc?słuzy do tego algorytm Fleury’ego, który działatroche na zasadzie opisanego dowodudziała zarówno dla grafów skierowanych jak inieskierowanychjest rekurencyjnyzaczynamy od dowolnego wierzchołka
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Wyznaczanie cyklu Eulera
Wyznaczanie cyklu Eulera
umiemy juz sprawdzic czy cykl Eulera istnieje, ale jakgo znalezc?słuzy do tego algorytm Fleury’ego, który działatroche na zasadzie opisanego dowodudziała zarówno dla grafów skierowanych jak inieskierowanychjest rekurencyjnyzaczynamy od dowolnego wierzchołka
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Aby przetworzyc wierzchołek v :dopóki istnieje krawedz z v :
usun ta krawedz i przetwórz wierzchołek do któregoprowadziławypisz v
wypisane wierzchołki czytane w odwrotnej kolejnoscitworza cykl Eulera (pierwszy wierzchołek nie jestpowtórzony na koncu)dlaczego to działa? popatrzmy na przykład
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
7
1 2
3 4
5
6
Wyjscie7 2 4 3 2 1 7 6 4 5
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Usuwanie krawedzidla macierzy sasiedztwa — łatwedla list sasiedztwa:
dla grafów skierowanych — metoda pop_back()dla grafów nieskierowanych — a co z krawedzia "wdruga strone"?problem ten pominiemy do czasu az poznamy klaseset
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Usuwanie krawedzidla macierzy sasiedztwa — łatwedla list sasiedztwa:
dla grafów skierowanych — metoda pop_back()dla grafów nieskierowanych — a co z krawedzia "wdruga strone"?problem ten pominiemy do czasu az poznamy klaseset
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Usuwanie krawedzidla macierzy sasiedztwa — łatwedla list sasiedztwa:
dla grafów skierowanych — metoda pop_back()dla grafów nieskierowanych — a co z krawedzia "wdruga strone"?problem ten pominiemy do czasu az poznamy klaseset
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Usuwanie krawedzidla macierzy sasiedztwa — łatwedla list sasiedztwa:
dla grafów skierowanych — metoda pop_back()dla grafów nieskierowanych — a co z krawedzia "wdruga strone"?problem ten pominiemy do czasu az poznamy klaseset
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Usuwanie krawedzidla macierzy sasiedztwa — łatwedla list sasiedztwa:
dla grafów skierowanych — metoda pop_back()dla grafów nieskierowanych — a co z krawedzia "wdruga strone"?problem ten pominiemy do czasu az poznamy klaseset
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Implementacja
ImplementacjaImplementacja algorytmu Fleury’ego znajduje sie wnotatkach.
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Fleury’ego
Analiza złozonosci — lista sasiedztwa:Po kazdej krawedzi przechodzimy dokładnie raz —złozonosc O(|E |).
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Grafy wazone
Grafy wazonegrafem wazonym lub inaczej siecia nazywamy graf,którego krawedzie posiadaja w pewnym sensie"długosci"przykład grafu wazonego:
6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Grafy wazone
Grafy wazonegrafem wazonym lub inaczej siecia nazywamy graf,którego krawedzie posiadaja w pewnym sensie"długosci"przykład grafu wazonego:
6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Grafy wazone
Grafy wazone
owe liczby bedziemy nazywac waga, długoscia albokosztem krawedzidługosc sciezki to suma długosci jej krawedzi
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Grafy wazone
Grafy wazone
owe liczby bedziemy nazywac waga, długoscia albokosztem krawedzidługosc sciezki to suma długosci jej krawedzi
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Pytania
jaka jest najkrótsza sciezka z wierzchołka v do w?jakie sa najkrótsze sciezki z wierzchołka v dowszystkich pozostałych wierzchołków?jakie sa najkrótsze sciezki pomiedzy wszystkimi paramiwierzchołków?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Pytania
jaka jest najkrótsza sciezka z wierzchołka v do w?jakie sa najkrótsze sciezki z wierzchołka v dowszystkich pozostałych wierzchołków?jakie sa najkrótsze sciezki pomiedzy wszystkimi paramiwierzchołków?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Pytania
jaka jest najkrótsza sciezka z wierzchołka v do w?jakie sa najkrótsze sciezki z wierzchołka v dowszystkich pozostałych wierzchołków?jakie sa najkrótsze sciezki pomiedzy wszystkimi paramiwierzchołków?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Najkrótsze sciezki
zazwyczaj nie da sie policzyc najkrótszej sciezki z v dow bez liczenia najkrótszych sciezek z v do wszystkichpozostałych wierzchołkówdlatego tez skupimy sie na liczeniu wszystkichnajkrótszych sciezek z pojedynczego zródła (oznaczmyje s)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Najkrótsze sciezki
zazwyczaj nie da sie policzyc najkrótszej sciezki z v dow bez liczenia najkrótszych sciezek z v do wszystkichpozostałych wierzchołkówdlatego tez skupimy sie na liczeniu wszystkichnajkrótszych sciezek z pojedynczego zródła (oznaczmyje s)
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Zarys metody postepowania
w kazdej chwili obliczen bedziemy trzymali pewnesciezki z s do pozostałych wierzchołkówkonkretniej bedziemy trzymali 2 tablice:
dis[v ] — długosc najkrótszej znalezionej sciezki z s dovojc[v ] — ostatni nie liczac v wierzchołek na najkrótszejsciezce z s do v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Zarys metody postepowania
w kazdej chwili obliczen bedziemy trzymali pewnesciezki z s do pozostałych wierzchołkówkonkretniej bedziemy trzymali 2 tablice:
dis[v ] — długosc najkrótszej znalezionej sciezki z s dovojc[v ] — ostatni nie liczac v wierzchołek na najkrótszejsciezce z s do v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Zarys metody postepowania
w kazdej chwili obliczen bedziemy trzymali pewnesciezki z s do pozostałych wierzchołkówkonkretniej bedziemy trzymali 2 tablice:
dis[v ] — długosc najkrótszej znalezionej sciezki z s dovojc[v ] — ostatni nie liczac v wierzchołek na najkrótszejsciezce z s do v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Najkrótsze sciezki
Zarys metody postepowania
w kazdej chwili obliczen bedziemy trzymali pewnesciezki z s do pozostałych wierzchołkówkonkretniej bedziemy trzymali 2 tablice:
dis[v ] — długosc najkrótszej znalezionej sciezki z s dovojc[v ] — ostatni nie liczac v wierzchołek na najkrótszejsciezce z s do v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sytuacja w trakcie obliczen
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 ∞ ∞ 73 29 0ojc[v ] 6 x x 1 6 x
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Relaksacja krawedzi
Relaksacja krawedzipodstawowa operacja w rozwazanych algorytmachbedzie relaksacja krawedzirelaksacja krawedzi v → w polega na sprawdzeniu, czyprzejscie najkrótsza znana sciezka z s do v anastepnie krawedzia z v do w nie daje krótszej sciezkiz s do w niz obecnie znanaif dis[v]+waga(v,w) < dis[w]
dis[w]=dis[v]+waga(v,w)ojc[w]=v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Relaksacja krawedzi
Relaksacja krawedzipodstawowa operacja w rozwazanych algorytmachbedzie relaksacja krawedzirelaksacja krawedzi v → w polega na sprawdzeniu, czyprzejscie najkrótsza znana sciezka z s do v anastepnie krawedzia z v do w nie daje krótszej sciezkiz s do w niz obecnie znanaif dis[v]+waga(v,w) < dis[w]
dis[w]=dis[v]+waga(v,w)ojc[w]=v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Relaksacja krawedzi
Relaksacja krawedzipodstawowa operacja w rozwazanych algorytmachbedzie relaksacja krawedzirelaksacja krawedzi v → w polega na sprawdzeniu, czyprzejscie najkrótsza znana sciezka z s do v anastepnie krawedzia z v do w nie daje krótszej sciezkiz s do w niz obecnie znanaif dis[v]+waga(v,w) < dis[w]
dis[w]=dis[v]+waga(v,w)ojc[w]=v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Relaksacja krawedzi
Relaksacja krawedzipodstawowa operacja w rozwazanych algorytmachbedzie relaksacja krawedzirelaksacja krawedzi v → w polega na sprawdzeniu, czyprzejscie najkrótsza znana sciezka z s do v anastepnie krawedzia z v do w nie daje krótszej sciezkiz s do w niz obecnie znanaif dis[v]+waga(v,w) < dis[w]
dis[w]=dis[v]+waga(v,w)ojc[w]=v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Relaksacja krawedzi
Relaksacja krawedzipodstawowa operacja w rozwazanych algorytmachbedzie relaksacja krawedzirelaksacja krawedzi v → w polega na sprawdzeniu, czyprzejscie najkrótsza znana sciezka z s do v anastepnie krawedzia z v do w nie daje krótszej sciezkiz s do w niz obecnie znanaif dis[v]+waga(v,w) < dis[w]
dis[w]=dis[v]+waga(v,w)ojc[w]=v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstrypokazemy teraz najbardziej znany algorytm liczenianajkrótszych sciezek z pojedynczego zródła —algorytm Dijkstry
algorytm ten Działa tylko dla grafów o nieujemnychwagach krawedzijest to załozenie czesto spełnione, np. kiedy wagiodpowiadaja odległosciom
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstrypokazemy teraz najbardziej znany algorytm liczenianajkrótszych sciezek z pojedynczego zródła —algorytm Dijkstry
algorytm ten Działa tylko dla grafów o nieujemnychwagach krawedzijest to załozenie czesto spełnione, np. kiedy wagiodpowiadaja odległosciom
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstrypokazemy teraz najbardziej znany algorytm liczenianajkrótszych sciezek z pojedynczego zródła —algorytm Dijkstry
algorytm ten Działa tylko dla grafów o nieujemnychwagach krawedzijest to załozenie czesto spełnione, np. kiedy wagiodpowiadaja odległosciom
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Algorytm Dijkstryoznacz wszystkie wierzchołki jako nieodwiedzone(vis[v ] = false)dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0dopóki istnieje nieodwiedzony wierzchołek oskonczonej odległosci:
niech v bedzie wierzchołkiem nieodwiedzonym onajmniejszej odległoscioznacz v jako odwiedzonyzrelaksuj wszystkie krawedzie wychodzace z v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] ∞ ∞ ∞ ∞ ∞ 0ojc[v ] x x x x x xvis[v ] 0 0 0 0 0 0
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 ∞ ∞ ∞ 29 0ojc[v ] 6 x x x 6 xvis[v ] 0 0 0 0 1 0
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 ∞ ∞ 50 29 0ojc[v ] 6 x x 5 6 xvis[v ] 0 0 0 0 1 1
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 92 ∞ 50 29 0ojc[v ] 6 1 x 5 6 xvis[v ] 1 0 0 0 1 1
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 82 86 50 29 0ojc[v ] 6 4 4 5 6 xvis[v ] 1 0 0 1 1 1
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 82 86 50 29 0ojc[v ] 6 4 4 5 6 xvis[v ] 1 1 0 1 1 1
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Graf6
1
23
4
5
41
51
50
36
38
45
29
21
32
32
29
Tablice
v 1 2 3 4 5 6dis[v ] 41 82 86 50 29 0ojc[v ] 6 4 4 5 6 xvis[v ] 1 1 1 1 1 1
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Analiza złozonosci — listy sasiedztwa:
złozonosc pamieciowa O(|V |+ |E |)kazda krawedz relaksujemy co najwyzej raz — czasO(|E |)O(|V |) razy wybieramy wierzchołek o najmniejszejodległosci, co zajmuje jednorazowo czas O(|V |), czyliłacznie O(|V |2)złozonosc czasowa O(|V |2 + |E |) = O(|V |2)da sie ta złozonosc poprawic, ale o tym bedzie kiedyindziej . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Analiza złozonosci — listy sasiedztwa:
złozonosc pamieciowa O(|V |+ |E |)kazda krawedz relaksujemy co najwyzej raz — czasO(|E |)O(|V |) razy wybieramy wierzchołek o najmniejszejodległosci, co zajmuje jednorazowo czas O(|V |), czyliłacznie O(|V |2)złozonosc czasowa O(|V |2 + |E |) = O(|V |2)da sie ta złozonosc poprawic, ale o tym bedzie kiedyindziej . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Analiza złozonosci — listy sasiedztwa:
złozonosc pamieciowa O(|V |+ |E |)kazda krawedz relaksujemy co najwyzej raz — czasO(|E |)O(|V |) razy wybieramy wierzchołek o najmniejszejodległosci, co zajmuje jednorazowo czas O(|V |), czyliłacznie O(|V |2)złozonosc czasowa O(|V |2 + |E |) = O(|V |2)da sie ta złozonosc poprawic, ale o tym bedzie kiedyindziej . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Analiza złozonosci — listy sasiedztwa:
złozonosc pamieciowa O(|V |+ |E |)kazda krawedz relaksujemy co najwyzej raz — czasO(|E |)O(|V |) razy wybieramy wierzchołek o najmniejszejodległosci, co zajmuje jednorazowo czas O(|V |), czyliłacznie O(|V |2)złozonosc czasowa O(|V |2 + |E |) = O(|V |2)da sie ta złozonosc poprawic, ale o tym bedzie kiedyindziej . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Analiza złozonosci — listy sasiedztwa:
złozonosc pamieciowa O(|V |+ |E |)kazda krawedz relaksujemy co najwyzej raz — czasO(|E |)O(|V |) razy wybieramy wierzchołek o najmniejszejodległosci, co zajmuje jednorazowo czas O(|V |), czyliłacznie O(|V |2)złozonosc czasowa O(|V |2 + |E |) = O(|V |2)da sie ta złozonosc poprawic, ale o tym bedzie kiedyindziej . . .
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Dijkstry
Dlaczego to działa?
po rozpatrzeniu v wartosc dis[v ] juz sie nie zmieni, borozpatrujemy wierzchołki coraz bardziej odległe od sudowodnimy, ze w momencie odwiedzania v najkrótszasciezka z s do v ma długosc dis[v ]:
dowód przez indukcje "w czasie"baza — w momencie wejscia do s zachodzi dis[s] = 0krok indukcyjny — załózmy, ze odwiedzamy v :najkrótsza sciezka do v musi biec tylko przez juzodwiedzone wierzchołki, bo v ma najnizsza wartosc wtablicy dis sposród nieodwiedzonych wierzchołkówjest wiec ona postaci (s, x1, . . . , xn, v) dla odwiedzonychxirozwazylismy ja relaksujac krawedz xn → v
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Implementacja
ImplementacjaImplementacja algorytmu Dijkstry znajduje sie w notatkach.
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Sieci z ujemnymi wagamiprzypomnijmy, ze algorytm Dijkstry nie dział dla sieci zujemnymi wagamitakie sieci czasem pojawiaja sie w zadaniach, np:
Mamy n róznych przedmiotów oraz informacjeo mozliwych transakcjach postaci: "przedmiotA mozna wymienic na B zyskujac/dopłacajacC zł". Masz przedmiot nr. 1 a chcesz miecprzedmiot nr. n. Ile musisz minimalnie wydaclub ile mozesz maksymalnie zarobic?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Sieci z ujemnymi wagamiprzypomnijmy, ze algorytm Dijkstry nie dział dla sieci zujemnymi wagamitakie sieci czasem pojawiaja sie w zadaniach, np:
Mamy n róznych przedmiotów oraz informacjeo mozliwych transakcjach postaci: "przedmiotA mozna wymienic na B zyskujac/dopłacajacC zł". Masz przedmiot nr. 1 a chcesz miecprzedmiot nr. n. Ile musisz minimalnie wydaclub ile mozesz maksymalnie zarobic?
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Sieci z ujemnymi wagami
Ujemne cykle
zastanówmy sie co by sie stało, gdybysmy szukalinajkrótszych sciezek w grafie z ujemnym cyklem osumie wag −c (c > 0)niech v nalezy do takiego cyklujaka jest długosc najkrótszej sciezki z v do vjesli przejdziemy po cyklu to otrzymujemy sciezke okoszcie −cjesli przejdziemy po cyklu dwukrotnie to otrzymujemysciezke o koszcie −2cjesli przejdziemy po cyklu trzykrotnie to otrzymujemysciezke o koszcie −3c . . .widzimy, ze najkrótsza sciezka z v do v nie istnieje!
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda
dlatego tez załózmy, ze rozwazamy graf z ujemnymiwagami, ale bez ujemnych cyklido liczenia najkrótszych sciezek w takim grafie mozemyuzyc algorytmu Bellmana-Forda
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda
dlatego tez załózmy, ze rozwazamy graf z ujemnymiwagami, ale bez ujemnych cyklido liczenia najkrótszych sciezek w takim grafie mozemyuzyc algorytmu Bellmana-Forda
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda:
dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0powtórz |V | − 1 razy ponizszy krok:
zrelaksuj wszystkie krawedzie w dowolnej kolejnosci
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda:
dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0powtórz |V | − 1 razy ponizszy krok:
zrelaksuj wszystkie krawedzie w dowolnej kolejnosci
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda:
dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0powtórz |V | − 1 razy ponizszy krok:
zrelaksuj wszystkie krawedzie w dowolnej kolejnosci
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Algorytm Bellmana-Forda:
dla kazdego v ∈ V ustaw dis[v ] =∞ustaw dis[s] = 0powtórz |V | − 1 razy ponizszy krok:
zrelaksuj wszystkie krawedzie w dowolnej kolejnosci
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Dlaczego to działa?
po 1-szym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z 1 krawedzipo 2-gim wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej 2 krawedzipo k -tym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej k krawedzinajkrótsze sciezki składaja sie z co najwyzej |V | − 1,gdyz dłuzsze sciezki zawieraja cykl o nieujemnej wadze
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Dlaczego to działa?
po 1-szym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z 1 krawedzipo 2-gim wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej 2 krawedzipo k -tym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej k krawedzinajkrótsze sciezki składaja sie z co najwyzej |V | − 1,gdyz dłuzsze sciezki zawieraja cykl o nieujemnej wadze
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Dlaczego to działa?
po 1-szym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z 1 krawedzipo 2-gim wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej 2 krawedzipo k -tym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej k krawedzinajkrótsze sciezki składaja sie z co najwyzej |V | − 1,gdyz dłuzsze sciezki zawieraja cykl o nieujemnej wadze
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Dlaczego to działa?
po 1-szym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z 1 krawedzipo 2-gim wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej 2 krawedzipo k -tym wykonaniu petli mamy policzone najkrótszesciezki do wierzchołków dla których najkrótsza sciezkaskłada sie z co najwyzej k krawedzinajkrótsze sciezki składaja sie z co najwyzej |V | − 1,gdyz dłuzsze sciezki zawieraja cykl o nieujemnej wadze
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Wykrywanie ujemnych cykli
zastanówmy sie co by sie stało, gdybysmy wykonali|V |-ta iteracje petlijesli uda nam sie cokolwiek zrelaksowac, to wiemy, zew grafie istnieje ujemny cykljesli w grafie istnieje ujemny cykl, to uda nam sie coszrelaksowac — gdybysmy nic nie zrelaksowali tokolejne powtórzenia petli tez nic by nie relaksowały azatem pomimo dopuszczenia sciezek składajacych siez dowolnie wielu krawedzi nie otrzymali bysmy sciezeko dowolnie małym koszcie — sprzecznoscotrzymujemy zatem prosty test na sprawdzanie czy grafzawiera ujemny cykl
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Wykrywanie ujemnych cykli
zastanówmy sie co by sie stało, gdybysmy wykonali|V |-ta iteracje petlijesli uda nam sie cokolwiek zrelaksowac, to wiemy, zew grafie istnieje ujemny cykljesli w grafie istnieje ujemny cykl, to uda nam sie coszrelaksowac — gdybysmy nic nie zrelaksowali tokolejne powtórzenia petli tez nic by nie relaksowały azatem pomimo dopuszczenia sciezek składajacych siez dowolnie wielu krawedzi nie otrzymali bysmy sciezeko dowolnie małym koszcie — sprzecznoscotrzymujemy zatem prosty test na sprawdzanie czy grafzawiera ujemny cykl
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Wykrywanie ujemnych cykli
zastanówmy sie co by sie stało, gdybysmy wykonali|V |-ta iteracje petlijesli uda nam sie cokolwiek zrelaksowac, to wiemy, zew grafie istnieje ujemny cykljesli w grafie istnieje ujemny cykl, to uda nam sie coszrelaksowac — gdybysmy nic nie zrelaksowali tokolejne powtórzenia petli tez nic by nie relaksowały azatem pomimo dopuszczenia sciezek składajacych siez dowolnie wielu krawedzi nie otrzymali bysmy sciezeko dowolnie małym koszcie — sprzecznoscotrzymujemy zatem prosty test na sprawdzanie czy grafzawiera ujemny cykl
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Algorytm Bellmana-Forda
Wykrywanie ujemnych cykli
zastanówmy sie co by sie stało, gdybysmy wykonali|V |-ta iteracje petlijesli uda nam sie cokolwiek zrelaksowac, to wiemy, zew grafie istnieje ujemny cykljesli w grafie istnieje ujemny cykl, to uda nam sie coszrelaksowac — gdybysmy nic nie zrelaksowali tokolejne powtórzenia petli tez nic by nie relaksowały azatem pomimo dopuszczenia sciezek składajacych siez dowolnie wielu krawedzi nie otrzymali bysmy sciezeko dowolnie małym koszcie — sprzecznoscotrzymujemy zatem prosty test na sprawdzanie czy grafzawiera ujemny cykl
Grafy c.d. —cykl Eulera,
algorytmDijkstry i
Bellmana-Forda
Cykl EuleraWstep
Istnienie
Wyznaczanie
NajkrótszesciezkiWstep
Dijkstra
Bellman-Ford
Implementacja
ImplementacjaImplementacja algorytmu Bellmana-Forda znajduje sie wnotatkach.
Recommended