Matematyka dyskretna 1/Wykład 12: Grafy: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 131: Linia 131:
==Przegląd niektórych grafów==
==Przegląd niektórych grafów==


<div class="thumb tleft"><div style="width:250px;">
<div class="thumb tleft">
<div style="width:250px;">
<flash>file=Grafy antyklika.swf|width=250|height=250</flash>
<flash>file=Grafy antyklika.swf|width=250|height=250</flash>
<div.thumbcaption>Antyklika <math>\mathcal{A}_{5}</math></div></div>
<div.thumbcaption>Antyklika <math>\mathcal{A}_{5}</math></div></div>
<div style="width:250px;">
<div style="width:250px;">
<flash>file=x.swf|width=250|height=250</flash>
<flash>file=x.swf|width=250|height=250</flash>
Linia 140: Linia 143:
</div>
</div>


<div class="thumb tright"><div style="width:250px;">
<div class="thumb tright">
<div style="width:250px;">
<flash>file=Grafy klika.swf|width=250|height=250</flash>
<flash>file=Grafy klika.swf|width=250|height=250</flash>
<div.thumbcaption>Klika <math>\mathcal{K}_{5}</math></div></div>
<div.thumbcaption>Klika <math>\mathcal{K}_{5}</math></div></div>
<div style="width:250px;">
<flashwrap>file=Grafy planarne.swf|size=small</flashwrap>
<div.thumbcaption>Graf nieplanarny(a) oraz graf planarny (b) wraz z jego prezentacją w postaci grafu płaskiego (c)</div></div>
</div>
</div>
'''Graf pusty''' to graf bez krawędzi.
'''Graf pusty''' to graf bez krawędzi.
''Antyklika'' lub ''graf niezależny'' to inne nazwy grafu prostego.  
''Antyklika'' lub ''graf niezależny'' to inne nazwy grafu prostego.  
Linia 156: Linia 166:
Liczba krawędzi w klice <math>\mathcal{K}_{n}</math> wynosi <math>\frac{n(n-1)}{2}</math>.
Liczba krawędzi w klice <math>\mathcal{K}_{n}</math> wynosi <math>\frac{n(n-1)}{2}</math>.
}}
}}
<div class="thumb tright"><div style="width:250px;">
<flashwrap>file=Grafy planarne.swf|size=small</flashwrap>
<div.thumbcaption>Graf nieplanarny(a) oraz graf planarny (b) wraz z jego prezentacją w postaci grafu płaskiego (c)</div></div>
</div>


'''Graf dwudzielny''' to graf <math>\mathbf{G}=\left( V,E \right)</math>,  
'''Graf dwudzielny''' to graf <math>\mathbf{G}=\left( V,E \right)</math>,  

Wersja z 07:44, 8 wrz 2006

Czym jest graf

<flash>file=Grafy mapa samochodowa.swf|width=250|height=250</flash>

<div.thumbcaption>Bardzo uproszczona mapa samochodowa Polski

Wyruszając w daleką podróż zabieramy ze sobą mapę samochodową. Głównymi elementami graficznymi zawartymi w mapie są punkty (małe kółka) symbolizujące miasta, oraz odcinki (lub łuki) obrazujące drogi pomiędzy nimi. Taka mapa jest z grubsza przedstawieniem rzeczywistości za pomocą grafu. Chcąc na przykład znaleźć drogę z Bydgoszczy do Krakowa, szukamy ciągu kolejno połączonych miast zaczynającego się w Bydgoszczy i kończącego się w Krakowie. Jest to nic innego, jak znalezienie odpowiedniej ścieżki w grafie połączeń między miastami.


Graf to para 𝐆=(V,E), gdzie:

  • V jest zbiorem wierzchołków,

(czasami zwanymi węzłami lub punktami grafu)

  • E jest rodziną (być może powtarzających się) krawędzi,

czyli jedno- i dwu-elementowych podzbiorów V.

Graf prosty to para 𝐆=(V,E), gdzie:

  • V jest zbiorem wierzchołków,
  • E jest zbiorem krawędzi między różnymi wierzchołkami,

czyli dwu-elementowych podzbiorów V.

<flashwrap>file=Grafy graf ogolny i prosty.swf|size=small</flashwrap>

<div.thumbcaption>Graf ogólny (a.) oraz prosty (b.)
Uwaga

W grafie w odróżnieniu od grafu prostego dopuszczamy pętle oraz krawędzie wielokrotne. Wierzchołek nazywany jest czasem także węzłem, jak i punktem grafu. Krawędź łącząca v z w oznaczana będzie jako vw. Jeśli istnieje krawędź vw to mówimy, że v i w są sąsiadami; oraz że krawędź vw jest incydentna do v (w). Ponadto, dla grafu 𝐆 symbolem Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf V}\!\left(\mathbf{G}\right)} będziemy oznaczać jego zbiór wierzchołków, zaś symbolem Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf E}\!\left(\mathbf{G}\right)} jego zbiór krawędzi. Czasem, dla odróżnienia grafu od grafu prostego, graf będziemy nazywać też grafem ogólnym.

Stopień wierzchołka v w grafie 𝐆 to liczba krawędzi incydentnych z v. Stopień wierzchołka v oznaczany jest jako Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ v} .

Obserwacja 1

Jeśli 𝐆=(V,E) jest grafem ogólnym, to

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \sum_{v\in V}{\sf deg}\ v=2\left\vert E \right\vert. }

A zatem liczba wierzchołków o nieparzystym stopniu jest parzysta.

Dowód

Każda krawędź jest incydentna do dwóch wierzchołków. Zliczając krawędzie incydentne do kolejnych wierzchołków, a następnie sumując te wartości, każda krawędź vw zostanie zliczona dwa razy: raz przy rozpatrywaniu wierzchołka v, a drugi raz przy w.

Jeśli 𝐆 miałby nieparzyście wiele wierzchołków o nieparzystym stopniu to suma Parser nie mógł rozpoznać (błąd składni): {\displaystyle \sum_{v\in V}{\sf deg}\ v} byłaby nieparzysta, wbrew temu, że jest liczbą parzystą 2|E|.

<flashwrap>file=Grafy sciagniecie.swf|size=small</flashwrap>

<div.thumbcaption>Ściągnięcie zbioru {p,q,r} do wierzchołku x

<flashwrap>file=Grafy digraf.swf|size=small</flashwrap>

<div.thumbcaption>(a.) Digraf oraz (b.) jego graf szkieletowy
Uwaga

Dla grafów 𝐆=(V,E), 𝐆1=(V1,E1), 𝐆2=(V2,E2) definiujemy następujące pojęcia:

  • suma grafów 𝐆1𝐆2=(V1V2,E1E2),
  • przecięcie grafów 𝐆1𝐆2=(V1V2,E1E2),
  • różnica grafów 𝐆1𝐆2=(V1V2,E1E2),
  • podgraf grafu 𝐆 to graf 𝐇, w którym Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf V}\!\left(\mathbf{H}\right)\subseteq{\sf V}\!\left(\mathbf{G}\right)} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf E}\!\left(\mathbf{H}\right)\subseteq{\sf E}\!\left(\mathbf{G}\right)} ,
  • restrykcja grafu 𝐆 do podzbioru XV to 𝐆|X=(X,{vw:v,wX}),
  • podgraf indukowany grafu 𝐆 to graf będący restrykcją grafu 𝐆,
  • iloraz grafu 𝐆 przez relację równoważności θV×V na zbiorze jego wierzchołków to graf postaci

𝐆/θ=(V/θ,{{v/θ,w/θ}:{v,w}E}),

  • ściągnięcie zbioru wierzchołków XV w grafie 𝐆 to szczególny przypadek ilorazu 𝐆/θ, w którym klasy równoważności wszystkich wierzchołków spoza X są jednoelementowe, a X stanowi dodatkową klasę, tzn. V/θ={{v}:vVX}{X}. W ten sposób zbiór X został ściągnięty do punktu, którego sąsiadami są sąsiedzi jakiegokolwiek wierzchołka z X. Z drugiej strony, jeśli θV×V jest relacją równoważności o klasach X1,,Xk, to ściągając w grafie 𝐆 kolejno zbiory X1,,Xk otrzymamy graf ilorazowy 𝐆/θ.

W dotychczasowej interpretacji grafów, jako mapy dróg zakładaliśmy, że istnienie drogi np. z Krakowa do Zakopanego, gwarantowało także możliwość powrotu po tej samej trasie. To oczywiście nie musi być zawsze prawdą, np. w miastach jest wiele dróg jednokierunkowych. Chcąc rozważać również takie jednokierunkowe trasy, tzn uwzględniać kierunek relacji między dwoma obiektami, będziemy mówić o grafach skierowanych.

Graf skierowany (lub inaczej digraf) to para 𝐃=(V,E), gdzie

  • V jest zbiorem wierzchołków,
  • E jest zbiorem krawędzi skierowanych, czyli EV×V.
Uwaga

Krawędź digrafu (czyli uporządkowaną parę) vw graficznie przedstawiamy jako strzałkę v  w.

Graf szkieletowy digrafu 𝐃 to graf otrzymany z 𝐃 poprzez zaniedbanie (usunięcie) kierunku krawędzi, ale nie samych krawędzi.

Przegląd niektórych grafów

<flash>file=Grafy antyklika.swf|width=250|height=250</flash>

<div.thumbcaption>Antyklika 𝒜5


<flash>file=x.swf|width=250|height=250</flash> <div.thumbcaption>Graf nie będący dwudzielnym (a), niepełny graf dwudzielny (b)

oraz pełny graf dwudzielny 𝒦3,4 (c) graf

<flash>file=Grafy klika.swf|width=250|height=250</flash>

<div.thumbcaption>Klika 𝒦5


<flashwrap>file=Grafy planarne.swf|size=small</flashwrap>

<div.thumbcaption>Graf nieplanarny(a) oraz graf planarny (b) wraz z jego prezentacją w postaci grafu płaskiego (c)

Graf pusty to graf bez krawędzi. Antyklika lub graf niezależny to inne nazwy grafu prostego. Antyklikę o n jest ilością wierzchołkach oznaczać będziemy przez 𝒜n.

Graf pełny to graf, w którym każde dwa wierzchołki połączone są krawędzią. Graf pełny nazywany jest także kliką i oznaczany przez 𝒦n, gdzie n jest liczbą jego wierzchołków.

Uwaga

Liczba krawędzi w klice 𝒦n wynosi n(n1)2.

Graf dwudzielny to graf 𝐆=(V,E), w którym zbiór V da się podzielić na dwa rozłączne podzbiory V1 oraz V2 tak, by żadne dwa wierzchołki w obrębie tego samego podzbioru Vi nie były sąsiadami. Czasem, dla podkreślenia takiego podziału, graf dwudzielny będziemy oznaczać przez (V1V2,E). Zauważmy jednak, że podział taki nie jest jednoznaczny -- np. w antyklice 𝒜n dowolny podział zbioru wierzchołków na dwa podzbiory jest podziałem dwudzielnym.

Pełny graf dwudzielny to graf dwudzielny 𝐆=(V1V2,E), w którym każdy wierzchołek z V1 jest połączony z każdym wierzchołkiem z V2. Pełny graf dwudzielny oznaczać będziemy przez 𝒦r,s, gdzie r jest rozmiarem V1, a s rozmiarem V2.


Graf płaski to para G=(V,E), gdzie:

  • V jest jakimś zbiorem punktów płaszczyzny 2,
  • E jest zbiorem nie przecinających się odcinków lub łuków w R2

o końcach ze zbiorze V.

Graf planarny to graf, który jest prezentowalny jako graf płaski.

Ścieżki, Cykle, oraz Spójność

<flashwrap>file=Grafy marszruta.swf|size=small</flashwrap>

<div.thumbcaption>Grafy marszruta

Marszruta w grafie 𝐆 z wierzchołka w do wierzchołka u to skończony ciąg krawędzi w postaci wv1,v1v2,,vk1u.
W skrócie marszrutę taką oznaczamy przez wv1v2vk1u.
Wierzchołek w nazywać będziemy początkowym, a u końcowym wierzchołkiem marszruty.

Długość marszruty wv1v2vk1u to liczba jej krawędzi.

Marszruta zamknięta to marszruta kończąca się w punkcie wyjścia, czyli taka, w której w=u.

Uwaga

Marszruta może być również zdefiniowana w grafach skierowanych. Definiuje się ją analogicznie, uwzględniając jednak kierunek krawędzi. Marszruta taka, zgodna z kierunkiem krawędzi nazywana jest marszrutą skierowaną.

W grafie z rysunku Uzupelnic pict marszruta| ciąg uvwzzyvwv jest marszrutą z u do v o długości 8. Widzimy, że niektóre jej wierzchołki, a nawet krawędzie, powtarzają się. Wygodnie jest móc wyróżniać marszruty bez powtarzających się wierzchołków.

Droga to marszruta bez powtarzających się wierzchołków. Droga nazywana jest też często ścieżką.

Cykl to marszruta zamknięta, w której jedynym powtarzającym się wierzchołkiem jest jej początek (będący oczywiście również jej końcem).

W grafie z rysunku Uzupelnic pict marszruta| marszruta yvwux jest drogą, zaś marszruta xuvwyx jest cyklem.
Czasem wygodnie jest traktować marszrutę w grafie 𝐆 (a więc w szczególności również cykle i ścieżki) jako podgraf

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf{M}=\left( {\sf V}\!\left(\mathbf{M}\right),{\sf E}\!\left(\mathbf{M}\right) \right) :=\left( \left\lbrace v_0,\ldots,v_k \right\rbrace,\left\lbrace \left\lbrace v_0,v_1 \right\rbrace,\ldots,\left\lbrace v_{k-1},v_k \right\rbrace \right\rbrace \right). }

Graf spójny to graf, w którym między dwoma dowolnymi wierzchołkami istnieje droga. Graf niespójny to graf, który nie jest spójny.

Spójna składowa grafu 𝐆=(V,E) to maksymalny (w sensie inkluzji) podzbiór XV, indukujący graf spójny 𝐆|X.

Graf z rysunku Uzupelnic pict marszruta| jest spójny.

Uwaga

Dowolnym graf 𝐆 rozpada się na spójne składowe, tworzące podział zbioru V. Grafy spójne mają jedynie jedną spójną składową, w przeciwieństwie do grafów niespójnych posiadających ich więcej.
Rozkład na spójne składowe wyznacza relacją równoważności σV×V, dla której graf ilorazowy 𝐆/σ jest antykliką.

Wierzchołek izolowany to wierzchołek nie posiadający sąsiadów.

Uwaga

Punkty izolowane tworzą jednoelemetowe spójne składowe.

{grafy_spojne_skladowe} { [Rysunek z pliku: grafyspojneskladowe.eps]}

Graf z rysunku Uzupelnic pict spojne skladowe| ma trzy spójne składowe: {v,w,y,x},{u,z},{t}. Ponadto t jest punktem izolowanym.

Intuicyjnie wydaje się, że graf spójny powinien mieć dostatecznie dużo krawędzi w stosunku do liczby wierzchołków. Okazuje się jednak, że w grafie spójnym 𝐆=(V,E) możemy wymusić jedynie |V|1 krawędzi. Z drugiej jednak strony, gdy graf 𝐆 ma więcej niż |V|(|V|1)/2 krawędzi, to musi być spójny. Rezultaty te można uzyskać z bardziej ogólnego wyniku:

Twierdzenie 2

W grafie prostym 𝐆=(V,E) o k składowych spójnych liczba jego krawędzi spełnia nierówności

|V|k|E|(|V|k)(|V|k+1)2.

Ponadto, są to najlepsze możliwe ograniczenia, tzn.

  • istnieje graf prosty 𝐆=(V,E) o dokładnie k

składowych spójnych, w którym |E|=|V|k,

  • istnieje graf prosty 𝐆=(V,E) o dokładnie k

składowych spójnych, w którym |E|=(|V|k)(|V|k+1)2.

Dowód

Niech n będzie liczbą wierzchołków grafu 𝐆, a m liczbą jego krawędzi. Dowód nierówności nkm przeprowadzimy indukcyjnie względem liczby krawędzi m w grafie 𝐆. Jeżeli m=0, to wszystkie wierzchołki są punktami izolowanymi czyli k=n, co spełnia żądaną nierówność. Przy m>0 usunięcie krawędzi może nie zmienić liczby składowych spójnych albo zwiększyć ją o jeden. W pierwszym przypadku z założenia indukcyjnego dostaniemy odrazu że nkm1m, zaś w drugim, założenie indukcyjne daje n(k+1)m1, czyli rzeczywiście nkm.

Dla dowodu górnego ograniczenia m(nk)(nk+1)/2 na liczbę krawędzi załóżmy, że 𝐆 posiada k składowych spójnych i ma największą możliwą liczbę krawędzi wśród n-elementowych grafów o k składowych spójnych. Wtedy każda z tych składowych jest grafem pełnym, jako że inaczej moglibyśmy dołożyć krawędzie w takiej niepełnej składowej, nie zmieniając przy tym liczb k i n. Pokażemy dodatkowo, że co najwyżej jedna z tych składowych może mieć więcej niż jeden wierzchołek. Istotnie, gdyby były dwie składowe V1,V2 o odpowiednio n1n2>1 wierzchołkach, to -- nie zmieniając pozostałych składowych, i -- przenosząc jeden wierzchołek z V2 do V1 otrzymalibyśmy nowy graf. W oryginalnym grafie sumaryczna liczba krawędzi w (pełnych) składowych V1,V2 wynosi (n12)+(n22), a w nowym grafie te zmodyfikowane (również pełne) składowe posiadają łącznie (n1+12)+(n212) krawędzi. Różnica między nową a starą liczbą krawędzi wynosi więc

(n1+1)n1+(n21)(n22)n1(n11)n2(n21)2=n1n2+11

co pokazuje, że nowy graf ma przynajmniej o jedną krawędź więcej. Dowodzi to, że graf 𝐆 maksymalizujący liczbę krawędzi ma opisaną przez nas własność. To z kolei oznacza, że k1 jego składowych ma po jednym elemencie, a pozostała składowa jest grafem pełnym o n(k1) elementach. Taki graf ma oczywiście (nk+12) krawędzi.

Aby zobaczyć, że podanych ograniczeń na liczbę krawędzi nie można poprawić zauważmy, że

  • graf o k składowych spójnych, z których każda jest indukowaną ścieżką

o liczności odpowiednio n1,n2,,nk ma dokładnie (n11)+(n21)++(nk1)=|V|k krawędzi.

  • rozważany w dowodzie graf o dokładnie k składowych spójnych, z których

k1 to wierzchołki izolowane, a pozostałe |V|k wierzchołków tworzy klikę 𝒦nk, ma dokładnie (|V|k)(|V|k+1)2 krawędzi.

<flash>file=Grafy las.swf|width=300|height=150</flash> <div.thumbcaption>Drzewo (a); las nie będący drzewem ale z dwiema gwiazdami jako składowymi spójnymi (b);

oraz graf nie będący lasem (c)

<flash>file=Grafy drzewo rozp.swf|width=250|height=250</flash>

<div.thumbcaption>Drzewo rozpinające

Las to graf nie zawierający cykli jako podgrafy.

Drzewo to graf spójny nie zawierający cykli, czyli spójny las.

Liść drzewa to wierzchołek o stopniu 1.

Gwiazda to drzewo, w którym co najwyżej jeden wierzchołek nie jest liściem.

Drzewo rozpinające grafu 𝐆 to podgraf grafu 𝐆 zawierający wszystkie jego wierzchołki i będący drzewem.

Drzewa można zdefiniować na kilka równoważnych sposobów:

Twierdzenie 3

Dla grafu 𝐓=(V,E) następujące warunki są równoważne:

  1. 𝐓 jest drzewem,
  2. 𝐓 nie zawiera cykli i ma |V|1 krawędzi,
  3. 𝐓 jest spójny i ma |V|1 krawędzi,
  4. 𝐓 jest spójny, zaś usunięcie dowolnej krawędzi tworzy dokładnie dwie składowe,
  5. dowolne dwa wierzchołki grafu 𝐓 są połączone dokładnie jedną drogą,
  6. 𝐓 nie zawiera cykli, lecz dodanie dowolnej nowej krawędzi tworzy dokładnie jeden cykl.

Dowód

Dowód przeprowadzimy indukcyjnie ze względu na liczbę wierzchołków |V| grafu 𝐓. Oczywiście dla |V|=1 graf 𝐓 nie ma krawędzi i tym samym spełnia wszystkie sześć warunków dowodzonego Twierdzenia.

1. 2. Ponieważ 𝐓 nie posiada cykli, to usunięcie krawędzi rozspaja 𝐓 na dwa drzewa: pierwsze o n1 wierzchołkach oraz drugie o n2, przy czym n1+n2=|V| oraz 0<n1,n2<|V|. Założenie indukcyjne gwarantuje, że nowo powstałe drzewa mają odpowiednio n11 oraz n21 krawędzi. Sumując te krawędzie wraz z usuniętą otrzymujemy

|E|=(n11)+(n21)+1=|V|1.

2. 3. Jeżeli 𝐓 nie byłby spójny, to miałby k2 składowych spójnych. Ponieważ żadna składowa nie ma cykli, założenie indukcyjne daje, że w każdej z k składowych krawędzi jest o jedną mniej niż wierzchołków. A więc, w całym grafie krawędzi jest o k2 mniej niż wierzchołków co daje sprzeczność z |E|=|V|1.

3. 4. Usunięcie dowolnej krawędzi spowoduje, że nowy graf będzie miał |V|2 krawędzie. Na mocy Twierdzenia Uzupelnic th oszacowanie E| okazuje się, że jest to za mało aby graf był spójny.

4. 5. Jeżeli istniałyby dwie różne ścieżki P1 oraz P2 o wspólnym początku i końcu, to usunięcie krawędzi eP1P2 nierozspajałoby grafu 𝐓.

5. 6. Pomiędzy dwoma punktami dowolnego cyklu C istnieją dwie rozłączne ścieżki zawarte w C. Tak więc istnienie dokładnie jednej ścieżki pomiędzy dowolnymi punktami w 𝐓 wyklucza istnienie cykli w 𝐓. Z drugiej zaś strony dodanie dodatkowej krawędzi uv stworzy cykl składający się z krawędzi uv oraz ścieżki łączącej wierzchołek u z v zawartej w grafie 𝐓. Powyższy cykl jest jedyny. Wynika to z tego, że jeżeli istnieją dwa cykle zawierające krawędź uv, to musi istnieć trzeci cykl niezawierajacy uv, czyli zawarty w 𝐓 co nie jest możliwe.

6. 1. Gdyby, mimo spełniania warunku 6, graf 𝐓 nie był spójny, to dodanie jednej krawędzi łączącej dwa wierzchołki w różnych składowych spójnych nie utworzy cyklu.

Z charakteryzacji drzew podanej w Twierdzeniu Uzupelnic th warunki na drzewo| natychmiast dostajemy następujący związek miedzy liczbą krawędzi i wierzchołków w dowolnym lesie.

Wniosek

Każdy las 𝐆=(V,E) o k składowych spójnych posiada |E|=|V|k krawędzi.