Elementy teorii grafów,
sposoby reprezentacji grafów w komputerze
dr Andrzej Mróz (UMK w Toruniu)2013
Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach
matematyczno-przyrodniczych
Spis tre±ci
1 Wst¦p 3
1.1 Modelowanie rzeczywisto±ci . . . 3
1.2 Zastosowania teorii grafów, cele wykªadu . . . 3
2 Grafy 4 2.1 Graf niezorientowany . . . 4 2.2 Orientacja kraw¦dzi . . . 5 2.3 Graf zorientowany . . . 5 3 Podstawowe poj¦cia 6 3.1 Wierzchoªki i kraw¦dzie . . . 6 3.2 Drogi . . . 7
3.3 Cykle i drogi proste . . . 7
3.4 Drogi niezorientowane . . . 8
4 Wªasno±ci 8 4.1 Spójno±¢ . . . 8
4.2 Podgraf . . . 9
4.3 Skªadowe spójno±ci . . . 10
4.4 Silnie spójne skªadowe . . . 11
4.5 Graf peªny . . . 11 4.6 Graf dwudzielny . . . 11 5 Drzewa 12 5.1 Drzewa . . . 12 5.2 Charakteryzacja drzew . . . 13 5.3 Drzewa z korzeniem . . . 13 5.4 Drzewa binarne . . . 14 6 Reprezentacje grafów 14 6.1 Reprezentacja grafu . . . 14 6.2 Macierz s¡siedztwa . . . 15 6.3 Listy s¡siedztwa . . . 16
6.4 Sklejone listy s¡siedztwa . . . 17
1 Wst¦p
1.1 Modelowanie rzeczywisto±ci
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.
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 wierz-choªki... = kraw¦dzie.
1.2 Zastosowania teorii grafów, cele wykªadu
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.
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.
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 szeregu algorytmó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.
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 fak-tów niezb¦dnych w wybranych algorytmach grafowych.
2 Grafy
2.1 Graf niezorientowany
Denicja. Graf niezorientowany (nieskierowany) to para G = (V, E) zbiorów sko«czonych: • V nazywany zbiorem wierzchoªków (w¦zªów) G,
• E ⊆ { {u, v} : u, v ∈ V, u 6= v}nazywany zbiorem kraw¦dzi G. 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},
• E = { {1, 2}, {5, 1}, {1, 4}, {4, 5}, {2, 5}, {5, 3}, {6, 5} }.
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. 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
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}}. Kolejny przykªad. Rozwa»my graf G
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
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¡ ob-serwacj¦ w dalszej cz¦±ci (poj¦cia spójno±ci, spójnej skªadowej,...).
2.2 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, jako pocz¡tku i drugiego jako ko«ca kraw¦dzi i traktowania kraw¦dzi jako pary uporz¡dkowanej (v, w).
Prowadzi to do denicji grafu zorientowanego (in. skierowanego). W gracznych prezentac-jach zamiast linii rysujemy zazwyczaj strzaªki (zwane ªukami) o zwrocie od v do w.
Uwaga. Przypomnijmy, »e {v, w} = {w, v}, ale (v, w) 6= (w, v), o ile v 6= w.
2.3 Graf zorientowany
Denicja. Graf zorientowany (skierowany) to para G = (V, E) zbiorów sko«czonych: • V nazywany zbiorem wierzchoªków (w¦zªów) G,
• E ⊆ { (u, v) : u, v ∈ V } = V × V nazywany zbiorem kraw¦dzi (in. ªuków, strzaª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) }. Uwagi.
• 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 je p¦tlami (zaczepionymi w wierzchoªku v).
3 Podstawowe poj¦cia
3.1 Wierzchoªki i kraw¦dzieUstalmy 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∩ e2 6= ∅ (maj¡ wspólny wierzchoªek),
• wierzchoªek v ∈ V jest incydentny z kraw¦dzi¡ e ∈ E (lub: kraw¦d¹ e jest incydentna z wierzchoªkiem v), gdy v ∈ e.
Ponadto
• dla kraw¦dzi e = {u, v} ∈ E, u i v nazywamy ko«cami e (czyli e jest incydentna z w ⇔ wjest jednym z ko«ców e),
• gdy G jest zorientowany, to dla kraw¦dzi e = (u, v) ∈ E (oznaczanej czasem e = u → v), u nazywamy pocz¡tkiem, a v ko«cem e; mówimy wówczas, »e e jest kraw¦dzi¡ wychodz¡c¡ z u i wchodz¡c¡ do v.
Denicja. Stopniem wierzchoª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±ciowy wierzchoªka v ∈ V : out.degG(v) = deg+G(v) := #{w ∈ V : v → w ∈ E}
oraz stopie« wej±ciowy wierzchoªka v ∈ V :
3.2 Drogi
Denicja. Droga w grae niezorientowanym 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}.
Denicja. Droga w 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 trywialne postaci P = (v0), v0 ∈ V,
• liczb¦ k nazywamy dªugo±ci¡ drogi,
• v0 pocz¡tek, vk koniec drogi P (mówimy, »e P jest drog¡ z v0 do vk).
Uwaga. Zauwa»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¦ P = (1, {1, 2}, 2, {2, 5}, 5, {5, 6}, 6) (lub skrótowo P = (1, 2, 5, 6)).
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)).
3.3 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 nazywamy drog¡ zamkni¦t¡ lub cyklem
gdy dodatkowo vi6= vj oraz ei 6= ej dla ka»dych 1 ≤ i 6= j ≤ k, to cykl P nazywamy
cyklem prostym.
Uwaga. Cz¦sto w literaturze u»ywa si¦ nazwy cykl w znaczeniu cykl prosty. Przykªady. @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
@ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Droga P = (1, 2, 5, 1) jest cyklem prostym.
@ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
Droga 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
Droga P = (1, 2, 1, 5, 3) nie jest drog¡ prost¡.
3.4 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! 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 wyznacza jednoznacznie drog¦ niezorientowan¡! Na powy»szym grae mamy dwie ró»ne niezorientowane drogi: (1, (1, 2), 2) oraz (1, (2, 1), 2).
4 Wªasno±ci
4.1 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.
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
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.
4.2 Podgraf
Denicja. Graf H = (V0, E0)nazywamy podgrafem grafu G = (V, E), o ile V0⊆ V oraz E0⊆ E.
Denicja. Podgraf H = (V0, E0) grafu G = (V, E) nazywamy peªnym, o ile
∀u,v∈V0 {u, v} ∈ E ⇒ {u, v} ∈ E0
lub w wersji zorientowanej
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 5
Podgraf peªny grafu G: @ @ @ @ w g wg w g wg 1 2 4 5
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 indukowanym przez 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.
4.3 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.
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
4.4 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¦cie sª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). Przykªad. Graf -? @ ? @ @ I w g wg w g wg 1 2 3 4
posiada dwie silnie spójne skªadowe:
-? @ @ @ I w g wg w g 1 2 4 oraz: w g 3 4.5 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 4.6 Graf dwudzielny
W tym paragrae rozwa»amy tylko grafy niezorientowane.
Denicja. Graf G = (V, E) nazywamy dwudzielnym, je»eli istnieje podziaª V na dwa rozª¡czne niepuste podzbiory V1, V2 (tj. V1∪ V2 = V) taki, »e
Denicja. Graf G = (V, E) nazywamy peªnym dwudzielnym, je»eli istnieje podziaª V na dwa rozª¡czne niepuste podzbiory V1, V2 (tj. V1∪ V2= V) taki, »e
∀u∈V1 ∀v∈V2 {u, v} ∈ E.
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.
5 Drzewa
5.1 DrzewaW 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).
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 Drzewo: @ @ @ @ w g wg wg w g wg wg 1 2 3 4 5 6
5.2 Charakteryzacja drzew
Twierdzenie. G = (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,
• Gjest acykliczny, lecz po dodaniu do E jakiejkolwiek kraw¦dzi powstaªy graf posiada cykl.
5.3 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
Przyj¦ªo si¦ rysowa¢ korze« na górze a pozostaªe wierzchoªki poziomami. Powy»sze drzewo (T, 1) 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.
• Przodkami (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. • Ojcem (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.
• Bratem wierzchoªka 5 jest wierzchoªek 2. • Stopie« wierzchoªka = liczba synów,
• Li±¢mi drzewa (T, 1) s¡ wierzchoªki 2, 3, 4, 7 (wszystkie wierzchoªki o stopniu 0). Gª¦boko±¢ (poziom) wierzchoªka v = dªugo±¢ drogi od r do v (ozn. h(v)),
• np. h(1) = 0, h(7) = 3, h(5) = 1,
• zauwa»my, »e zawsze istnieje (dokªadnie jedna) droga z r do v (patrz twierdzenie), zatem poj¦cie gª¦boko±ci jest dobrze okre±lone.
Wysoko±¢ drzewa = h(T ) = h(T, r) := max{h(v) : v ∈ V }. Zatem h(T ) = 3 dla powy»szego drzewa (T, 1).
5.4 Drzewa binarne
Denicja. Drzewo binarne = drzewo z korzeniem (T, r), w którym ka»dy wierzchoªek ma stopie« ≤ 2 (wyró»niony lewy i prawy syn).
W drzewie binarnym, je»eli dany wierzchoªek ma tylko jednego syna, trzeba ustali¢, czy jest lewy czy prawy.
Denicja.
• Poddrzewo o korzeniu x drzewa (T, r) = peªny podgraf grafu T indukowany przez wierz-choª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.
6 Reprezentacje grafów
6.1 Reprezentacja grafuPrzez reprezentacj¦ 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.
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.
6.2 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. 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 0
Dla grafu niezorientowanego jest to macierz symetryczna (ka»da kraw¦d¹ odpowiada dwóm 1-kom w macierzy) z zerami na przek¡tnej.
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 0
Dla grafu zorientowanego macierz s¡siedztwa na ogóª nie jest symetryczna (ka»da kraw¦d¹ odpowiada jednej 1-ce w macierzy).
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).
6.3 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 wykorzystaniu wska¹ników, lub sko-rzysta¢ z gotowych struktur, np. vector biblioteki STL j¦zyka C++.
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 → 5
Znak → powy»ej symbolizuje wska¹nik. Kolejno±¢ s¡siadów w listach na ogóª nie jest istotna. 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 6 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:
6.4 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. 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 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 6
Uwaga. W obu wersjach list s¡siedztwa (statycznej sklejonej i dynamicznej z 6.3), 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.
6.5 Inne reprezentacje
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, vm2 ]], gdzie ei= {vi1, vi2}. • Macierz incydencji: B = B(G) ∈ Mn×m(Z), Bi,j = 0, i /∈ ej, 1, i ∈ ej.