ALGORYTMY GRAFOWE.

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

PRAM.
STRUKTURY DANYCH.
DOMINOWANIE W GRAFACH Magdalena Lemańska.
Zaawansowane techniki algorytmiczne
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Grafy inaczej, czyli inne modele grafów
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
Algorytm Dijkstry (przykład)
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Ciągi de Bruijna generowanie, własności
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 2. Kolorowanie wierzchołków
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 1. Grafy są wokół nas. Pojęcia wstępne.
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
WYKŁAD 5. Skojarzenia – ciąg dalszy
Imperatywne modele obliczeń Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Teoretyczne podstawy informatyki
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Algorytmy grafowe Reprezentacja w pamięci
Geometria obrazu Wykład 12
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Minimalne drzewa rozpinające
Algorytmy i Struktury Danych Sortowanie
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Graf - jest to zbiór wierzchołków, który na rysunku przedstawiamy za pomocą kropek oraz krawędzi łączących wierzchołki. Czasami dopuszcza się krawędzie.
Algorytmy i struktury danych
Algorytmy i struktury danych
Reprezentacja grafów i operacje na grafach na przykładzie algorytmu Dijkstry i algorytmu na odnajdywanie Silnych Spójnych Składowych Temat Opracowali:
Rodzaje, przechodzenie grafu
3. SPOSOBY REPREZENTACJI GRAFÓW
Instrukcja warunkowa i wyboru
Geometria obliczeniowa Wykład 12
Algorytm Dijkstry 1 Zbiory: T - zbiór wierzchołków
Dynamiczne struktury danych
Algorytmy i Struktury Danych
Geometria obliczeniowa Wykład 13 Planowanie ruchu 1.Znajdywanie ścieżki między dwoma punktami. 2.Ruch postępowy robota wielokątnego na płasz- czyźnie.
Geometria obrazu Wykład 6
PLANARNOŚĆ i KOLOROWANIE MAP. Problem Jaka jest minimalna liczba kolorów, za pomocą których można pokolorować obszary województw na mapie Polski tak,
Algorytmy i Struktury Danych Grafy
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
Algorytmy grafowe Minimalne drzewa rozpinające
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Przeszukiwanie wszerz
Literatura podstawowa
METODY NUMERYCZNE Katedra Mikroelektroniki i Technik Informatycznych
Grafy.
ALGORYTMY I STRUKTURY DANYCH
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Algorytm Dijkstry Podano graf Zdefiniowano jego listę sąsiedztwa 1 2 3
Kompresja grafu webowego
Macierzowe systemy kodowania konstytucji cząsteczki
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

ALGORYTMY GRAFOWE

REPREZENTACJE GRAFÓW G = ( V, E ) V = {1,2,...,n} E = { e1, ..., em } Macierz sąsiedztwa : A[1..n ,1..n] 1 (true) jeśli {i,j}  E A[i,j] = 0 (false) jeśli {i,j}  E O(n2) pamięci

1 2 3 4 5 1 0 1 1 1 1 2 1 0 1 0 0 3 1 1 0 0 0 4 1 0 0 0 1 5 1 0 0 1 0

Macierz incydencji : B[1..n ,1..m] 1 (true) jeśli i  ej B[i,j] = 0 (false) jeśli i  ej O(nm) pamięci

2 1 3 4 5 6 1 2 3 4 5 6 1 1 1 0 1 1 0 2 0 1 1 0 0 0 3 0 0 1 1 0 0 4 0 0 0 0 1 1 5 1 0 0 0 0 1

Listy sąsiedztwa L [1..n], {Adj(i), i=1,...,n } L[i] = wskaźnik na początek listy sąsiadów wierzchołka i ( Adj(i) ) O(m) pamięci

1 2 3 4 / 1 2 3 4 5 2 / 1 3 3 / 1 2 4 / 1 5 5 / 1 4

PRZESZUKIWANIE W GŁĄB begin end; { "Odwiedza" każdy wierzchołek grafu ; Wierzchołki “odwiedzone” mają kolor czarny } DFS-VISIT (u); {"Odwiedza" wierzchołki składowej spójności zawierającej wierzchołek u } begin kolor (u) := SZARY; for każdy v Adj (u) do if kolor (v) = BIAŁY then DFS-VISIT (v); kolor (u) := CZARNY; end; DFS (G); begin for każdy u  V(G) do kolor (u) := BIAŁY; for każdy u V(G) do if kolor (u) = BIAŁY then DFS-VISIT (u); end;

PRZESZUKIWANIE W GŁĄB begin { "Odwiedza" każdy wierzchołek grafu ; Wierzchołki “odwiedzone” mają kolor czarny } DFS-VISIT (u); {"Odwiedza" wierzchołki składowej spójności zawierającej wierzchołek u } begin 1. kolor (u) := SZARY; 2. for każdy v Adj (u) do 3. if kolor (v) = BIAŁY 4. then begin (v) := u; DFS-VISIT (v); end; 5. kolor (u) := CZARNY; DFS (G); begin 1. for każdy u  V(G) do 2. kolor (u) := BIAŁY; (u) := -1; end; 3. for każdy u V(G) do 4. if kolor (u) = BIAŁY 5. then DFS-VISIT (u);

PRZESZUKIWANIE WSZERZ BFS (G,s); {Jeśli G jest spójny, to odwiedza każdy wierzchołek grafu, jeśli niespójny, to odwiedza każdy wierzchołek składowej spójności zawierającej wierzchołek s .Wierzchołki “odwiedzone” mają kolor czarny } while Q <>  do begin u:= head (Q); for każdy v  Adj (u) do if kolor (v) = BIAŁY then begin kolor (v) = SZARY; ENQUEUE (Q,v); end; DEQUEUE (Q); kolor (u) := CZARNY; end begin for każdy uV(G)–{s} do kolor (u) := BIAŁY; kolor (s) := SZARY; Q := {s};

PRZESZUKIWANIE WSZERZ BFS (G,s); {Jeśli G jest spójny, to odwiedza każdy wierzchołek grafu, jeśli niespójny, to odwiedza każdy wierzchołek składowej spójności zawierającej wierzchołek s .Wierzchołki “odwiedzone” mają kolor czarny } while Q <>  do begin 1. u:= head (Q); 2. for każdy v  Adj (u) do 3. begin 4. if kolor (v) = BIAŁY 5. then begin 6. kolor (v) = SZARY; (v) := u; 7. ENQUEUE (Q,v); end; 8. DEQUEUE (Q); 9. kolor (u) := CZARNY; end end; begin 1. for każdy uV(G)–{s} do 2. begin kolor (u) := BIAŁY; (u) := -1; end; 3. kolor (s) := SZARY; 4. Q := {s};

Testowanie czy dany graf jest spójny Wyznaczanie składowych spójności ZASTOSOWANIE METOD Wybrane zastosowania : ( inne w dalszej części wykładu ) Testowanie czy dany graf jest spójny Wyznaczanie składowych spójności Znajdowanie drogi

MST – PRIM (G, w, r ); begin Q := V(G); {Wyznacza zbiór krawędzi ET = { {v, (v)}: v V(G) – {r} } minimalnego drzewa spinającego grafu G} begin for każdy u  V(G) do key(u) := ; key(r) := 0; (r) := -1; { utwórz kolejkę priorytetową Q } Q := V(G); while Q <>  do begin u := EXTRACT-MIN (Q); for każdy v  Adj(u) do if v  Q and w(u,v) < key(v) then (v) := u; key(v) := w(u,v) end end;

{Wyznacza zbiór ET krawędzi minimalnego drzewa spinającego grafu G} MST-KRUSKAL (G, w); {Wyznacza zbiór ET krawędzi minimalnego drzewa spinającego grafu G} begin ET := ; for każdy v  V(G) do MAKE – SET (v); posortuj krawędzie z E(G) niemalejąco względem wag w ; for każda krawędź {u,v}  E(G) (w kolejności niemalejących wag) do if FIND-SET (u) <> FIND-SET (v) then begin ET := ET  {{u,v}}; UNION (u,v) end ; return ET

CONNECTED_COMPONENT(G); { Wyznacza rodzinę zbiorów rozłącznych; każdy zbiór zawiera wierzchołki jednej składowej spójności grafu G} begin for każdy wierzchołek v  V(G) do MAKE-SET(v); for każda krawędź {u,v}  E(G) do if FIND-SET(u) <> FIND-SET(v) then UNION (u,v); end;

SAME-COMPONENT(S, u,v); { Testuje czy wierzchołki u i v należą do tej samej składowej spójności grafu } begin if FIND-SET(u) = FIND-SET(v) then return TRUE else return FALSE; end;

NAJKRÓTSZE DROGI W GRAFIE ZORIENTOWANYM

-4 s a s b 20 3 6 5 s 8 s c g s s s d -3 2 7 3 s e f f -6

{ Może zmniejszyć wartość d(v) i zmienić (v) } RELAX (u, v, w); { Może zmniejszyć wartość d(v) i zmienić (v) } begin if d(v) > d(u) + w(u,v) then d(v) := d(u) + w(u,v); (v) := u end end; u v 3 4 9 u v 3 4 7

{Wyznacza odległość każdego wierzchołka grafu G od wierzchołka s ; DIJKSTRA (G, w, s); {Wyznacza odległość każdego wierzchołka grafu G od wierzchołka s ; w : E(G)  R 0 } S := ; Q := V(G); while Q <>  do begin u := EXTRACT-MIN (Q); S := S  {u}; for każdy v  Adj(u) do RELAX (u, v, w); end end; begin for każdy v  V(G) do d(v) := ; (v) := NIL; end; d(s) := 0;

BELLMAN – FORD (G, w, s); { Testuje czy graf ma cykle ujemnej długości ; jeśli nie ma, to znajduje odległość każdego wierzchołka grafu G od wierzchołka s ; w : E(G)  R } for i := 1 to |V(G)| - 1 do for każda krawędź {u,v}  E(G) do RELAX (u, v, w); if d(v) > d(u) + w(u,v) then return FALSE; return TRUE end; begin for każdy v  V(G) do d(v) := ; (v) := NIL; end; d(s) := 0;

a b 5   -2 6 e -3 7 8 2 -4 7   9 c d Kolejność krawędzi : (a,b), (a,c), (a,d), (b,a), (c,b), (c,d), (d,b), (d,e), (e,a), (e,c)

a s  s d 2 7 3 s  f  -6 b c Kolejność krawędzi : (a,b), (b,c), (c,b), (c,d)

FLOYD-WARSHALL (W); {Wyznacza macierz D(n) odległości miedzy każdą parą wierzchołków grafu reprezentowanego przez macierz wag W } begin D(0) := W; for k:=1 to n do for i := 1 to n do for j := 1 to n do Dij(k) := min { Dij(k-1) , Dik(k-1) + Dkj(k-1) }; return D(n) end;