• Nie Znaleziono Wyników

[wersja do druku]

N/A
N/A
Protected

Academic year: 2021

Share "[wersja do druku]"

Copied!
18
0
0

Pełen tekst

(1)

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

(2)

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

(3)

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.

(4)

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

(5)

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

(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¦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∩ 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 :

(7)

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

(8)

@ @ @ @ 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.

(9)

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

(10)

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

(11)

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

(12)

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∈V1v∈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 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).

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

(13)

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.

(14)

• 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 grafu

Przez 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.

(15)

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).

(16)

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:

(17)

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.

(18)

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.

Cytaty

Powiązane dokumenty

medyczny Stefana Falimirza z 1534 r.; zdaje to np. Jak wiadomo, bernardy- ni zajmowali wówczas m.in. Popowska-Ta hors ka,Bartlomiejz Bydgoszczy ... a, Z polskiej

W wersji oryginalnej couplingu szary wierzchoªek ma ten sam kolor w obu ªa«cuchach a jego s¡siad jest w innym kolorze (odpowiednio czarny i biaªy). Przy próbie przekolorowa- nia

(6) wynika z faktu, iø pomiÍdzy grupami sprzÍ- øonymi potrafimy wskazaÊ bijekcjÍ ustanowionπ przez automorfizm wewnÍtrzny... Jedyna nietrywialna czÍúÊ uwagi to (3),

Graf jest spójny, jeżeli z każdego wierzchołka da się dojść do wszystkich pozostałych. W przeciwnym wypadku graf jest określany jako

W szczególno±ci odlegªo±¢ jest ∞ (niesko«czono±¢) gdy wierzchoªki nie le»¡ w tej samej silnie spójnej skªadowej. Napisa¢ funkcje, która dla da- nego grafu skierowanego

[r]

Ogólnie, i-t¡ warstw¡ grafu G nazywamy pierwsz¡ warstw¦ grafu planarnego powstaªego z G przez usuni¦cie wierzchoªków z warstw od 1 do i −

Ogólnie, i-t¡ warstw¡ grafu G nazywamy pierwsz¡ warstw¦ grafu planarnego powstaªego z G przez usuni¦cie wierzchoªków z warstw od 1 do i −