Matematyka dyskretna 1/Wykład 12: Grafy

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

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 12.1

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


Parser nie mógł rozpoznać (błąd składni): {\displaystyle \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 \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=Grafy dwudzielne.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)

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

<flash>file=Grafy spojne skladowe.swf|width=250|height=150</flash>

<div.thumbcaption>Grafy spójne skladowe

Graf z rysunku Grafy 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 12.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 12.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 12.2 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 12.3 natychmiast dostajemy następujący związek miedzy liczbą krawędzi i wierzchołków w dowolnym lesie.

Wniosek 12.4

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