Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie"

Transkrypt

1 Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 1,11,1 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

2 Spis treści 1 Grafy skierowane z wagami - przypomnienie Algorytm Bellmana-Forda Algorytm Dijkstry 1 4 Algorytm Floyda-Warshalla Twórcy Informacje wstępne Pseudokod 5 Algorytm Johnsona B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

3 Grafy skierowane z wagami - przypomnienie Graf skierowany z wagami Definicja Grafem skierowanym z wagami nazywamy strukturę G = (V, E, weight : E Z ) gdzie V to zbiór wierzchołków, E {(u, v) : u, v V } to zbiór uporzadkowanych par wierzchołków ze zbioru V, zwanych krawędziami. weight : E Z jest funkcja wagi (odległości). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

4 Grafy skierowane z wagami - przypomnienie Graf skierowany z wagami - przykład u v 1 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

5 Grafy skierowane z wagami - przypomnienie Drzewo najkrótszych ścieżek Sformułowanie problemu Wejście: Graf skierowany z wagami G = (V, E, weight : E Z ) Wierzchołek r V, zwany korzeniem. Wyjście: Drzewo T o korzeniu r takie, że ścieżka z r do każdego wierzchołka u w T jest najkrótsza scieżka z r do u w grafie G. Założenie: Rozważane grafy maja wierzchołki osiagalne z wybranego wierzchołka (korzenia) r a. a Dlaczego? Wierzchołki nieosiagalne moga być usunięte w czasie liniowym B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11

6 Grafy skierowane z wagami - przypomnienie Graf skierowany z wagami - przykład u Pytanie: Czy najkrótsza ścieżka pomiędzy wierzchołkami u i v może zawierać cykl? - v 1 Odpowiedź: Jeśli w grafie istnieje najkrótsza ścieżka z u do v, to w grafie tym również istnieje najkrótsza ścieżka z u do v, która nie zawiera cykli. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11

7 Ujemne cykle Grafy skierowane z wagami - przypomnienie Niech G = (V, E, weight : E Z ) będzie grafem skierowanym z wagami. Cykl ujemny w grafie G, to cykl C, którego waga weight(c) jest ujemna. A -1 C - 4 B D C=(A,B,C,A), w(c) = -1. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11

8 Algorytm Bellmana-Forda Richard Ernest Bellman - ( ) Richard Ernest Bellman znany jako twórca: programowania dynamicznego. algorytmu Bellmana Forda. W 1979 roku otrzymał IEEE Medal of Honor za wkład w teorie sterowania i procesów decyzyjnych, szczególnie za opracowanie teorii programowania dynamicznego. Źródło: lodz.pl/bellman.jpeg Więcej na wikipedia.org/wiki/ Richard_E._Bellman B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

9 Algorytm Bellmana-Forda Lester Randolph Ford, junior ( ) Amerykański matematyk specjalizujacy się w algorytmach przepływu w sieci. Syn matematyka Lester R. Forda, seniora. Autor algorytmu Bellmana-Forda, służcego do znajdowania najkrótszej ścieżki w grafach z wagami. Źródło: pl/index.php?title=grafika: Ford-portret.jpg B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

10 Algorytm Bellmana-Forda Algorytm Bellmana-Forda Algorytm obliczajacy najkrótsze ścieżki z danego wierzchołka źródłowego do wszystkich pozostałych wierzchołków w skierowanym grafie z wagami. Wolniejszy od algorytmu Dijkstry dla tego samego problemu, ale bardziej uniwersalny, ponieważ jest w stanie obsługiwać grafy, które zawieraja krawędze o ujemnej wadze, ale nie zawieraja ujemnych cykli. Algorytm po raz pierwszy został zaproponowany przez Alfonso Shimbela w 1955 roku, ale został nazwany imieniem Richarda Bellmana i Lestera Forda, Jr., gdyż to oni opublikowali ten algorytm odpowiednio w 1958 i 1956 roku. Edward F. Moore opublikował również ten sam algorytm w 1957 r., Dlatego też algorytm ten nazywany jest również algorytmem Bellmana-Forda-Moore a 1. 1 Bang-Jensen, Jorgen; Gutin, Gregory (). Digraphs: Theory, Algorithms and Applications B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

11 Algorytm Bellmana-Forda Algorytm Bellmana-Forda - pseudokod Input: Graf G(V, E, weight), wierzchołek poczatkowy src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

12 Algorytm Bellmana-Forda Algorytm Bellmana-Forda - pseudokod Input: Graf G(V, E, weight), wierzchołek poczatkowy src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for L.1-4: Pętla for ustawia dla każdego wierzchołka grafu parametr distance(odległość) na nieskończoność oraz wskaźnik prev na zero. prev jest wskaźnikiem do poprzednika danego wierzchołka pozwala na odtworzenie najkrótszej ścieżki. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

13 Algorytm Bellmana-Forda Algorytm Bellmana-Forda - pseudokod Input: Graf G(V, E, weight), wierzchołek poczatkowy src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for L.1-4: Pętla for ustawia dla każdego wierzchołka grafu parametr distance(odległość) na nieskończoność oraz wskaźnik prev na zero. prev jest wskaźnikiem do poprzednika danego wierzchołka pozwala na odtworzenie najkrótszej ścieżki. L.5: Odległość dla wierzchołka poczatkowego ustawiana jest na zero. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

14 Algorytm Bellmana-Forda Algorytm Bellmana-Forda - pseudokod Input: Graf G(V, E, weight), wierzchołek poczatkowy src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for L.1-4: Pętla for ustawia dla każdego wierzchołka grafu parametr distance(odległość) na nieskończoność oraz wskaźnik prev na zero. prev jest wskaźnikiem do poprzednika danego wierzchołka pozwala na odtworzenie najkrótszej ścieżki. L.5: Odległość dla wierzchołka poczatkowego ustawiana jest na zero. L.7-9: Pętla for przechodzi przez każda krawędź grafu (u, v) i dokonuje jej tzw. relaksacji. Proces ten wykonywany jest V 1 razy B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

15 Relaksacja krawędzi Algorytm Bellmana-Forda Relaksacja krawędzi jest najważniejszym krokiem w algorytmie Bellmana-Forda. Relaksacja krawędzi to sprawdzenie, czy przy przejściu dana krawędzia grafu (u, v) (tj. z u do v ), nie otrzymamy krótszej ścieżki niż dotychczasowa ze źródła src do v. Jeżeli tak, to zmniejszamy oszacowanie wagi v.distance najkrótszej ścieżki. relax(u, v): 1: if v.distance > u.distance + weight(u, v) then : v.distance = u.distance + weight(u, v) : v.prev = u 4: end if B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

16 Algorytm Bellmana-Forda Wykrywanie ujemnych cykli - pseudokod Input: Graf G(V, E, weight), wierzchołek poczatkowy src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for 11: for all (u, v) in E do 1: if v.distance > u.distance + weight(u, v) then 1: "Istnieje ujemny cykl!" 14: end if 15: end for Krótki i prosty dodatek do algorytmu Bellmana-Forda pozwala mu wykrywać ujemne cykle. Jest to bardzo ważne, ponieważ uniemożliwia znalezienie najkrótszej ścieżki. Po uruchomieniu algorytmu Bellmana-Forda, wymagana jest jeszcze jedna krótka pętla, sprawdzajaca istnienie ujemnych cykli. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

17 Algorytm Bellmana-Forda Złożoność algorytmu Bellmana-Forda Algorytm Bellman-Ford wykonuje E relaksacji dla każdej iteracji. Iteracji jest V 1. Dlatego w najgorszym przypadku, algorytm Bellmana-Ford działa w czasie O( V E ). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 14 / 11

18 Algorytm Bellmana-Forda Ustawienie poczatkowe parametru distance Input: G(V, E, weight), src. 1: for all v in V do : v.distance = ; : v.prev = Null; 4: end for 5: src.distance = 6: for i=1 to V - 1 do 7: for all (u, v) in E do 8: relax(u, v); 9: end for 1: end for 11: for all (u, v) in E do 1: if v.distance > u.distance + weight(u, v) then 1: "Istnieje ujemny cykl!" 14: end if 15: end for S 8 4 E -5 D - 4 C 1 A s a b c d e l.1-4: l.5: 5 B B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 15 / 11

19 Algorytm Bellmana-Forda Proces relaksacji, iteracja 1, slajd I Require: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7:... Krawędź ab: b.distance > a.distance + weight(a, b) > + 9 false Krawędź ac: c.distance > a.distance + weight(a, c) > + 1 false W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 16 / 11

20 Algorytm Bellmana-Forda Proces relaksacji, iteracja 1, slajd II Krawędź ba: a.distance > b.distance + weight(b, a) > false Krawędź bc: c.distance > b.distance + weight(b, c) > + 5 false Krawędź cb: b.distance > c.distance + weight(c, b) > false Krawędź da: a.distance > d.distance + weight(d, a) > + 4 false B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 17 / 11

21 Algorytm Bellmana-Forda Proces relaksacji, iteracja 1, slajd III Krawędź dc: c.distance > d.distance + weight(d, c) > false Krawędź ec: c.distance > e.distance + weight(e, c) > + false Krawędź ed: d.distance > e.distance + weight(e, d) > 5 false Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 true; d.distance = 4 Krawędź se: e.distance > s.distance + weight(s, e) > + 8 true; e.distance = 8 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 18 / 11

22 Algorytm Bellmana-Forda Proces relaksacji, iteracja 1, slajd IV Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e i=1 4 8 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 19 / 11 5 B

23 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd I Require: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7:... Krawędź ab: b.distance > a.distance + weight(a, b) > + 9 false Krawędź ac: c.distance > a.distance + weight(a, c) > + 1 false W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

24 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd II Krawędź ba: a.distance > b.distance + weight(b, a) > false Krawędź bc: c.distance > b.distance + weight(b, c) > + 5 false Krawędź cb: b.distance > c.distance + weight(c, b) > false Krawędź da: a.distance > d.distance + weight(d, a) > true; a.distance = 8 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

25 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd III Krawędź dc: c.distance > d.distance + weight(d, c) > 4 true; c.distance = Krawędź ec: c.distance > e.distance + weight(e, c) > 8 + false Krawędź ed: d.distance > e.distance + weight(e, d) 4 > 8 5 true; d.distance = Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 false; Krawędź se: e.distance > s.distance + weight(s, e) 8 > + 8 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

26 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd IV Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.-6 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e i=1 4 8 i= 8 8 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11 5 B

27 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd I Require: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7:... Krawędź ab: b.distance > a.distance + weight(a, b) > true; b.distance = 17 Krawędź ac: c.distance > a.distance + weight(a, c) > false W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

28 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd II Krawędź ba: a.distance > b.distance + weight(b, a) 8 > 17 false Krawędź bc: c.distance > b.distance + weight(b, c) > false Krawędź cb: b.distance > c.distance + weight(c, b) 17 > true; b.distance = Krawędź da: a.distance > d.distance + weight(d, a) 8 > + 4 true; a.distance = 7 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11

29 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd III Krawędź dc: c.distance > d.distance + weight(d, c) > true; c.distance = 1 Krawędź ec: c.distance > e.distance + weight(e, c) 1 > 8 + false Krawędź ed: d.distance > e.distance + weight(e, d) > 8 5 false; Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 false; Krawędź se: e.distance > s.distance + weight(s, e) 8 > + 8 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11

30 Algorytm Bellmana-Forda Proces relaksacji, iteracja, slajd IV Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.-6 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e i=1 4 8 i= 8 8 i= B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11 5 B

31 Algorytm Bellmana-Forda Proces relaksacji, iteracja 4, slajd I Require: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7:... Krawędź ab: b.distance > a.distance + weight(a, b) > false; Krawędź ac: c.distance > a.distance + weight(a, c) 1 > false W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

32 Algorytm Bellmana-Forda Proces relaksacji, iteracja 4, slajd II Krawędź ba: a.distance > b.distance + weight(b, a) 7 > true; a.distance = Krawędź bc: c.distance > b.distance + weight(b, c) 1 > + 5 false Krawędź cb: b.distance > c.distance + weight(c, b) > 1 true; b.distance = 1 Krawędź da: a.distance > d.distance + weight(d, a) > + 4 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

33 Algorytm Bellmana-Forda Proces relaksacji, iteracja 4, slajd III Krawędź dc: c.distance > d.distance + weight(d, c) 1 > false; Krawędź ec: c.distance > e.distance + weight(e, c) 1 > 8 + false Krawędź ed: d.distance > e.distance + weight(e, d) > 8 5 false; Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 false; Krawędź se: e.distance > s.distance + weight(s, e) 8 > + 8 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

34 Algorytm Bellmana-Forda Proces relaksacji, iteracja 4, slajd IV Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.-6 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e i=1 4 8 i= 8 8 i= i= B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11 5 B

35 Algorytm Bellmana-Forda Proces relaksacji, iteracja 5, slajd I Require: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7:... Krawędź ab: b.distance > a.distance + weight(a, b) 1 > + 9 false; Krawędź ac: c.distance > a.distance + weight(a, c) 1 > + 1 false; W pętli l.-5 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

36 Algorytm Bellmana-Forda Proces relaksacji, iteracja 5, slajd II Krawędź ba: a.distance > b.distance + weight(b, a) > 1 true; a.distance = 4 Krawędź bc: c.distance > b.distance + weight(b, c) 1 > false; Krawędź cb: b.distance > c.distance + weight(c, b) 1 > 1 false; Krawędź da: a.distance > d.distance + weight(d, a) > + 4 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe / 11

37 Algorytm Bellmana-Forda Proces relaksacji, iteracja 5, slajd III Krawędź dc: c.distance > d.distance + weight(d, c) 1 > false; Krawędź ec: c.distance > e.distance + weight(e, c) 1 > 8 + false Krawędź ed: d.distance > e.distance + weight(e, d) > 8 5 false; Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 false; Krawędź se: e.distance > s.distance + weight(s, e) 8 > + 8 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

38 Algorytm Bellmana-Forda Proces relaksacji, iteracja 5, slajd IV Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.-6 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e i=1 4 8 i= 8 8 i= i= i= B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11 5 B

39 Algorytm Bellmana-Forda Badanie istnienia ujemnych cykli - slajd I Input: G(V, E, weight), src. 1:... : for i=1 to V - 1 do : for all (u, v) in E do 4: relax(u, v); 5: end for 6: end for 7: for all (u, v) in E do 8: if v.distance > u.distance + weight(u, v) then 9: "Istnieje ujemny cykl!" 1: end if 11: end for W pętli l.7-11 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. S 8 4 E -5 D - 4 C 1 A s a b c d e B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11 B

40 Algorytm Bellmana-Forda Badanie istnienia ujemnych cykli - slajd II Require: G(V, E, weight), src. 1:... : for all (u, v) in E do : if v.distance > u.distance + weight(u, v) then 4: "Istnieje ujemny cykl!" 5: end if 6: end for Krawędź ab: b.distance > a.distance + weight(a, b) 1 > + 9 false; Krawędź ac: c.distance > a.distance + weight(a, c) 1 > false; W pętli l.-6 krawędzie rozważane sa w porzadku leksykograficznym: ab, ac, ba, bc, cb, da, dc, ec, ed, sd, se. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11

41 Algorytm Bellmana-Forda Badanie istnienia ujemnych cykli - slajd III Krawędź ba: a.distance > b.distance + weight(b, a) 4 > 1 false; Krawędź bc: c.distance > b.distance + weight(b, c) 1 > false; Krawędź cb: b.distance > c.distance + weight(c, b) 1 > 1 false; Krawędź da: a.distance > d.distance + weight(d, a) 4 > + 4 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

42 Algorytm Bellmana-Forda Badanie istnienia ujemnych cykli - slajd IV Krawędź dc: c.distance > d.distance + weight(d, c) 1 > false; Krawędź ec: c.distance > e.distance + weight(e, c) 1 > 8 + false Krawędź ed: d.distance > e.distance + weight(e, d) > 8 5 false; Krawędź sd: d.distance > s.distance + weight(s, d) > + 4 false; B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

43 Algorytm Bellmana-Forda Badanie istnienia ujemnych cykli - slajd V Krawędź se: e.distance > s.distance + weight(s, e) 8 > + 8 false; Wniosek: Brak ujemnych cykli! B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

44 Algorytm Bellmana-Forda - podsumowanie S 8 4 E -5 D - 4 C 1 A B s a b c d e i=1 4 8 i= 8 8 i= i= i= B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 41 / 11

45 Algorytm Dijkstry Algorytm Dijkstry I Algorytm Dijkstry został opublikowany w 1959 roku i nazwany na cześć swojego twórcy holenderskiego informatyka Edsgera Dijkstry. Algorytm Dijkstry można zastosować do grafu z wagami G(V, E, weight). Graf ten może być skierowany lub nieskierowany. Algorytm Dijkstry służy do wyznaczania najmniejszej odległości od ustalonego wierzchołka scr do wszystkich pozostałych w grafie. W odróżnieniu jednak od Algorytmu Forda-Bellmana, graf wejściowy nie może zawierać krawędzi o ujemnych wagach. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

46 Algorytm Dijkstry II Algorytm Dijkstry W algorytmie pamiętany jest zbiór wierzchołków Q, dla których nie obliczono jeszcze najkrótszych ścieżek, oraz wektor distance, odległości od wierzchołka src do pozostałych wierzchołków. Poczatkowo zbiór Q zawiera wszystkie wierzchołki, a wektor distance jest ustawiony na wartość "nieznana". Dopóki zbiór Q nie jest pusty wykonuj: Pobierz ze zbioru Q wierzchołek v o najmniejszej wartości v.distance i usuń go ze zbioru. Dla każdego następnika u wierzchołka v sprawdź, czy u.distance > v.distance + w((v, u)), tzn. czy aktualne oszacowanie odległości do wierzchołka u jest większe od oszacowania odległości do wierzchołka v plus waga krawędzi (v, u). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 11

47 Algorytm Dijkstry Algorytm Dijkstry - pseudokod I Require: Graf G(V, E, weight) taki, że weight(e) dla każdego e E oraz wierzchołek źródłowy src V. Ensure: Parametr v.distance dla każdego v V taki że v.distance jest równe minimalnej odległości od src do v. 1: src.distance = ; : Q = {src}; : for all v in V \ {src} do 4: v.distance = ; 5: Q = Q {v};{dodaj v do Q.} 6: end for 7: while Q do 8: v = wierzchołek z Q o najmniejszej wartości v.distance; 9: Q = Q \ {v}; {Usuń v z Q.} 1: for all u in adj[v] do B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 44 / 11

48 Algorytm Dijkstry Algorytm Dijkstry - pseudokod II 11: if u.distance > v.distance + weight(v, u) then 1: u.distance = v.distance + weight(v, u); 1: end if 14: end for 15: end while 16: return wartości distance dla każdego wierzchołka v V ; Złożoność a a M.L. Fredman and R.E. Tarjan. Fibonacci heaps and their uses in improved network optimization algorithms. J. Assoc. Computer Machinery, 4(): ,1987 Algorytm Dijkstry można zaimplementować (przy użyciu tak zwanych kopców Fibonacciego) w czasie O( V log( V ) + E ). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 45 / 11

49 Algorytm Dijkstry 1 Slajd I zaczerpnięty z https: //brilliant.org/wiki/dijkstras-short-path-finder/. D 7 E 1 F 1 G 7 H 1 I 5 5 A B 4 C B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 46 / 11

50 Slajd II Algorytm Dijkstry 1 Krok 1: Odległości zainicjalizowane zgodnie z algorytmem. scr = G Q = {A, B, C, D, E, F, G, H, I} B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 47 / 11

51 Slajd III Algorytm Dijkstry 1 Krok : Wybierz pierwszy wierzchołek i obliczyć odległości do jego sasiadów. v = G;Q = Q \ {G} = {A, B, C, D, E, F, H, I}. relaksacja krawędzi incydentnych z G B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 48 / 11

52 Slajd IV Algorytm Dijkstry 1 Krok : Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = D;Q = Q \ {D} = {A, B, C, E, F, H, I}. relaksacja krawędzi incydentnych z D B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 49 / 11

53 Slajd V Algorytm Dijkstry 1 Krok 4: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = H;Q = Q \ {H} = {A, B, C, E, F, I}. relaksacja krawędzi incydentnych z H B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11

54 Slajd VI Algorytm Dijkstry 1 Krok 5: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = A; Q = Q \ {A} = {B, C, E, F, I}. relaksacja krawędzi incydentnych z A B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 51 / 11

55 Slajd VII Algorytm Dijkstry 1 Krok 6: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = B; Q = Q \ {B} = {C, E, F, I}. relaksacja krawędzi incydentnych z B B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11

56 Slajd VIII Algorytm Dijkstry 1 Krok 7: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = I; Q = Q \ {I} = {C, E, F}. relaksacja krawędzi incydentnych z I B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 11

57 Slajd IX Algorytm Dijkstry 1 Krok 8: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = E; Q = Q \ {E} = {C, F}. relaksacja krawędzi incydentnych z E B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 54 / 11

58 Algorytm Dijkstry 1 Slajd X Krok 9: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = C; Q = Q \ {C} = {F}. relaksacja krawędzi incydentnych z C B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 55 / 11

59 Slajd XI Algorytm Dijkstry 1 Krok 1: Wybieramy kolejny węzeł o minimalnej odległości; następnie powtarzamy obliczenia odległości dla sasiaduj acych wierzchołków. v = F; Q = Q \ {F} =. relaksacja krawędzi incydentnych z F B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 56 / 11

60 Algorytm Dijkstry 1 Slajd XII Wynikowe drzewo najkrótszych ścieżek: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 57 / 11

61 Algorytm Dijkstry Slajd I Dany jest graf: Krok 1: Odległości zainicjalizowane zgodnie z algorytmem. S B 9 6 A 1 C 1 E 7 D src = S; Q = {S, A, B, C, D, E} B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 58 / 11

62 Algorytm Dijkstry Slajd II Krok : Krok : B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 59 / 11

63 Algorytm Dijkstry Slajd III Krok 4: Krok 5: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11

64 Algorytm Dijkstry Slajd IV Krok 6: Krok 7: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 61 / 11

65 Algorytm Dijkstry Slajd V Wynikowe drzewo najkrótszych ścieżek: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11

66 Algorytm Floyda-Warshalla Twórcy Robert W. Floyd Robert W (Bob) Floyd, ur , zm. 6/9.1 amerykański informatyk. Znany z algorytmu Floyda-Warshalla, który efektywnie znajduje wszystkie najkrótsze ścieżki w grafie. Laureat nagrody Turinga nadawanej przez organizację ACM Laureat nagrody Pioniera Informatyki, nadawanej przez ogranizację IEEE Computer Society 1991 Więcej na: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 11

67 Algorytm Floyda-Warshalla Twórcy Stephen Warshall Stephen Warshall, ur , zm amerykański informatyk. Znany z algorytmu Floyda-Warshalla, który efektywnie znajduje wszystkie najkrótsze ścieżki w grafie. Podczas swojej kariery naukowej S. Warshall prowadził badania w zakresie systemów operacyjnych, projektowania kompilatorów, projektowania języków oraz analizy operacyjnej. Więcej na: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 64 / 11

68 Algorytm Floyda-Warshalla Algorytm Floyda-Warshalla Informacje wstępne Algorytm Floyda-Warshalla został zaproponowany niezależnie przez Roberta W. Floyda i Stephena Warshalla w pracach: R. W. Floyd. Algorithm 97: shortest path. Communications of the ACM, 5:45, 196. S. Warshall. A theorem on boolean matrices. J. ACM, 9:11 1, 196 Algorytm Floyda-Warshalla, podobnie jak algorytm Bellmana-Forda lub algorytm Dijkstry, oblicza najkrótsza ścieżkę w grafie. Algorytmy Bellmana-Forda oraz Dijkstry obliczaja najkrótsza ścieżkę tylko z jednego źródła. Algorytm Floyda-Warshalla oblicza najkrótsze odległości pomiędzy każda para wierzchołków w grafie. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 65 / 11

69 Slajd I Algorytm Floyda-Warshalla Pseudokod Input: Graf G(V, E, weight). Output: Miacierz D taka, że D[i][j] jest najkrótsza odległościa od wierzchołka i do j 1: for all D[i][j] D do : if i == j then : D[i][j] = ; 4: end if 5: if (i, j) jest krawędzia z E then 6: D[i][j] = weight(i, j); 7: else 8: D[i][j] = ; 9: end if 1: end for 11: for k=1 to V do B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 66 / 11

70 Slajd II Algorytm Floyda-Warshalla Pseudokod 1: for all i=1 to V do 1: for all j=1 to V do 14: if D[i][j] > D[i][k] + D[k][j] then 15: D[i][j] = D[i][k] + D[k][j]; 16: end if 17: end for 18: end for 19: end for B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 67 / 11

71 Algorytm Floyda-Warshalla Pseudokod Złożoność obliczeniowa I Algorytm Floyda-Warshalla można zaimplementować w czasie O( V ). Algorytm Floyda-Warshall jest zależny tylko od liczby wierzchołków w grafie. Czyni go to szczególnie użytecznym dla grafów gęstych, gdyż w ogóle nie zależy od liczby krawędzi. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 68 / 11

72 Algorytm Floyda-Warshalla Slajd I Macierz D po wykonaniu linii 1 1 algorytmu Floyda-Warshalla. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 69 / 11

73 Slajd II Algorytm Floyda-Warshalla Macierz D po wykonaniu linii algorytmu Floyda-Warshalla, dla k=1. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11

74 Slajd III Algorytm Floyda-Warshalla Macierz D po wykonaniu linii algorytmu Floyda-Warshalla, dla k=. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 71 / 11

75 Slajd IV Algorytm Floyda-Warshalla Macierz D po wykonaniu linii algorytmu Floyda-Warshalla, dla k=. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11

76 Slajd V Algorytm Floyda-Warshalla Macierz D po wykonaniu linii algorytmu Floyda-Warshalla, dla k=4. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 11

77 Slajd VI Algorytm Floyda-Warshalla Macierz D po wykonaniu linii algorytmu Floyda-Warshalla, dla k=5. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 74 / 11

78 Wprowadzenie, slajd I Algorytm Johnsona Algorytm Johnsona podobnie jak algorytm Floyda-Warshalla zajmuje się znalezieniem najkrótszych ścieżek dla wszystkich par wierzchołków. Algorytm Floyda-Warshalla jest najbardziej efektywny w przypadku grafów gęstych (wiele krawędzi), natomiast gdy algorytm Johnsona jest najbardziej skuteczny w przypadku grafów rzadkich (niewiele krawędzi). Powodem, dla którego algorytm Johnsona jest lepszy dla grafów rzadkich, jest to, że jego złożoność czasowa zależy również od liczby krawędzi w grafie, podczas gdy w algorytmie Floyda-Warshalla nie. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 75 / 11

79 Algorytm Johnsona Wprowadzenie, slajd II Algorytm Johnsona działa w czasie O( V log( V ) + V E ). Zatem, jeśli liczba krawędzi jest mała (tzn. graf jest rzadki), będzie on działał szybciej niż algorytm Floyd-Warshall, który działa w czasie O( V ). Algorytm Johnsona składa się z trzech głównych kroków. 1 Dodajemy nowy wierzchołek do grafu i łaczymy go krawędziami o zerowej wadze z wszystkimi pozostałymi wierzchołkami grafu. Wykonujemy dla wszystkich krawędzi proces ponownego ważenia, który eliminuje ujemne wagi, przy pomocy algorytmu Bellmana-Forda. Usuwamy wierzchołek dodany w kroku 1 i uruchamiamy algorytm Dijkstry dla każdego węzła w grafie. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 76 / 11

80 Slajd I Algorytm Johnsona Pseudokod Require: Graf G(V, E, weight). Ensure: Miacierz D taka, że D[i][j] jest najkrótsza odległościa od wierzchołka i do j 1: Utwórz G taki, że G.V = G.V + {s}, G.E = G.E + {(s, u) dla każdego u G.V } oraz weight(s, u) = dla każdego u G.V : if Bellman Ford(G, s) == False then : return Graf ma ujemny cykl. 4: else 5: for all v G.V do 6: h(v) = distance(s, v) obliczony przez algorytm Bellmana-Forda 7: end for 8: for all (u, v) G.E do 9: weight (u, v) = weight(u, v) + h(u) h(v); B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 77 / 11

81 Slajd II Algorytm Johnsona Pseudokod 1: end for 11: for all D[i][j] D do 1: D[i][j] = ; 1: end for 14: for all u G.V do 15: wykonaj Dijkstra(G, weight, u) aby obliczyć distance (u, v) dla każdego v G.V. 16: for all v G.V do 17: D[u][v] = distance (u, v) + h(v) h(u); 18: end for 19: end for : end if B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 78 / 11

82 Linia 1 algorytmu. Algorytm Johnsona Graf wejściowy G Graf G z dodanym wierzchołkiem i krawędziami. L. 1 algorytmu. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 79 / 11

83 Algorytm Johnsona Linie -7 algorytmu. Slajd I Wiemy, że graf nie ma ujemnych cykli. Poniżej wykonanie L. 5-7 algorytmu. Wierzchołek źródłowy:. Lista krawędzi: (, 1), (, ), (, ), (, 4), (, 5), (1, ), (1, ), (1, 5). (, 4), (, 5), (, ), (4, 1), (4, ), (5, 4). Relaksacja, wykonana V 1 = 5 razy: 1 i=1: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

84 Algorytm Johnsona Linie -7 algorytmu. Slajd II (, 1): 1.distance >.distance + weight(, 1). > +. 1.distance =. (, ):.distance >.distance + weight(, ). > +..distance =. (, ):.distance >.distance + weight(, ). > +..distance =. (, 4): 4.distance >.distance + weight(, 4). > +. 4.distance =. (, 5): 5.distance >.distance + weight(, 5). > +. 5.distance =. (1, ):.distance > 1.distance + weight(1, ). > +. brak korekty. (1, ):.distance > 1.distance + weight(1, ). > + 8. brak korekty. (1, 5): 5.distance > 1.distance + weight(1, 5). > + ( 4). 5.distance = 4. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 81 / 11

85 Algorytm Johnsona Linie -7 algorytmu. Slajd III (, 4): 4.distance >.distance + weight(, 4). > + 1. brak korekty. (, 5): 5.distance >.distance + weight(, 5). 4 > + 7. brak korekty. (, ):.distance >.distance + weight(, ). > + 4. brak korekty. (4, 1): 1.distance > 4.distance + weight(4, 1). > +. brak korekty. (4, ):.distance > 4.distance + weight(4, ). > + ( 5)..distance = 5. (5, 4): 4.distance > 5.distance + weight(5, 4). > =. brak korekty. i=: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

86 Algorytm Johnsona Linie -7 algorytmu. Slajd IV (, 1): 1.distance >.distance + weight(, 1). > + =. brak korekty. (, ):.distance >.distance + weight(, ). > + =. brak korekty. (, ):.distance >.distance + weight(, ). 5 > + =. brak korekty. (, 4): 4.distance >.distance + weight(, 4). > + =. brak korekty. (, 5): 5.distance >.distance + weight(, 5). 4 > + =. brak korekty. (1, ):.distance > 1.distance + weight(1, ). > + =. brak korekty. (1, ):.distance > 1.distance + weight(1, ). 5 > + 8 = 8. brak korekty. (1, 5): 5.distance > 1.distance + weight(1, 5). 4 > 4 = 4. brak korekty. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 11

87 Algorytm Johnsona Linie -7 algorytmu. Slajd V i=: (, 4): 4.distance >.distance + weight(, 4). > + 1 = 1. brak korekty. (, 5): 5.distance >.distance + weight(, 5). 4 > + 7 = 7. brak korekty. (, ):.distance >.distance + weight(, ). > = 1..distance = 1. (4, 1): 1.distance > 4.distance + weight(4, 1). > + =. brak korekty. (4, ):.distance > 4.distance + weight(4, ). 5 > 5 = 5. brak korekty. (5, 4): 4.distance > 5.distance + weight(5, 4). > =. brak korekty B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 84 / 11

88 Algorytm Johnsona Linie -7 algorytmu. Slajd VI (, 1): 1.distance >.distance + weight(, 1). > + =. brak korekty. (, ):.distance >.distance + weight(, ). 1 > + =. brak korekty. (, ):.distance >.distance + weight(, ). 5 > + =. brak korekty. (, 4): 4.distance >.distance + weight(, 4). > + =. brak korekty. (, 5): 5.distance >.distance + weight(, 5). 4 > + =. brak korekty. (1, ):.distance > 1.distance + weight(1, ). 1 > + =. brak korekty. (1, ):.distance > 1.distance + weight(1, ). 5 > + 8 = 8. brak korekty. (1, 5): 5.distance > 1.distance + weight(1, 5). 4 > 4 = 4. brak korekty. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 85 / 11

89 Algorytm Johnsona Linie -7 algorytmu. Slajd VII (, 4): 4.distance >.distance + weight(, 4). > =. brak korekty. (, 5): 5.distance >.distance + weight(, 5). 4 > = 6. brak korekty. (, ):.distance >.distance + weight(, ). 1 > = 1. brak korekty. (4, 1): 1.distance > 4.distance + weight(4, 1). > + =. brak korekty. (4, ):.distance > 4.distance + weight(4, ). 5 > 5 = 5. brak korekty. (5, 4): 4.distance > 5.distance + weight(5, 4). > =. brak korekty. 4 i=4, i=5: nic nie zmieni B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 86 / 11

90 Algorytm Johnsona Linie 8-1 algorytmu. Slajd I weight (, 1) = weight(, 1) + h() h(1) = + =, weight (, ) = weight(, ) + h() h() = + ( 1) = 1, weight (, ) = weight(, ) + h() h() = + ( 5) = 5, weight (, 4) = weight(, 4) + h() h(4) = + =, weight (, 5) = weight(, 5) + h() h(5) = + ( 4) = 4, weight (1, ) = weight(1, ) + h(1) h() = + ( 1) = 4, weight (1, ) = weight(1, ) + h(1) h() = 8 + ( 5) = 1, weight (1, 5) = weight(1, 5) + h(1) h(5) = 4 + ( 4) =, weight (, 4) = weight(, 4) + h() h(4) = 1 1 =, weight (, 5) = weight(, 5) + h() h(5) = 7 1 ( 4) = 1, weight (, ) = weight(, ) + h() h() = 4 5 ( 1) =, weight (4, 1) = weight(4, 1) + h(4) h(1) = + =, weight (4, ) = weight(4, ) + h(4) h() = 5 + ( 5) =, weight (5, 4) = weight(5, 4) + h(5) h(4) = 6 4 =. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 87 / 11

91 Algorytm Johnsona Linie 8-1 algorytmu. Slajd II Graf G z aktualizacja wagi w wierzchołkach po uruchomieniu algorytmu Bellmana-Forda dla wierzchołka Korekta wag na krawędziach po uruchomieniu algorytmu Bellmana-Forda dla każdego wierzchołka w G. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 88 / 11

92 Algorytm Johnsona Linie algorytmu. Slajd I Teraz dla każdego wierzchołka należy wykonać algorytm Dijkstry. Niech wierzchołkiem źródłowym będzie: Graf wejściowy 4 1/ / 4 1 / 1 5/ 4/ Krok 1. Etykieta x/y oznacza: x nr wierzchołka, y aktualna odległość od wierzchołka źródłowego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 89 / 11

93 Algorytm Johnsona Linie algorytmu. Slajd II 1/ 4 1 /4 1 /1 1/ 4 1 /4 1 /1 5/ 4/ 5/ 4/ Krok : Krok : B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

94 Algorytm Johnsona Linie algorytmu. Slajd III 1/ 4 1 /4 1 / 1/ 4 1 / 1 / 5/ 4/ 5/ 4/ Krok 4: Krok 5: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 91 / 11

95 Algorytm Johnsona Linie algorytmu. Slajd IV 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/ 4/ Krok 6: 5/ 4/ Krok 7: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

96 Algorytm Johnsona Linie algorytmu. Slajd V Obliczamy 1 wiersz macierz D 5 5 : D[1][1] = distance (1, 1) = D[1][] = distance (1, ) + h() h(1) = + ( 1) = 1 D[1][] = distance (1, ) + h() h(1) = + ( 5) = D[1][4] = distance (1, 4) + h(4) h(1) = + = D[1][5] = distance (1, 5) + h(5) h(1) = + ( 4) = B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 11

97 Algorytm Johnsona Linie algorytmu. Slajd VI Teraz dla każdego wierzchołka należy wykonać algorytm Dijkstry. Niech wierzchołkiem źródłowym będzie: / 4 1/ 1 / 1 5/ 4/ 5 4 Graf wejściowy Krok 1. Etykieta x/y oznacza: x nr wierzchołka, y aktualna odległość od wierzchołka źródłowego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 94 / 11

98 Algorytm Johnsona Linie algorytmu. Slajd VII / 4 1/ 1 / 1 5/1 Krok. 4/ / 4 1/ 1 / 1 5/1 Krok. 4/ B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 95 / 11

99 Algorytm Johnsona Linie algorytmu. Slajd VIII 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/1 4/ 5/ 4/ Krok 4. Krok 5. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 96 / 11

100 Algorytm Johnsona Linie algorytmu. Slajd IX 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/ 4/ 5/ 4/ Krok 6. Krok 7. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 97 / 11

101 Algorytm Johnsona Linie algorytmu. Slajd X Obliczamy wiersz macierz D 5 5 : D[][1] = distance (, 1) + h(1) h() = + ( 1) = D[][] = distance (, ) + h() h() = D[][] = distance (, ) + h() h() = + ( 5) ( 1) = 4 D[][4] = distance (, 4) + h(4) h() = + ( 1) = 1 D[][5] = distance (, 5) + h(5) h() = + ( 4) ( 1) = B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 98 / 11

102 Algorytm Johnsona Linie algorytmu. Slajd XI Teraz dla każdego wierzchołka należy wykonać algorytm Dijkstry. Niech wierzchołkiem źródłowym będzie: wejściowy Graf 1/ / 4 1 / 1 5/ 4/ Krok 1. Etykieta x/y oznacza: x nr wierzchołka, y aktualna odległość od wierzchołka źródłowego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 99 / 11

103 Algorytm Johnsona Linie algorytmu. Slajd XII 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/ 4/ Krok. 5/1 4/ Krok. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

104 Algorytm Johnsona Linie algorytmu. Slajd XIII 1/ 4 1 / 1 / / 4 1/ 1 / 1 5/1 4/ 5/ 4/ Krok 4. Krok 5. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

105 Algorytm Johnsona Linie algorytmu. Slajd XIV / 4 1/ 1 / 1 / 4 1/ 1 / 1 5/ 4/ 5/ 4/ Krok 6. Krok 7. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

106 Algorytm Johnsona Linie algorytmu. Slajd XV Obliczamy wiersz macierz D 5 5 : D[][1] = distance (, 1) + h(1) h() = + ( 5) = 7 D[][] = distance (, ) + h() h() = + ( 1) ( 5) = 4 D[][] = distance (, ) + h() h() = D[][4] = distance (, 4) + h(4) h() = + ( 5) = 5 D[][5] = distance (, 5) + h(5) h() = + ( 4) ( 5) = B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 11

107 Algorytm Johnsona Linie algorytmu. Slajd XVI Teraz dla każdego wierzchołka należy wykonać algorytm Dijkstry. Niech wierzchołkiem źródłowym będzie: wejściowy Graf 1/ 5/ / 4 1 / 1 4/ Krok 1. Etykieta x/y oznacza: x nr wierzchołka, y aktualna odległość od wierzchołka źródłowego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 14 / 11

108 Algorytm Johnsona Linie algorytmu. Slajd XVII 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/ 4/ 5/ 4/ Krok. Krok. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 15 / 11

109 Algorytm Johnsona Linie algorytmu. Slajd XVIII 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/1 4/ Krok 4. 5/ 4/ Krok 5. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 16 / 11

110 Algorytm Johnsona Linie algorytmu. Slajd XIX 1/ 4 1 / 1 / 1/ 4 1 / 1 / 5/ 4/ 5/ 4/ Krok 6. Krok 7. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 17 / 11

111 Algorytm Johnsona Linie algorytmu. Slajd XX Obliczamy 4 wiersz macierz D 5 5 : D[4][1] = distance (4, 1) + h(1) h(4) = + = D[4][] = distance (4, ) + h() h(4) = + ( 1) = 1 D[4][] = distance (4, ) + h() h(4) = + ( 5) = 5 D[4][4] = distance (4, 4) + h(4) h(4) = + = D[4][5] = distance (4, 5) + h(5) h(4) = + ( 4) = B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 18 / 11

112 Algorytm Johnsona Linie algorytmu. Slajd XXI wejściowy Graf 1/ 5/ / 4 1 / 1 4/ Krok 1. Etykieta x/y oznacza: x nr wierzchołka, y aktualna odległość od wierzchołka źródłowego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 19 / 11

113 Algorytm Johnsona Linie algorytmu. Slajd XXII 1/ 4 1 / 1 / 1/4 4 1 / 1 / 5/ 4/ 5/ 4/ Krok. Krok. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

114 Algorytm Johnsona Linie algorytmu. Slajd XXIII 1/4 4 1 / 1 / 1/4 4 1 / 1 / 5/ 4/ Krok 4. 5/ 4/ Krok 5. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 111 / 11

115 Algorytm Johnsona Linie algorytmu. Slajd XXIV 1/4 4 1 / 1 / 1/4 4 1 / 1 / 5/ 4/ Krok 6. 5/ 4/ Krok 7. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

116 Algorytm Johnsona Linie algorytmu. Slajd XXV Obliczamy 5 wiersz macierz D 5 5 : D[5][1] = distance (5, 1) + h(1) h(5) = 4 + ( 4) = 8 D[5][] = distance (5, ) + h() h(5) = + ( 1) ( 4) = 5 D[5][] = distance (5, ) + h() h(5) = + ( 5) ( 4) = 1 D[5][4] = distance (5, 4) + h(4) h(5) = + ( 4) = 6 D[5][5] = distance (5, 5) + h(5) h(5) = B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 11

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 53

Bardziej szczegółowo

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015 Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First

Bardziej szczegółowo

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy wyznaczania centralności w sieci Szymon Szylko Algorytmy wyznaczania centralności w sieci Szymon Szylko Zakład systemów Informacyjnych Wrocław 10.01.2008 Agenda prezentacji Cechy sieci Algorytmy grafowe Badanie centralności Algorytmy wyznaczania centralności

Bardziej szczegółowo

Digraf. 13 maja 2017

Digraf. 13 maja 2017 Digraf 13 maja 2017 Graf skierowany, digraf, digraf prosty Definicja 1 Digraf prosty G to (V, E), gdzie V jest zbiorem wierzchołków, E jest rodziną zorientowanych krawędzi, między różnymi wierzchołkami,

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 8 1 / 39 Plan wykładu

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

Bardziej szczegółowo

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Używane struktury danych: V - zbiór wierzchołków grafu, V = {1,2,3...,n} E - zbiór krawędzi grafu, E = {(i,j),...}, gdzie i, j Î V i istnieje

Bardziej szczegółowo

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 5 i 6 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

5. Najkrótsze ścieżki

5. Najkrótsze ścieżki p. Definicja 5. Najkrótsze ścieżki 5.1 Odległości w grafach: definicje i własności (Długość ścieżki). Długościa ścieżki nazywamy liczbę krawędzi występujacych w tej ścieżce. Bardziej formalnie, jeżeli

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa

Bardziej szczegółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane: Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem

Bardziej szczegółowo

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych. Grafy Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Wykład 10 Grafy, algorytmy grafowe

Wykład 10 Grafy, algorytmy grafowe . Typy złożoności obliczeniowej Wykład Grafy, algorytmy grafowe Typ złożoności oznaczenie n Jedna operacja trwa µs 5 logarytmiczna lgn. s. s.7 s liniowa n. s.5 s. s Logarytmicznoliniowa nlgn. s.8 s.4 s

Bardziej szczegółowo

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykład 8. Drzewo rozpinające (minimum spanning tree) Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,

Bardziej szczegółowo

Szukanie najkrótszych dróg z jednym ródłem

Szukanie najkrótszych dróg z jednym ródłem Szukanie najkrótszych dróg z jednym ródłem Algorytm Dijkstry Załoenia: dany jest spójny graf prosty G z wagami na krawdziach waga w(e) dla kadej krawdzi e jest nieujemna dany jest wyróniony wierzchołek

Bardziej szczegółowo

Złożoność obliczeniowa klasycznych problemów grafowych

Złożoność obliczeniowa klasycznych problemów grafowych Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

G. Wybrane elementy teorii grafów

G. Wybrane elementy teorii grafów Dorota Miszczyńska, Marek Miszczyński KBO UŁ Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów Grafy są stosowane współcześnie w różnych działach nauki i techniki. Za pomocą grafów znakomicie

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Programowanie rekurencyjne: ZALETY: - prostota - naturalność sformułowania WADY: - trudność w oszacowaniu zasobów (czasu i pamięci) potrzebnych do realizacji Czy jest możliwe wykorzystanie

Bardziej szczegółowo

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 1 Podstawy teorii grafów Reprezentacje grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA DROGI i CYKLE w grafach Dla grafu (nieskierowanego) G = ( V, E ) drogą z wierzchołka v 0 V do v t V nazywamy ciąg (naprzemienny) wierzchołków i krawędzi grafu: ( v 0, e, v, e,..., v t, e t, v t ), spełniający

Bardziej szczegółowo

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Siedem cudów informatyki czyli o algorytmach zdumiewajacych Siedem cudów informatyki czyli o algorytmach zdumiewajacych Łukasz Kowalik kowalik@mimuw.edu.pl Instytut Informatyki Uniwersytet Warszawski Łukasz Kowalik, Siedem cudów informatyki p. 1/25 Problem 1: mnożenie

Bardziej szczegółowo

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach

Bardziej szczegółowo

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Drzewa Las - graf, który nie zawiera cykli Drzewo - las spójny Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Niech T graf o n wierzchołkach będący

Bardziej szczegółowo

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 2 Przeszukiwanie grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów 3. Spójność grafu,

Bardziej szczegółowo

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY ERIAŁY DO WYKŁADU GRAFY Graf nieskierowany Grafem nieskierowanym nazywamy parę G = (V, E), gdzie V jest pewnym zbiorem skończonym (zwanym zbiorem wierzchołków grafu G), natomiast E jest zbiorem nieuporządkowanych

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Zagadnienie najkrótszej drogi w sieci

Zagadnienie najkrótszej drogi w sieci L L Zagadnienie najkrótszej drogi w sieci 1 Rozważmy sieć, gdzie graf jest grafem skierowanym (digrafem) a jest funkcją określoną na zbiorze łuków. Wartość tej funkcji na łuku!"$#%'&, którą oznaczać będziemy

Bardziej szczegółowo

Grafy i sieci w informatyce - opis przedmiotu

Grafy i sieci w informatyce - opis przedmiotu Grafy i sieci w informatyce - opis przedmiotu Informacje ogólne Nazwa przedmiotu Grafy i sieci w informatyce Kod przedmiotu 11.9-WI-INFD-GiSwI Wydział Kierunek Wydział Informatyki, Elektrotechniki i Automatyki

Bardziej szczegółowo

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Teoria grafów podstawy Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Grafy zorientowane i niezorientowane Przykład 1 Dwa pociągi i jeden most problem wzajemnego wykluczania się Dwa

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016 Podstawy Programowania 2 Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 9 czerwca 2016 1 42 Plan 1 Wstęp 2 Teoria grafów 3 Grafy jako struktury danych 4 Zastosowania grafów 2 42 Wstęp Wstęp

Bardziej szczegółowo

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki. Podstawy Programowania Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 7 maja 09 / 4 Plan Wstęp Zastosowania grafów / 4 Wstęp Grafy są w informatyce strukturami danych stosowanymi w wielu

Bardziej szczegółowo

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne Przypominajka: 152 drzewo filogenetyczne to drzewo, którego liśćmi są istniejące gatunki, a węzły wewnętrzne mają stopień większy niż jeden i reprezentują

Bardziej szczegółowo

Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe)

Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe) Konspekt 15 października 2014 1 Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe) 1.1 Przykładowe problemy optymalizacji kombinatorycznej na grafach 1. Optymalizacja

Bardziej szczegółowo

Sprawozdanie do zadania numer 2

Sprawozdanie do zadania numer 2 Sprawozdanie do zadania numer 2 Michał Pawlik 29836 Temat: Badanie efektywności algorytmów grafowych w zależności od rozmiaru instancji oraz sposobu reprezentacji grafu w pamięci komputera 1 WSTĘP W ramach

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Informacje podstawowe 1. Konsultacje: pokój

Bardziej szczegółowo

Podejście zachłanne, a programowanie dynamiczne

Podejście zachłanne, a programowanie dynamiczne Podejście zachłanne, a programowanie dynamiczne Algorytm zachłanny pobiera po kolei elementy danych, za każdym razem wybierając taki, który wydaje się najlepszy w zakresie spełniania pewnych kryteriów

Bardziej szczegółowo

6. Wstępne pojęcia teorii grafów

6. Wstępne pojęcia teorii grafów 6. Wstępne pojęcia teorii grafów Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 6. Wstępne pojęcia teorii grafów zima 2016/2017

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na

Bardziej szczegółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem

Bardziej szczegółowo

Graf. Definicja marca / 1

Graf. Definicja marca / 1 Graf 25 marca 2018 Graf Definicja 1 Graf ogólny to para G = (V, E), gdzie V jest zbiorem wierzchołków (węzłów, punktów grafu), E jest rodziną krawędzi, które mogą być wielokrotne, dokładniej jednoelementowych

Bardziej szczegółowo

Algorytmy z powracaniem

Algorytmy z powracaniem Algorytmy z powracaniem Materiały Grafem nazywamy zbiór G = (V, E), gdzie: V jest zbiorem wierzchołków (ang. vertex) E jest zbiorem krawędzi (E można też określić jako podzbiór zbioru nieuporządkowanych

Bardziej szczegółowo

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

Bardziej szczegółowo

Minimalne drzewa rozpinające

Minimalne drzewa rozpinające KNM UŚ 26-28 listopada 2010 Ostrzeżenie Wprowadzenie Motywacja Definicje Niektóre pojęcia pojawiające się podczas tego referatu są naszymi autorskimi tłumaczeniami z języka angielskiego. Nie udało nam

Bardziej szczegółowo

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku DWA ZDANIA O TEORII GRAFÓW Krawędź skierowana Grafy a routing Każdą sieć przedstawić składającego przedstawiają E, inaczej węzłami). komunikacyjną można w postaci grafu G się z węzłów V (które węzły sieci)

Bardziej szczegółowo

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych NEUMNN Tomasz 1 lgorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych WSTĘP W systemach zarządzania transportem jedną z najbardziej istotnych kwestii jest zapewnienie najkrótszej

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku ( Rozdział 1 Grafy skierowane W tym rozdziale zajmiemy siȩ algorytmami wyszukiwania najkrótszej drogi w grafach skierowanych Każdej krawȩdzi

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova M. Czoków, J. Piersa 2010-12-21 1 Definicja Własności Losowanie z rozkładu dyskretnego 2 3 Łańcuch Markova Definicja Własności Losowanie z rozkładu

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa M. Czoków, J. Piersa 2012-01-10 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego 3 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego

Bardziej szczegółowo

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy Testowanie układów kombinacyjnych Przykładowy układ Wykrywanie błędów: 1. Sklejenie z 0 2. Sklejenie z 1 Testem danego uszkodzenia nazywa się takie wzbudzenie funkcji (wektor wejściowy), które daje błędną

Bardziej szczegółowo

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów W matematyce teorię grafów klasyfikuje się jako gałąź topologii. Jest ona jednak ściśle związana z algebrą i

Bardziej szczegółowo

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14 Algorytmy dynamiczne Piotr Sankowski - p. 1/14 Dynamiczne: drzewa wyszukiwanie wzorca w tekście spójność grafu problemy algebraiczne (FFT i inne) domknięcie przechodnie oraz dynamiczne macierze najkrótsze

Bardziej szczegółowo

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Drzewa: Drzewo (ang. tree) jest strukturą danych zbudowaną z elementów, które nazywamy węzłami (ang. node).

Bardziej szczegółowo

Wykład 7. Algorytmy grafowe

Wykład 7. Algorytmy grafowe Wykład Algorytmy grafowe Algorytmy grafowe i podstawowe algorytmy przeszukiwania Problem Definicje i własności Reprezentacja Przeszukiwanie wszerz (Breadthirst Search) Przeszukiwanie w głąb (Depthirst

Bardziej szczegółowo

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T ) Joanna Berlińska Algorytmika w projektowaniu systemów - ćwiczenia 1 1 Problem 1 prec f max 1 procesor (ich zbiór oznaczamy przez T ) czas wykonania zadania T j wynosi p j z zadaniem T j związana jest niemalejąca

Bardziej szczegółowo

Programowanie dynamiczne i algorytmy zachłanne

Programowanie dynamiczne i algorytmy zachłanne Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Przykład planowania sieci publicznego transportu zbiorowego

Przykład planowania sieci publicznego transportu zbiorowego TRANSPORT PUBLICZNY Przykład planowania sieci publicznego transportu zbiorowego Źródło: Bieńczak M., 2015 Politechnika Poznańska, Wydział Maszyn Roboczych i Transportu 1 METODYKA ZAŁOśENIA Dostarczanie

Bardziej szczegółowo

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA? /9/ Zagadnienie transportowe Optymalizacja w procesach biznesowych Wykład --9 Plan wykładu Przykład zagadnienia transportowego Sformułowanie problemu Własności zagadnienia transportowego Metoda potencjałów

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Podstawowe pojęcia i klasy grafów Wykład 1 Grafy nieskierowane Definicja Graf nieskierowany (graf) G = (V,E) jest to uporządkowana para składająca się z niepustego skończonego zbioru wierzchołków V oraz

Bardziej szczegółowo

Schemat programowania dynamicznego (ang. dynamic programming)

Schemat programowania dynamicznego (ang. dynamic programming) Schemat programowania dynamicznego (ang. dynamic programming) Jest jedną z metod rozwiązywania problemów optymalizacyjnych. Jej twórcą (1957) był amerykański matematyk Richard Ernest Bellman. Schemat ten

Bardziej szczegółowo

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 1,2,3 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Grafy w MATLABie. LABORKA Piotr Ciskowski

Grafy w MATLABie. LABORKA Piotr Ciskowski Grafy w MATLABie LABORKA Piotr Ciskowski przykład 1 SIMBIOLOGY MODEL OF A REPRESSILATOR OSCILLATORY NETWORK Repressilator oscillatory network (cokolwiek to znaczy ;-) żródło: http://www.mathworks.com/help/bioinfo/examples/working-with-graph-theory-functions.html

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

PROJEKT Z TEORETYCZNYCH PODSTAW INFORMATYKI

PROJEKT Z TEORETYCZNYCH PODSTAW INFORMATYKI Autor: DAWID PICHEN (132775) PROJEKT Z TEORETYCZNYCH PODSTAW INFORMATYKI Temat: ALGORYTM DIJKSTRA Wstęp Celem niniejszego projektu była implementacja, analiza i wskazanie złoŝoności obliczeniowej algorytmu

Bardziej szczegółowo

ALGORYTMY OPTYMALIZACJI TRAS PRZEJAZDU POJAZDÓW

ALGORYTMY OPTYMALIZACJI TRAS PRZEJAZDU POJAZDÓW STUDIA INFORMATICA 2011 Volume 32 Number 4A (100) Jacek WIDUCH Politechnika Śląska, Instytut Informatyki ALGORYTMY OPTYMALIZACJI TRAS PRZEJAZDU POJAZDÓW Streszczenie. Wyznaczanie tras przejazdu jest jednym

Bardziej szczegółowo

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? DROGI i CYKLE EULERA w grafach Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? Czy można narysować podaną figurę nie odrywając ołówka od papieru

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15 Matematyka dyskretna Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl 14/15 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Podstawowe własności grafów. Wykład 3. Własności grafów

Podstawowe własności grafów. Wykład 3. Własności grafów Wykład 3. Własności grafów 1 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2). 2 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2).

Bardziej szczegółowo

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW RELACJE MIEDZY KLASAMI ZŁOŻONOŚCI Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 KLASY ZŁOŻONOŚCI KLASE ZŁOŻONOŚCI OPISUJE SIE PODAJAC: Model

Bardziej szczegółowo

Elementy teorii grafów Elementy teorii grafów

Elementy teorii grafów Elementy teorii grafów Spis tresci 1 Spis tresci 1 Często w zagadnieniach praktycznych rozważa się pewien zbiór obiektów wraz z zależnościami jakie łączą te obiekty. Dla przykładu można badać pewną grupę ludzi oraz strukturę

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 BFS DFS Algorytm Dijkstry Algorytm Floyda-Warshalla Podstawowe pojęcia Definition Graf = wierzchołki + krawędzie. Krawędzie muszą

Bardziej szczegółowo

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting. Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.. Oznaczenia i załoenia Oznaczenia G = - graf skierowany z funkcj wagi s wierzchołek ródłowy t wierzchołek

Bardziej szczegółowo

Zadania przykładowe do kolokwium z AA2

Zadania przykładowe do kolokwium z AA2 1 Zadania przykładowe do kolokwium z AA2 Zadanie 1 Dla tekstu ALA MA KOTA ALE ON MA ALERGIĘ zilustruj działanie algorytmów: a) LZ77, b) LZ78, c) LZSS. Załóż, że maksymalna długość dopasowania to 4, rozmiar

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel. WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk 01-447 Warszawa, ul. Newelska 6, tel. 22 3486544 Wydział Informatyki Kierunek studiów Profil Stopień studiów Forma

Bardziej szczegółowo

Wysokość drzewa Głębokość węzła

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Znajdowanie skojarzeń na maszynie równoległej

Znajdowanie skojarzeń na maszynie równoległej 11 grudnia 2008 Spis treści 1 Skojarzenia w różnych klasach grafów Drzewa Grafy gęste Grafy regularne dwudzielne Claw-free graphs 2 Drzewa Skojarzenia w drzewach Fakt Wybierajac krawędź do skojarzenia

Bardziej szczegółowo

Wybrane podstawowe rodzaje algorytmów

Wybrane podstawowe rodzaje algorytmów Wybrane podstawowe rodzaje algorytmów Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznych

Bardziej szczegółowo