32
Grafy i Za- stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun- damentalne Zastosowania Minimalne drzewa rozpinające Kruskal’s Algorithm Zastosowania Podsumowanie Grafy i Zastosowania 5: Drzewa Rozpinające c Marcin Sydow

Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Grafy i Zastosowania5: Drzewa Rozpinające

c©Marcin Sydow

Page 2: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Spis zagadnień

drzewa i lasy rozpinającecykle fundamentalne i rozcięcia fundamentalnewłasności cykli i rozcięćprzestrzenie cykli i rozcięć*przykład: zastosowanie w sieciach elektrycznychminimalne drzewa rozpinające*algorytm Kruskala*algorytm Prima*przykład: aproksymacja dla problemu komiwojażera*

Page 3: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Drzewo rozpinające

drzewo rozpinające spójnego, nieskierowanego grafu prostegoG = (V ,E ) to taki podgraf T tego grafu, który jest drzewem izawiera wszystkie wierzchołki danego grafu.

Graf niespójny nie posiada drzewa rozpinającego. Jeśli graf Gjest niespójny, to graf będący sumą drzew rozpinających jegoskładowych spójnych (po jednym na składową) nazywamylasem rozpinającym.

przykład

Drzewo rozpinające grafu spójnego można otrzymać kolejnousuwając krawędzie grafu tak aby uzyskać drzewo.

Dla danego grafu spójnego może istnieć wiele drzewrozpinających.

Każde drzewo rozpinające danego grafu ma tyle samo krawędzi(i wierzchołków)

przypomnienie: rozcięcie to minimalny zbiór rozspajający grafu

Page 4: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Zliczanie drzew rozpinających grafu spójnego

Tw. (udowodnione przez G.Kirchoffa w 1847)Liczba różnych drzew rozpinających spójnego grafuetykietowanego wynosi tyle co dopełnienie algebraicznedowolnego elementu macierzy M(G ) = D(G )− A(G ), gdzieD(G ) jest diagonalną macierzą zawierają na przekątnej stopnieodpowiednich wierzchołków, natomiast A(G ) jest macierząsąsiedztwa grafu G .

przykład

Powyższe twierdzenie ilustruje techniki tzw. algebraicznej teoriigrafów, gdzie wyniki dla grafów uzyskuje się badając macierzesąsiedztwa i inne algebraiczne struktury reprezentujące grafy.

Page 5: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Liczba cyklomatyczna i rząd rozcięcia

liczba cyklomatyczna: γ(G ), (lub rząd cykliczności) grafu Gto liczba krawędzi dopełnienia dowolnego lasu rozpinającegografu G .

rząd rozcięcia: ξ(G ), grafu G to liczba krawędzi w dowolnymlesie rozpinającym G .

przykład

Zauważmy, że: γ(G )+ ξ(G ) = |E (G )| (liczba krawędzi grafu G )

Page 6: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Cykle a rozcięcia

Twierdzenie:Jeśli L jest lasem rozpinającym grafu G , to:

1 każdy cykl w G ma wspólną krawędź z dopełnieniem L2 każde rozcięcie grafu G ma wspólną krawędź z L

Dowód:1 jeśli cykl nie ma krawędzi wspólnych z dopełnieniem L, to

znaczy jest w nim zawarty, co przeczyłoby acykliczności L2 rozcięcie powoduje rozpad L na dwie składowe A i B .

Ponieważ L jest lasem rozpinającym, więc musi zawieraćkrawędź łączącą pewien wierzchołek z A z pewnymwierzchołkiem z B . Jest to szukana krawędź

Page 7: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Cykle fundamentalne

Niech L oznacza pewien las rozpinający grafu G ,

Zauważmy, że dodanie jakiejkolwiek krawędzi z G nie należącejdo L utworzy dokładnie jeden cykl.

Taki cykl nazywamy cyklem fundamentalnym grafu Gzwiązanym z lasem rozpinającym L.

Zbiór cykli fundamentalnych związanych z lasem L to zbiórwszystkich takich cykli.

przykład

Page 8: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Rozcięcia fundamentalne

Niech L oznacza pewien las rozpinający grafu G ,

Gdy z lasu L usuniemy dowolną krawędź, to (w odpowiadającejjej składowej spójnej) powstają dwa rozłączne zbiorywierzchołków V1,V2.

Zbiór wszystkich krawędzi G takich, że jeden koniec jest w V1 adrugi w V2 tworzy rozcięcie, które nazywamy rozcięciemfundamentalnym związanym z lasem L.

Zbiór wszystkich takich rozcięć nazywamy zbiorem rozcięćfundamentalnych związanych z lasem L.

Uwaga: zbiór rozcięć fundamentalnych niekoniecznieczniezawiera wszystkie rozcięcia (np. jeśli rozcięcie jest częściądrzewa rozpinającego)

przykład

Page 9: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Własności cykli i rozcięć

Poniżej zakładamy dla uproszczenia, że graf jest spójny (wynikimogą być zastosowane do każdej składowej spójnej)

Fakty:

zbiór krawędzi jest rozspajający ⇔ przecina się z każdymdrzewem rozpinającym (ale niekoniecznie minimalny, bomożna by wziąć całe E)zbiór krawędzi C grafu G zawiera cykl ⇔ dopełnieniekażdego drzewa rozpinającego w G przecina się z Ccykl i rozcięcie mają zawsze parzystą liczbę wspólnychkrawędzi (0 też jest parzysta)

Page 10: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Dalsze własności cykli i rozcięć

Twierdzenie:T jest drzewem rozpinającym, C jest cyklem fundamentalnymotrzymanym z T przez dodanie krawędzi e. Wtedy C składa sięz e i tych krawędzi T, które wyznaczają fundamentalne rozcięciazawierające e

przykład

Twierdzenie:Rozcięcie fundamentalne wyznaczone przez odjęcie krawędzi e zdrzewa rozpinającego T składa się z e i dokładnie tych krawędziw dopełnieniu T, których cykle fundamentalne zawierają e.

Page 11: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Przestrzeń krawędzi

We(G ) - zbiór wszystkich podzbiorów E (G )

operacja sumy prostej na elementach We(G ):E1 ⊕ E2 = (E1 \ E2) ∪ (E2 \ E1)(różnica symetryczna)

przykład

Fakt:We(G ) z operacją ⊕ jest przestrzenią liniową nad ciałem Z2.Bazę stanowi tu zbiór E (G ) wszystkich krawędzi grafu G .

przykład

Page 12: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Podprzestrzeń cykli WC (G )

Elementy to zbiór pusty, i zbiory krawędzi wszystkich cykli G isum cykli krawędziowo rozłącznych. (elementy WC (G ) możnanazywać cyklami uogólnionymi)

przykład

Twierdzenie:WC (G ) jest podprzestrzenią liniową przestrzeni WE (G ) (wszczególności, jest zamnkięta na sumę).

Fakt:graf jest eulerowski ⇔ jego zbiór krawędzi jest cyklemuogólnionym

przykład

Page 13: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Podprzestrzeń rozcięć WS(G )

Elementy to: zbiór pusty, zbiory krawędzi wszystkich rozcięć isum krawędziowo rozłącznych rozcięć.

WS(G ) stanowi podprzestrzeń liniową przestrzeni WE (G ). (wszczególności, jest zamnkięta na sumę)

przykład

Page 14: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Baza przestrzeni liniowej (przypomnienie)

Baza przestrzeni liniowej to taki podzbiór elementów przestrzeniliniowej, że:

generuje całą przestrzeńjest liniowo niezależny

przykład

Uwaga: każdy element przestrzeni liniowej jest w dokładniejeden sposób wyrażalny jako kombinacja liniowa elementówbazy.

Uwaga 2: wymiar przestrzeni liniowej to liczba elementów bazy(każda baza ma tyle samo elementów).

Page 15: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Bazy podprzestrzeni WC (G ) i WS(G )

Twierdzenie:Zbiór cykli fundamentalnych dowolnego drzewa rozpinającegostanowi bazę podprzestrzeni cykli WC (G ).

przykład

Twierdzenie:Zbiór rozcięć fundamentalnych dowolnego drzewa rozpinającegostanowi bazę przestrzeni WS(G )

przykład

Wniosek:Wymiar przestrzeni WC (G ) wynosi γ(G ), a wymiar przestrzeniWS(G ) wynosi ξ(G ).

Page 16: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Zależności między przestrzeniami cykli i rozcięć

Tw:Każdy element przestrzeni cykli WC (G ) ma parzystą liczbękrawędzi wspólnych z każdym elementem przestrzeni rozcięćWS(G ) i odwrotnie.

Wniosek:Przestrzenie WC (G ) i WS(G ) są ortogonalnymipodprzestrzeniami przestrzeni krawędzi WE (G ). (tzn. iloczynskalarny dowolnych par z odpowiednich zbiorów daje zero,ponieważ jest to parzysta liczba jedynek)

Page 17: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Zliczanie cykli i rozcięć

Wnioski:

w grafie G istnieje dokładnie 2γ(G) różnych cykliuogólnionych.w grafie G istnieje dokładnie 2ξ(G) różnych podgrafów, zktórych każdy jest rozcięciem lub sumą rozcięćkrawędziowo rozłącznych.

przykłady

Page 18: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Własności macierzy incydencji

G : nieskierowany graf prosty, wszystkie operacje są nad ciałemZ2. Niech D oznacza pewien zbiór krawędzi grafu G . Przez IDoznaczamy zbiór kolumn macierzy incydencji odpowiadającychzbiorowi krawędzi D.

Fakty:D stanowi cykl uogólniony ⇔ suma kolumn w ID wynosi 0D reprezentuje graf acykliczny ⇔ kolumny w ID sąniezależne liniowoD reprezentuje podgraw spójny ⇔ kolumny w ID rozpinającałą przestrzeń kolumn macierzy incydencjiD reprezentuje drzewo rozpinające ⇔ kolumny w IDstanowią bazę przestrzeni kolumn całej macierzy incydencji

Page 19: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Przykładowe zastosowanie: sieci elektryczne

Dana jest sieć: topologia + opory + przyłożone napięciewyznaczyć: natężenia prądu

przykład

prawo Ohma: U = I · R(U - napięcie, I - natężenie, R - oporność)

Dwa prawa Kirchoffa:1 dla węzłów sieci: suma natężeń w węźle wynosi 02 dla oczek sieci: suma napięć w oczku sieci wynosi 0

przykład

Page 20: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Układ równań dla sieci elektrycznej

Można więc potencjalnie ułożyć aż n + o równań (gdzie o toliczba węzłów a o to liczba różnych oczek sieci).

Problemem jest to, że istnieje potencjalnie bardzo dużo cykli wgrafie (jak już wiemy jest to dokładnie 2γ(G))

Większość równań jest redundantna, gdyż potrzebujemydokładnie tyle równań ile jest krawędzi w grafie.

Page 21: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Zastosowanie cykli fundamentalnych

Ile więc dokładnie równań potrzebujemy?

1 n-1 dla pierwszego prawa (n-te równanie jest redundantne)2 γ(G ) dla drugiego prawa

(zauważmy, że faktycznie (n − 1) = ξ(G ) a więc otrzymamydokładnie tyle ile trzeba (γ(G ) + ξ(G ) = |E (G )|).Które równania dla oczek wybrać?

Rozwiązanie: wybrać równania odpowiadające dowolnemuzbiorowi cykli fundamentalnych tej sieci

przykład

Page 22: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Problem: Minimalne drzewo rozpinające (MST)

Dany jest nieskierowany graf G z wagami na krawędziach(liczby wymierne).

Znaleźć drzewo rozpinające o minimalnym łącznym koszciekrawędzi (tzw minimalne drzewo rozpinające)

przykład

Problem ten ma rozliczne zastosowania. Jest on rozwiązywalnyw czasie wielomianowym. Algorytmy znajdowania MST opartesą na własnościach cykli i rozcięć (Kruskal) lub na modyfikacjialgorytmu BFS (Prim).

Page 23: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Agorytm Prima (przypomnienie)

Zaczyna od wierzchołka startowego s i stopniowo powiększadrzewo rozpinające. Niech S oznacza zbiór wierzchołkówrosnącego drzewa. Poczatkowo S = {s}. Zauważmy, że zbiórkrawędzi o dokładnie jednym końcu w S stanowi zbiórrozspajający. W każdym kroku dodawany jest wierzchołekbędący drugim końcem najlżejszej krawędzi z tego zbiorurozspajającego.

Używana jest kolejka priorytetowa, aby efektywnie znaleźć takiwierzchołek (priorytetem jest waga najlżejszej krawędzi łączącejten wierzchołek ze zbiorem S). Po wybraniu, wszystkiekrawędzie wychodzące z nowo-dodanego wierzchołkapoddawane są relaksacji.

Page 24: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Algorytm Prima

w(u, v) oznacza wagę krawędzi (u, v), w atrybucie dist przechowywana jestnajkrótsza aktualnie znana odległość wierzchołka do zbioru S , a pq oznaczakolejkę priorytetową. Używamy list sąsiedztwa. Wynikowe drzewo reprezentowanejest w atrybutach parent.

MSTPrim(V,w,s){PriorityQueue pqs.dist = 0s.parent = nullpq.insert(s)for each u in V\{s}:

u.dist = INFINITY

while(!pq.isEmpty()):u = pq.deleteMin()u.dist = 0for each v in u.adjList:

if (w(u,v) < v.dist):v.dist = w(u,v)v.parent = uif (pq.contains(v)): pq.decreaseKey(v)else pq.insert(v)

}

Page 25: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Analiza algorytmu Prima

rozmiar danych: n=|V|, m=|E|

dominująca operacja: przypisanie (w inicjalizacji) i porównaniepriorytetów (w tym ukryte w kolejce) i odległości

inicjalizacja: O(n)pętla: (n × delMin()) + (m × decreaseKey())

Jeśli kolejka zaimplementowana jako kopiec binarny:pętla: O(nlog(n)) + O(mlog(n)) = O((n+m)log(n))

Jeśli używamy kopca Fibonacciego (amortyzowany koszt stałyoperacji decreaseKey()):O(nlog(n) +m)

Page 26: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Algorytm Kruskala (przypomnienie)

1 początkowo T = ∅2 rozpatruj krawędzie w kolejności niemalejących wag i

dodawaj do T te, które nie tworzą cyklu z poprzedniododanymi, pozostałe odrzucaj, do momentu, gdy T nietworzy drzewa rozpinającego

Główny problem to efektywne sprawdzanie, czy rozpatrywanakrawędź nie tworzy cyklu z dotychczasowo dodanymi.

Pomysł polega na używaniu pomocniczej struktury danych typuunion-find. Ponieważ w każdej iteracji T stanowi las, każdanowa krawędź (u, v), która utworzyłaby cykl ma tę własność, żeoba jej końce u i v należą do tego samego drzewa w lesie T .

Page 27: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Algorytm Kruskala

kruskalMST(V,E,w){T = 0UnionFind ufforeach edge (u,v) in non-decreasing order of weight:

if (uf.find(u) != uf.find(v)):T = T + (u,v)uf.union(uf.find(u),uf.find(v))

return T}

Istnieje bardzo szybka (drzewowa) implementacja strukturyunion-find, która zapewnia stały czas operacji union i prawie1 stałyamortyzowany czas operacji find. Analiza złożoności czasowej tejimplementacji nie jest jednak matematycznie łatwa. Przy takiejimplementacji złożoność jest O(mlog(m)) (i jest zdominowana przezpoczątkowe posortowanie krawędzi po wagach)

1jest to pewna funkcja, która bardzo wolno rośnie

Page 28: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Przykład: problem Komiwojażera (TSP)

Dany jest pełny graf G = (V ,E ) z nieujemnymi wagamiw : E → Q+ na krawędziach. Znaleźć cykl Hamiltona H w G ominimalnym łącznym koszcie krawędzi w(E (H)).

przykład

Problem ten jest NP-trudny. Ma on wiele zastosowańpraktycznych.

Page 29: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

MST jako przybliżenie dla metrycznego TSP

Można w czasie wielomianowym znaleźć przybliżone owspółczynnik co najwyżej 2 rozwiązanie dla TSP jeśli funkcjawag w spełnia nierówność trójkąta.

Algorytm:znaleźć dowolne drzewo rozpinające i zastąpić każdąkrawędź parą krawędzi przerciwnychznaleźć cykl Eulera w takim grafiepominąć (stosując skróty) w tym cyklu wszystkiewierzchołki, które występowałyby wielokrotnie

przykład

(jest to przykład tzw algorytmu aproksymacyjnego zewspółczynnikiem aproksymacji 2. Istnieje też wielomianowyalgorytm aproksymacyjny dla tego problemu z lepszymwspółczynnikiem aproksymacji 3/2 (istnieją jeszcze lepsze).

Page 30: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Podsumowanie

drzewa i lasy rozpinającecykle fundamentalne i rozcięcia fundamentalnewłasności cykli i rozcięćprzestrzenie cykli i rozcięć*przykład: zastosowanie w sieciach elektrycznychminimalne drzewa rozpinające*algorytm Kruskala*algorytm Prima*przykład: aproksymacja dla problemu komiwojażera*

Page 31: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Przykładowe ćwiczenia i zadania

podaj wartości γ(G ), ξ(G ) dla podanego grafu Gwyznacz zbiór cykli i rozcięć fundamentalnych danego grafumając daną sieć elektryczną z podanym napięciem iopornościami, oblicz natężenia prądów na wszystkichpołączeniach (krawędziach) sieciwyznacz drzewo rozpinające danego grafu używającalgorytmu Prima/Kruskalaoblicz ile jest cykli i rozcięć uogólnionych w danym grafieoblicz ile jest drzew rozpinających w danym grafieetykietowanympodaj rozwiązanie przybliżone metrycznego problemukomiwojażera w podanym grafie

Page 32: Grafy i Zastosowaniamsyd/giz/rozpinDrzewa5.pdf · 2018-04-19 · Grafy i Za-stosowania c Marcin Sydow Drzewa rozpinające Cykle i rozcięcia fun-damentalne Zastosowania Minimalne

Grafy i Za-stosowania

c©MarcinSydow

Drzewarozpinające

Cykle irozcięcia fun-damentalne

Zastosowania

Minimalnedrzewarozpinające

Kruskal’sAlgorithm

Zastosowania

Podsumowanie

Dziękuję za uwagę