grafy i zastosowaniausers.pja.edu.pl/~msyd/giz/rozpindrzewa5.pdf · 2018-04-19 · grafy i...
Post on 10-Feb-2020
8 Views
Preview:
TRANSCRIPT
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
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*
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
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.
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 )
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ź
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
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
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)
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.
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
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
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
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).
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 ).
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)
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
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
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
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.
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
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).
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.
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)
}
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)
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 .
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
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.
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).
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*
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
Grafy i Za-stosowania
c©MarcinSydow
Drzewarozpinające
Cykle irozcięcia fun-damentalne
Zastosowania
Minimalnedrzewarozpinające
Kruskal’sAlgorithm
Zastosowania
Podsumowanie
Dziękuję za uwagę
top related