Elementy teorii grafów,
sposoby reprezentacji grafów w komputerze
Autor projektu: dr Andrzej Mróz (UMK)
Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziaªania 4.1.1 Programu Operacyjnego
Wst¦p
Graf, intuicyjnie rozumiany jako obiekt skªadaj¡cy si¦
z wierzchoªków i ª¡cz¡cych je kraw¦dzi (dokªadniejsza denicja za chwil¦): @ @ @ @ @ @ w g wg wg w g wg wg
jest prostym kombinatorycznym modelem opisuj¡cym rozmaite rzeczywiste sytuacje.
2 / 64
Modelowanie rzeczywisto±ci
Elementy danego zagadnienia modelowanego za pomoc¡ grafu na ogóª w naturalny sposób podzielone s¡ na dwie kategorie:
Miejsca na pªaszczy¹nie/w przestrzeni, zjawiska, procesy... = wierzchoªki;
Poª¡czenia, powi¡zania, zale»no±ci mi¦dzy obiektami reprezentowanymi przez wierzchoªki... = kraw¦dzie.
Zastosowania teorii grafów
Przykªady poª¡cze« zycznych:sie¢ drogowa, kolejowa, lotnicza... (zagadnienia transportowe, GPS), pomieszczenia, korytarze w budynkach... (m.in. gry komputerowe),
sieci energetyczne, sieci komputerowe, itp.
4 / 64
Zastosowania teorii grafów
Przykªady poª¡cze« logicznych:obrazowanie hierarchii drzewa
(genealogia, rozwój populacji, zawody sportowe), nast¦pstwo czasowe procesów,
relacje (w sensie matematycznym), relacje mi¦dzy lud¹mi,
pracownicy przepªyw zada«, struktura organizacji,
przydziaª zasobów, itp.
Zastosowania, cele
Mo»na ±miaªo zaryzykowa¢ stwierdzenie, »e wspóªcze±nie wªa±ciwie ka»dego dnia stykamy si¦ z urz¡dzeniami, aplikacjami, które w po±redni lub bezpo±redni sposób korzystaj¡ z poj¦¢ teorii grafów. Celem tej serii wykªadów jest omówienie szeregualgorytmów grafowych, czyli algorytmów do których wej±ciem s¡ dane
reprezentuj¡ce dany graf G, a które odpowiadaj¡ na pewne pytania natury kombinatorycznej zwi¡zane z G.
6 / 64
Cel wykªadu
Aby dobrze rozumie¢ zagadnienia zwi¡zane z grafami i algorytmy grafowe nale»y
sformalizowa¢ poj¦cie grafu i poj¦cia z nim zwi¡zane; opisa¢ pewne kombinatoryczne fakty dotycz¡ce grafów (tym zajmuje si¦teoria grafów);
ponadto, nale»y przedyskutowa¢ sposób reprezentowania grafów w komputerze.
Powy»szymi zagadnieniami zajmiemy si¦ na tym wykªadzie. Ograniczymy si¦ do poj¦¢ i faktów niezb¦dnych w wybranych algorytmach grafowych.
Wst¦p Grafy Podstawowe poj¦cia Wªasno±ci Drzewa Reprezentacje grafów
Graf niezorientowany
Denicja
Graf niezorientowany (nieskierowany) to para G = (V , E) zbiorów sko«czonych:
V nazywany zbioremwierzchoªków (w¦zªów) G, E ⊆ { {u, v} : u, v ∈ V , u 6= v} nazywany zbiorem
kraw¦dziG. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Powy»szy diagram przedstawia graf G = (V , E), gdzie
V = {1, 2, 3, 4, 5, 6},
E = { {1, 2}, {5, 1}, {1, 4}, {4, 5}, {2, 5}, {5, 3}, {6, 5} }.
8 / 64
Graf niezorientowany
Denicja
Graf niezorientowany (nieskierowany) to para G = (V , E) zbiorów sko«czonych:
V nazywany zbioremwierzchoªków (w¦zªów) G, E ⊆ { {u, v} : u, v ∈ V , u 6= v} nazywany zbiorem
kraw¦dziG. Przykªad. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Powy»szy diagram przedstawia graf G = (V , E), gdzie
V = {1, 2, 3, 4, 5, 6},
Graf niezorientowany
Denicja
Graf niezorientowany (nieskierowany) to para G = (V , E) zbiorów sko«czonych:
V nazywany zbioremwierzchoªków (w¦zªów) G, E ⊆ { {u, v} : u, v ∈ V , u 6= v} nazywany zbiorem
kraw¦dziG.
Przykªad. Czasem wygodnie jest nada¢ kraw¦dziom etykiety:
e1 e3 @ @ @ @ e2 e5 e4 e7 e6 w g wg wg w g wg wg 1 2 3 4 5 6 Wówczas G = (V , E), V = {1, 2, 3, 4, 5, 6}, E = { e1,e2,e3,e4,e5,e6,e7}, gdzie e1= {1, 2}, e2= {5, 1}, itp. 9 / 64
Graf niezorientowany
Uwagi.Zwró¢my uwag¦, »e formalnie ka»da kraw¦d¹ to zbiór dwuelementowy, wi¦c zapis e1= {1, 2} jest równowa»ny e1= {2, 1}, gdy» w zbiorach kolejno±¢ jest nieistotna ({1, 2} = {2, 1}).
Graf G jest w peªni zakodowany przez zestaw danych (V , E). Rysunek grafu jest tylko wizualizacj¡ kombinatorycznego obiektu G. Nie nale»y zatem uto»samia¢ grafu G z jego wizualizacj¡, gdy» dany graf mo»e mie¢ wiele ró»nych gracznych prezentacji.
Za wierzchoªki zazwyczaj przyjmujemy kolejne liczby naturalne, ale denicja tego nie wymaga. Równie dobrze mo»emy wzi¡¢ litery alfabetu b¡d¹ dowolne symbole.
Graf niezorientowany
Przykªad. Poni»sze dwa rysunki@ @ @ @ w g w g wg wg v w u x oraz A A A A @ @ w g w g wg w g v w u x
s¡ ró»nymi wizualizacjami tego samego grafu G = (V , E), gdzie
V = {v, w, u, x},
E = { {v, w}, {v, u}, {u, w}, {x, u}}.
11 / 64
Graf niezorientowany
Kolejny przykªad. Rozwa»my graf GA A A A A A A A w g w g wg w g w g w g w g 1 2 3 4 5 6 7
czyli G = (V , E), gdzie
V = {1, 2, 3, 4, 5, 6, 7},
E = { {1, 2}, {2, 3}, {1, 3}, {4, 5}, {6, 5} }.
Jak widzimy, graf nie musi by¢ w jednym kawaªku.
Doprecyzujemy t¦ nieformaln¡ obserwacj¦ w dalszej cz¦±ci (poj¦cia spójno±ci,spójnej skªadowej,...).
Orientacja kraw¦dzi
W grae niezorientowanym wierzchoªki deniuj¡ce kraw¦d¹ e = {v, w} s¡ nierozró»nialne.
Cz¦sto w modelowanym zjawisku zachodzi potrzeba wyró»nienia jednego z wierzchoªków, np. v, jakopocz¡tkui drugiego jako ko«cakraw¦dzi i traktowania kraw¦dzi jako pary uporz¡dkowanej (v, w).
Prowadzi to do denicjigrafu zorientowanego (in. skierowanego). W gracznych prezentacjach zamiast linii rysujemy zazwyczaj strzaªki (zwane ªukami) o zwrocie od wierzchoªka v do w.
Uwaga
Przypomnijmy, »e {v, w} = {w, v}, ale (v, w) 6= (w, v), o ile v 6= w.
13 / 64
Wst¦p Grafy Podstawowe poj¦cia Wªasno±ci Drzewa Reprezentacje grafów
Graf zorientowany
Denicja
Graf zorientowany (skierowany) to para G = (V , E) zbiorów sko«czonych:
V nazywany zbioremwierzchoªków (w¦zªów) G, E ⊆ { (u, v) : u, v ∈ V } = V × V nazywany zbiorem
kraw¦dzi(in. ªuków lubstrzaªek) G.
- ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6
Powy»szy diagram przedstawia graf G = (V , E), gdzie
V = {1, 2, 3, 4, 5, 6},
Graf zorientowany
Denicja
Graf zorientowany (skierowany) to para G = (V , E) zbiorów sko«czonych:
V nazywany zbioremwierzchoªków (w¦zªów) G, E ⊆ { (u, v) : u, v ∈ V } = V × V nazywany zbiorem
kraw¦dzi(in. ªuków lubstrzaªek) G.
Przykªad. - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6
Powy»szy diagram przedstawia graf G = (V , E), gdzie
V = {1, 2, 3, 4, 5, 6},
E = { (1, 2), (2, 1), (1, 5), (1, 4), (4, 5), (2, 5), (5, 3), (5, 6) }.
14 / 64
Graf zorientowany
Podobnie jak w przypadku niezorientowanym, mo»na etykietowa¢ ªuki.
Zauwa»my, »e denicja grafu zorientowanego dopuszcza sytuacj¦, gdy pomi¦dzy par¡ wierzchoªków s¡ dwa (przeciwnie skierowane) ªuki: - w g wg Ale sytuacja -w g wg
nie jest dopuszczona w przyj¦tej denicji!
W denicji grafu zorientowanego dopuszczamy ªuki postaci (v, v). Nazywamy jep¦tlami(zaczepionymi w wierzchoªku v).
Wierzchoªki i kraw¦dzie
Ustalmy graf niezorientowany G = (V , E) (dla grafu zorientowanego denicje analogiczne).Denicja
wierzchoªki u, v ∈ V s¡s¡siednie, gdy {u, v} ∈ E, kraw¦dzie e1,e2∈E s¡s¡siednie, gdy e1∩e26= ∅(maj¡ wspólny wierzchoªek),
wierzchoªek v ∈ V jestincydentnyz kraw¦dzi¡ e ∈ E (lub: kraw¦d¹ e jestincydentnaz wierzchoªkiem v), gdy v ∈ e.
Ponadto
dla kraw¦dzi e = {u, v} ∈ E, u i v nazywamy ko«camie (czyli e jest incydentna z w ⇔ w jest jednym z ko«ców e), gdy G jest zorientowany, to dla kraw¦dzi e = (u, v) ∈ E (oznaczanej czasem e = u → v), u nazywamypocz¡tkiem, a v ko«ceme; mówimy wówczas, »e e jest kraw¦dzi¡
wychodz¡c¡ z u iwchodz¡c¡do v.
16 / 64
Wierzchoªki i kraw¦dzie
Denicja
Stopniemwierzchoªka v ∈ V nazywamy liczb¦ degG(v) := #{e ∈ E : v ∈ e} tj. liczb¦ kraw¦dzi incydentnych z wierzchoªkiem v. Gdy G jest grafem zorientowanym to rozró»nia si¦stopie« wyj±ciowywierzchoªka v ∈ V :
out.degG(v) = deg+G(v) := #{w ∈ V : v → w ∈ E} orazstopie« wej±ciowy wierzchoªka v ∈ V :
Drogi
Denicja
Droga w grae niezorientowanym G = (V , E) ci¡g wierz-choªków i kraw¦dzi P = (v0,e1,v1,e2,v2, . . . ,ek,vk), vi ∈ V ,
ej ∈E, k ≥ 0, taki, »e ej = {vj−1,vj}. Denicja
Drogaw grae zorientowanym G = (V , E) ci¡g wierzchoªków i kraw¦dzi P = (v0,e1,v1,e2,v2, . . . ,ek,vk), vi ∈ V , ej ∈ E,
k ≥ 0, taki, »e ej = (vj−1,vj).
W obu przypadkach (zorientowanym lub nie)
dopuszczamy drogi trywialnepostaci P = (v0), v0∈V ,
liczb¦ k nazywamydªugo±ci¡drogi, v0 pocz¡tek, vk koniecdrogi P
(mówimy, »e P jest drog¡ z v0 do vk).
18 / 64
Drogi
UwagaZauwa»my, »e w obu przypadkach (zorientowanym i nie), droga P = (v0,e1,v1,e2,v2, . . . ,ek,vk) jest jednoznacznie wyznaczona przez ci¡g swoich wierzchoªków, dlatego cz¦sto piszemy skrótowo P = (v0,v1, . . . ,vk).
Przykªad. Graf niezorientowany
@ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Na diagramie zaznaczyli±my drog¦
Drogi
UwagaZauwa»my, »e w obu przypadkach (zorientowanym i nie), droga P = (v0,e1,v1,e2,v2, . . . ,ek,vk) jest jednoznacznie wyznaczona przez ci¡g swoich wierzchoªków, dlatego cz¦sto piszemy skrótowo P = (v0,v1, . . . ,vk).
Przykªad. Graf zorientowany - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6 P = (1, (1, 2), 2, (2, 1), 1, (1, 5), 5, (5, 3), 3) (lub skrótowo P = (1, 2, 1, 5, 3)). 20 / 64
Cykle i drogi proste
Denicja
Niech P = (v0,e1,v1,e2,v2, . . . ,ek,vk) b¦dzie drog¡ w grae
(zorientowanym lub nie). Wówczas
je»eli vi6=vj dla ka»dych 0 ≤ i 6= j ≤ k, to P nazywamy
drog¡ prost¡,
je»eli v0=vk i k > 0 to P nazywamydrog¡ zamkni¦t¡lub
cyklem
gdy dodatkowo vi 6=vj oraz ei 6=ej dla ka»dych
1 ≤ i 6= j ≤ k, to cykl P nazywamycyklem prostym.
Uwaga
Cz¦sto w literaturze u»ywa si¦ nazwy cykl w znaczeniu cykl prosty.
Cykle i drogi proste
Przykªady. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6Droga P = (1, 2, 5, 6) jest drog¡ prost¡. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Droga P = (1, 2, 5, 1) jest cyklem prostym.
22 / 64
Cykle i drogi proste
Przykªady. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6Droga P = (1, 2, 5, 1, 2, 5, 1) (nawini¦ta dwa razy) jest cyklem, ale nie jest cyklem prostym.
- ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6
Drogi niezorientowane
Niech G = (V , E) b¦dzie grafem zorientowanym.Denicja
Droga niezorientowana w grae G = (V , E) ci¡g W = (v0,e1,v1,e2,v2, . . . ,ek,vk), vi ∈V , ej ∈ E, k ≥ 0, taki, »e ej = (vj−1,vj) lub ej = (vj,vj−1).
Uwaga
W grae zorientowanym ka»da droga jest drog¡ niezorientowan¡, ale nie na odwrót!
24 / 64
Drogi niezorientowane
Przykªad. - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6 Droga niezorientowana W = (1, (1, 4), 4, (4, 5), 5, (2, 5), 2). Zauwa»my, »e ci¡g wierzchoªków nie zawsze wyznaczajednoznacznie drog¦ niezorientowan¡! Na powy»szym grae mamy dwie ró»ne niezorientowane drogi: (1, (1, 2), 2) oraz (1, (2, 1), 2).
Spójno±¢
Denicja
Graf niezorientowany G = (V , E) jest spójny, o ile dla ka»dych u, v ∈ V istnieje droga P z u do v.
Denicja
Graf zorientowany G = (V , E) jest sªabo spójny, o ile dla ka»dych u, v ∈ V istnieje droga niezorientowana P z u do v. Denicja
Graf zorientowany G = (V , E) jest silnie spójny, o ile dla ka»dych u, v ∈ V istnieje droga P z u do v.
26 / 64
Spójno±¢
Przykªady. Graf spójny:@ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6 Graf niespójny: A A A A A A A A w g w g wg w g w g w g w g 1 2 3 4 5 6 7
Spójno±¢
Przykªady. Graf sªabo spójny ale nie silnie spójny:
- ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6
Graf silnie spójny:
A A A K -w g w g wg 1 2 3 Uwaga
Graf zorientowany, który jest silnie spójny, jest te» sªabo spójny.
28 / 64
Podgraf
Denicja
Graf H = (V0,E0) nazywamy podgrafemgrafu G = (V , E),
o ile V0 ⊆V oraz E0 ⊆E.
Denicja
Podgraf H = (V0,E0) grafu G = (V , E) nazywamypeªnym,
o ile
∀u,v∈V0 {u, v} ∈ E ⇒ {u, v} ∈ E0
lub w wersji zorientowanej
Podgraf
Przykªad. Graf G: @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6 Podgraf grafu G: w g wg w g wg 1 2 4 5Podgraf peªny grafu G: @ @ @ @ w g wg w g wg 1 2 4 5 30 / 64
Podgraf
Zauwa»my, »e podgraf peªny H = (V0,E0) grafu G = (V , E) jest
w peªni wyznaczony przez zbiór swoich wierzchoªków V0.
Dlatego mówimy, »e H jest peªnym podgrafem grafu G indukowanymprzez wierzchoªki ze zbioru V0.
Zatem graf G ma tyle peªnych podgrafów, ile jest podzbiorów zbioru V , czyli 2|V | (wliczaj¡c podgraf pusty i caªy graf G, który
te» jest oczywi±cie swoim podgrafem peªnym). Dowolnych podgrafów jest na ogóª sporo wi¦cej.
Skªadowe spójno±ci
Ustalmy graf niezorientowany G = (V , E).Denicja
Mówimy, »e v ∈ V jest osi¡galny z u ∈ V , gdy w G istnieje droga P z u do v.
Obserwacja
Jest osi¡galny jest relacj¡ zwrotn¡, symetryczn¡ i przechodni¡, czyli relacj¡ równowa»no±ci w V . Zatem relacja ta rozbija zbiór V na klasy abstrakcji. Denicja
Spójn¡ skªadow¡ (inaczej skªadow¡ spójno±ci) w grae G nazywamy peªny podgraf grafu G o wierzchoªkach z dowolnej klasy abstrakcji relacji jest osi¡galny.
32 / 64
Skªadowe spójno±ci
Innymi sªowy: spójna skªadowa jest maksymalnym spójnym podgrafem peªnym grafu G.
Wniosek
Graf G jest spójny ⇔ posiada tylko jedn¡ spójn¡ skªadow¡. W poni»szym grae mamy 3 spójne skªadowe (zaznaczone ró»nymi kolorami). A A A A A A A A w g w g wg w g w g w g w g 1 2 3 4 5 6 7
Silnie spójne skªadowe
Ustalmy graf zorientowany G = (V , E).Relacja jest osi¡galny deniowana jak dla grafu niezorientowanego (v ∈ V jest osi¡galny z u ∈ V , gdy w G istnieje droga P z u do v), nie jest symetryczna! Nie mo»e wi¦c by¢ mowy o klasach abstrakcji. Ale mo»emy zdeniowa¢ poj¦cie silnej skªadowej spójno±ci
nast¦puj¡co: Denicja
Peªny podgraf H grafu G, który jest maksymalny i silnie spójny nazywamy silnie spójn¡ skªadow¡grafu G.
Czasem rozwa»a si¦ te» poj¦ciesªabo spójnej skªadowej, deniowanej przy pomocy osi¡galno±ci przez drogi
niezorientowane (lub równowa»nie, jako maksymalny peªny podgraf sªabo spójny).
34 / 64
Silnie spójne skªadowe
Przykªad. Graf -? @ ? @ @ I w g wg w g wg 1 2 3 4posiada dwie silnie spójne skªadowe:
-? @ @ @ I w g wg w g 1 2 4 oraz: w g 3
Graf peªny
Denicja
Graf peªny G = (V , E) to graf niezorientowany taki, »e dla ka»dych u, v ∈ V , {u, v} ∈ E (gdy V = {1, 2, . . . , n}, to G oznaczamy Kn). Przykªady. K1: 1wg K2: 1wg 2wg K3: A A A A w g w g wg 1 2 3 K4: @ @ @ @ w g wg w g wg 1 2 3 4 36 / 64
Graf dwudzielny
Denicja
Graf niezorientowany G = (V , E) nazywamy dwudzielnym, je»eli istnieje podziaª V na dwa rozª¡czne niepuste podzbiory V1,V2 (tj. V1∪V2=V ) taki, »e
∀{u,v}∈E [(u ∈ V1 ∧ v ∈ V2) ∨ (v ∈ V1 ∧ u ∈ V2)].
Denicja
Graf G = (V , E) nazywamy peªnym dwudzielnym, je»eli ist-nieje podziaª V na dwa rozª¡czne niepuste podzbiory V1,V2 (tj. V1∪V2=V ) taki, »e
Graf dwudzielny
Przykªad. Graf dwudzielny:@ @ @ @ w g wg w g wg w g 1 2 3 4 5 Podziaª V = V1∪V2, gdzie V1= {1, 3}, V2 = {2, 4, 5}. Powy»szy graf nie jest grafem peªnym dwudzielnym (przy tym podziale brakuje kraw¦dzi {1, 5} i {3, 2}).
Rozwa»a si¦ równie» grafy dwudzielne w przypadku zorientowanym, my jednak nie b¦dziemy potrzebowa¢ tego poj¦cia.
38 / 64
Drzewa
W tym rozdziale rozwa»amy tylko grafy niezorientowane. Denicja
Graf acykliczny= graf nie zawieraj¡cy cykli prostych. Denicja
Drzewo(drzewo wolne) = graf spójny i acykliczny. Denicja
Las = graf acykliczny.
Nazwa las wzi¦ªa si¦ z tego, »e spójne skªadowe grafu acyklicznego s¡ drzewami (tak wi¦c las skªada si¦ z drzew).
Drzewa
Przykªad. Poni»szy graf nie jest drzewem, gdy» zawiera cykl:
@ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Poni»szy graf nie jest drzewem, gdy» jest niespójny (ale jest lasem):
A A A A w g w g wg w g w g w g w g 1 2 3 4 5 6 7 40 / 64
Drzewa
Przykªad. Drzewo: @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6Charakteryzacja drzew
TwierdzenieG = (V , E) graf niezorientowany. Nast¦puj¡ce warunki s¡ równowa»ne:
G jest drzewem,
dla ka»dych u, v ∈ V istnieje dokªadnie jedna droga P z u do v,
G jest spójny, a po usuni¦ciu dowolnej kraw¦dzi nie jest spójny,
G jest spójny i |E| = |V | − 1, G jest acykliczny i |E| = |V | − 1,
G jest acykliczny, lecz po dodaniu do E jakiejkolwiek kraw¦dzi powstaªy graf posiada cykl.
42 / 64
Drzewa z korzeniem
Denicja
Drzewo z korzeniem= para (T , r), gdzie T = (V , E)
jest drzewem, a r ∈ V wyró»nionym wierzchoªkiem, zwanym korzeniem.
Przykªad. Drzewo z korzeniem (T , 5):
@ @ @ @ w g wg wg w g wg wg w g 1 2 3 4 5 6 7 Drzewo z korzeniem (T , 1): @ @ @ @ w g wg wg w g wg wg w g 1 2 3 4 5 6 7
Drzewa z korzeniem
Przyj¦ªo si¦ rysowa¢ korze« na górze a pozostaªe wierzchoªki poziomami. Drzewo (T , 1) z poprzedniego slajdu zgodnie z t¡ konwencj¡: @ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7
Na przykªadzie powy»szego grafu zilustrujemy szereg prostych poj¦¢ zwi¡zanych z drzewami z korzeniem, bez ich precyzyjnego
deniowania.
44 / 64
Drzewa z korzeniem
@ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7Przodkami (in.poprzednikami) wierzchoªka 6 s¡ wierzchoªki 5 i 1.
Potomkami(in. nast¦pnikami) wierzchoªka 5 s¡ wierzchoªki 3, 4, 6, 7.
Drzewa z korzeniem
@ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7Ojcem(in.bezpo±rednim poprzednikiem) wierzchoªka 6 jest wierzchoªek 5.
Synami(in. bezpo±rednimi nast¦pnikami) wierzchoªka 5 s¡ wierzchoªki 3, 4, 6.
46 / 64
Drzewa z korzeniem
@ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7Bratemwierzchoªka 5 jest wierzchoªek 2.
Stopie«wierzchoªka = liczba synów,
Li±¢midrzewa (T , 1) s¡ wierzchoªki 2, 3, 4, 7 (wszystkie wierzchoªki o stopniu 0).
Drzewa z korzeniem
@ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7Gª¦boko±¢(poziom) wierzchoªka v = dªugo±¢ drogi (jedynej! patrz twierdzenie) od r do v (ozn. h(v)),
np. h(1) = 0, h(7) = 3, h(5) = 1,
48 / 64
Drzewa z korzeniem
@ @ @ @ @ @ @ @ w g w g wg w g wg wg w g 1 2 5 3 4 6 7Wysoko±¢drzewa = h(T ) = h(T , r) := max{h(v) : v ∈ V }. Zatem h(T ) = 3 dla powy»szego drzewa (T , 1).
Drzewa
Denicja
Drzewo binarne= drzewo z korzeniem (T , r), w którym ka»dy wierzchoªek ma stopie« ≤ 2 (wyró»nionylewy iprawy syn). W drzewie binarnym, je»eli dany wierzchoªek ma tylko jednego syna, trzeba ustali¢, czy jest lewy czy prawy.
Denicja
Poddrzewoo korzeniu x drzewa (T , r) = peªny podgraf grafu T indukowany przez wierzchoªek x i wszystkich potomków x.
Lewe(odp. prawe)poddrzewo drzewa binarnego (T , r) = poddrzewo drzewa T o korzeniu b¦d¡cym lewym (odp. prawym) synem korzenia r.
50 / 64
Reprezentacja grafu
Przezreprezentacj¦ grafu (w komputerze) rozumiemy sposób zakodowania kombinatorycznego obiektu, jakim jest graf w postaci zestawu danych w programie komputerowym.
Istnieje kilka ró»nych sposobów reprezentacji grafu, ka»da z nich ma swoje wady i zalety. Ró»ni¡ si¦ m.in.:
rozmiarem zajmowanej pami¦ci,
czasem wykonywania zapyta« i operacji modykuj¡cych, stopniem trudno±ci implementacji.
Reprezentacja grafu
Wybór odpowiedniego sposobu jest mocno uzale»niony m.in. od:
rozwa»anego algorytmu (jakie operacje na grae b¦dziemy wykonywa¢ najcz¦±ciej),
rodzaju grafów, które b¦d¡ analizowane przez algorytm.
Nale»y starannie przemy±le¢ wybór struktury, gdy» od niego b¦dzie zale»aªa zªo»ono±¢ obliczeniowa, pami¦ciowa algorytmu jak i ªatwo±¢ implementacji.
Zakªadamy, »e czytelnik zna elementarne (statyczne i dynamiczne) struktury danych wybranego j¦zyka programowania.
52 / 64
Macierz s¡siedztwa
Ustalmy graf G = (V , E), V = {1, 2, . . . , n}.Macierz (tablica) s¡siedztwa: macierz A = A(G) ∈ Mn×n(Z)
o wspóªczynnikach:
Ai,j =
0, {i, j} /∈ E, 1, {i, j} ∈ E, lub w wersji zorientowanej:
Ai,j =
0, (i, j) /∈ E, 1, (i, j) ∈ E.
Macierz s¡siedztwa
Przykªad. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6 Ai,j 1 2 3 4 5 6 1 0 1 0 1 1 0 2 1 0 0 0 1 0 3 0 0 0 0 1 0 4 1 0 0 0 1 0 5 1 1 1 1 0 1 6 0 0 0 0 1 0Dla grafu niezorientowanego jest to macierz symetryczna (ka»da kraw¦d¹ odpowiada dwóm 1-kom w macierzy) z zerami na przek¡tnej.
54 / 64
Macierz s¡siedztwa
Przykªad. - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6 Ai,j 1 2 3 4 5 6 1 0 1 0 1 1 0 2 1 0 0 0 1 0 3 0 0 0 0 0 0 4 0 0 0 0 1 0 5 0 0 1 0 0 1 6 0 0 0 0 0 0Dla grafu zorientowanego macierz s¡siedztwa na ogóª nie jest symetryczna (ka»da kraw¦d¹ odpowiada jednej 1-ce w macierzy). Niekoniecznie zawsze zera na przek¡tnej.
Macierz s¡siedztwa
Zalety:operacja zapytania:
czy wierzchoªki i, j ∈ V s¡ s¡siednie (tj. czy istnieje kraw¦d¹ {i, j} ∈ E lub, w wersji zorientowanej, ªuk (i, j) ∈ E)? realizowana w czasie staªym (odczyt pozycji (i, j) z tablicy), ªatwo±¢ implementacji.
Wady:
du»e zu»ycie pami¦ci: O(|V |2),
trzymamy niepotrzebnie mnóstwo zer (zwªaszcza dla grafów rzadkich, tj. maj¡cych stosunkowo niewiele kraw¦dzi
w porównaniu do liczby wierzchoªków).
56 / 64
Listy s¡siedztwa
Ustalmy graf G = (V , E), V = {1, . . . , n}.Listy s¡siedztwa: tablica L[1..n], gdzie L[i] = wska¹nik do (dynamicznej) listy s¡siadów wierzchoªka i.
Przypomnienie:
gdy G niezorientowany, j jest s¡siadem i ⇔ {i, j} ∈ E; gdy G zorientowany, j jest s¡siadem i ⇔ (i, j) ∈ E.
Dynamiczne listy mo»na zaimplementowa¢ r¦cznie, przy wyko-rzystaniu wska¹ników, lub skorzysta¢ z gotowych struktur, np. vector biblioteki STL j¦zyka C++:
Listy s¡siedztwa
Przykªad. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6 L[i] 1 → 2 → 5 → 4 2 → 1 → 5 3 → 5 4 → 1 → 5 5 → 4 → 1 → 2 → 3 → 6 6 → 5Znak → powy»ej symbolizuje wska¹nik.
Kolejno±¢ s¡siadów w listach na ogóª nie jest istotna.
58 / 64
Listy s¡siedztwa
Przykªad. - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6 L[i] 1 → 2 → 5 → 4 2 → 1 → 5 3 4 → 5 5 → 3 → 6 6Znak → powy»ej symbolizuje wska¹nik.
Listy s¡siedztwa
Zalety:
wygodna i szybka realizacja zapytania:
zwró¢ list¦ wszystkich s¡siadów wierzchoªka i.
mniejsze zu»ycie pami¦ci (w porównaniu do macierzy s¡siedztwa) trzymamy tylko istotne informacje.
Wady:
nieco bardziej kªopotliwa implementacja.
60 / 64
Sklejone listy s¡siedztwa
Ustalmy graf G = (V , E), V = {1, . . . , n}, |E| = m.Sklejone listy s¡siedztwa: w peªni statyczna wersja list s¡siedztwa struktura przechowywana w dwóch tablicach:
Tablica sklejonych list s¡siedztwa (TSLS) skªada si¦ z 2m komórek w wersji nieskierowanej lub m komórek w wersji skierowanej i zawiera ustawione jedna za drug¡ listy s¡siadów kolejnych wierzchoªków.
Tablica podziaªów (TP) skªada si¦ z n + 1 komórek. W jej i-tej komórce zapami¦tamy, pocz¡wszy od której komórki w TSLS zapisani s¡ s¡siedzi wierzchoªka o numerze i.
Dodatkowo kªadziemy TP[n + 1] := 2m + 1 (w wersji
nieskierowanej) lub TP[n + 1] := m + 1 (w wersji skierowanej).
⇒ s¡siedzi wierzchoªka i zapisani s¡ w komókach tablicy TSLS o indeksach mi¦dzy TP[i] a TP[i + 1] − 1.
Sklejone listy s¡siedztwa
Przykªad. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6 i 1 2 3 4 5 6 7 TP 1 4 6 7 9 14 15 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 TSLS 2 5 4 1 5 5 1 5 4 1 2 3 6 5 62 / 64Sklejone listy s¡siedztwa
Przykªad. - ? ? @ @ @ R - - w g wg wg w g wg wg 1 2 3 4 5 6 i 1 2 3 4 5 6 7 TP 1 4 6 6 7 9 9 i 1 2 3 4 5 6 7 8 TSLS 2 5 4 1 5 5 3 6Inne reprezentacje
UwagaW obu wersjach list s¡siedztwa (dynamicznej i statycznej skle-jonej), warto postortowa¢ wierzchoªki w listach s¡siadów dla poszczególnych wierzchoªków. Wówczas mo»na istotnie przyspieszy¢ sprawdzanie, czy dane dwa wierzchoªki s¡ s¡siednie. Istniej¡ jeszcze inne, bardziej specyczne sposoby reprezentowania grafu G = (V , E), V = {1, . . . , n}, E = {e1,e2, . . . ,em}:
Lista (tablica) kraw¦dzi: [[v1
1,v21], [v12,v22], . . . , [v1m,v2m]], gdzie ei = {v1i,v2i}. Macierz incydencji: B = B(G) ∈ Mn×m(Z), Bi,j = 0, i /∈ ej, 1, i ∈ ej. 64 / 64