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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pitab (dyskusja | edycje)
m Zastępowanie tekstu – „,↵</math>” na „</math>,”
 
(Nie pokazano 33 wersji utworzonych przez 4 użytkowników)
Linia 9: Linia 9:


<center>
<center>
<div class="thumb"><div style="width:270px;">
[[File:Grafy mosty krolewca.svg|250x250px|thumb|center|Mapa mostów w Królewcu]]
<flash>file=Grafy mosty krolewca.swf|width=250|height=250</flash>
<div.thumbcaption>Mapa mostów w Królewcu</div>
</div></div>
</center>
</center>


Linia 19: Linia 16:
by po  każdym przejść tylko raz i wrócić do punktu startowego.  
by po  każdym przejść tylko raz i wrócić do punktu startowego.  
Euler oczywiście odpowiedział na zadane mu pytanie.  
Euler oczywiście odpowiedział na zadane mu pytanie.  
Postaramy się rozwiązać ''Zagadnienie Mostów Królewieckich''.  
Postaramy się rozwiązać '''Zagadnienie Mostów Królewieckich'''.  
Zacznijmy od przedstawienia powyższego problemu w języku grafów.  
Zacznijmy od przedstawienia powyższego problemu w języku grafów.  
Niech każdy spójny kawałek lądu w Królewcu odpowiada wierzchołkowi.  
Niech każdy spójny kawałek lądu w Królewcu odpowiada wierzchołkowi.  
Linia 30: Linia 27:
{{kotwica|pict graf Krolewcu||}}
{{kotwica|pict graf Krolewcu||}}
<center>
<center>
<div class="thumb"><div style="width:250px;">
[[File:Grafy graf krolewca.svg|250x250px|thumb|center|Mapa mostów w Królewcu]]
<flash>file=Grafy graf krolewca.swf|width=250|height=250</flash>
<div.thumbcaption>Mapa mostów w Królewcu</div>
</div></div>
</center>
</center>


Naszym celem jest skonstruowanie specjalnego cyklu w grafie z
Naszym celem jest skonstruowanie specjalnego cyklu w grafie z rysunku
[[#pict graf Krolewcu|rysunku]].  
[[#pict graf Krolewcu|Mapa mostów w Królewcu]].  


{{kotwica|pict grafy eulerowskie||}}
{{kotwica|pict grafy eulerowskie||}}
<div class="thumb tright"><div style="width:250px;">
[[File:Grafy eulerowskie.svg|250x150px|thumb|right|Przykład grafu  eulerowskiego (a) i nieeulerowskiego (b)]]
<flash>file=Grafy eulerowskie.swf|width=250|height=150</flash>
<div.thumbcaption>Przykład grafu  eulerowskiego (a) i nieeulerowskiego (b)</div></div>
</div>


'''Cykl Eulera''' to zamknięta [[Matematyka dyskretna 1/Wykład 12: Grafy#marsz|marszruta]] przechodząca przez każdą krawędź grafu dokładnie raz.
'''Cykl Eulera''' to zamknięta [[Matematyka dyskretna 1/Wykład 12: Grafy#marsz|marszruta]] przechodząca przez każdą krawędź grafu dokładnie raz.
Linia 49: Linia 40:
'''Graf eulerowski''' to graf posiadający cykl Eulera.
'''Graf eulerowski''' to graf posiadający cykl Eulera.


Graf na [[#pict grafy eulerowskie|rysunku]]a
Graf na rysunku [[#pict grafy eulerowskie|Grafy eulerowskie]]
posiada cykl Eulera <math>x\to u\to z\to y \to u \to z\to y\to x</math>,  
posiada cykl Eulera <math>x\to u\to z\to y \to u \to z\to y\to x</math>,  
zaś graf w części b. nie jest eulerowski,  
zaś graf w części b. nie jest eulerowski,  
Linia 169: Linia 160:
==Grafy hamiltonowskie==
==Grafy hamiltonowskie==


<div class="thumb tright"><div style="width:250px;">
{{kotwica|pict grafy komiwojazer||}}
<flash>file=Grafy komiwojazer.swf|width=250|height=200</flash>
[[File:Grafy komiwojazer.svg|250x200px|thumb|right|Graf połączeń między klientami firmy kurierskiej]]
<div.thumbcaption>Graf połączeń między klientami firmy kurierskiej</div></div>
</div>


Inny, ciekawy problem można przedstawić na przykadzie firmy rozwożącej przesyłki.  
Inny, ciekawy problem można przedstawić na przykadzie firmy rozwożącej przesyłki.  
Linia 180: Linia 169:
Załóżmy, że na przesyłki czeka następujący zbiór osób:  
Załóżmy, że na przesyłki czeka następujący zbiór osób:  
Henryk, Elżbieta, Maciej, Jan, Ula, Izabela, Gabriela, oraz Maria.  
Henryk, Elżbieta, Maciej, Jan, Ula, Izabela, Gabriela, oraz Maria.  
Niestety, jak widać z rysunku [[##pict grafy komiwojazer|Uzupelnic pict grafy komiwojazer|]],  
Niestety, jak widać z [[#pict grafy komiwojazer|rysunku]],  
nie ma połączeń umożliwiających przejazd między dowolnymi dwoma klientami.
nie ma połączeń umożliwiających przejazd między dowolnymi dwoma klientami.


Linia 204: Linia 193:
Przedstawiony jest w postaci następującego twierdzenia.
Przedstawiony jest w postaci następującego twierdzenia.


{{twierdzenie|4 [Ore 1960]||
{{twierdzenie|13.4 [Ore 1960]|tw 13.4|
 
Jeśli w grafie prostym <math>\mathbf{G}=\left( V,E \right)</math>  
Jeśli w grafie prostym <math>\mathbf{G}=\left( V,E \right)</math>  
o  co najmniej <math>3</math> wierzchołkach dowolne dwa niesąsiednie wierzchołki <math>v</math> i <math>w</math>  
o  co najmniej <math>3</math> wierzchołkach dowolne dwa niesąsiednie wierzchołki <math>v</math> i <math>w</math>  
Linia 212: Linia 200:
}}
}}


<div class="thumb tright"><div style="width:250px;">
[[File:Grafy ore.svg|250x200px|thumb|right|Cykl Hamiltona w grafie <math>\mathbf{G}</math>]]
<flash>file=Grafy ore.swf|width=250|height=200</flash>
<div.thumbcaption>Cykl Hamiltona w grafie <math>\mathbf{G}</math></div></div>
</div>


{{dowod|||
{{dowod|||
Dla dowodu niewprost załóżmy, że pewien niehamiltonowski graf <math>\mathbf{G}</math>
o <math>n</math> wierzchołkach spełnia


Dla dowodu niewprost załóżmy, że pewien niehamiltonowski graf <math>\mathbf{G}</math>
(*) <math>\deg{v}+\deg{w}\geq n</math>, dla niesąsiednich wierzchołków <math>v,w</math>.
o <math>n</math> wierzchołkach spełnia (*) <math>\deg{v}+\deg{w}\geq n</math>, dla niesąsiednich wierzchołków <math>v,w</math>.


Dodawanie krawędzi do <math>\mathbf{G}</math> nie psuje warunku (*),  
Dodawanie krawędzi do <math>\mathbf{G}</math> nie psuje warunku (*),  
Linia 247: Linia 233:
znalezionego parę lat wcześniej przez Dirac'a.
znalezionego parę lat wcześniej przez Dirac'a.


{{wniosek|5 [G. A. Dirac 1952]||
{{wniosek|13.5 [G. A. Dirac 1952]|wn 13.5|
 
Graf prosty <math>\mathbf{G} =\left( V,E \right)</math>,  
Graf prosty <math>\mathbf{G} =\left( V,E \right)</math>,  
w którym każdy wierzchołek ma stopień co najmniej <math>\left\vert V \right\vert/2</math>  
w którym każdy wierzchołek ma stopień co najmniej <math>\left\vert V \right\vert/2</math>  
Linia 255: Linia 240:


Wróćmy teraz do przykładu o kurierze.  
Wróćmy teraz do przykładu o kurierze.  
Licząc stopnie wierzchołków w grafie z rysunku
Licząc stopnie wierzchołków w grafie z [[#pict grafy komiwojazer|rysunku]] i używając Twierdzenia Ore'a możemy stwierdzić, że graf ten ma cykl Hamiltona.  
[[##pict grafy komiwojazer|Uzupelnic pict grafy komiwojazer|]] i używając Twierdzenia Ore'a  
możemy stwierdzić, że graf ten ma cykl Hamiltona.  
Tak więc kurier, nie bojąc się utraty pracy, może spokojnie spełnić swoje zadanie.
Tak więc kurier, nie bojąc się utraty pracy, może spokojnie spełnić swoje zadanie.


Linia 271: Linia 254:
Czasem, dla podkreślenia takiego podziału, graf dwudzielny będziemy oznaczać  
Czasem, dla podkreślenia takiego podziału, graf dwudzielny będziemy oznaczać  
przez <math>\left( V_1\cup V_2,E \right)</math>.  
przez <math>\left( V_1\cup V_2,E \right)</math>.  
Zauważmy jednak, że podział taki nie jest jednoznaczny --  
Zauważmy jednak, że podział taki nie jest jednoznaczny -  
np. w antyklice <math>\mathcal{A}_{n}</math> dowolny podział zbioru wierzchołków na dwa podzbiory  
np. w antyklice <math>\mathcal{A}_{n}</math> dowolny podział zbioru wierzchołków na dwa podzbiory  
jest podziałem dwudzielnym.
jest podziałem dwudzielnym.


{{twierdzenie|6||
{{twierdzenie|13.6|tw 13.6|
 
Graf  jest dwudzielny wtedy i tylko wtedy,  
Graf  jest dwudzielny wtedy i tylko wtedy,  
gdy każdy jego cykl ma parzystą długość.
gdy każdy jego cykl ma parzystą długość.
Linia 282: Linia 264:


{{dowod|||
{{dowod|||
Załóżmy najpierw, że graf <math>\mathbf{G}=\left( V,E \right)</math> jest dwudzielny
Załóżmy najpierw, że graf <math>\mathbf{G}=\left( V,E \right)</math> jest dwudzielny
czyli, że <math>V</math> można podzielić na dwa rozłączne zbiory wierzchołków <math>V_1</math> oraz <math>V_2</math>,  
czyli, że <math>V</math> można podzielić na dwa rozłączne zbiory wierzchołków <math>V_1</math> oraz <math>V_2</math>,  
Linia 343: Linia 324:


'''Skojarzenie''' w grafie dwudzielnym <math>\mathbf{G}=\left( V_1\cup V_2,E \right)</math>  
'''Skojarzenie''' w grafie dwudzielnym <math>\mathbf{G}=\left( V_1\cup V_2,E \right)</math>  
to podzbiór krawędzi <math>M\subseteq{\sf E}\!\left(\mathbf{G}\right)</math>,  
to podzbiór krawędzi <math>M\subseteq\mathsf{ E}\!\left(\mathbf{G}\right)</math>,  
w którym żadne dwie <math>v_1 v_2, u_1 u_2\in M</math> nie wychodzą z tego samego wierzchołka.<br>
w którym żadne dwie <math>v_1 v_2, u_1 u_2\in M</math> nie wychodzą z tego samego wierzchołka.<br>
Powiemy ponadto, że <math>v\in V_i</math> jest ''skojarzony'',  
Powiemy ponadto, że <math>v\in V_i</math> jest ''skojarzony'',  
Linia 359: Linia 340:
które są sąsiednie z przynajmniej jednym wierzchołkiem w <math>A</math>.
które są sąsiednie z przynajmniej jednym wierzchołkiem w <math>A</math>.


{{twierdzenie|7 [O Skojarzeniach w Grafie Dwudzielnym, P. Hall 1935]||
{{twierdzenie|13.7 [O Skojarzeniach w Grafie Dwudzielnym, P. Hall 1935]|tw 13.7|
 
Niech <math>\mathbf{G}=\left( V_1\cup V_2,E \right)</math> będzie grafem dwudzielnym.  
Niech <math>\mathbf{G}=\left( V_1\cup V_2,E \right)</math> będzie grafem dwudzielnym.  
Wówczas pełne skojarzenie <math>V_1</math> z <math>V_2</math> istnieje wtedy i tylko wtedy,  
Wówczas pełne skojarzenie <math>V_1</math> z <math>V_2</math> istnieje wtedy i tylko wtedy,  
Linia 367: Linia 347:


{{dowod|||
{{dowod|||
Dla dowodu nierówności <math>\left\vert A \right\vert \leq\left\vert \Phi\!\left(A\right) \right\vert</math> załóżmy,  
Dla dowodu nierówności <math>\left\vert A \right\vert \leq\left\vert \Phi\!\left(A\right) \right\vert</math> załóżmy,  
że <math>M</math> jest pełnym skojarzeniem.  
że <math>M</math> jest pełnym skojarzeniem.  
Linia 379: Linia 358:
że jest co kojarzyć z jedynym wierzchołkiem w <math>V_1</math>.
że jest co kojarzyć z jedynym wierzchołkiem w <math>V_1</math>.
Załóżmy więc, że <math>n_1>1</math> i rozważmy dwa przypadki:
Załóżmy więc, że <math>n_1>1</math> i rozważmy dwa przypadki:
# Dowolny właściwy podzbiór <math>W</math> zbioru wierzchołków <math>V_1</math> posiada więcej sąsiadów niż jego moc, tzn. <math>\left\vert \Phi\!\left(W\right) \right\vert>\left\vert W \right\vert</math>. Wtedy wybieramy dowolne wierzchołki <math>v_1\in V_1</math> oraz <math>v_2\in V_2</math> i je kojarzymy. Dla <math>W \subseteq V_1-\left\lbrace v_1 \right\rbrace</math> zbiór sąsiadów w zbiorze <math>V_2</math> pomniejszonym o wybrany już <math>v_2</math> jest nadal nie liczniejszy niż liczność <math>\left\vert W \right\vert</math>. Założenie indukcyjne gwarantuje nam więc jakieś skojarzenie pełne <math>M</math> zbioru <math>V_1-\left\lbrace v_1 \right\rbrace</math> z <math>V_2-\left\lbrace v_2 \right\rbrace</math> w grafie pozostałych wierzchołków <math>\mathbf{G}|_{(V_1-\left\lbrace v_1 \right\rbrace)\cup(V_2-\left\lbrace v_2 \right\rbrace)}</math>. Oczywiście <math>M\cup{v_1v_2}</math> jest poszukiwanym skojarzeniem pełnym w <math>\mathbf{G}</math>.
;1. Dowolny właściwy podzbiór <math>W</math> zbioru wierzchołków <math>V_1</math> posiada więcej sąsiadów niż jego moc, tzn. <math>\left\vert \Phi\!\left(W\right) \right\vert>\left\vert W \right\vert</math>. Wtedy wybieramy dowolne wierzchołki <math>v_1\in V_1</math> oraz <math>v_2\in V_2</math> i je kojarzymy. Dla <math>W \subseteq V_1-\left\lbrace v_1 \right\rbrace</math> zbiór sąsiadów w zbiorze <math>V_2</math> pomniejszonym o wybrany już <math>v_2</math> jest nadal nie liczniejszy niż liczność <math>\left\vert W \right\vert</math>. Założenie indukcyjne gwarantuje nam więc jakieś skojarzenie pełne <math>M</math> zbioru <math>V_1-\left\lbrace v_1 \right\rbrace</math> z <math>V_2-\left\lbrace v_2 \right\rbrace</math> w grafie pozostałych wierzchołków <math>\mathbf{G}|_{(V_1-\left\lbrace v_1 \right\rbrace)\cup(V_2-\left\lbrace v_2 \right\rbrace)}</math>. Oczywiście <math>M\cup{v_1v_2}</math> jest poszukiwanym skojarzeniem pełnym w <math>\mathbf{G}</math>.
# Istnieje właściwy podzbiór <math>W</math> zbioru <math>V_1</math>, taki że <math>\left\vert \Phi\!\left(W\right) \right\vert=\left\vert W \right\vert</math>.
 
;2. Istnieje właściwy podzbiór <math>W</math> zbioru <math>V_1</math>, taki że <math>\left\vert \Phi\!\left(W\right) \right\vert=\left\vert W \right\vert</math>.


Ponieważ dla <math>A\subseteq W</math> mamy <math>\Phi\!\left(A\right)\subseteq \Phi\!\left(W\right)</math>, to
Ponieważ dla <math>A\subseteq W</math> mamy <math>\Phi\!\left(A\right)\subseteq \Phi\!\left(W\right)</math>, to


<center><math>\left\vert A \right\vert\leq\left\vert \Phi\!\left(A\right) \right\vert=\left\vert \Phi\!\left(A\right)\cap\Phi\!\left(W\right) \right\vert.
 
</math></center>
<center><math>\left\vert A \right\vert\leq\left\vert \Phi\!\left(A\right) \right\vert=\left\vert \Phi\!\left(A\right)\cap\Phi\!\left(W\right) \right\vert</math></center>
 


Ta nierówność pozwala użyć założenia indukcyjnego do skojarzenia
Ta nierówność pozwala użyć założenia indukcyjnego do skojarzenia
Linia 396: Linia 377:
zbiór jego sąsiadów w <math>V_2- \Phi\!\left(W\right)</math> jest liczniejszy od <math>A</math>, tzn.
zbiór jego sąsiadów w <math>V_2- \Phi\!\left(W\right)</math> jest liczniejszy od <math>A</math>, tzn.


<center><math>\left\vert A \right\vert\leq\left\vert \Phi\!\left(A\right)-\Phi\!\left(W\right) \right\vert.
 
</math></center>
<center><math>\left\vert A \right\vert\leq\left\vert \Phi\!\left(A\right)-\Phi\!\left(W\right) \right\vert</math></center>
 


Załóżmy, że jakiś zbiór <math>A\subseteq V_1- W</math> nie spełnia powyższej nierówności.  
Załóżmy, że jakiś zbiór <math>A\subseteq V_1- W</math> nie spełnia powyższej nierówności.  
Wtedy
Wtedy


<center><math>\left\vert A\cup W \right\vert
<center><math>\left\vert A\cup W \right\vert
=\left\vert A \right\vert\cup\left\vert W \right\vert
=\left\vert A \right\vert\cup\left\vert W \right\vert
>\left\vert \Phi\!\left(A\right)-\Phi\!\left(W\right) \right\vert+\left\vert \Phi\!\left(W\right) \right\vert
>\left\vert \Phi\!\left(A\right)-\Phi\!\left(W\right) \right\vert+\left\vert \Phi\!\left(W\right) \right\vert
\geq\left\vert \Phi\!\left(A\cup W\right) \right\vert,
\geq\left\vert \Phi\!\left(A\cup W\right) \right\vert</math>,</center>
</math></center>
 


co przeczy założeniu twierdzenia, przy którym pracujemy.
co przeczy założeniu twierdzenia, przy którym pracujemy.
Linia 431: Linia 414:


* Grafy <math>1</math>-spójne lub  <math>1</math>-spójne krawędziowo to po prostu grafy spójne.
* Grafy <math>1</math>-spójne lub  <math>1</math>-spójne krawędziowo to po prostu grafy spójne.
* Drzewa są spójne, ale nie <math>2</math>-spójne i nie <math>2</math>-spójne krawędziowo.  
* Drzewa są spójne, ale nie <math>2</math>-spójne i nie <math>2</math>-spójne krawędziowo.  
* Klika <math>\mathcal{K}_{n}</math> jest <math>n</math>-spójna i <math>n-1</math>-spójna krawędziowo.
* Klika <math>\mathcal{K}_{n}</math> jest <math>n</math>-spójna i <math>n-1</math>-spójna krawędziowo.


Linia 439: Linia 424:


'''Zbiór rozdzielający''' wierzchołki  <math>u,v</math>  
'''Zbiór rozdzielający''' wierzchołki  <math>u,v</math>  
to zbiór wierzchołków <math>S\subseteq V- \left\lbrace u,v \right\rbrace </math> taki,  
to zbiór wierzchołków <math>S\subseteq V- \left\lbrace u,v \right\rbrace</math> taki,  
że każda droga z <math>u</math> do <math>v</math> przechodzi przez któryś element ze zbioru  <math>S</math>.
że każda droga z <math>u</math> do <math>v</math> przechodzi przez któryś element ze zbioru  <math>S</math>.


Linia 458: Linia 443:


{{uwaga|||
{{uwaga|||
Jeżeli graf jest <math>k</math>-spójny,  
Jeżeli graf jest <math>k</math>-spójny,  
to każdy jego zbiór rozdzielający musi mieć co najmniej <math>k</math> wierzchołków.  
to każdy jego zbiór rozdzielający musi mieć co najmniej <math>k</math> wierzchołków.  
Linia 465: Linia 449:
}}
}}


{{kotwica|grafy_menger||}}
[[File:Grafy menger.svg|250x150px|thumb|right|Grafy menger]]
{{kotwica|grafy menger2||}}
[[File:Grafy menger2.svg|250x150px|thumb|right|W grafie z rysunku [[#grafy menger|Grafy menger]] odpowiednim rozspajającym zbiorem <math>X</math> z przypadku 1, może być zbiór <math>\left\lbrace xs,xy,uy,zt \right\rbrace</math> zaznaczonych liniami przerywanymi]]




{grafy_menger}
[[File:Grafy menger3.mp4|250x250px|thumb|right|Kontynuacja przykładu z rysunku [[#grafy menger|Grafy menger]] i rysunku [[#grafy menger2|z liniami przerywanymi]]. Pokazane są grafy <math>\mathbf{U}'</math> (a) oraz <math>\mathbf{W}'</math> (b)]]
{ '''[Rysunek z pliku:''' <tt>grafymenger.eps</tt>''']'''}


{{przyklad|||
{{przyklad|||
Przykładowymi zbiorami rozdzielającymi wierzchołki <math>u,w</math>  
Przykładowymi zbiorami rozdzielającymi wierzchołki <math>u,w</math>  
w grafie z rysunku [[##pict Menger|Uzupelnic pict Menger|]] są zbiory <math>\left\lbrace x,y,z \right\rbrace</math> i <math>\left\lbrace s,t \right\rbrace</math>.
w grafie z rysunku [[#grafy menger|Grafy menger]] są zbiory <math>\left\lbrace x,y,z \right\rbrace</math> i <math>\left\lbrace s,t \right\rbrace</math>.
Zbiory  <math>\left\lbrace xs,xy,ys,ys,zt \right\rbrace</math> jest rozspajający,  
Zbiory  <math>\left\lbrace xs,xy,ys,ys,zt \right\rbrace</math> jest rozspajający,  
a zbiór  <math>\left\lbrace xs,xy,uy,uz \right\rbrace</math> jest rozcięciem.  
a zbiór  <math>\left\lbrace xs,xy,uy,uz \right\rbrace</math> jest rozcięciem.  
Linia 480: Linia 467:


Okazuje się, że dla dwu różnych wierzchołków  
Okazuje się, że dla dwu różnych wierzchołków  
istnieje powiązanie -- między wielkością rozcięcia,  
istnieje powiązanie - między wielkością rozcięcia,  
a liczbą dróg pomiędzy nimi -- silniejsze niż to wynikające z definicji.
a liczbą dróg pomiędzy nimi - silniejsze niż to wynikające z definicji.
 
{{twierdzenie|8 [Menger 1927]||


{{twierdzenie|13.8 [Menger 1927]|tw 13.8|
Największa możliwa liczba krawędziowo rozłącznych dróg  
Największa możliwa liczba krawędziowo rozłącznych dróg  
łączących dwa różne niesąsiednie wierzchołki grafu spójnego,   
łączących dwa różne niesąsiednie wierzchołki grafu spójnego,   
Linia 491: Linia 477:


{{dowod|||
{{dowod|||
Niech <math>w,u</math> będą dwoma różnymi i niesąsiednimi wierzchołkami grafu spójnego  
Niech <math>w,u</math> będą dwoma różnymi i niesąsiednimi wierzchołkami grafu spójnego  
<math>\mathbf{G}=\left( V,E \right)</math>.  
<math>\mathbf{G}=\left( V,E \right)</math>.  
Linia 509: Linia 494:
podzieli się na dwie spójne składowe <math>W</math> oraz <math>U</math>,  
podzieli się na dwie spójne składowe <math>W</math> oraz <math>U</math>,  
do których odpowiednio należą <math>w</math> i <math>u</math>.
do których odpowiednio należą <math>w</math> i <math>u</math>.
{grafy_menger2}
{W grafie z rysunku [[##pict Menger|Uzupelnic pict Menger|]] odpowiednim rozspajającym
zbiorem <math>X</math> z przypadku 1, może być zbiór <math>\left\lbrace xs,xy,uy,zt \right\rbrace</math>
zaznaczonych liniami przerywanymi. '''[Rysunek z pliku:''' <tt>grafymenger2.eps</tt>''']'''}


Przez <math>\mathbf{W}'</math> oznaczmy graf powstały z grafu <math>\mathbf{G}</math> poprzez ściągnięcie  
Przez <math>\mathbf{W}'</math> oznaczmy graf powstały z grafu <math>\mathbf{G}</math> poprzez ściągnięcie  
Linia 523: Linia 503:
Graf <math>\mathbf{U}'</math> definiujemy analogicznie,  
Graf <math>\mathbf{U}'</math> definiujemy analogicznie,  
poprzez ściągnięcie zbioru <math>W</math> do wierzchołka <math>w'</math>.
poprzez ściągnięcie zbioru <math>W</math> do wierzchołka <math>w'</math>.
{grafy_menger3}
{Kontynuacja przykładu z rysunków [[##pict Menger|Uzupelnic pict Menger|]] i [[##pict Menger2|Uzupelnic pict Menger2|]].
Pokazane są grafy <math>\mathbf{U}'</math> (a) oraz <math>\mathbf{W}'</math> (b). '''[Rysunek z pliku:''' <tt>grafymenger3.eps</tt>''']'''}


W grafie <math>\mathbf{W}'</math> zbiór krawędzi incydentnych z <math>u'</math>,  
W grafie <math>\mathbf{W}'</math> zbiór krawędzi incydentnych z <math>u'</math>,  
Linia 558: Linia 534:
}}
}}


Jako ćwiczenie '''[ex][dowod twierdzenia wierzcholkowego Menger]'''
Jako [[Matematyka dyskretna 1/Ćwiczenia 13: Grafy II#cw_9|ćwiczenie 9]] pozostawiamy dowód twierdzenia analogicznego do [[#tw_13.8|Twierdzenia 13.8]],  
pozostawiamy dowód twierdzenia analogicznego do Twierdzenia [[##th krawedziowe Menger|Uzupelnic th krawedziowe Menger|]],  
a wiążącego tym razem zbiory rozdzielające z drogami rozłącznymi wierzchołkowo.
a wiążącego tym razem zbiory rozdzielające z drogami rozłącznymi wierzchołkowo.


{{twierdzenie|9||
{{twierdzenie|13.9|tw 13.9|
 
Największa możliwa liczba wierzchołkowo rozłącznych dróg  
Największa możliwa liczba wierzchołkowo rozłącznych dróg  
łączących dwa różne niesąsiednie wierzchołki grafu spójnego,   
łączących dwa różne niesąsiednie wierzchołki grafu spójnego,   
Linia 569: Linia 543:
}}
}}


Z Twierdzenia [[##th Menger2|Uzupelnic th Menger2|]] można w łatwy sposób wywnioskować
Z [[#tw_13.9|Twierdzenia 13.9]], można w łatwy sposób wywnioskować
Twierdzenie [[##th hall|Uzupelnic th hall|]] o skojarzeniach w grafach dwudzielnych.
[[#tw_13.7|Twierdzenia 13.7]], o skojarzeniach w grafach dwudzielnych.
Wyprowadzenie to pozostawiamy jako ćwiczenie {Menger<nowiki>=</nowiki>>Hall}.
Wyprowadzenie to pozostawiamy jako [[Matematyka dyskretna 1/Ćwiczenia 13: Grafy II#cw_10|ćwiczenie 10]].


W grafie <math>k</math>-spójnym usunięcie jakichś <math>k-1</math> punktów nie rozspaja go.  
W grafie <math>k</math>-spójnym usunięcie jakichś <math>k-1</math> punktów nie rozspaja go.  
Linia 578: Linia 552:
Pisząc zwięźlej możemy powiedzieć, że:
Pisząc zwięźlej możemy powiedzieć, że:


{{wniosek|10||
{{wniosek|13.10|wn 13.10|
 
Graf z co najmniej <math>k+1</math> wierzchołkami jest <math>k</math>-spójny wtedy i tylko wtedy,  
Graf z co najmniej <math>k+1</math> wierzchołkami jest <math>k</math>-spójny wtedy i tylko wtedy,  
gdy dowolne dwa wierzchołki są połączone przynajmniej <math>k</math> drogami  
gdy dowolne dwa wierzchołki są połączone przynajmniej <math>k</math> drogami  
Linia 588: Linia 561:
prowadzi do następującego wniosku.
prowadzi do następującego wniosku.


{{wniosek|11||
{{wniosek|13.11|wn 13.11|
 
Graf z co najmniej <math>k-1</math> krawędziami jest <math>k</math>-spójny krawędziowo  
Graf z co najmniej <math>k-1</math> krawędziami jest <math>k</math>-spójny krawędziowo  
wtedy i tylko wtedy,  
wtedy i tylko wtedy,  
Linia 611: Linia 583:
Formalnym modelem dla tego typu zagadnień są sieci.
Formalnym modelem dla tego typu zagadnień są sieci.


'''Sieć''' to trójką <math>\mathbf{N}=\left( V, A, {\sf c} \right)</math>, w której:  
{{kotwica|grafy_siec||}}
[[File:Grafy siec.svg|350x250px|thumb|right|Przykładowa sieć]]
{{kotwica|grafy_przeplyw||}}
[[File:Grafy przeplyw.svg|350x250px|thumb|right|Przepływ w sieci z rysunku [[#grafy siec|Przykładowa sieć]]]]
 
'''Sieć''' to trójka
<math>
\mathbf{N}=\left( V, A, \mathsf{ c} \right)
</math>, w której:
 
* <math>
\left( V,A \right)
</math> jest pełnym digrafem (czyli <math>A=V\times V</math>),
 
* funkcja <math>\mathsf{ c}:E \longrightarrow [0,+\infty)</math>, zwana ''przepustowością'' sieci, każdej krawędzi <math>vw</math> przypisuje nieujemną liczbę rzeczywistą <math>\mathsf{ c}\!\left(vw\right)</math>.


* <math>\left( V,A \right)</math> jest pełnym digrafem (czyli <math>A=V\times V</math>),
* funkcja <math>{\sf c}:E \longrightarrow [0,+\infty) </math>, zwana ''przepustowością'' sieci, każdej krawędzi <math>vw</math> przypisuje nieujemną liczbę rzeczywistą <math>{\sf c}\!\left(vw\right)</math>.
* Ponadto wyróżnia się dwa wierzchołki <math>s,t\in V</math>, które są odpowiednio ''źródłem'' oraz ''ujściem'' sieci.
* Ponadto wyróżnia się dwa wierzchołki <math>s,t\in V</math>, które są odpowiednio ''źródłem'' oraz ''ujściem'' sieci.


Przepustowość <math>{\sf c}(vw)</math> krawędzi <math>vw</math>  
Przepustowość <math>\mathsf{ c}(vw)</math> krawędzi <math>vw</math>  
może być interpretowana jako wartość potencjalnie maksymalnego przepływu  
może być interpretowana jako wartość potencjalnie maksymalnego przepływu  
z wierzchołka <math>v</math> do <math>w</math>.  
z wierzchołka <math>v</math> do <math>w</math>.  
Linia 623: Linia 607:
to krawędź <math>e</math> jest pomijana w graficznym przedstawieniu sieci.  
to krawędź <math>e</math> jest pomijana w graficznym przedstawieniu sieci.  


{grafy_siec}
'''Przepływ''' w sieci <math>\mathbf{N}=\left( V, A, \mathsf{ c} \right)</math>
{Przykładowa sieć. '''[Rysunek z pliku:''' <tt>grafysiec.eps</tt>''']'''}
to funkcja <math>\mathsf{ f}:E \longrightarrow [0,+\infty)</math> spełniająca warunki:


'''Przepływ''' w sieci <math>\mathbf{N}=\left( V, A, {\sf c} \right)</math>  
* <math>0\leq\mathsf{ f}\!\left(vw\right)\leq\mathsf{ c}\!\left(vw\right)</math> dla każdej krawędzi <math>vw</math>. Wartość przepływu daną krawędzią nie może przekroczyć przepustowości tej krawędzi.
to funkcja <math>{\sf f}:E \longrightarrow [0,+\infty)</math> spełniająca warunki:


* <math>0\leq{\sf f}\!\left(vw\right)\leq{\sf c}\!\left(vw\right)</math> dla każdej krawędzi <math>vw</math>. Wartość przepływu daną krawędzią nie może przekroczyć przepustowości tej krawędzi.
* <math>\sum_{x\in V}\mathsf{ f}\!\left(xv\right)=\sum_{x\in V}\mathsf{ f}\!\left(vx\right)</math> dla każdego wierzchołka <math>v</math> poza źródłem <math>s</math> i ujściem <math>t</math>. Równość ta oznacza, że sumaryczna wartość tego, co wpływa do wierzchołka jest równa sumarycznej wartości tego, co zeń wypływa.
* <math>\sum_{x\in V}{\sf f}\!\left(xv\right)=\sum_{x\in V}{\sf f}\!\left(vx\right)</math> dla każdego wierzchołka <math>v</math> poza źródłem <math>s</math> i ujściem <math>t</math>. Równość ta oznacza, że sumaryczna wartość tego, co wpływa do wierzchołka jest równa sumarycznej wartości tego, co zeń wypływa.
* <math>\sum_{x\in V}\left( {\sf f}\!\left(sx\right)-{\sf f}\!\left(xs\right) \right)=\sum_{x\in V}\left( {\sf f}\!\left(xt\right)-{\sf f}\!\left(tx\right) \right)</math>, tzn. sumaryczna wartość tego, co wypływa ze źródła musi być równa sumarycznej wartości tego, co wpływa do ujścia. Wartość ta będzie określana ''wartością przepływu'' <math>{\sf f}</math>.


{grafy_przeplyw}
* <math>\sum_{x\in V}\left( \mathsf{ f}\!\left(sx\right)-\mathsf{ f}\!\left(xs\right) \right)=\sum_{x\in V}\left( \mathsf{ f}\!\left(xt\right)-\mathsf{ f}\!\left(tx\right) \right)</math>, tzn. sumaryczna wartość tego, co wypływa ze źródła musi być równa sumarycznej wartości tego, co wpływa do ujścia. Wartość ta będzie określana ''wartością przepływu'' <math>\mathsf{ f}</math>.
{Przepływ w siei z rysunku [[##pict siec|Uzupelnic pict siec|]]. '''[Rysunek z pliku:''' <tt>grafyprzeplyw.eps</tt>''']'''}


Do analizy przepływów przydatne okazuje się  pojęcie przekroju sieci.
Do analizy przepływów przydatne okazuje się  pojęcie przekroju sieci.
Można go sobie wyobrażać jako zbiór krawędzi <math>X\subseteq A</math>,  
Można go sobie wyobrażać jako zbiór krawędzi <math>X\subseteq A</math>,  
usunięcie których z sieci <math>\mathbf{N}=\left( V, A, {\sf c} \right)</math>  
usunięcie których z sieci <math>\mathbf{N}=\left( V, A, \mathsf{ c} \right)</math>  
rozspaja sieć na dwie części <math>S</math> oraz <math>T</math>,   
rozspaja sieć na dwie części <math>S</math> oraz <math>T</math>,   
przy czym <math>S</math> zawiera źródło, a <math>T</math> ujście.  
przy czym <math>S</math> zawiera źródło, a <math>T</math> ujście.  
Linia 649: Linia 629:
taka że:  
taka że:  
* <math>S, T</math> tworzą podział <math>V</math>, tzn. są rozłączne i w sumie dają cały zbiór <math>V</math>,  
* <math>S, T</math> tworzą podział <math>V</math>, tzn. są rozłączne i w sumie dają cały zbiór <math>V</math>,  
* źródło <math>s</math> należy do <math>S</math>, a ujście <math>t</math> należy do zbioru <math>T</math>.
* źródło <math>s</math> należy do <math>S</math>, a ujście <math>t</math> należy do zbioru <math>T</math>.


'''Przepustowość przekroju''' <math>\left( S,T \right)</math> to suma  
'''Przepustowość przekroju''' <math>\left( S,T \right)</math> to suma
<center><math>{\sf c}\!\left(S,T\right)=\sum_{v\in S,\ w\in T}{\sf c}\!\left(vw\right).
 
</math></center>
 
<center>
<math>\mathsf{ c}\!\left(S,T\right)=\sum_{v\in S,\ w\in T}\mathsf{ c}\!\left(vw\right)</math>
</center>
 


Zależność między przepływem a przekrojem została podana w  
Zależność między przepływem a przekrojem została podana w  
następującym Twierdzeniu o maksymalnym przepływie i minimalnym przekroju.
następującym Twierdzeniu o maksymalnym przepływie i minimalnym przekroju.


{{twierdzenie|12 [Ford i Fulkerson 1956]||
{{twierdzenie|13.12 [Ford i Fulkerson 1956]|tw 13.12|
 
W dowolnej sieci wartość maksymalnego przepływu  
W dowolnej sieci wartość maksymalnego przepływu  
jest równa przepustowości minimalnego przekroju.
jest równa przepustowości minimalnego przekroju.
Linia 665: Linia 649:


{{dowod|||
{{dowod|||
 
Niech <math>\mathbf{N}=\left( V, A, \mathsf{ c} \right)</math> będzie siecią o źródle <math>s</math>  
Niech <math>\mathbf{N}=\left( V, A, {\sf c} \right)</math> będzie siecią o źródle <math>s</math>  
i ujściu <math>t</math>.
i ujściu <math>t</math>.
Oczywiście wartość maksymalnego przepływu  
Oczywiście wartość maksymalnego przepływu  
nie może przekraczać przepustowości minimalnego przekroju.  
nie może przekraczać przepustowości minimalnego przekroju.  
Wystarczy więc wskazać przekrój,  
Wystarczy więc wskazać przekrój,  
którego przepustowość równa się wartości maksymalnego przepływu <math>{\sf f}</math>
którego przepustowość równa się wartości maksymalnego przepływu <math>\mathsf{ f}</math>
w sieci <math>\mathbf{N}</math>.
w sieci <math>\mathbf{N}</math>.


Linia 678: Linia 661:
połączone są ze źródłem pewną ścieżką <math>s=v_1\to\ldots\to v_k=w</math>, w której  
połączone są ze źródłem pewną ścieżką <math>s=v_1\to\ldots\to v_k=w</math>, w której  
łuk <math>v_i v_{i+1}</math> ma niepełny przepływ   
łuk <math>v_i v_{i+1}</math> ma niepełny przepływ   
(tzn. <math>{\sf f}\!\left(v_i v_{i+1}\right)<{\sf c}\!\left(v_i v_{i+1}\right)</math>)  
(tzn. <math>\mathsf{ f}\!\left(v_i v_{i+1}\right)<\mathsf{ c}\!\left(v_i v_{i+1}\right)</math>)  
lub też łuk <math>v_{i+1} v_i</math> ma niezerowy przepływ <math>{\sf f}\!\left(v_{i+1} v_i\right)>0</math>.  
lub też łuk <math>v_{i+1} v_i</math> ma niezerowy przepływ <math>\mathsf{ f}\!\left(v_{i+1} v_i\right)>0</math>.  
W języku firmy wodociągowej <math>S</math> jest zbiorem wierzchołków,  
W języku firmy wodociągowej <math>S</math> jest zbiorem wierzchołków,  
do których można jeszcze przepchnąć choć trochę wody.
do których można jeszcze przepchnąć choć trochę wody.
Linia 691: Linia 674:
na każdej parze <math>v_i,v_{i+1}</math> kolejnych wierzchołków ścieżki.  
na każdej parze <math>v_i,v_{i+1}</math> kolejnych wierzchołków ścieżki.  
Wtedy, modyfikując odpowiednio łuki pomiędzy wierzchołkami <math>v_i, v_{i+1}</math>  
Wtedy, modyfikując odpowiednio łuki pomiędzy wierzchołkami <math>v_i, v_{i+1}</math>  
uzyskalibyśmy przepływ o wartości <math>{\sf f}+\epsilon</math>,  
uzyskalibyśmy przepływ o wartości <math>\mathsf{ f}+\epsilon</math>,  
co przeczy maksymalności przepływu <math>{\sf f}</math>.
co przeczy maksymalności przepływu <math>\mathsf{ f}</math>.


Udowodniliśmy właśnie, że <math>S, T</math> tworzy przekrój sieci
Udowodniliśmy właśnie, że <math>S, T</math> tworzy przekrój sieci
<math>\mathbf{N}</math>, gdzie <math>T=V- S</math>. Pokażmy, że przepustowość
<math>\mathbf{N}</math>, gdzie <math>T=V- S</math>. Pokażmy, że przepustowość
tego przekroju równa się wartości przepływu <math>{\sf f}</math>. Z
tego przekroju równa się wartości przepływu <math>\mathsf{ f}</math>. Z
definicji <math>S</math> wynika, że jeżeli rozważymy dwa elementy <math>v\in S</math> oraz
definicji <math>S</math> wynika, że jeżeli rozważymy dwa elementy <math>v\in S</math> oraz
<math>w\in T</math>, to przepływ <math>{\sf f}\!\left(vw\right)={\sf c}\!\left(vw\right)</math> oraz
<math>w\in T</math>, to przepływ <math>\mathsf{ f}\!\left(vw\right)=\mathsf{ c}\!\left(vw\right)</math> oraz
<math>{\sf f}\!\left(wv\right)=0</math>.Tak więc przepustowość przekroju równa jest
<math>\mathsf{ f}\!\left(wv\right)=0</math>.Tak więc przepustowość przekroju równa jest
 


<center><math>
<center><math>
\sum_{v\in S,\ w\in T}{\sf c}\!\left(vw\right)=\sum_{v\in S,\ w\in
\sum_{v\in S,\ w\in T}\mathsf{ c}\!\left(vw\right)=\sum_{v\in S,\ w\in
T}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right).
T}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right).\qquad (1)
</math></center>
</math></center>


Z faktu, że dla <math>u\in S-\left\lbrace s \right\rbrace</math> wartość tego co wpływa jest
Z faktu, że dla <math>u\in S-\left\lbrace s \right\rbrace</math> wartość tego co wpływa jest
równa temu co wypływa, czyli innymi słowy
równa temu co wypływa, czyli innymi słowy


<center><math>\sum_{x\in V}\left( {\sf f}\!\left(ux\right)-{\sf f}\!\left(xu\right) \right)=0,
 
</math></center>
<center><math>\sum_{x\in V}\left( \mathsf{ f}\!\left(ux\right)-\mathsf{ f}\!\left(xu\right) \right)=0</math>,</center>
 


otrzymujemy następującą równość:
otrzymujemy następującą równość:


<center><math>\sum_{x\in T}\left( {\sf f}\!\left(ux\right)-{\sf f}\!\left(xu\right) \right)=
\sum_{x\in S-\left\lbrace u \right\rbrace}\left( {\sf f}\!\left(xu\right)-{\sf f}\!\left(ux\right) \right).
</math></center>


Prawą stronę równości ([[##eq grafy_ford_fulkerson|Uzupelnic eq grafy_ford_fulkerson|]]) można więc
<center><math>\sum_{x\in T}\left( \mathsf{ f}\!\left(ux\right)-\mathsf{ f}\!\left(xu\right) \right)=
przekształcić w następujący sposób:
\sum_{x\in S-\left\lbrace u \right\rbrace}\left( \mathsf{ f}\!\left(xu\right)-\mathsf{ f}\!\left(ux\right) \right)</math></center>
 
 
Prawą stronę równości (1) można więc przekształcić w następujący sposób:
 
 
<center><math>\begin{align} \sum_{v\in S}\sum_{w\in T}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right)
&=\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right)+\sum_{x\in T}\left( \mathsf{ f}\!\left(ux\right)-\mathsf{ f}\!\left(xu\right) \right)\\
&=\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right)+\sum_{x\in S-\left\lbrace u \right\rbrace}\left( \mathsf{ f}\!\left(xu\right)-\mathsf{ f}\!\left(ux\right) \right)\\
&=\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T\cup\left\lbrace u \right\rbrace}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right)
\end{align}</math></center>


<center><math>\aligned \sum_{v\in S}\sum_{w\in T}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right)
&=&\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right)+\sum_{x\in T}\left( {\sf f}\!\left(ux\right)-{\sf f}\!\left(xu\right) \right)\\
&=&\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right)+\sum_{x\in S-\left\lbrace u \right\rbrace}\left( {\sf f}\!\left(xu\right)-{\sf f}\!\left(ux\right) \right)\\
&=&\sum_{v\in S-\left\lbrace u \right\rbrace}\sum_{w\in T\cup\left\lbrace u \right\rbrace}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right)
\endaligned</math></center>


Powtarzając wielokrotnie przekładanie kolejnych punktów <math>u</math> z <math>S</math> do <math>T</math>
Powtarzając wielokrotnie przekładanie kolejnych punktów <math>u</math> z <math>S</math> do <math>T</math>
otrzymamy w konsekwencji
otrzymamy w konsekwencji


<center><math>\sum_{v\in S}\sum_{w\in T}\left( {\sf f}\!\left(vw\right)-{\sf f}\!\left(wv\right) \right)=\sum_{w\in
V-\left\lbrace v \right\rbrace}\left( {\sf f}\!\left(sw\right)-{\sf f}\!\left(ws\right) \right),
</math></center>


co na mocy ([[##eq grafy_ford_fulkerson|Uzupelnic eq grafy_ford_fulkerson|]]) oznacza, że wartość
<center><math>\sum_{v\in S}\sum_{w\in T}\left( \mathsf{ f}\!\left(vw\right)-\mathsf{ f}\!\left(wv\right) \right)=\sum_{w\in
przepływu z wierzchołka <math>s</math> do wierzchołka <math>t</math> jest równa
V-\left\lbrace v \right\rbrace}\left( \mathsf{ f}\!\left(sw\right)-\mathsf{ f}\!\left(ws\right) \right)</math>,</center>
przepustowości przekroju wyznaczonego przez zbiory <math>S,T</math>.
 
 
co na mocy (1) oznacza, że wartość przepływu z wierzchołka <math>s</math> do wierzchołka <math>t</math> jest równa przepustowości przekroju wyznaczonego przez zbiory <math>S,T</math>.
}}
}}

Aktualna wersja na dzień 21:45, 11 wrz 2023

Grafy eulerowskie

Leonhard Euler stanął przed następującym problemem. W Królewcu (wówczas Konigsbergu) na rzece Pregole, na której są dwie wyspy wybudowano siedem mostów łączące wyspy ze sobą, oraz z oboma brzegami rzeki. Układ mostów został przedstawiony na rysunku:

Mapa mostów w Królewcu

Pytanie, jakie zostało postawione Eulerowi, to czy można tak ułożyć spacer po wszystkich mostach Królewca, by po każdym przejść tylko raz i wrócić do punktu startowego. Euler oczywiście odpowiedział na zadane mu pytanie. Postaramy się rozwiązać Zagadnienie Mostów Królewieckich. Zacznijmy od przedstawienia powyższego problemu w języku grafów. Niech każdy spójny kawałek lądu w Królewcu odpowiada wierzchołkowi. Otrzymamy w ten sposób dwa wierzchołki odpowiadające wyspom oraz dwa obu brzegom Pregoły. Most pomiędzy dwoma kawałkami lądu będziemy interpretować jako krawędź łączącą wierzchołki odpowiadające tym skrawkom lądu. W ten sposób otrzymamy następujący graf (nie będący grafem prostym):

Mapa mostów w Królewcu

Naszym celem jest skonstruowanie specjalnego cyklu w grafie z rysunku Mapa mostów w Królewcu.

Przykład grafu eulerowskiego (a) i nieeulerowskiego (b)

Cykl Eulera to zamknięta marszruta przechodząca przez każdą krawędź grafu dokładnie raz.

Graf eulerowski to graf posiadający cykl Eulera.

Graf na rysunku Grafy eulerowskie posiada cykl Eulera xuzyuzyx, zaś graf w części b. nie jest eulerowski, bo jeżeli wejdzie się do wierzchołka v, to już nie będzie można z niego wyjść; jeśli zaś rozpoczęlibyśmy naszą marszrutę z wierzchołka v to nie będzie można doń powrócić.

Grafy eulerowskie posiadają ładną charakterystykę umożliwiającą prostą i szybką weryfikację omawianej własności.

Twierdzenie 13.1

Graf 𝐆=(V,E) jest eulerowski wtedy i tylko wtedy, gdy jest spójny i stopień każdego wierzchołka jest parzysty.

Dowód

Załóżmy najpierw, że 𝐆 jest eulerowski i niech E jakimś jego cyklem Eulera. Poruszając się po 𝐆 wzdłuż cyklu E zliczajmy stopniowo używane krawędzie incydentne do poszczególnych wierzchołków. Zawsze po wejściu i wyjściu z danego wierzchołka v liczba policzonych krawędzi incydentnych z v zwiększy się o 2. Tak więc, jeśli v nie jest początkiem cyklu, to zawsze będzie miał parzystą liczbę aktualnie policzonych krawędzi incydentnych. Początek cyklu zaś, dopóki nie przeszliśmy ostatnią krawędzią grafu (która oczywiście prowadzi do niego) będzie miał nieparzystą liczbę policzonych krawędzi. Po użyciu jednak tej ostatniej krawędzi okaże się, że i on ma parzysty stopień. Żadna krawędź nie zostanie pominięta, ani policzona wielokrotnie, bo przeczyłoby to eulerowskości cyklu E lub spójności grafu 𝐆.

Dla dowodu implikacji odwrotnej, pokażmy najpierw, że jeżeli w skończonym grafie 𝐆 dowolny wierzchołek ma parzysty stopień, to 𝐆 posiada cykl. Istnienie takiego cyklu pokażemy wskazując jego kolejne krawędzie. Zaczynamy od dowolnie wybranej krawędzi v0v1. Następnie przechodzimy do jakiejkolwiek innej krawędzi wychodzącej z wierzchołka v1. Załóżmy, że była to krawędź v1v2. Wybieramy następnie dowolną różną od v1v2 krawędź wychodzącą z v2. Czynność tę powtarzamy tak długo, aż dojdziemy do jakiegoś wierzchołka vi, który został już wcześniej odwiedzony. W ten sposób otrzymamy cykl vivi+1vkvi. Jedynym problemem mógłby, w jakimś momencie, być brak możliwości kontynuowania marszu zanim dojdziemy do odwiedzonego wcześniej punktu vi. Sytuacja taka nie jest jednak możliwa, gdyż oznaczałoby to istnienie wierzchołka o incydentnego z jedną tylko krawędzią (wejściową), co stoi w sprzeczności z parzystością jego stopnia.

Teraz możemy przejść do dowodu Twierdzenia, który przeprowadzimy indukcyjnie ze względu na liczbę krawędzi w grafie 𝐆. Jak już zauważyliśmy powyżej, graf 𝐆 posiada jakiś cykl C. Usuńmy z grafu 𝐆 krawędzie i wierzchołki cyklu C otrzymując w ten sposób mniejszy graf 𝐆. Graf 𝐆 może już nie być spójny, ale nadal będzie posiadał jedynie wierzchołki parzystego stopnia. Jeżeli 𝐆 jest pusty, to cykl C jest cyklem Eulera, co kończyłoby dowód. W przeciwnym razie, w każdej spójnej składowej grafu 𝐆 nie będącej punktem izolowanym, korzystając z założenia indukcyjnego, znajdujemy cykle Eulera E1,El. Ponieważ graf 𝐆 był spójny, to cykl C musi przechodzić przez jakiś wierzchołek każdego cyklu E1,El. Tak więc cykl Eulera dla grafu 𝐆 możemy wyznaczyć w ten sposób, że przechodząc przez cykl C, za każdym razem gdy napotkamy nieodwiedzony jeszcze cykl Ei, zbaczamy z cyklu C i przechodzimy w całości Ei, a później kontynuujemy wędrówkę po cyklu C. W konsekwencji przejdziemy po wszystkich krawędziach, każdą odwiedzając jedynie raz.

Bogatsi o nowo zdobytą wiedzę możemy już negatywnie odpowiedzieć na pytanie postawione Leonhardowi Euler'owi.

Analizując dowód Twierdzenia 13.1 dostajemy następujący wniosek.

Wniosek 13.2

Graf spójny jest eulerowski wtedy i tylko wtedy, gdy rodzinę jego krawędzi da się podzielić na rozłączne krawędziowo cykle.

Z grafami eulerowskimi ściśle związane są grafy, które można narysować bez odrywania ołówka i rysując każdą krawędź dokładnie raz.

Graf jednokreślny to graf posiadający marszrutę przechodzącą dokładnie raz przez każdą krawędź.

Wniosek 13.3

Graf 𝐆=(V,E) jest jednokreślny wtedy i tylko wtedy, gdy jest spójny i jego wszystkie, poza co najwyżej dwoma wierzchołkami, mają parzysty stopień.

Dowód

Jeśli 𝐆 jest jednokreślny, i marszruta przechodząca przez każda krawędź jest cyklem, to 𝐆 jest eulerowski i wobec Twierdzenia 13.1 ma jedynie wierzchołki o parzystym stopniu. Jeśli zaś marszruta ta nie jest cyklem, to oczywiście wszystkie wierzchołki poza początkowym i końcowym mają parzysty stopień.

Na odwrót, jeśli w grafie 𝐆 wszystkie wierzchołki mają parzysty stopień, to 𝐆 jest eulerowski, a zatem jednokreślny. Jeśli zaś 𝐆 ma wierzchołki o nieparzystym stopniu, to - wobec naszego założenia, może ich mieć dokładnie dwa, bo może mieć jedynie parzyście wiele wierzchołków o nieparzystym stopniu. Łącząc teraz te dwa wierzchołki nową krawędzią, dostajemy graf 𝐆, w którym już wszystkie wierzchołki mają parzysty stopień. A zatem 𝐆 posiada cykl Eulera E. Cykl ten przechodzi oczywiście przez nowo dodana krawędź. Usuwając ją z cyklu E dostajemy marszrutę w grafie 𝐆, świadcząca o jego jednokreślności.

Grafy hamiltonowskie

Graf połączeń między klientami firmy kurierskiej

Inny, ciekawy problem można przedstawić na przykadzie firmy rozwożącej przesyłki. Dotyczy on pracy kuriera mającego rozwieść przesyłki do odbiorców, w ten sposób by odwiedzić każdego klienta jedynie raz, a na końcu wrócić do siedziby firmy. Załóżmy, że na przesyłki czeka następujący zbiór osób: Henryk, Elżbieta, Maciej, Jan, Ula, Izabela, Gabriela, oraz Maria. Niestety, jak widać z rysunku, nie ma połączeń umożliwiających przejazd między dowolnymi dwoma klientami.

Zachodzi pytanie, czy kurier mimo to jest w stanie wykonać swoje zadanie. Jeśli prześledzimy warunki nałożone na trasę swojej wędrówki okaże się, że szukamy tzw. cyklu Hamiltona.

Cykl Hamiltona to cykl przechodzący przez wszystkie wierzchołki grafu (czyli marszruta zamknięta odwiedzająca każdy wierzchołek dokładnie raz).

Graf hamiltonowski to graf posiadający cykl Hamiltona.

Ścieżka Hamiltona to ścieżka przechodząca przez wszystkie wierzchołki, każdy odwiedzając jedynie jeden raz.

W odróżnieniu od grafów eulerowskich, grafy hamiltonowskie nie posiadają prostej i szybkiej w użyciu charakteryzacji. Nie znana jest żadna metoda, pozwalająca szybko (tzn. w czasie wielomianowym) stwierdzić czy dany graf jest hamiltonowski. Są natomiast znane pewne warunki wystarczające na to, by graf był hamiltonowski. Jednym z ciekawszych takich warunków wystarczających jest warunek wykorzystujący jedynie stopnie wierzchołków. Przedstawiony jest w postaci następującego twierdzenia.

Twierdzenie 13.4 [Ore 1960]

Jeśli w grafie prostym 𝐆=(V,E) o co najmniej 3 wierzchołkach dowolne dwa niesąsiednie wierzchołki v i w spełniają degv+degw|V|, to graf 𝐆 jest hamiltonowski.

Cykl Hamiltona w grafie 𝐆

Dowód

Dla dowodu niewprost załóżmy, że pewien niehamiltonowski graf 𝐆 o n wierzchołkach spełnia

(*) degv+degwn, dla niesąsiednich wierzchołków v,w.

Dodawanie krawędzi do 𝐆 nie psuje warunku (*), więc do grafu 𝐆 można dokładać krawędzie tak długo, jak długo jest on niehamiltonowski. Możemy więc dodatkowo założyć, że 𝐆 ma tę własność, że po dodaniu jakiejkolwiek krawędzi otrzymamy już cykl Hamiltona. Tak więc w 𝐆 musi istnieć ścieżka Hamiltona v0v1vn1vn.

Wierzchołek v0 ma, poza wierzchołkiem v1, dodatkowo degv01 sąsiadów. Oznaczmy ich przez vi1,,videgv01. Z kolei, na mocy (*), wierzchołek vn w zbiorze {v2,,vn2} ma degvn1>(n3)(degv01) sąsiadów. To gwarantuje, że vn jest sąsiadem któregoś z degv01 wierzchołków vi11,,videgv111. Istnieje więc takie miejsce j w ścieżce v0v1vn1vn, że v1 jest incydentny z vj, zaś vn z vj1.

Tak więc cykl v1vjvj+1vnvj1vj2v1 jest cyklem Hamiltona w grafie 𝐆, co w konsekwencji daje sprzeczność z faktem, że 𝐆 miał nie być hamiltonowski.

Twierdzenie Ore'a jest uogólnieniem silniejszego warunku znalezionego parę lat wcześniej przez Dirac'a.

Wniosek 13.5 [G. A. Dirac 1952]

Graf prosty 𝐆=(V,E), w którym każdy wierzchołek ma stopień co najmniej |V|/2 jest hamiltonowski.

Wróćmy teraz do przykładu o kurierze. Licząc stopnie wierzchołków w grafie z rysunku i używając Twierdzenia Ore'a możemy stwierdzić, że graf ten ma cykl Hamiltona. Tak więc kurier, nie bojąc się utraty pracy, może spokojnie spełnić swoje zadanie.

Grafy dwudzielne i skojarzenia

Przypomnijmy, że:

Graf dwudzielny to graf 𝐆=(V,E), w którym zbiór wierzchołków 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.

Twierdzenie 13.6

Graf jest dwudzielny wtedy i tylko wtedy, gdy każdy jego cykl ma parzystą długość.

Dowód

Załóżmy najpierw, że graf 𝐆=(V,E) jest dwudzielny czyli, że V można podzielić na dwa rozłączne zbiory wierzchołków V1 oraz V2, w ten sposób, że podgrafy indukowane 𝐆|Vi są antyklikami. Rozważmy cykl v1v2vk1vkv1 o k elementach. Bez straty ogólności możemy załóżyć, że v1V1. Ponieważ pomiędzy wierzchołkami z V1 nie ma krawędzi, to v2V2. Z kolei v3V1, a v4V2 i tak dalej. Tak więc każdy vi o nieparzystym indeksie i należy do V1. W konsekwencji vk musi mieć parzysty indeks k, aby mógł być połączony z v1. W rezultacie otrzymujemy, że cykle muszą być parzystej długości.

Dowód odwrotnej implikacji przeprowadzimy najpierw przy założeniu, że graf 𝐆 jest spójny. Naszym celem jest takie podzielenie V na dwa zbiory wierzchołków V1,V2, by, dla i=1,2, żadne dwa wierzchołki z Vi nie były ze sobą połączone. Wybierzmy z V dowolny wierzchołek v. Niech V1 będzie zbiorem, do którego należy v oraz wszystkie wierzchołki, do których można dojść z v ścieżką parzystej długości, zaś V2 niech składa się z pozostałych wierzchołków. Załóżmy, że u1,u2V1. Wtedy oczywiście istnieją ścieżki vu1 oraz u2v o parzystej długości. Gdyby u1,u2 były połączone krawędzią, to dostalibyśmy cykl vu1u2v o nieparzystej długości. A zatem 𝐆|V1 jest antykliką. Aby zobaczyć, że również 𝐆|V2 jest antykliką, wystarczy zauważyć że V2 składa się z tych wierzchołków grafu 𝐆, do których z początkowo wybranego wierzchołka v można dojść jedynie ścieżkami nieparzystej długości. Teraz uzasadnienie, że także V2 indukuje antyklikę jest analogiczne jak dla V1.

Niech teraz graf 𝐆 ma l>1 spójnych składowych C1,,Cl. Wtedy każdą spójną składową Ci możemy podzielić na zbiory Ci1,Ci2 świadczące o dwudzielności grafu indukowanego 𝐆Ci. W konsekwencji daje to podział V na C11Cl1 oraz C12Cl2 świadczący o dwudzielności całego grafu 𝐆.

Z grafami dwudzielnymi związany jest problem biura matrymonialnego. Do biura matrymonialnego zgłaszają się mężczyźni i kobiety poszukujący swojej drugiej połowy. Niestety nie każdemu mężczyźnie odpowiada każda kobieta i na odwrót. A więc każdy zgłaszający podaje swój opis, jak i wymagania stawiane potencjalnemu partnerowi. Interpretując mężczyzn i kobiety jako wierzchołki grafu, w którym krawędzie łączą "mężczyznę" z "kobietą", jeśli nawzajem sobie odpowiadają, otrzymujemy dwudzielny graf 𝐆z(M,K) odpowiadający potencjalnym związkom. Biuro matrymonialne ku uciesze klientów (i maksymalizacji swojego zysku) chciałoby stworzyć jak najwięcej par. Optymalnie by było, gdyby nikt nie został samotny. Wtedy jednak musimy oczywiście założyć, że mężczyzn jest tyle samo co kobiet.

Skojarzenie w grafie dwudzielnym 𝐆=(V1V2,E) to podzbiór krawędzi ME(𝐆), w którym żadne dwie v1v2,u1u2M nie wychodzą z tego samego wierzchołka.
Powiemy ponadto, że vVi jest skojarzony, jeśli istnieje wV3i taki, że krawędź vw należy do skojarzenia.

Pełne skojarzenie V1 z V2 w grafie dwudzielnym 𝐆=(V1V2,E) to skojarzenie, w którym każdy wierzchołek z V1 jest skojarzony.

Naturalnym jest pytanie, kiedy istnieje pełne skojarzenie V1 z V2 w grafie dwudzielnym 𝐆=(V1V2,E). Odpowiedział na nie P. Hall. Użył do tego funkcji Φ(A) zwracającej dla AV1 zbiór tych wierzchołków V2, które są sąsiednie z przynajmniej jednym wierzchołkiem w A.

Twierdzenie 13.7 [O Skojarzeniach w Grafie Dwudzielnym, P. Hall 1935]

Niech 𝐆=(V1V2,E) będzie grafem dwudzielnym. Wówczas pełne skojarzenie V1 z V2 istnieje wtedy i tylko wtedy, gdy |A||Φ(A)| dla każdego podzbioru A zbioru V1.

Dowód

Dla dowodu nierówności |A||Φ(A)| załóżmy, że M jest pełnym skojarzeniem. Elementy skojarzone z elementami zbioru A muszą być oczywiście w Φ(A). Z drugiej strony skojarzenie M determinuje injekcję AΦ(A), skąd natychmiast |A||Φ(A)|.

Dowód implikacji odwrotnej jest nieco trudniejszy. Przeprowadzimy go indukcyjnie ze względu na liczbę wierzchołków n1=|V1|. Dla n1=1 nierówność |V1||Φ(V1)| gwarantuje, że jest co kojarzyć z jedynym wierzchołkiem w V1. Załóżmy więc, że n1>1 i rozważmy dwa przypadki:

1. Dowolny właściwy podzbiór W zbioru wierzchołków V1 posiada więcej sąsiadów niż jego moc, tzn. |Φ(W)|>|W|. Wtedy wybieramy dowolne wierzchołki v1V1 oraz v2V2 i je kojarzymy. Dla WV1{v1} zbiór sąsiadów w zbiorze V2 pomniejszonym o wybrany już v2 jest nadal nie liczniejszy niż liczność |W|. Założenie indukcyjne gwarantuje nam więc jakieś skojarzenie pełne M zbioru V1{v1} z V2{v2} w grafie pozostałych wierzchołków 𝐆|(V1{v1})(V2{v2}). Oczywiście Mv1v2 jest poszukiwanym skojarzeniem pełnym w 𝐆.
2. Istnieje właściwy podzbiór W zbioru V1, taki że |Φ(W)|=|W|.

Ponieważ dla AW mamy Φ(A)Φ(W), to


|A||Φ(A)|=|Φ(A)Φ(W)|


Ta nierówność pozwala użyć założenia indukcyjnego do skojarzenia wszystkich elementów ze zbioru W z elementami należącymi do Φ(W).

Wystarczy więc znaleźć skojarzenie pozostałych elementów, czyli skojarzenie zbioru V1W ze zbiorem V2Φ(W). Skojarzenie takie dostaniemy również indukcyjnie, o ile pokażemy, że dla dowolnego AV1W, zbiór jego sąsiadów w V2Φ(W) jest liczniejszy od A, tzn.


|A||Φ(A)Φ(W)|


Załóżmy, że jakiś zbiór AV1W nie spełnia powyższej nierówności. Wtedy


|AW|=|A||W|>|Φ(A)Φ(W)|+|Φ(W)||Φ(AW)|,


co przeczy założeniu twierdzenia, przy którym pracujemy.

Wielospójność

Zarówno drzewo, jak i klika są grafami spójnymi. W drzewie jednak, usunięcie jakiegokolwiek wierzchołka nie będącego liściem rozspaja go. Z drugiej strony, klika pozostaje spójna po usunięciu dowolnej liczby wierzchołków. Aby rozróżnić te różne rodzaje spójności rozważa się następujące uogólnienia spójności.

Graf k-spójny to graf, który po usunięciu dowolnie wybranych k1 wierzchołków (i incydentnych z nimi krawędzi) pozostaje spójny.

Graf k-spójny krawędziowo to graf, który po usunięcie dowolnie wybranych k1 krawędzi (bez usuwania wierzchołków) pozostaje spójny.

Przykład

  • Grafy 1-spójne lub 1-spójne krawędziowo to po prostu grafy spójne.
  • Drzewa są spójne, ale nie 2-spójne i nie 2-spójne krawędziowo.
  • Klika 𝒦n jest n-spójna i n1-spójna krawędziowo.

Z pojęciami wielospójności związane są następujące pojęcia:

Zbiór rozdzielający wierzchołki u,v to zbiór wierzchołków SV{u,v} taki, że każda droga z u do v przechodzi przez któryś element ze zbioru S.

Ponadto powiemy, że S jest zbiorem rozdzielającym, jeśli S jest zbiorem rozdzielającym jakichś dwu wierzchołków u,v.

Zbiór rozspajający wierzchołki u,v to zbiór krawędzi FE taki, że każda droga z u do v zawiera jakąś krawędź z F.

Rozcięcie wierzchołków u,v to zbiór rozspajający wierzchołki u,v, którego żaden podzbiór właściwy nie rozspaja u z v.
Zbiór krawędzi F będziemy nazywać rozcięciem, jeśli F jest rozcięciem jakichś dwu wierzchołków u,v

Most to taka krawędź e, że zbiór {e} tworzy rozcięcie.

Uwaga

Jeżeli graf jest k-spójny, to każdy jego zbiór rozdzielający musi mieć co najmniej k wierzchołków. Analogicznie jeśli 𝐆 jest k-spójny krawędziowo, to każde jego rozcięcie musi mieć co najmniej k krawędzi.

Grafy menger

W grafie z rysunku Grafy menger odpowiednim rozspajającym zbiorem X z przypadku 1, może być zbiór {xs,xy,uy,zt} zaznaczonych liniami przerywanymi


Kontynuacja przykładu z rysunku Grafy menger i rysunku z liniami przerywanymi. Pokazane są grafy 𝐔 (a) oraz 𝐖 (b)

Przykład

Przykładowymi zbiorami rozdzielającymi wierzchołki u,w w grafie z rysunku Grafy menger są zbiory {x,y,z} i {s,t}. Zbiory {xs,xy,ys,ys,zt} jest rozspajający, a zbiór {xs,xy,uy,uz} jest rozcięciem. Graf ten jest 2-spójny oraz 2-spójny krawędziowo.

Okazuje się, że dla dwu różnych wierzchołków istnieje powiązanie - między wielkością rozcięcia, a liczbą dróg pomiędzy nimi - silniejsze niż to wynikające z definicji.

Twierdzenie 13.8 [Menger 1927]

Największa możliwa liczba krawędziowo rozłącznych dróg łączących dwa różne niesąsiednie wierzchołki grafu spójnego, jest równa najmniejszej liczbie krawędzi w zbiorze rozspajającym te wierzchołki.

Dowód

Niech w,u będą dwoma różnymi i niesąsiednimi wierzchołkami grafu spójnego 𝐆=(V,E). Przez k oznaczmy najmniejszą możliwą liczność zbioru krawędzi rozspajającego w,u. Oczywiście każda droga łącząca w z u musi przejść przez każdy zbiór rozspajający. A zatem dróg krawędziowo rozłącznych łączących w z u nie może być więcej niż k. Tak więc wystarczy pokazać, że istnieje k rozłącznych krawędziowo dróg z w do u.

Dowód przeprowadzimy indukcyjnie ze względu na liczbę krawędzi w grafie 𝐆 rozważając dwa przypadki.

1. Pewien zbiór rozspajający X mocy k ma krawędź nie incydentną z w oraz ma krawędź (być może inną) nie incydentną z u.

Graf G, po usunięciu wszystkich krawędzi z X, podzieli się na dwie spójne składowe W oraz U, do których odpowiednio należą w i u.

Przez 𝐖 oznaczmy graf powstały z grafu 𝐆 poprzez ściągnięcie U w jeden wierzchołek u. Wtedy u jest połączony z tymi wierzchołkami tW, z którymi połączony był jakiś wierzchołek sU. Warto zauważyć, że wtedy musiało być stX. Krawędzie łączące wierzchołki wewnątrz W pozostały niezmienione. Graf 𝐔 definiujemy analogicznie, poprzez ściągnięcie zbioru W do wierzchołka w.

W grafie 𝐖 zbiór krawędzi incydentnych z u, których jest k, tworzy minimalny zbiór rozspajający wierzchołki w,u. Ponieważ założyliśmy, że w X istnieje krawędź nieincydentna z u, to U ma co najmniej dwa wierzchołki, a zatem graf 𝐖 ma mniej krawędzi niż 𝐆. Tak więc możemy skorzystać z założenia indukcyjnego otrzymując k rozłącznych krawędziowo dróg łączących w z u. Analogicznie w grafie 𝐔 otrzymujemy k rozłącznych krawędziowo dróg łączących w z u. Sklejając obie te rodziny dróg otrzymujemy k rozłącznych ścieżek łączących w z u w grafie 𝐆.

2. W każdym zbiorze rozspajającym X o mocy k każda krawędź jest incydentna do w lub do u.

Możemy wtedy założyć, że 𝐆 zawiera jedynie krawędzie należące do któregoś zbioru rozspajającego w,u o liczności k. Gdyby tak nie było i istniałaby jakaś inna krawędź e, to moglibyśmy e usunąć i, na mocy założenia indukcyjnego, otrzymać natychmiast k rozłącznych dróg łączących w,u. Tak więc pozostały nam jedynie te krawędzie, które są w minimalnych zbiorach rozspajających w,u. To zaś, zgodnie z założeniem przypadku 2 oznacza, że każda krawędź jest incydentna z w lub z u. W ten sposób drugi przypadek sprowadziliśmy do sytuacji, w której każda ścieżka z w do u ma co najwyżej dwie krawędzie. Wśród takich ścieżek nietrudno jest już wskazać k rozłącznych krawędziowo.

Jako ćwiczenie 9 pozostawiamy dowód twierdzenia analogicznego do Twierdzenia 13.8, a wiążącego tym razem zbiory rozdzielające z drogami rozłącznymi wierzchołkowo.

Twierdzenie 13.9

Największa możliwa liczba wierzchołkowo rozłącznych dróg łączących dwa różne niesąsiednie wierzchołki grafu spójnego, jest równa najmniejszej liczbie wierzchołków w zbiorze rozdzielającym te wierzchołki.

Z Twierdzenia 13.9, można w łatwy sposób wywnioskować Twierdzenia 13.7, o skojarzeniach w grafach dwudzielnych. Wyprowadzenie to pozostawiamy jako ćwiczenie 10.

W grafie k-spójnym usunięcie jakichś k1 punktów nie rozspaja go. A zatem zbiór rozdzielający jakieś dwa wierzchołki w,u ma co najmniej k wierzchołków. Tym samym między u a w musi istnieć co najmniej k dróg. Pisząc zwięźlej możemy powiedzieć, że:

Wniosek 13.10

Graf z co najmniej k+1 wierzchołkami jest k-spójny wtedy i tylko wtedy, gdy dowolne dwa wierzchołki są połączone przynajmniej k drogami wierzchołkowo rozłącznymi.

Analogiczne rozumowanie przeprowadzone dla ścieżek rozłącznych krawędziowo prowadzi do następującego wniosku.

Wniosek 13.11

Graf z co najmniej k1 krawędziami jest k-spójny krawędziowo wtedy i tylko wtedy, gdy dowolne dwa wierzchołki są połączone przynajmniej k drogami krawędziowo rozłącznymi.

Przepływy i przekroje

Wyobraźmy sobie sieć wodociągową, składającą się z rur o zadanej przepustowości, przystosowanych do przesyłania wody w określonym z góry kierunku oraz ze zbiorników połączonych tymi rurami. W przedstawionej sieci dwa zbiorniki są wyróżnione. Jeden z nich to źródło, w którym jest umieszczona pompa wpompowująca wodę, oraz ujście, czyli klient firmy wodociągowej lubiący nad wyraz zużywać wodę. Zadaniem firmy wodociągowej jest dostarczanie jak największej ilości wody klientowi. Ilość przesyłanej wody konkretną rurą nie może oczywiście przekraczać jej przepustowości. Pytanie, na które chciałby sobie odpowiedzieć właściciel firmy doprowadzającej wodę, to ile maksymalnie wody jest w stanie przesyłać w każdej chwili do klienta. Formalnym modelem dla tego typu zagadnień są sieci.

Przykładowa sieć

Przepływ w sieci z rysunku Przykładowa sieć

Sieć to trójka 𝐍=(V,A,c), w której:

  • (V,A) jest pełnym digrafem (czyli A=V×V),
  • funkcja c:E[0,+), zwana przepustowością sieci, każdej krawędzi vw przypisuje nieujemną liczbę rzeczywistą c(vw).
  • Ponadto wyróżnia się dwa wierzchołki s,tV, które są odpowiednio źródłem oraz ujściem sieci.

Przepustowość c(vw) krawędzi vw może być interpretowana jako wartość potencjalnie maksymalnego przepływu z wierzchołka v do w. Jeśli przepustowość jakiejś krawędzi e wynosi 0, to krawędź e jest pomijana w graficznym przedstawieniu sieci.

Przepływ w sieci 𝐍=(V,A,c) to funkcja f:E[0,+) spełniająca warunki:

  • 0f(vw)c(vw) dla każdej krawędzi vw. Wartość przepływu daną krawędzią nie może przekroczyć przepustowości tej krawędzi.
  • xVf(xv)=xVf(vx) dla każdego wierzchołka v poza źródłem s i ujściem t. Równość ta oznacza, że sumaryczna wartość tego, co wpływa do wierzchołka jest równa sumarycznej wartości tego, co zeń wypływa.
  • xV(f(sx)f(xs))=xV(f(xt)f(tx)), tzn. sumaryczna wartość tego, co wypływa ze źródła musi być równa sumarycznej wartości tego, co wpływa do ujścia. Wartość ta będzie określana wartością przepływu f.

Do analizy przepływów przydatne okazuje się pojęcie przekroju sieci. Można go sobie wyobrażać jako zbiór krawędzi XA, usunięcie których z sieci 𝐍=(V,A,c) rozspaja sieć na dwie części S oraz T, przy czym S zawiera źródło, a T ujście. Warto zauważyć, że X tworzy zbiór rozspajający w grafie szkieletowym digrafu (V,A). Formalnie przekrój zdefiniujemy jako parę powstałych zbiorów wierzchołków. Taka definicja okaże się bardziej użyteczna w praktyce.

Przekrój sieci to para podzbiorów (S,T) zbioru wierzchołków V, taka że:

  • S,T tworzą podział V, tzn. są rozłączne i w sumie dają cały zbiór V,
  • źródło s należy do S, a ujście t należy do zbioru T.

Przepustowość przekroju (S,T) to suma


c(S,T)=vS, wTc(vw)


Zależność między przepływem a przekrojem została podana w następującym Twierdzeniu o maksymalnym przepływie i minimalnym przekroju.

Twierdzenie 13.12 [Ford i Fulkerson 1956]

W dowolnej sieci wartość maksymalnego przepływu jest równa przepustowości minimalnego przekroju.

Dowód

Niech 𝐍=(V,A,c) będzie siecią o źródle s i ujściu t. Oczywiście wartość maksymalnego przepływu nie może przekraczać przepustowości minimalnego przekroju. Wystarczy więc wskazać przekrój, którego przepustowość równa się wartości maksymalnego przepływu f w sieci 𝐍.

Niech SV będzie zbiorem zawierającym źródło s oraz te wierzchołki w, które w grafie szkieletowym digrafu (V,A) połączone są ze źródłem pewną ścieżką s=v1vk=w, w której łuk vivi+1 ma niepełny przepływ (tzn. f(vivi+1)<c(vivi+1)) lub też łuk vi+1vi ma niezerowy przepływ f(vi+1vi)>0. W języku firmy wodociągowej S jest zbiorem wierzchołków, do których można jeszcze przepchnąć choć trochę wody.

Załóżmy przez chwilę, że tS. Istnieje wtedy ścieżka s=v0vk=t, w której dla każdej pary kolejnych wierzchołków vi,vi+1 można byłoby zwiększyć przepływ na łuku vivi+1 lub zmniejszyć na łuku vi+1vi. Niech ε>0 będzie jakąś wartością zmian przepływu możliwych do wykonania na każdej parze vi,vi+1 kolejnych wierzchołków ścieżki. Wtedy, modyfikując odpowiednio łuki pomiędzy wierzchołkami vi,vi+1 uzyskalibyśmy przepływ o wartości f+ϵ, co przeczy maksymalności przepływu f.

Udowodniliśmy właśnie, że S,T tworzy przekrój sieci 𝐍, gdzie T=VS. Pokażmy, że przepustowość tego przekroju równa się wartości przepływu f. Z definicji S wynika, że jeżeli rozważymy dwa elementy vS oraz wT, to przepływ f(vw)=c(vw) oraz f(wv)=0.Tak więc przepustowość przekroju równa jest


vS, wTc(vw)=vS, wT(f(vw)f(wv)).(1)


Z faktu, że dla uS{s} wartość tego co wpływa jest równa temu co wypływa, czyli innymi słowy


xV(f(ux)f(xu))=0,


otrzymujemy następującą równość:


xT(f(ux)f(xu))=xS{u}(f(xu)f(ux))


Prawą stronę równości (1) można więc przekształcić w następujący sposób:


vSwT(f(vw)f(wv))=vS{u}wT(f(vw)f(wv))+xT(f(ux)f(xu))=vS{u}wT(f(vw)f(wv))+xS{u}(f(xu)f(ux))=vS{u}wT{u}(f(vw)f(wv))


Powtarzając wielokrotnie przekładanie kolejnych punktów u z S do T otrzymamy w konsekwencji


vSwT(f(vw)f(wv))=wV{v}(f(sw)f(ws)),


co na mocy (1) oznacza, że wartość przepływu z wierzchołka s do wierzchołka t jest równa przepustowości przekroju wyznaczonego przez zbiory S,T.