diff --git a/.gitignore b/.gitignore index da8370b..cd2340d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ *~ \#*\# dockercmd.sh +*.fdb_latexmk +*.fls +*.xdv diff --git a/README.md b/README.md index 7fcc361..254690c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # [Bevezetés a Számításelméletbe 2. jegyzet](https://bme-notes.github.io/#bsz2) -[![Build Status](https://travis-ci.org/bme-notes/bsz2.svg?branch=master)](https://travis-ci.org/bme-notes/bsz2) +[Forrás tároló](https://github.com/bme-notes/bsz2) CI build állapot: [![Build Status](https://travis-ci.org/bme-notes/bsz2.svg?branch=master)](https://travis-ci.org/bme-notes/bsz2) + +## Aktualizálva a 2018-as tételsorra + +[[Eredeti tételsor](http://cs.bme.hu/bsz2/bsz2_tetelsor_2018tavasz.pdf)] [[Tárgyhonlap](http://cs.bme.hu/bsz2/)] [[Forrás tároló](https://github.com/bme-notes/bsz2)] diff --git a/bsz2.tex b/bsz2.tex index 3959308..026c5a7 100644 --- a/bsz2.tex +++ b/bsz2.tex @@ -11,9 +11,9 @@ %%%% Ezeket változtasd meg! \cim{Bevezetés a Számításelméletbe 2.} -\datum{2017. január 13.} +\datum{2018. május 2.} \szerzo{Hegyi Zsolt} -\segitettek{Bálint Ádám, Bereczki Márk, Bognár Márton, Bokros Bálint, Braun Márton, a CrySyS labor munkatársai, Hanusch Róbert, az IRC-s baráti társaságom, Kormány Zsolt, a KSZK reszort tagjai, Müller András, Nagy ``Sid'' Jenő, Rostás Balázs.} +\segitettek{Bálint Ádám, Bereczki Márk, Bognár Márton, Bokros Bálint, Braun Márton, a CrySyS labor munkatársai, Hanusch Róbert, az IRC-s baráti társaságom, Kormány Zsolt, a KSZK reszort tagjai, Müller András, Nagy ``Sid'' Jenő, Rostás Balázs, Szabó Csongor, Kuklin István.} %%%% %%%%%%% @@ -40,7 +40,7 @@ \tableofcontents{} \section{Előszó} -A tételsor Fleiner Tamás jegyzetei, a ``Számítástudomány alapjai'' című könyv (Katona Gyula Y., Recski András), valamint Szeszlér Dávid fantasztikus előadásai alapján készült. +A tételsor Fleiner Tamás jegyzetei, a ``Számítástudomány alapjai'' című könyv (Katona Gyula Y., Recski András), valamint Szeszlér Dávid fantasztikus előadásai alapján készült. A későbbiek során a jegyzetbe belekerültek egyéb kiegészítések is. %%%% %%%%%%% @@ -61,9 +61,6 @@ \section{Előszó} \ujfejezet{12_tetel} \ujfejezet{13_tetel} \ujfejezet{14_tetel} -\ujfejezet{15_tetel} -\ujfejezet{16_tetel} -\ujfejezet{17_tetel} - +\ujfejezet{spare} \end{document} diff --git a/fejezetek/01_tetel.tex b/fejezetek/01_tetel.tex index d5e669c..c0b5d37 100644 --- a/fejezetek/01_tetel.tex +++ b/fejezetek/01_tetel.tex @@ -1,4 +1,4 @@ -\section{1. tétel} +\section{1. tétel: Kombinatorika} \begin{definicio}{FAKTORIÁLIS} Az $n(n-1)(n-2)...\cdot2\cdot1$ szorzatot n \textbf{faktoriálisának} nevezzük. Definíció szerint $0! = 1$.\\ @@ -6,11 +6,11 @@ \section{1. tétel} \end{definicio} \begin{definicio}{PERMUTÁCIÓ} -Az n elem összes lehetséges sorrendjének a száma $n!$ és ezt hívjük \textbf{permutációnak}. +Az n elem összes lehetséges sorrendjének a száma $n!$ és ezt hívjuk \textbf{permutációnak}. \end{definicio} \begin{definicio}{ISMÉTLÉSES PERMUTÁCIÓ} -$k_1$ darab első típusú elem, ..., $k_n$ darab n-edik típusú elem lehetséges sorbarendezésének a száma a $k_1 + k_2 + ... + k_n$ \textbf{ismétléses permutációi}. Számuk: +$k_1$ darab első típusú elem, ..., $k_n$ darab n-edik típusú elem lehetséges sorba rendezésének a száma a $k_1 + k_2 + ... + k_n$ \textbf{ismétléses permutációi}. Számuk: $$\frac{(k_1+k_2+...+k_n)!}{k_1!\cdot k_2!\cdot...\cdot k_n!}$$ \end{definicio} @@ -42,18 +42,8 @@ \section{1. tétel} \end{definicio} \begin{tetel}{BINOMIÁLIS TÉTEL} -Tetszőleges valós x, y-ra és nemnegatív egész n-re:$$ -(x+y)^n = \begin{pmatrix} -n\\0 -\end{pmatrix} x^n + \begin{pmatrix} -n\\1 -\end{pmatrix} x^{n-1}y + \begin{pmatrix} -n\\2 -\end{pmatrix} x^{n-2}y^2 + ... + \begin{pmatrix} -n\\k -\end{pmatrix} x^{n-k}y^k + ... + \begin{pmatrix} -n\\n -\end{pmatrix} y^n$$ + Tetszőleges valós x, y-ra és nemnegatív egész n-re: + \[ (x+y)^n = \sum_{k=0}^{n} \binom{n}{k} x^{n-k}y^{k} {\color{gray} = \binom{n}{0}x^n + \binom{n}{1}x^{n-1}y^1 + \binom{n}{2}x^{n-2}y^2 + \dots + \binom{n}{n}y^n } \] \end{tetel} \begin{definicio}{PASCAL HÁROMSZÖG} @@ -72,7 +62,7 @@ \section{1. tétel} \end{pmatrix}$, $\begin{pmatrix} k\\k \end{pmatrix}$ együtthatók. A legutóbbi állítás alapján a Pascal-háromszög minden sorának a sorösszege: -$2^{i-1}$. Ez abból is belátható, hogy minden sor összege kétszerese az előzőnek, ugyanis az együtthatókat úgy is meg lehet kapni, hogy az új elem a felette álló két együttható összegéből áll össze. +$2^{k-1}$. Ez abból is belátható, hogy minden sor összege kétszerese az előzőnek, ugyanis az együtthatókat úgy is meg lehet kapni, hogy az új elem a felette álló két együttható összegéből áll össze. \end{definicio} \begin{tetel}{BINOMIÁLIS ÖSSZEG} diff --git a/fejezetek/02_tetel.tex b/fejezetek/02_tetel.tex index 2b8db44..12c664c 100644 --- a/fejezetek/02_tetel.tex +++ b/fejezetek/02_tetel.tex @@ -1,4 +1,4 @@ -\section{2. tétel} +\section{2. tétel: Gráfelméleti alapfogalmak} % a kommentezett reszek allitolag nem a tetel reszei, ha valaki jobban tudja, nyugodtan allitsa oket vissza vagy torolje @@ -43,7 +43,7 @@ \section{2. tétel} \end{definicio} \begin{definicio}{ÉLSOROZAT, ÚT, KÖR} -Egy $(v_0, e_1, v_1 ... v_{k-1}, e_k, v_k)$ sorozatot \textbf{élsorozatnak} nevezzük, ha $e_i$ a $v_{i-1}$-et és $v_i$-t összekötő él. Ha $v_0 = v_k$, akkor az élsorozat zárt. Ha a csúcsok mind különbözőek, akkor egy \textbf{útról} beszélünk. Ha a csúcsok mind különbözőek és az élsorozat zárt, akkor pedig egy \textbf{körről}. + Egy $(v_0, e_1, v_1 ... v_{k-1}, e_k, v_k)$ sorozatot \textbf{élsorozatnak} vagy \textbf{sétának} nevezünk, ha $e_i$ a $v_{i-1}$-et és $v_i$-t összekötő él. Ha $v_0 = v_k$, akkor az élsorozat zárt. Ha a csúcsok mind különbözőek, akkor egy \textbf{útról} beszélünk. Ha a csúcsok mind különbözőek és az élsorozat zárt, akkor pedig egy \textbf{körről}. \end{definicio} %\begin{tetel}{EKVIVALENCIA RELÁCIÓ} @@ -79,7 +79,7 @@ \section{2. tétel} \end{tetel} \begin{bizonyitas}{} -Teljes indukcióval. n = 2-re az állítás triviálisan teljesül. T.f.h. az állítás igaz minden $n < n_0$-ra. Az előző tétel szerint minden $n_0$ fában van egy fokszámú pont, ezt hagyjuk el. Ha elhagyjuk ezt a pontot és a hozzá tartozó élet, akkor mivel a maradék $n_0 - 1$ fára már igaz az állítás, látható, hogy az $n_0$ pontú eredeti fának $n_0 - 1$ éle van. + Teljes indukcióval. $n=2$ csúcsú fára triviálisan teljesül az állítás ($2-1=1$ éle van). Tegyük fel, hogy minden $n$ csúcsú fára is, azaz minden $n$ csúcsú fának $n-1$ éle van. Tekintsünk minden $n+1$ csúcsú fát, amiknek az előző tétel miatt legkevesebb kettő levele van. Ha elhagyjuk az egyik levelet és a hozzátartozó élet, akkor megkapunk egyet az előbb tárgyalt $n$ csúcsú fák közül, amikre feltettük, hogy $n-1$ élük van. Ez esetben, ha az imént leválasztott levelet ``visszatesszük'', eggyel nő az élek és a csúcsok száma is, azaz lesz egy $n+1$ csúcsú fánk, aminek $n$ éle van. Tehát, ha $n$ csúcsú fára teljesül az állítás, akkor $n+1$ csúcsúra is. Ezzel és a kezdeti triviális megállapítással teljes indukcióval beláttuk az állítást. \end{bizonyitas} \begin{definicio}{FESZÍTŐFA} diff --git a/fejezetek/03_tetel.tex b/fejezetek/03_tetel.tex index 6709756..3887b0d 100644 --- a/fejezetek/03_tetel.tex +++ b/fejezetek/03_tetel.tex @@ -1,67 +1,82 @@ -\section{3. tétel} - -\url{http://cs.bme.hu/bsz2/bfs.pdf} - -\begin{tetel}{A BFS-algoritmus futása során a következőket tartjuk nyilván} -\begin{itemize} -\item $b(i) (i = 1,2,3,...)$: az i-edikként bejárt csúcs -\item $t(v) (v \in V)$: v távolsága s-től -\item $m(v) (v \in V, v \neq s)$: v-t megelőző csúcs az algoritmus által megtalált, s-ből v-be vezető legrövidebb úton -\item j: az eddig bejárt csúcsok száma -\item k: a jelenleg aktív csúcs sorszáma a $b(1), b(2),...$ sorozatban. -\end{itemize} +\section{3. tétel: Síkbarajzolhatóság} + +\begin{definicio}{SÍKBARAJZOLHATÓSÁG} +G \textbf{síkbarajzolható} gráf, ha lerajzolható úgy (a síkba), hogy az élei a csúcsokon kívül sehol máshol ne keresztezzék egymást. +\end{definicio} + +\begin{definicio}{TARTOMÁNYOK} +G síkbarajzolt gráf \textbf{tartományain} azon síkrészeket értjük, melyeket közrefognak az élek. Csak síkbarajzolt gráfok esetén beszélhetünk ezekről! +\end{definicio} + +\begin{tetel}{GÖMBRE RAJZOLHATÓSÁG} +G gráf pontosan akkor síkbrajzolható, ha gömbre rajzolható. \end{tetel} -\begin{tetel}{BFS Algoritmus} -Bemenete a BFS algoritmusnak: Egy G gráf és egy $s \in V$ csúcs. -\\ -\textbf{Az algoritmus:} -\begin{itemize} -\item{\textbf{0.}} $j = 1$, $k = 1$, $b(1) = s$, $t(s) = 0$, minden $v \neq s$-re $t(v) = *$ -\item{\textbf{1.}} HA a b(k) csúcsnak van olyan v szomszédja, amelyre $t(v) = *$, AKKOR: - \begin{itemize} - \item $j = j + 1$ - \item $b(j) = v$ - \item $t(v) = t(b(k)) + 1$ - \item $m(v) = b(k)$ - \item Vissza az \textbf{1.} lépéshez. - \end{itemize} -\item{\textbf{2.}} - \begin{itemize} - \item Ha $k = j$, akkor \textbf{STOP}. - \item $k = k + 1$ - \item Vissza az \textbf{1.} lépéshez. - \end{itemize} -\end{itemize} -Az algoritmus lineáris futásidejű, tehát $c \cdot e$ lépésszámú. +\begin{bizonyitas}{} +Egy síkban lévő gráf leképezhető gömbfelületre oly módon, hogy ezt a gömbfelületet valamelyik pontjával a síkra helyezzük, ezt a pontot tekintjük a déli pólusként, és az északi pólusból egyeneseket húzunk a gráf pontjaiba. Ezeknek a vonalaknak van metszéspontja a gömbön, ezek szolgáltatják a kívánt vetítést. Ez az ú.n. sztereografikus projekció. Ezt visszafele is meg lehet ismételni. +\end{bizonyitas} + +\begin{tetel}{EULER-FORMULA} +Ha egy összefüggő síkbeli gráfnak n csúcsa, e éle és t tartománya van (beleértve a külső tartományt is), akkor eleget tesz az Euler-formulának: +$$n + t = e + 2$$ \end{tetel} -\begin{definicio}{BFS-FA} -A BFS algoritmus futtatása után kapott F feszítőfát nevezzük \textbf{BFS fának}. F összefüggő, ha az eredeti bemeneti gráf is összefüggő volt, valamint F nem tartalmaz kört (a fa definíciója miatt). Az is megfigyelhető, hogy bármely $v \in V$ csúcsra az s-et v-vel összekötő F-beli út a legrövidebbek egyike az s-ből a v-be vezető G-beli utak közül. -\end{definicio} +\begin{bizonyitas}{} +Tekintsük a gráf egy C körét (ha van) és ennek egy $a$ élét. A C kör a síkot két részre osztja. Ezeket egyéb élek további tartományokra oszthatják, de mindkét részben van egy olyan tartomány, melynek $a$ a határa. Ha a-t elhagyjuk, a két tartomány egyesül, azaz a tartományok száma eggyel csökken. A csúcsok száma nem változik, tehát $a$ elhagyásával az $n - e + t$ érték nem változik. Ezt az eljárást addig folytassuk, amíg a gráfban nem marad kör. Ekkor viszont már csak egy feszítőfa maradt. Elég az állítást erre belátni, ami triviális, hiszen $t = 1$ és $e = n - 1$. +\end{bizonyitas} -\begin{tetel}{Kruskal Algoritmus} -Bemenet: G gráf és az élekhez tartozó w súlyfüggvény. Az éleket rendezzük sorba úgy, hogy a legalacsonyabb költségűek legyenek először a sorban. A sorban kezdjünk előre haladni. Ha az él bevétele esetén a kapott gráf körmentes marad, akkor vegyük be. Ezt addig ismételjük, amíg van izolált pont, vagy amíg az élsorozat végére nem érünk. A kapott gráf a G gráf minimális költségű feszítőfája. -\\ -\\ -Ezt az eljárást \textbf{mohó algoritmusnak} nevezzük, mivel a végrehajtás során minden lépésben az éppen akkor a legjobbnak tűnő lehetőséget választjuk ki. +\begin{tetel}{BECSLÉS AZ ÉLEK SZÁMÁRA} +Ha G egyszerű, síkbarajzolható gráf és pontjainak a száma legalább 3, akkor az előbbi jelölésekkel: +$$e \leq 3n - 6$$ \end{tetel} -\begin{definicio}{MINIMÁLIS SÚLYÚ FESZÍTŐFA} -Legyen G gráf és annak éleihez rendelt $w: E \rightarrow \mathbb{R}$ súlyfüggvény. A gráfnak azon feszítőfáját, melyre ez a súlyfüggvény minimális, a gráf \textbf{minimális súlyú feszítőfájának} nevezzük. -\end{definicio} +\begin{bizonyitas}{} +Vegyük G tetszőleges síkbarajzolását és jelöljük az egyes tartományokat határoló élek számát $c_1, c_2...c_t$-vel. Mivel a gráf egyszerű, ezért minden tartományát legalább 3 él határolja, tehát $c_i \geq 3$. Nyilvánvaló, hogy egy élhez legfeljebb 2 tartomány tartozik, tehát ha összegezzük a tartományokat határoló élek számát minden tartományra, akkor legfeljebb $2e$-t kaphatunk. Tehát: +$$3t \leq c_1 + c_2 + ... + c_t = \sum_{i=1}^{t} c_i \leq 2e$$ +Az Euler-formulát felhasználva: +$$3(e - n + 2) \leq 2e$$ +Ebből átrendezéssel megkapjuk az eredményt. +\end{bizonyitas} + +\begin{tetel}{BECSLÉS AZ ÉLEK SZÁMÁRA} +Ha G egyszerű, síkbarajzolható gráf és minden köre legalább 4 hosszú, valamint legalább 4 pontja van, akkor: +$$e \leq 2n - 4$$ +\end{tetel} + +\begin{bizonyitas}{} +Minden tartományt legalább 4 él határol. Az előző biz. gondolatmenete alapján $4t \leq 2e$ és ez alapján megkapjuk a képletet. +\end{bizonyitas} -\begin{tetel}{} -A Kruskal-algoritmus minimális súlyú feszítőfát talál. +\begin{tetel}{BECSLÉS MINIMÁLIS FOKSZÁMRA} +Ha G egyszerű, síkbarajzolható gráf, akkor $$\delta = min\, d(v) \leq 5$$ azaz a minimális fokszám legfeljebb 5. \end{tetel} \begin{bizonyitas}{} -Két állítást kell bizonyítanunk - azt, hogy feszítőfát ad az algoritmus, és azt, hogy az minimális. Kezdjük az elsővel. Legyen G egy összefüggő, súlyozott gráf (tehát van súlyfüggvény hozzárendelve) és F legyen egy részgráfja, amit az algoritmus produkál. F-ben nem lehet kör, mivel az algoritmus egy fát épít. F nem lehet nem összefüggő sem, mivel az első él (amit az algoritmus talál), ami összeköt két független komponenst F-ben még nem hozhat létre kört. Tehát F feszítőgráf. -\\ -A következő állítást teljes indukcióval bizonyítjuk be. Legyen H egy élhalmaz, amit az algoritmus a futása során generál, a minimális súlyú feszítőfának ezt a H élhalmazt tartalmaznia kell, hiszen ebben vannak minimális súlyú élek. -Az első lépésnél az állítás igaz, hiszen H üres, és minden gráfnak részgráfja az üres gráf. A k-adik lépésnél vegyük az állítást igaznak és legyen T a minimális súlyú feszítőfa, ami tartalmazza H-t. Ha az algoritmus által kiválasztott következő él, e, szintúgy benne van a T-ben, akkor az állítás szintúgy igaz a $H + {e}$ élhalmazra. Különben $T + {e}$ élhalmazban létezik egy C kör, és ezen kívül még létezik egy olyan f él, ami befejezi a C kört, de nem része H-nak. (Ha nem létezne f, akkor e-t már nem vehettük volna be, mivel kört produkált volna $H + f$-ben). Ekkor $T - {f} + {e}$ szintúgy egy fa, és azonos az összsúlya T-jével, hiszen T-nek minimális az összsúlya, és f-nek a súlya nem lehet kisebb, mint e-nek, hiszen akkor e helyett az f élet választotta volna az algoritmus. Tehát $T - {f} + {e}$ egy minimális súlyú feszítőfa. Ezek alapján az indukciós feltevést bebizonyítottuk, és az állítás igaz, amikor H egy feszítőfává válik, ami csak akkor igaz, ha H egy minimális súlyú feszítőfa. +Feltehetjük, hogy a gráf pontjainak a száma legalább 3. T.f.h. $\delta \geq 6$. Mivel a fokszámok összege egyenlő az élszámok kétszeresével, $6n \leq 2e$. Az élszám-becslés alapján azonban $2e \leq 6n - 12$, ezzel ellentmondásra jutottunk, mivel $6n \not\leq 6n - 12$. \end{bizonyitas} -\begin{tetel}{Alkalmazás} -Pontok - városok, élek - utak, súly - hossz; Villamos hálózatok, Kirchhoff-törvények, áramköri elemekhez súlyokat párosítunk +\begin{tetel}{KURATOWSKI-GRÁFOK} +A Kuratowski-gráfok, tehát a $K_5$ és a $K_{3,3}$ nem rajzolhatóak síkba. \end{tetel} + +\begin{bizonyitas}{} +Ha $K_5$ síkbarajzolható volna, akkor teljesülne rá az élbecslés tétel. Azonban $K_5$ pontjainak száma 5, éleinek száma 10 és $10 \not\leq 3 \cdot 5 -6 = 9$, tehát $K_5$ nem síkbarajzolható. +A $K_{3,3}$ minden körének hossza legalább 4. Ha volna 3 hosszú kör, legalább 2 ``kút'' vagy ``ház'' között kellene annak mennie, ami nem lehetséges. Így tehát a 2. élbecslés alkalmazható. $K_{3,3}$ pontjainak a száma 6, éleinek száma 9 és $9 \not\leq 2 \cdot 6 - 4 = 8$, tehát $K_{3,3}$ nem síkbarajzolható. +\end{bizonyitas} + +Érdemes megjegyezni, hogy ezeknek a topologikus izomorf megfelelőit (tehát ha egy él helyett 2 hosszú út van) se lehet síkba lerajzolni. Ezeket úgy tudjuk konstruálni, hogy egy él helyett vagy egy új, 2-fokú csúccsal helyettesítünk, vagy egy 2-fokú csúcsot egy éllel. + +\begin{definicio}{TOPOLOGIKUS IZOMORFIA} +A G és H gráfok \textbf{topologikusan izomorfak}, ha a fentebb említett transzformációk ismételt alkalmazásával izomorf gráfokba transzformálhatóak. +\end{definicio} + +\begin{tetel}{KURATOWSKI-TÉTEL} +Egy gráf akkor és csak akkor síkbarajzolható, ha nem tartalmaz olyan részgráfot, amely topologikusan izomorf lenne $K_{3,3}$-al vagy $K_5$-el. \textbf{A bizonyítás a szükségességre fentebb található.} +\end{tetel} + +\begin{definicio}{DUÁLIS} +Egy G gráf \textbf{duálisát} úgy kapjuk meg, hogy G tartományaihoz rendelünk pontokat (G* pontjai) és G*-ban akkor kötünk össze két pontot, ha a megfelelő G-beli tartományoknak van közös határvonala. +\end{definicio} + +A duális gráfban tehát $n* = t$ és $t* = n$, valamint $e* = e$. +A párhuzamos élekből ``soros élek'', hurokélekből pedig elvágó élek lesznek. \ No newline at end of file diff --git a/fejezetek/04_tetel.tex b/fejezetek/04_tetel.tex index 127f298..a741f3d 100644 --- a/fejezetek/04_tetel.tex +++ b/fejezetek/04_tetel.tex @@ -1,56 +1,52 @@ -\section{4. tétel} +\section{4. tétel: Hamilton és Euler körök, illetve utak} -\begin{definicio}{SÍKBARAJZOLHATÓSÁG} -G \textbf{síkbarajzolható} gráf, ha lerajzolható úgy (a síkba), hogy az élei a csúcsokon kívül sehol máshol ne keresztezzék egymást. +\begin{definicio}{EULER-ÚT ÉS KÖR} +A G gráf \textbf{Euler-körének} nevezünk egy zárt élsorozatot, ha az élsorozat pontosan egyszer tartalmazza G összes élét. Ha az élsorozat nem feltétlenül zárt, akkor \textbf{Euler-útról} beszélünk. \end{definicio} -\begin{definicio}{TARTOMÁNYOK} -G síkbarajzolt gráf \textbf{tartományain} azon síkrészeket értjük, melyeket közrefognak az élek. Csak síkbarajzolt gráfok esetén beszélhetünk ezekről! -\end{definicio} - -\begin{tetel}{GÖMBRE RAJZOLHATÓSÁG} -G gráf pontosan akkor síkbrajzolható, ha gömbre rajzolható. +\begin{tetel}{EULER-KÖR LÉTEZÉSE} +G összefüggő gráfban akkor és csak akkor létezik Euler-kör, ha G minden pontjának fokszáma páros. \end{tetel} \begin{bizonyitas}{} -Egy síkban lévő gráf leképezhető gömbfelületre oly módon, hogy ezt a gömbfelületet valamelyik pontjával a síkra helyezzük, ezt a pontot tekintjük a déli pólusként, és az északi pólusból egyeneseket húzunk a gráf pontjaiba. Ezeknek a vonalaknak van metszéspontja a gömbön, ezek szolgáltatják a kívánt vetítést. Ez az ú.n. sztereografikus projekció. Ezt visszafele is meg lehet ismételni. +Először lássuk be, hogy ha van a gráfban E-kör, akkor minden pont foka páros. Induljunk el a gráf tetszőleges pontjából és járjuk körbe az E-kör mentén. Minden pontban ugyanannyiszor mentünk be, mint ahányszor kimentünk, a ki- és bemenések száma a pont fokszáma. Ez biztosan páros. Másik irány jegyzet 29. oldal.%, baszódjon meg ez a bizonyítás. \end{bizonyitas} -\begin{tetel}{EULER-FORMULA} -Ha egy összefüggő síkbeli gráfnak n csúcsa, e éle és t tartománya van (beleértve a külső tartományt is), akkor eleget tesz az Euler-formulának: -$$n + t = e + 2$$ +\begin{tetel}{EULER-ÚT LÉTEZÉSE} +Egy összefüggő G gráfban akkor és csak akkor létezik Euler-út, ha a páratlan fokszámú pontok száma 0 vagy 2. \end{tetel} \begin{bizonyitas}{} -Tekintsük a gráf egy C körét (ha van) és ennek egy $a$ élét. A C kör a síkot két részre osztja. Ezeket egyéb élek további tartományokra oszthatják, de mindkét részben van egy olyan tartomány, melynek $a$ a határa. Ha a-t elhagyjuk, a két tartomány egyesül, azaz a tartományok száma eggyel csökken. A csúcsok száma nem változik, tehát $a$ elhagyásával az $n - e + t$ érték nem változik. Ezt az eljárást addig folytassuk, amíg a gráfban nem marad kör. Ekkor viszont már csak egy feszítőfa maradt. Elég az állítást erre belátni, ami triviális, hiszen $t = 1$ és $e = n - 1$. +Az előző tétel bizonyítása alapján, ebben az esetben ha 0 a páratlan fokszámú pontok száma, akkor Euler-körről is beszélhetünk, ha 2, akkor az élsorozat nem zárt, a két végpontnak lesz eltérő a fokszáma, mivel ezt úgy tudjuk képezni, hogy a két végpontot összekötő élt elhagyjuk. \end{bizonyitas} -\begin{tetel}{BECSLÉS AZ ÉLEK SZÁMÁRA} -Ha G egyszerű, síkbarajzolható gráf és pontjainak a száma legalább 3, akkor az előbbi jelölésekkel: -$$e \leq 3n - 6$$ +\begin{definicio}{HAMILTON-ÚT ÉS KÖR} +Egy G gráfban Hamilton-körnek nevezünk egy H kört, ha G minden pontját pontosan egyszer tartalmazza. Egy utat pedig Hamilton-útnak nevezünk, ha G minden pontját pontosan egyszer tartalmazza. +\end{definicio} + +\begin{tetel}{SZÜKSÉGES FELTÉTEL A HAMILTON-KÖR (ÚT) LÉTEZÉSÉHEZ} +Ha a G gráfban létezik k olyan pont, melyeket elhagyva a gráf több mint k komponensre esik, akkor nem létezik a gráfban Hamilton-kör. Ha több mint k+1 komponensre esik, akkor nem létezik a gráfban Hamilton-út se. \end{tetel} \begin{bizonyitas}{} -Vegyük G tetsz. síkbarajzolását és jelöljük az egyes tartományokat határoló élek számát $c_1, c_2...c_t$-vel. Mivel a gráf egyszerű, ezért minden tartományát legalább 3 él határolja, tehát $c_i \geq 3$. Nyilvánvaló, hogy egy élhez legfeljebb 2 tartomány tartozik, tehát ha összegezzük a tartományokat határoló élek számát minden tartományra, akkor legfeljebb $2e$-t kaphatunk. Tehát: -$$3t \leq c_1 + c_2 + ... + c_t = \sum_{i=1}^{t} c_i \leq 2e$$ -Az Euler-formulát felhasználva: -$$3(e - n + 2) \leq 2e$$ -Ebből átrendezéssel megkapjuk az eredményt. +Indirekt t.f.h. van a gráfban Hamilton-kör, ez legyen $(v_1, v_2,..., v_n)$ és legyen $(v_{i_1}, v_{i_2},...,v_{i_k})$ az a k pont, amelyet elhagyva a gráf több mint k komponensre esik. Az elhagyott pontok közötti ``ívek'' biztosan összefüggő komponenseket alkotnak. Pl. a $(v_{i_{1}+1}, v_{i_{1}+2},..., v_{i_{2}-1})$ is összefüggő lesz, hiszen két szomszédos pontja között az eredeti Hamilton-kör éle fut. Mivel épp k ilyen ívet kapunk, ezért nem lehet több komponens k-nál (kevesebb lehet, mivel különb. ívek közt futhatnak élek). U.a. bizonyítjuk útra. Ha egy Hamilton-útból elhagyunk k pontot, legfeljebb k+1 összefüggő. ív marad. \end{bizonyitas} -\begin{tetel}{BECSLÉS AZ ÉLEK SZÁMÁRA} -Ha G egyszerű, síkbarajzolható gráf és minden köre legalább 4 hosszú, valamint legalább 4 pontja van, akkor: -$$e \leq 2n - 4$$ +\begin{tetel}{ELÉGSÉGES FELTÉTEL - ORE TÉTEL} +Ha az n pontú G egyszerű gráfban minden olyan $x,y\in V(G)$ pontpárra, amelyre ${x,y}\not\in E(G)$ (nem szomszédosak), teljesül az, hogy $d(x) + d(y) \geq n$, akkor a gráfban van Hamilton-kör. \end{tetel} \begin{bizonyitas}{} -Minden tartományt legalább 4 él határol. Az előző biz. gondolatmenete alapján $4t \leq 2e$ és ez alapján megkapjuk a képletet. +Indirekt t.f.h. a gráf kielégíti a feltételt, de nincs benne Hamilton-kör. Vegyünk hozzá a gráfhoz éleket úgy, hogy továbbra se legyen benne Hamilton-kör. Ezt egészen addig csináljuk, amíg már akárhogyan is veszünk hozzá egy élet, lesz a gráfban Hamilton-kör. Az így kapott G' gráfra továbbra is teljesül a feltétel, hiszen új élek behúzásával ``rossz pontpárt'' nem lehet létrehozni. Biztosan van két olyan pont, hogy ${x,y} \not \in E(G')$. Ennek a behúzásával már lesz $G' + {x,y}$-ban Hamilton-kör, tehát G'-ben van Hamilton-út. Legyen ez $P = {z_1, z_2,...,z_n}$ ahol $z_1 = x$ és $z_n = y$. +Ha x szomszédos a P út valamely $z_k$ pontjával, akkor y nem lehet összekötve $z_{k-1}$-el, mert akkor az egy Hamilton-kört adna. Így tehát y nem lehet összekötve legalább d(x) ponttal, ezért +$$d(y) \leq n - 1 - d(x)$$ +ami viszont ellentmondás, hisz ${x,y} \not\in E(G)$. \end{bizonyitas} -\begin{tetel}{BECSLÉS MINIMÁLIS FOKSZÁMRA} -Ha G egyszerű, síkbarajzolható gráf, akkor $$\delta = min\, d(v) \leq 5$$ azaz a minimális fokszám legfeljebb 5. +\begin{tetel}{ELÉGSÉGES FELTÉTEL - DIRAC TÉTEL} +Ha egy n pontú G egyszerű gráfban minden pont foka legalább n/2, akkor a gráfban létezik Hamilton-kör. \end{tetel} \begin{bizonyitas}{} -Feltehetjük, hogy a gráf pontjainak a száma legalább 3. T.f.h. $\delta \geq 6$. Mivel a fokszámok összege egyenlő az élszámok kétszeresével, $6n \leq 2e$. Az élszám-becslés alapján azonban $2e \leq 6n - 12$, ezzel ellentmondásra jutottunk, mivel $6n \not\leq 6n - 12$. +Ez az előző tételből következik, hiszen ha minden pont foka legalább n/2, akkor teljesül az Ore-tétel feltétele, mivel bármely pontpárra $$d(x) + d(y) \geq n$$ \end{bizonyitas} diff --git a/fejezetek/05_tetel.tex b/fejezetek/05_tetel.tex index d6ad60c..67b717d 100644 --- a/fejezetek/05_tetel.tex +++ b/fejezetek/05_tetel.tex @@ -1,43 +1,71 @@ -\section{5. tétel} +\section{5. tétel: Gráfok színezése} -\begin{tetel}{KURATOWSKI-GRÁFOK} -A Kuratowski-gráfok, tehát a $K_5$ és a $K_{3,3}$ nem rajzolhatóak síkba. +\begin{definicio}{GRÁFOK SZÍNEZÉSE} +Egy G hurokmentes gráf \textbf{k színnel színezhető}, ha minden csúcsot ki lehet színezni k szín felhasználásával úgy, hogy bármely két szomszédos csúcs színe különböző legyen. G \textbf{kromatikus száma} $\chi(G) = k$, ha k színnel meg lehet színezni G-t, de $k - 1$-gyel már nem. Egy ilyen színezésnél az azonos színű pontok halmazát \textbf{színosztálynak} nevezzük. +\end{definicio} + +\begin{tetel}{MOHÓ SZÍNEZÉS Algoritmus} +A mohó színezés sorba rendezi a csúcsokat ($v_1, v_2...v_n$) és a $v_i.$-hoz azon legkisebb színt rendeli, amit a ($v_1,...v_{i-1}$) szomszédokhoz még nem rendelt. A mohó színezés nem feltétlenül a legoptimálisabb színezést adja. +\end{tetel} + +\begin{tetel}{$\chi(G)$ ÉS $\Delta(G)$ VISZONYA} +Minden G gráfra teljesül, hogy +$$\chi(G) \leq \Delta(G)+1$$ \end{tetel} \begin{bizonyitas}{} -Ha $K_5$ síkbarajzolható volna, akkor teljesülne rá az élbecslés tétel. Azonban $K_5$ pontjainak száma 5, éleinek száma 10 és $10 \not\leq 3 \cdot 5 -6 = 9$, tehát $K_5$ nem síkbarajzolható. -A $K_{3,3}$ minden körének hossza legalább 4. Ha volna 3 hosszú kör, legalább 2 ``kút'' vagy ``ház'' között kellene annak mennie, ami nem lehetséges. Így tehát a 2. élbecslés alkalmazható. $K_{3,3}$ pontjainak a száma 6, éleinek száma 9 és $9 \not\leq 2 \cdot 6 - 4 = 8$, tehát $K_{3,3}$ nem síkbarajzolható. +A mohó színezés segítségével bizonyítjuk. Színezzük ki G pontjait ($v_1, v_2,..., v_n$) úgy, hogy az i-edik lépésben $v_i$-t olyan színre színezzük, ami nem szerepel $v_i$ kiszínezett szomszédságában. Mivel $v_i$-nek legfeljebb $\Delta(G)$ kiszínezett szomszédja lehet, és mindegyik szomszéd legfeljebb egy-egy színt zár ki, ezért $v_i$ színezése elvégezhető a rendelkezésre álló színek valamelyikével (a kimaradó $\Delta(G)+1)$-edik). $v_n$ kiszínezése után G egy $(\Delta(G)+1)$ színezését kapjuk meg. \end{bizonyitas} -Érdemes megjegyezni, hogy ezeknek a topologikus izomorf megfelelőit (tehát ha egy él helyett 2 hosszú út van) se lehet síkba lerajzolni. Ezeket úgy tudjuk konstruálni, hogy egy él helyett vagy egy új, 2-fokú csúccsal helyettesítünk, vagy egy 2-fokú csúcsot egy éllel. - -\begin{definicio}{TOPOLOGIKUS IZOMORFIA} -A G és H gráfok \textbf{topologikusan izomorfak}, ha a fentebb említett transzformációk ismételt alkalmazásával izomorf gráfokba transzformálhatóak. +\begin{definicio}{KLIKK} +G egy teljes részgráfját \textbf{klikknek} nevezzük. A G-ben található maximális méretű klikk méretet, azaz pontszámát $\omega(G)$-vel jelöljük és a gráf \textbf{klikkszámának} nevezzük. \end{definicio} -\begin{tetel}{KURATOWSKI-TÉTEL} -Egy gráf akkor és csak akkor síkbarajzolható, ha nem tartalmaz olyan részgráfot, amely topologikusan izomorf lenne $K_{3,3}$-al vagy $K_5$-el. \textbf{A bizonyítás a szükségességre fentebb található.} +\begin{tetel}{Minden G gráfra $\chi(G) \geq \omega(G)$.} \end{tetel} -\begin{tetel}{FÁRY-WAGNER TÉTEL} -Ha G egy egyszerű, síkbarajzolható gráf, akkor létezik olyan síkbeli ábrázolása is, melyben minden élet egy egyenes szakasszal rajzoltunk le. +\begin{bizonyitas}{} +G pontjainak kiszínezésével a maximális klikk pontjait is kiszínezzük, mégpedig különböző színekkel. k nagyságú klikk esetén legalább k szín kell. +\end{bizonyitas} + +\begin{tetel}{MYCIELSKI-KONSTRUKCIÓ} +Minden $k \geq 2$ egész számra van olyan $G_k$ gráf, hogy $\omega(G_k) = 2$ és $\chi(G_k) = k$. \end{tetel} -\begin{definicio}{DUÁLIS} -Egy G gráf \textbf{duálisát} úgy kapjuk meg, hogy G tartományaihoz rendelünk pontokat (G* pontjai) és G*-ban akkor kötünk össze két pontot, ha a megfelelő G-beli tartományoknak van közös határvonala. +\begin{bizonyitas}{} +$G_2$-nek nyilván megfelel a 2 pontot és egy élt tartalmazó gráf. T.f.h. hogy már megkonstruáltuk a fenti tulajdonságokkal rendelkező $G_k$ gráfot. Ebből konstruáljuk meg a $G_{k+1}$-et. Jelöljük $G_k$ pontjait $v_1, v_2,..., v_n$-nel. Vegyünk fel $n + 1$ darab új pontot, $u_1, u_2,..., u_n$ és w-t, valamint az új éleket a következőképp: Minden $u_i$-t kössünk össze $v_i$ minden $G_k$-beli szomszédjával, de magával a $v_i$-vel ne. Végül w-t kössük össze $u_i$-val (de a többi v ponttal ne). Belátjuk, hogy az így kapott $G_{k+1}$ gráf kielégíti a feltételeket. Először lássuk be, ha $G_k$-ban nem volt háromszög, akkor $G_{k+1}$-ben sincs, azaz a klikkszáma még mindig 2. T.f.h. mégis van háromszög a $G_{k+1}$-ben. Ennek nyilván nem lehet mindhárom csúcsa $G_k$-ban, mivel ekkor volna már háromszög $G_k$-ban is. Ha w a háromszög egyik csúcsa, az sem jó, mivel akkor a háromszög másik két csúcsa $u_i$ és $u_j$ lehet, viszont ezek nem szomszédosak. Ha $u_i$ a háromszög egyik csúcsa, akkor a maradék két csúcs csak $v_x$ és $v_y$ lehet. Mivel azonban $u_i$ szomszédai megegyeznek a $v_i$ szomszédaival (kivéve w), ezért $v_i$-vel is szomszédosnak kellett volna lennie $v_x$ és $v_y$-nak, ekkor létezett volna $G_k$-ban is háromszög, ami ellentmondás. Ebből kijön az, hogy $\chi(G_{k+1}) \leq k + 1$. Színezzünk ki minden $v_i$-t valamilyen színnel, az $u_i$-ket színezzünk ugyanolyanra (mivel $v_i$-vel nem szomszédos) és w legyen a plusz egy szín, így jól színeztük ki $k+1$ színnel. T.f.h. $\chi(G_{k+1}) = k$. Jelöljük x pont színét c(x)-el, a színeket pedig $1, 2,..., k$-val. Azt is feltehetjük, hogy $c(w) = k$. Mivel w minden $u_i$ ponttal össze van kötve, ezért az $u_i$ pontokat a $1, 2,....k - 1$ színekkel színezzük. Megadunk egy c' színezést a $v_i$ pontok által feszített részgráfon (Ez éppen $G_k$-val izomorf részgráf). Ha $c(v_i) = k$ akkor legyen $c'(v_i) = c(u_i)$, különben $c'(v_i) = c(v_i)$, vagyis a k színűeket színezzük át a ``párjuk'' színére. Belátjuk, hogy c' egy jó $k-1$ színezése $G_k$-nak, ami ellentmondás. +\end{bizonyitas} + +\begin{definicio}{INTERVALLUMGRÁF} +Legyenek $I_1 = [a_1, b_1], I_2 = [a_2, b_2],...$ korlátos zárt intervallumok, és minden $a_i, b_i$ legyen pozitív egész. Legyenek $p_1, p_2,...$ egy G gráf pontjai és ${p_i, p_j}$ akkor és csak akkor legyen él G-ben, ha $I_i\cap I_j \not= \emptyset$. Az így előálló gráfokat \textbf{intervallumgráfnak} nevezzük. \end{definicio} -A duális gráfban tehát $n* = t$ és $t* = n$, valamint $e* = e$. -A párhuzamos élekből ``soros élek'', hurokélekből pedig elvágó élek lesznek. +\begin{tetel}{INTERVALLUMGRÁF SZÍNEZÉSE} +G intervallumgráf, emiatt: +$$\omega(G) = \chi(G)$$ +\end{tetel} + +\begin{bizonyitas}{} +Mohó színezéssel bizonyítjuk, méghozzá úgy, hogy az intervallumokat bal végpontja szerint rendezem és ezek alapján növekvő sorrendben színezem, akkor optimális színezést kapok. T.f.h. k színnel színez a mohó algoritmus. A cél az, hogy belássuk a következőt: +$$k \leq \omega(G) \leq \chi(G) \leq k$$. MAJD. +\end{bizonyitas} -\begin{definicio}{ELVÁGÓ ÉLHALMAZ} -G összefüggő gráf, $x \in E(G)$. x elvágó élhalmaz, ha $(V(G),E(G)\backslash x) = G'$ és G' nem összefüggő. x vágás, ha x elv. élhalmaz, de semelyik részhalmaza sem az. +\begin{definicio}{PÁROS GRÁF} +Egy G gráfot \textbf{páros gráfnak} nevezünk, ha G pontjainak V(G) halmazát két részre, egy A és B halmazra tudjuk osztani úgy, hogy G minden élének egyik végpontja A-ban, a másik pedig B-ben van. Ennek jelölése: $G = (A,B)$. A $K_{a,b}$-vel jelölt teljes páros gráf olyan $G=(A,B)$ gráf, ahol $|A| = a$ és $|B| = b$ és minden A-beli pont össze van kötve minden B-beli ponttal. \end{definicio} -\begin{tetel}{VÁGÁSOK ÉS KÖRÖK} -G összefüggő és síkbarajzolt, ekkor ha C kör a G-ben, a C* vágás lesz G duálisában, G*-ban és fordítva, ha C vágás G-ben, a C* kör lesz a G*-ban. +\begin{tetel}{FELTÉTEL A GRÁF PÁROS MIVOLTÁRA} +Egy G gráf akkor és csak akkor páros gráf, ha minden G-ben lévő kör páros. \end{tetel} -\begin{tetel}{FA DUÁLISON BELÜL} -G összefüggő, egyszerű gráf, F ezen belül feszítőfa. A G* duálison belül ez az F a saját komplementereként fog megjelenni. +\begin{bizonyitas}{} +Ha G páros gráf, és C egy kör G-ben, akkor C pontjai felváltva vannak A-ban és B-ben, így $|V(C)|$ nyilván páros. Ha G minden köre páros hosszú, akkor megadhatjuk az A és B halmazt. Válasszunk egy tetszőleges v pontot, legyen ez A első pontja. v minden szomszédját tegyük bele B-be, majd ezeknek a szomszédjait rakjuk bele A-ba. Ezt folytassuk, amíg ki nem fogyunk a pontokból. Ez biztosan jó elosztás, mivel ha például lenne A-ban két szomszédos pont, akkor léteznie kéne a gráfban páratlan körnek, így ellentmondásra jutnánk. Nem összefüggő gráfok esetén komponensenként hajtsuk végre. +\end{bizonyitas} + +\begin{tetel}{KROMATIKUS SZÁM ÉS PÁROSÍTÁS KAPCSOLATA} +Egy legalább egy élt tartalmazó G gráf akkor és csak akkor páros, ha $\chi(G) = 2$. \end{tetel} + +\begin{tetel}{KAPCSOLAT A PÁROS GRÁFOK ÉS A PÁRATLAN KÖRÖK KÖZÖTT} + $\chi(G) = \Delta(G)+1$ abban az esetben, ha teljes gráfról vagy húr nélküli páratlan körről beszélünk. +\end{tetel} \ No newline at end of file diff --git a/fejezetek/06_tetel.tex b/fejezetek/06_tetel.tex index 0134049..77a6b2e 100644 --- a/fejezetek/06_tetel.tex +++ b/fejezetek/06_tetel.tex @@ -1,52 +1,55 @@ -\section{6. tétel} +\section{6. tétel: $\nu, \rho, \alpha, \tau$} -\begin{definicio}{EULER-ÚT ÉS KÖR} -A G gráf \textbf{Euler-körének} nevezünk egy zárt élsorozatot, ha az élsorozat pontosan egyszer tartalmazza G összes élét. Ha az élsorozat nem feltétlenül zárt, akkor \textbf{Euler-útról} beszélünk. +\begin{definicio}{PÁROSÍTÁS} +\textbf{Párosításnak} vagy \textbf{részleges párosításnak} nevezünk egy M élhalmazt, ha semelyik két élnek nincsen közös pontja. Az ilyen éleket \textbf{független éleknek} nevezzük. A részleges párosítás \textbf{lefedi} éleinek végpontjait. Egy párosítás \textbf{teljes párosítás}, ha a gráf minden pontját lefedi. \end{definicio} -\begin{tetel}{EULER-KÖR LÉTEZÉSE} -G összefüggő gráfban akkor és csak akkor létezik Euler-kör, ha G minden pontjának fokszáma páros. -\end{tetel} +\begin{definicio}{FÜGGETLEN/LEFOGÓ ÉLEK/PONTOK HALMAZA (``görög betűk'')} + \begin{itemize} + \item Jelöljük $\nu(G)$-vel a G gráfban található \textbf{független élek} maximális számát. + \item $X \subseteq V(G)$ egy \textbf{lefogó ponthalmaz}, ha G minden élének legalább egyik végpontját tartalmazza.\\ + A lefogó pontok minimális számát $\tau(G)$-vel jelöljük. + \item $Y \subseteq E(G)$ \textbf{lefogó élhalmaz}, ha minden pontot lefog.\\ + A lefogó élek minimális számát $\rho(G)$ jelöli. + \item $X \subseteq V(G)$ \textbf{független ponthalmaz}, ha nincs benne két szomszédos pont.\\ + A független pontok maximális száma $\alpha(G)$ + \end{itemize} -\begin{bizonyitas}{} -Először lássuk be, hogy ha van a gráfban E-kör, akkor minden pont foka páros. Induljunk el a gráf tetszőleges pontjából és járjuk körbe az E-kör mentén. Minden pontban ugyanannyiszor mentünk be, mint ahányszor kimentünk, a ki-bemenések száma a pont fokszáma. Ez biztosan páros. Másik irány jegyzet 29. oldal.%, baszódjon meg ez a bizonyítás. -\end{bizonyitas} +\end{definicio} -\begin{tetel}{EULER-ÚT LÉTEZÉSE} -Egy összefüggő G gráfban akkor és csak akkor létezik Euler-út, ha a páratlan fokszámú pontok száma 0 vagy 2. +\begin{tetel}{``Görög betűk'' viszonya egymáshoz} +Minden G gráfra +$$\nu(G) \leq \tau(G)$$ +$$\alpha(G) \leq \rho(G)$$ \end{tetel} \begin{bizonyitas}{} -Az előző tétel bizonyítása alapján, ebben az esetben ha 0 a páratlan fokszámú pontok száma, akkor Euler-körről is beszélhetünk, ha 2, akkor az élsorozat nem zárt, a két végpontnak lesz eltérő a fokszáma, mivel ezt úgy tudjuk képezni, hogy a két végpontot összekötő élt elhagyjuk. +Legyen M maximális méretű független élhalmaz. Mivel pusztán M éleinek lefogásához legalább $|M|$ pontra van szükség, ezért $\tau(G) \geq |M| = \nu(G)$. +Hasonlóan bizonyítjuk a második állítást is. \end{bizonyitas} -\begin{definicio}{HAMILTON-ÚT ÉS KÖR} -Egy G gráfban Hamilton-körnek nevezünk egy H kört, ha G minden pontját pontosan egyszer tartalmazza. Egy utat pedig Hamilton-útnak nevezünk, ha G minden pontját pontosan egyszer tartalmazza. -\end{definicio} - -\begin{tetel}{SZÜKSÉGES FELTÉTEL A H-KÖR (ÚT) LÉTEZÉSÉHEZ} -Ha a G gráfban létezik k olyan pont, melyeket elhagyva a gráf több mint k komponensre esik, akkor nem létezik a gráfban H-kör. Ha több mint k+1 komponensre esik, akkor nem létezik a gráfban H-út se. +\begin{tetel}{GALLAI TÉTEL I.} +Minden olyan G gráfra, mely hurokmentes: +$$\tau(G) + \alpha(G) = v(G) = n$$ \end{tetel} \begin{bizonyitas}{} -Indirekt t.f.h. van a gráfban H-kör, ez legyen $(v_1, v_2,..., v_n)$ és legyen $(v_{i_1}, v_{i_2},...,v_{i_k})$ az a k pont, amelyet elhagyva a gráf több mint k komponensre esik. Az elhagyott pontok közötti ``ívek'' biztosan összefüggő komponenseket alkotnak. Pl. a $(v_{i_{1}+1}, v_{i_{1}+2},..., v_{i_{2}-1})$ is összefüggő lesz, hiszen két szomszédos pontja között az eredeti H-kör éle fut. Mivel épp k ilyen ívet kapunk, ezért nem lehet több komponens k-nál (kevesebb lehet, mivel különb. ívek közt futhatnak élek). U.a. bizonyítjuk útra. Ha egy H-útból elhagyunk k pontot, legfeljebb k+1 öf. ív marad. +Egy X halmaz pontjai akkor és csak akkor függetlenek, ha a $V(G)\backslash X$ halmaz lefogó ponthalmaz. Hiszen ha X nem független, akkor van két összekötött pont, és így $V(G)\backslash X$ nem fogja le ezt az élt. Fordítva, ha $V(G)\backslash X$ nem fog le egy huroktól különböző élt, akkor X-ben ennek az élnek mindkét végpontja szerepel. Tehát $\tau(G) \leq |V(G)\backslash X|$ teljesül minden X független ponthalmazra. Ebből pedig következik, hogy a $\tau(G) + \alpha(G) \leq v(G)$. Hasonlóan $\alpha(G) \geq |V(G) \backslash Y|$ minden Y lefogó ponthalmazra, amiből $\tau(G) + \alpha(G) \geq v(G)$ következik. \end{bizonyitas} -\begin{tetel}{ELÉGSÉGES FELTÉTEL - ORE TÉTEL} -Ha az n pontú G egyszerű gráfban minden olyan $x,y\in V(G)$ pontpárra, amelyre ${x,y}\not\in E(G)$ (nem szomszédosak), teljesül az, hogy $d(x) + d(y) \geq n$, akkor a gráfban van H-kör. +\begin{tetel}{GALLAI TÉTEL II.} +Minden olyan G gráfra, melyben nincs izolált pont: +$$\nu(G) + \rho(G) = v(G) = n$$ \end{tetel} \begin{bizonyitas}{} -Indirekt t.f.h. a gráf kielégíti a feltételt, de nincs benne H-kör. Vegyünk hozzá a gráfhoz éleket úgy, hogy továbbra se legyen benne H-kör. Ezt egészen addig csináljuk, amíg már akárhogyan is veszünk hozzá egy élet, lesz a gráfban H-kör. Az így kapott G' gráfra továbbra is teljesül a feltétel, hiszen új élek behúzásával ``rossz pontpárt'' nem lehet létrehozni. Biztosan van két olyan pont, hogy ${x,y} \not \in E(G')$. Ennek a behúzásával már lesz $G' + {x,y}$-ban H-kör, tehát G'-ben van H-út. Legyen ez $P = {z_1, z_2,...,z_n}$ ahol $z_1 = x$ és $z_n = y$. -Ha x szomszédos a P út valamely $z_k$ pontjával, akkor y nem lehet összekötve $z_{k-1}$-el, mert akkor az egy H-kört adna. Így tehát y nem lehet összekötve legalább d(x) ponttal, ezért -$$d(y) \leq n - 1 - d(x)$$ -ami viszont ellentmondás, hisz ${x,y} \not\in E(G)$. +Egy $\nu(G)$ elemű X független élhalmaz lefog $2\nu(G)$ különböző pontot. A többi pont (mivel nincs izolált) nyilván lefogható $v(G) - 2\nu(G)$ éllel, így $v(G) - \nu(G) \geq \rho(G)$. Másrészt, ha Y egy minimális lefogó élhalmaz, akkor Y néhány (k darab) diszjunkt csillag egyesítése. Ha ugyanis Y tartalmazna kört, akkor annak bármely élét, ha pedig 3 hosszú utat, akkor a közepét el lehetne hagyni Y-ból, mert a többi él még mindig lefogná az összes pontot. Így $\rho(G) = v(G) - k$. Minden csillagból kiválasztunk egy élt, az így kapott élhalmaz nyilván független. Tehát $\nu(G) \geq k = v(G) - \rho(G)$. \end{bizonyitas} -\begin{tetel}{ELÉGSÉGES FELTÉTEL - DIRAC TÉTEL} -Ha egy n pontú G egyszerű gráfban minden pont foka legalább n/2, akkor a gráfban létezik H-kör. +\begin{tetel}{TUTTE-TÉTEL} +Egy G gráfban akkor és csak akkor van teljes párosítás, ha minden $X \subseteq V(G)$-re $c_p(G - X)\leq |X|$, azaz akárhogy hagyunk el a gráfból k pontot, a maradékban a páratlan komponensek száma nem lehet több, mint k. \end{tetel} \begin{bizonyitas}{} -Ez az előző tételből következik, hiszen ha minden pont foka legalább n/2, akkor teljesül az Ore-tétel feltétele, mivel bármely pontpárra $$d(x) + d(y) \geq n$$ +(csak szükséges): Ha G-ben van teljes párosítás, akkor nyilvánvalóan teljesül a feltétel. Hiszen ha elhagyunk a gráfból X-et, akkor a páratlan komponensek mindegyikéből az eredeti gráfban indul ki legalább egy párosításbeli él, és ezek az élek csak egy-egy (különböző) X-beli pontba mehetnek. Tehát $c_p(G - X) \leq |X|$. \end{bizonyitas} diff --git a/fejezetek/07_tetel.tex b/fejezetek/07_tetel.tex index b8fa7ae..50894d5 100644 --- a/fejezetek/07_tetel.tex +++ b/fejezetek/07_tetel.tex @@ -1,24 +1,43 @@ -\section{7. tétel} +\section{7. Tétel: Javítóutak módszere} -\begin{definicio}{GRÁFOK SZÍNEZÉSE} -Egy G hurokmentes gráf \textbf{k színnel színezhető}, ha minden csúcsot ki lehet színezni k szín felhasználásával úgy, hogy bármely két szomszédos csúcs színe különböző legyen. G \textbf{kromatikus száma} $\chi(G) = k$, ha k színnel meg lehet színezni G-t, de $k - 1$-gyel már nem. Egy ilyen színezésnél az azonos színű pontok halmazát \textbf{színosztálynak} nevezzük. +\begin{definicio}{PÁROSÍTÁS} +\textbf{Párosításnak}, vagy \textbf{részleges párosításnak} nevezünk egy M élhalmazt, ha semelyik két élnek közös pontja. Az ilyen éleket független éleknek nevezzük. A részleges párosítás lefedi éleinek végpontjait. Egy párosítás \textbf{teljes párosítás}, ha a gráf minden pontját lefedi. \end{definicio} -\begin{definicio}{KLIKK} -G egy teljes részgráfját \textbf{klikknek} nevezzük. A G-ben található maximális méretű klikk méretet, azaz pontszámát $\omega(G)$-vel jelöljük és a gráf \textbf{klikkszámának} nevezzük. +\begin{definicio}{ALTERNÁLÓ ÚT} +Hozzunk létre egy részleges párosítást egy páros gráfon belül, ekkor a párosítás során bevett élek legyenek az X élhalmaz elemei. Alternáló útnak nevezünk olyan élsorozatot, ami felváltva tartalmaz nem-X beli és X-beli élt. \end{definicio} -\begin{tetel}{Minden G gráfra $\chi(G) \geq \omega(G)$.} +\begin{definicio}{JAVÍTÓ ÚT} +G(A,B,E) páros gráfban van már párosítás (nem teljes). P út \textbf{javító út}, ha párosítatlan A-ból indul, párosítatlan B-be érkezik és P alternáló út. Ha ez a javító út elkészül, úgy tudjuk bevenni, hogy a ``nem-X''-beli éleket bevesszük és a régebben X-beli éleket pedig nem. +\end{definicio} + +\begin{definicio}{JAVÍTÓ UTAS ALGORITMUS (MÓDOSÍTOTT BFS)} +Bemenetként kapjuk meg M párosítást valamint G(A,B,E) gráfot. Ha létezik ebben a gráfban javító út, akkor azt vegyük be, ezt folytassuk addig, amíg létre tudunk hozni újabb és újabb javító utakat. Ha már nem tudunk újabb élt bevenni a párosításba, akkor álljunk le. Ebben az esetben már maximális a párosítás. Az algoritmus mohó módon működik. +\end{definicio} + +\begin{tetel}{KŐNIG-TÉTEL} +Ha G páros gráf, akkor $\nu(G) = \tau(G)$. Ha G-ben nincs izolált pont, akkor $\alpha(G) = \rho(G)$ is teljesül. +\end{tetel} + +\begin{bizonyitas}{} +Először az első állítást bizonyítjuk. Legyen M egy olyan párosítás, mely a javító utak módszerével már nem bővíthető. Legyen $U = A - X$, T' azon B-beli pontok halmaza, amelyek elérhetőek U-ból alternáló úton. T pedig ezek párjainak halmaza. Legyen $Y = T' \cup (X - T)$. Ennek a halmaznak éppen $|M|$ pontja van. Ezek minden élt lefognak, hiszen $N(T\cup U) = T'$, ugyanúgy, mint a Hall-tétel bizonyításában. Így $\tau(G) \leq |M| \leq \nu(G)$ amiből viszont már következik az állítás a CUCCOS VISZONY (\textit{8. tétel}) tétel alapján. Most már könnyű belátni a második állítást is, Gallai két tétele miatt ugyanis $\nu(G) + \rho(G) = \tau(G) + \alpha(G)$ és imént beláttuk, hogy $\nu(G) = \tau(G)$. +\end{bizonyitas} + +\begin{tetel}{HALL-TÉTEL} +Egy $G = (A,B)$ páros gráfban akkor és csak akkor van A-t lefedő párosítás, ha minden $X \subseteq A$ részhalmazra $|N(X)| \geq |X|$ (ezt \textbf{Hall-feltételnek} nevezzük). \end{tetel} \begin{bizonyitas}{} -G pontjainak kiszínezésével a maximális klikk pontjait is kiszínezzük, mégpedig különböző színekkel. k nagyságú klikk esetén legalább k szín kell. +??? \\ +Ha létezik A-t fedő párosítás, akkor minden A-beli pontnak különböző párja van, tehát tetszőleges $X \subseteq A$-ra. Azt kell igazolnunk, hogy $\nu(G) \geq |A|$. Legyen U minimális (azaz $\tau(G)$ méretű) lefogó ponthalmaz, és legyen $U_A :=U\cap A,U_B:=U\cap B$. Mivel U lefogja az $X := A \backslash U_A$-ból induló éleket, ezért $N(X) \subseteq U_B$, tehát $|(NX)| \leq |U_B|$. A Kőnig-tétel illetve a Hall-feltétel miatt +$$\nu(G) = \tau(G) = |U| = |U_A| + |U_B| \geq |U_A| + |N(X)| \geq |U_A| + |X| = |A|$$ \end{bizonyitas} -\begin{tetel}{MYCIELSKI-KONSTRUKCIÓ} -Minden $k \geq 2$ egész számra van olyan $G_k$ gráf, hogy $\omega(G_k) = 2$ és $\chi(G_k) = k$. +\begin{tetel}{FROBENIUS-TÉTEL} +Egy $G = (A,B)$ páros gráfban akkor és csak akkor van teljes párosítás, ha $|A| = |B|$ és $|N(X)| \geq |X|$ minden $X \subseteq A$-ra. \end{tetel} \begin{bizonyitas}{} -$G_2$-nek nyilván megfelel a 2 pontot és egy élt tartalmazó gráf. T.f.h. hogy már megkonstruáltuk a fenti tulajdonságokkal rendelkező $G_k$ gráfot. Ebből konstruáljuk meg a $G_{k+1}$-et. Jelöljük $G_k$ pontjait $v_1, v_2,..., v_n$-nel. Vegyünk fel $n + 1$ darab új pontot, $u_1, u_2,..., u_n$ és w-t, valamint az új éleket a következőképp: Minden $u_i$-t kössünk össze $v_i$ minden $G_k$-beli szomszédjával, de magával a $v_i$-vel ne. Végül w-t kössük össze $u_i$-val (de a többi v ponttal ne). Belátjuk, hogy az így kapott $G_{k+1}$ gráf kielégíti a feltételeket. Először lássuk be, ha $G_k$-ban nem volt háromszög, akkor $G_{k+1}$-ben sincs, azaz a klikkszáma még mindig 2. T.f.h. mégis van háromszög a $G_{k+1}$-ben. Ennek nyilván nem lehet mindhárom csúcsa $G_k$-ban, mivel ekkor volna már háromszög $G_k$-ban is. Ha w a háromszög egyik csúcsa, az sem jó, mivel akkor a háromszög másik két csúcsa $u_i$ és $u_j$ lehet, viszont ezek nem szomszédosak. Ha $u_i$ a háromszög egyik csúcsa, akkor a maradék két csúcs csak $v_x$ és $v_y$ lehet. Mivel azonban $u_i$ szomszédai megegyeznek a $v_i$ szomszédaival (kivéve w), ezért $v_i$-vel is szomszédosnak kellett volna lennie $v_x$ és $v_y$-nak, ekkor létezett volna $G_k$-ban is háromszög, ami ellentmondás. Ebből kijön az, hogy $\chi(G_{k+1}) \leq k + 1$. Színezzünk ki minden $v_i$-t valamilyen színnel, az $u_i$-ket színezzünk ugyanolyanra (mivel $v_i$-vel nem szomszédos) és w legyen a plusz egy szín, így jól színeztük ki $k+1$ színnel. T.f.h. $\chi(G_{k+1}) = k$. Jelöljük x pont színét c(x)-el, a színeket pedig $1, 2,..., k$-val. Azt is feltehetjük, hogy $c(w) = k$. Mivel w minden $u_i$ ponttal össze van kötve, ezért az $u_i$ pontokat a $1, 2,....k - 1$ színekkel színezzük. Megadunk egy c' színezést a $v_i$ pontok által feszített részgráfon (Ez éppen $G_k$-val izomorf részgráf). Ha $c(v_i) = k$ akkor legyen $c'(v_i) = c(u_i)$, különben $c'(v_i) = c(v_i)$, vagyis a k színűeket színezzük át a ``párjuk'' színére. Belátjuk, hogy c' egy jó $k-1$ színezése $G_k$-nak, ami ellentmondás. +A két feltétel szükségessége nyilvánvaló. Ha viszont teljesül a második feltétel, akkor a Hall-tétel miatt van A-t fedő párosítás. Mivel azonban $|A| = |B|$, ezért ez lefedi B-t is. \end{bizonyitas} diff --git a/fejezetek/08_tetel.tex b/fejezetek/08_tetel.tex index 525f9a8..eae9fbd 100644 --- a/fejezetek/08_tetel.tex +++ b/fejezetek/08_tetel.tex @@ -1,54 +1,42 @@ -\section{8. tétel} +\section{8. tétel: gráfok élszínezése, élkromatikus szám($\chi_G$)} -\begin{tetel}{MOHÓ SZÍNEZÉS Algoritmus} -A mohó színezés sorba rendezi a csúcsokat ($v_1, v_2...v_n$) és a $v_i.$-hoz azon legkisebb színt rendeli, amit a ($v_1,...v_{i-1}$) szomszédokhoz még nem rendelt. A mohó színezés nem feltétlenül a legoptimálisabb színezést adja. -\end{tetel} - -\begin{tetel}{$\chi(G)$ ÉS $\Delta(G)$ VISZONYA} -Minden G gráfra teljesül, hogy -$$\chi(G) \leq \Delta(G)+1$$ -\end{tetel} - -\begin{bizonyitas}{} -A mohó színezés segítségével bizonyítjuk. Színezzük ki G pontjait ($v_1, v_2,..., v_n$) úgy, hogy az i-edik lépésben $v_i$-t olyan színre színezzük, ami nem szerepel $v_i$ kiszínezett szomszédságában. Mivel $v_i$-nek legfeljebb $\Delta(G)$ kiszínezett szomszédja lehet, és mindegyik szomszéd legfeljebb egy-egy színt zár ki, ezért $v_i$ színezése elvégezhető a rendelkezésre álló színek valamelyikével (a kimaradó $\Delta(G)+1)$-edik). $v_n$ kiszínezése után G egy $(\Delta(G)+1)$ színezését kapjuk meg. -\end{bizonyitas} +% a kommentezett reszek allitolag nem a tetel reszei, ha valaki jobban tudja, nyugodtan allitsa oket vissza vagy torolje -Érdemes megjegyezni, hogy $\chi(G) = \Delta(G)+1$ abban az esetben, ha teljes gráfról vagy húr nélküli páratlan körről beszélünk. - -\begin{tetel}{BROOKS-TÉTEL} -Ha G egyszerű, összefüggő, nem teljes gráf, nem páratlan hosszúságú kör, akkor $\chi(G) \leq \Delta(G)$, tehát a kromatikus szám nem nagyobb, mint a maximális fokszám. -\end{tetel} - -\begin{definicio}{INTERVALLUMGRÁF} -Legyenek $I_1 = [a_1, b_1], I_2 = [a_2, b_2],...$ korlátos zárt intervallumok, és minden $a_i, b_i$ legyen pozitív egész. Legyenek $p_1, p_2,...$ egy G gráf pontjai és ${p_i, p_j}$ akkor és csak akkor legyen él G-ben, ha $I_i\cap I_j \not= \emptyset$. Az így előálló gráfokat \textbf{intervallumgráfnak} nevezzük. +\begin{definicio}{REGULÁRIS GRÁF} +Egy gráfot \textbf{$k$-regulárisnak} nevezünk, ha minden pont foka $k$. Egy gráfra azt mondjuk, hogy \textbf{reguláris}, ha létezik olyan k, amire k-reguláris. \end{definicio} -\begin{tetel}{INTERVALLUMGRÁF SZÍNEZÉSE} -G intervallumgráf, emiatt: -$$\omega(G) = \chi(G)$$ +\begin{tetel}{REGULÁRIS GRÁFBAN TELJES PÁROSÍTÁS} +Minden reguláris páros gráfban létezik teljes párosítás. \end{tetel} \begin{bizonyitas}{} -Mohó színezéssel bizonyítjuk, méghozzá úgy, hogy az intervallumokat bal végpontja szerint rendezem és ezek alapján növekvő sorrendben színezem, akkor optimális színezést kapok. T.f.h. k színnel színez a mohó algoritmus. A cél az, hogy belássuk a következőt: -$$k \leq \omega(G) \leq \chi(G) \leq k$$. MAJD. +Vegyünk egy páros gráfot A, B pontosztállyal, ami k-reguláris. Először lássuk be, hogy ugyanaz az elemszáma A és B-nek. A-ból $k\cdot n$ él megy ki, B-be pedig $k \cdot m$ él megy. $k\cdot n = k\cdot m$, osszuk le k-val $\rightarrow n = m$. Hall-feltétel: $|N(A) \geq |A|$. A-ból $k\cdot|A|$ él megy ki, ezek a N(A) csúcsokba mennek. Ez annyit jelent, hogy egy N(A)-beli csúcsba átlagosan $(k\cdot |A|) \backslash |N(A)|$ él megy, tehát $(k\cdot |A|) \backslash |N(A)| \leq k$ (mivel egy csúcsba maximum k él megy). Szorozzuk be $|N(A|$-val és osszunk k-val. $|A| \leq |N(A)|$, Hall feltétel OK, Frobenius-tétel OK, létezik teljes párosítás. +%Tegyük fel, hogy G k-reguláris és rendelkezik A, B pontosztályokkal és $k \geq 1$, és tekintsünk tetszőleges $X \subseteq A$ ponthalmazt. Mivel X-beli pontokból összesen $|X|\cdot k$ darab él indul ki, és N(X) minden pontjába ezek közül legfeljebb k fut be, ezért +%$$|N(X)| \geq \frac{1}{k}k|X| = |X|$$ +%Az $X = A$ esetre ugyanezzel a módszerrel $|A| = |B|$, mert $N(A) = B$ és így az A-beli pontokból kiinduló élekből N(A) minden pontjába pontosan k él fut be. Ebből Frobenius tétellel kijön a teljes párosítás. \end{bizonyitas} -\begin{definicio}{PÁROS GRÁF} -Egy G gráfot \textbf{páros gráfnak} nevezünk, ha G pontjainak V(G) halmazát két részre, egy A és B halmazra tudjuk osztani úgy, hogy G minden élének egyik végpontja A-ban, a másik pedig B-ben van. Ennek jelölése: $G = (A,B)$. A $K_{a,b}$-vel jelölt teljes páros gráf olyan $G=(A,B)$ gráf, ahol $|A| = a$ és $|B| = b$ és minden A-beli pont össze van kötve minden B-beli ponttal. +\begin{definicio}{ÉLSZÍNEZÉS} +Egy G gráf élei \textbf{k színnel színezhetőek}, ha minden élt ki lehet színezni k színnel úgy, hogy bármely két szomszédos él színe különböző legyen. G \textbf{élkromatikus száma} $\chi_e(G) = k$, ha G élei k színnel színezhetőek, de $k - 1$-gyel már nem. \end{definicio} -\begin{tetel}{PÁROSÍTÁS LÉTEZÉSE} -Egy G gráf akkor és csak akkor páros gráf, ha minden G-ben lévő kör páros. +\begin{tetel}{VIZING-TÉTEL} +Ha G egyszerű gráf, akkor $\chi_e(G) \leq \Delta(G) + 1$. Bizonyítás $\emptyset$. +\end{tetel} + +\begin{tetel}{ÉLKROMATIKUS SZÁM} +Tetszőleges G gráfra $\chi_e(G) \geq \Delta(G)$ áll. \end{tetel} \begin{bizonyitas}{} -Ha G páros gráf, és C egy kör G-ben, akkor C pontjai felváltva vannak A-ban és B-ben, így $|V(C)|$ nyilván páros. Ha G minden köre páros hosszú, akkor megadhatjuk az A és B halmazt. Válasszunk egy tetszőleges v pontot, legyen ez A első pontja. v minden szomszédját tegyük bele B-be, majd ezeknek a szomszédjait rakjuk bele A-ba. Ezt folytassuk, amíg ki nem fogyunk a pontokból. Ez biztosan jó elosztás, mivel ha például lenne A-ban két szomszédos pont, akkor léteznie kéne a gráfban páratlan körnek, így ellentmondásra jutnánk. Nem öf. gráfok esetén komponensenként hajtsuk végre. +Az egy csúcsból induló élek egymástól különböző színt kapnak, és ez speciálisan a maximális fokszámú csúcsokból induló élekre is igaz. \end{bizonyitas} -\begin{tetel}{KROMATIKUS SZÁM ÉS PÁROSÍTÁS KAPCSOLATA} -Egy legalább egy élt tartalmazó G gráf akkor és csak akkor páros, ha $\chi(G) = 2$. +\begin{tetel}{KŐNIG-TÉTEL} +Ha G páros gráf, akkor $\chi_e(G) = \Delta(G)$ \end{tetel} \begin{bizonyitas}{} -Ha a gráf páros, akkor az egyik oldalon lévő pontokat pirossal, másik oldalon lévőeket kékkel megszínezzük. Ha a gráfnak van egy éle, akkor ennek a két végpontját már nem színezhetjük egy színűre. A színek megfelelnek a két halmaznak, amire fel tudjuk bontani a páros gráfokat. +Elég azt igazolni, hogy $\chi_e(G) \leq \Delta(G)$ az előző állítás miatt. Létezik olyan H páros gráf, melynek G részgráfja, és H minden csúcsának fokszáma $\Delta(G)$. Ha sikerül a $\Delta(G)$-reguláris H gráf éleit $\Delta(G)$ színnel kiszínezni, akkor egyúttal a G részgráf éleinek is megkapjuk egy ugyanennyi színnel való színezését. H gráf élszínezéséhez elegendő azt megmutatni, hogy tetszőleges reguláris páros gráfban létezik teljes párosítás, ezt pedig már bizonyítottuk egy fentebbi tételben. \end{bizonyitas} diff --git a/fejezetek/09_tetel.tex b/fejezetek/09_tetel.tex index 1c1c8f8..150d3a3 100644 --- a/fejezetek/09_tetel.tex +++ b/fejezetek/09_tetel.tex @@ -1,46 +1,59 @@ -\section{9. tétel} +\section{9. tétel: hálózatok és folyamok} -\begin{definicio}{PÁROSÍTÁS} -\textbf{Párosításnak} vagy \textbf{részleges párosításnak} nevezünk egy M élhalmazt, ha semelyik két élnek nincsen közös pontja. Az ilyen éleket \textbf{független éleknek} nevezzük. A részleges párosítás \textbf{lefedi} éleinek végpontjait. Egy párosítás \textbf{teljes párosítás}, ha a gráf minden pontját lefedi. +\begin{definicio}{HÁLÓZAT} +Legyen G egy irányított gráf. Rendeljünk minden éléhez egy c(e) nemnegatív számot, amit az él \textbf{kapacitásának} nevezünk. Jelöljünk ki két pontot, s-et és t-t G-ben, melyet \textbf{termelőnek} és \textbf{fogyasztónak} nevezünk. Ekkor a (G,s,t,c) négyest \textbf{hálózatnak} nevezzük. \end{definicio} -\begin{definicio}{FLEN/LEFOGÓ ÉLEK/PONTOK} -Jelöljük $\nu(G)$-vel a G gráfban található \textbf{független élek} maximális számát. $X \subseteq V(G)$ egy \textbf{lefogó ponthalmaz}, ha G minden élének legalább egyik végpontját tartalmazza. A lefogó pontok minimális számát $\tau(G)$-vel jelöljük. $Y \subseteq E(G)$ \textbf{lefogó élhalmaz}, ha minden pontot lefog. A lefogó élek minimális számát $\rho(G)$ jelöli. $X \subseteq V(G)$ \textbf{független ponthalmaz}, ha nincs benne két szomszédos pont. A független pontok maximális száma $\alpha(G)$ +\begin{definicio}{FOLYAM, FOLYAMÉRTÉK} +Legyen f(e) az a ``vízmennyiség'', ami az e élen folyik át. Ez az f függvény \textbf{megengedett függvény}, ha $f(e) \leq c(e)$ minden élre és +$$m(v) = \sum\{f(e)|e\,\,\text{végpontja}\,\,v\} - \sum\{f(e) | e\,\,\text{kezdőpontja}\,\,v\} = 0$$ +minden $v\in V(G)$-re, kivéve az s és t pontokat. Egy megengedett függvényt \textbf{folyamnak} hívunk. Könnyen belátható, hogy $m(t) = -m(s)$. Ezt a közös értéket a folyam értékének nevezzük és $m_f$-el jelöljük. Egy élt \textbf{telítettnek} hívunk egy folyamban, ha $f(e) = c(e)$ és \textbf{telítetlennek}, ha $f(e) < c(e)$. \end{definicio} -\begin{tetel}{CUCCOS VISZONY TÉTEL} -Minden G gráfra -$$\nu(G) \leq \tau(G)$$ -$$\alpha(G) \leq \rho(G)$$ -\end{tetel} +\begin{definicio}{VÁGÁS} +Legyen $s \in X \subseteq V(G) \backslash {t}$, sem X, sem $V(G) - X$ nem üres halmaz. Azoknak az éleknek a C halmazát, melyeknek egyik végpontja X-beli, másik $V(G) - X$-beli, a hálózati folyam egy (s,t)-\textbf{vágásának} nevezzük. A \textbf{vágás értéke}, c(C), azon éleken levő kapacitások összege, melyek egy X-beli pontból egy $V(G) - X$-beli pontba mutatnak. Ezeket előremutató éleknek nevezzük. Tehát a vágás értékében nem játszanak szerepet a visszafelé mutató élek, vagyis azok, melyek egy X-beli pontba mutatnak. +\end{definicio} -\begin{bizonyitas}{} -Legyen M maximális méretű független élhalmaz. Mivel pusztán M éleinek lefogásához legalább $|M|$ pontra van szükség, ezért $\tau(G) \geq |M| = \nu(G)$. -Hasonlóan bizonyítjuk a második állítást is. -\end{bizonyitas} +\begin{tetel}{JAVÍTÓ ÚT HÁLÓZATRA Algoritmus} +Legyen a gráfban $s = v_0, v_1... v_k = t$ egy út, aminek most nem kell feltétlenül az irányítás szerint haladnia. Növelhetjük a folyam értékét abban az esetben, ha minden $i = 0,1,2,...,k-1$-re vagy $e_i = (v_i , v_{i + 1})$ és $f(e_i) < c(e_i) $, vagy $e_i = (v_{i + 1} , v_i )$ és $f(e_i) > 0 $. +Ekkor az első típusú éleken növeljük a folyam értékét, míg a második típusúakon csökkentjük, így az összesen folyamérték nő. Az ilyen utakat javító utaknak hívjuk.\\ Egy folyam értéke akkor és csak akkor maximális, ha nincs javító út s-ből t-be. +\end{tetel} -\begin{tetel}{GALLAI TÉTEL I.} -Minden olyan G gráfra, mely hurokmentes: -$$\tau(G) + \alpha(G) = v(G) = n$$ +\begin{tetel}{MAXIMÁLIS FOLYAM} +Egy folyam értéke akkor és csak akkor maximális, ha nincs javító út s-ből t-be. \end{tetel} \begin{bizonyitas}{} -Egy X halmaz pontjai akkor és csak akkor függetlenek, ha a $V(G)\backslash X$ halmaz lefogó ponthalmaz. Hiszen ha X nem független, akkor van két összekötött pont, és így $V(G)\backslash X$ nem fogja le ezt az élt. Fordítva, ha $V(G)\backslash X$ nem fog le egy huroktól különböző élt, akkor X-ben ennek az élnek mindkét végpontja szerepel. Tehát $\tau(G) \leq |V(G)\backslash X|$ teljesül minden X független ponthalmazra. Ebből pedig következik, hogy a $\tau(G) + \alpha(G) \leq v(G)$. Hasonlóan $\alpha(G) \geq |V(G) \backslash Y|$ minden Y lefogó ponthalmazra, amiből $\tau(G) + \alpha(G) \geq v(G)$ következik. +Legyen P egy javító út. Ekkor P minden első típusú élére a $c(e) - f(e)$, második típusú élére pedig f(e) érték szigorúan pozitív. Legyen ezeknek minimuma d. Az első típusú élekre növeljük f(e)-t d-vel, második típusúaknál csökkentsük f(e)-t d-vel. Ekkor a módosított folyam is megengedett marad, értéke viszont d-vel nőtt. T.f.h. nincs javító út s-ből t-be. Lehetnek azonban olyan pontok a gráfban amelyek elérhetőek s-ből javító úton. Legyen az ilyen pontok halmaza $X \subset V(G)$. Ekkor sem X, sem $V(G) - X$ nem üres, hiszen $s \in X, t\in V(G) - X$. Tekintsünk egy olyan e élt, mely egy X-beli x pontból egy nem X-beli y-ba mutat. Ekkor $f(e) = c(e)$, hiszen ellenkező esetben az s-ből x-be vezető javító út e-vel meghosszabbítva egy s-ből y-ba vezető javító utat szolgáltatna. Ugyanígy egy olyan élre, ami egy nem X-beliből egy X-belibe mutat, teljesül, hogy f(e) = 0. Tehát az X és $V(G) - X$ között futó élek mind telítettek, és a visszafele mutató éleket nem használjuk, tehát ezen a vágáson nem folyhat több víz. Vagyis f maximális folyam. \end{bizonyitas} -\begin{tetel}{GALLAI TÉTEL II.} -Minden olyan G gráfra, melyben nincs izolált pont: -$$\nu(G) + \rho(G) = v(G) = n$$ +\begin{tetel}{FORD-FULKERSON (MAXFLOW-MINCUT) TÉTEL} +A maximális folyam értéke egyenlő a minimális vágás értékével, azaz +$$max\{m_f|f\,\,egy\,\,folyam\,\,\text{s-ből}\,\,t-be\} = min(c(C)|C\,\,\text{vágás})$$ \end{tetel} \begin{bizonyitas}{} -Egy $\nu(G)$ elemű X független élhalmaz lefog $2\nu(G)$ különböző pontot. A többi pont (mivel nincs izolált) nyilván lefogható $v(G) - 2\nu(G)$ éllel, így $v(G) - \nu(G) \geq \rho(G)$. Másrészt, ha Y egy minimális lefogó élhalmaz, akkor Y néhány (k darab) diszjunkt csillag egyesítése. Ha ugyanis Y tartalmazna kört, akkor annak bármely élét, ha pedig 3 hosszú utat, akkor a közepét el lehetne hagyni Y-ból, mert a többi él még mindig lefogná az összes pontot. Így $\rho(G) = v(G) - k$. Minden csillagból kiválasztunk egy élt, az így kapott élhalmaz nyilván független. Tehát $\nu(G) \geq k = v(G) - \rho(G)$. +A maximális folyam nyilván nem lehet nagyobb a minimális vágásnál, hiszen ha minden előremutató él telített, a visszafele mutató éleken pedig 0 a folyam értéke, akkor ezen a vágáson nem folyhat át több víz. Az előző tételben beláttuk, hogy ha létezik egy f maximális folyam, akkor létezik ilyen értékű vágás. Azt, hogy maximális értékű folyam mindig létezik, a következő tételben bizonyítjuk. \end{bizonyitas} -\begin{tetel}{TUTTE-TÉTEL} -Egy G gráfban akkor és csak akkor van teljes párosítás, ha minden $X \subseteq V(G)$-re $c_p(G - X)\leq |X|$, azaz akárhogy hagyunk el a gráfból k pontot, a maradékban a páratlan komponensek száma nem lehet több, mint k. +\begin{tetel}{EDMONDS-CARP TÉTEL} +Ha mindig a legrövidebb javító utat vesszük, akkor a maximális folyam meghatározásához szükséges lépések száma felülről becsülhető a pontok számának polinomjával. \end{tetel} -\begin{bizonyitas}{} -(csak szükséges): Ha G-ben van teljes párosítás, akkor nyilvánvalóan teljesül a feltétel. Hiszen ha elhagyunk a gráfból X-et, akkor a páratlan komponensek mindegyikéből az eredeti gráfban indul ki legalább egy párosításbeli él, és ezek az élek csak egy-egy (különböző) X-beli pontba mehetnek. Tehát $c_p(G - X) \leq |X|$. -\end{bizonyitas} +\begin{tetel}{EGÉSZÉRTÉKŰSÉGI LEMMA} +Ha (G,s,t,c) hálózatban minden e él c(e) kapacitása egész szám, akkor létezik olyan f maximális folyam, hogy f a G gráf minden élén egész értéket vesz fel. Az ilyen folyamot \textbf{egészfolyamnak} nevezzük. +\end{tetel} + +\begin{tetel}{A FOLYAMPROBLÉMA ÁLTALÁNOSÍTÁSAI} +T.f.h. a hálózatban több termelő, $s_1, s_2,...,s_k$ és több fogyasztó, $t_1, t_2,..t_k$ van. A feladat az összes termelőtől az összes fogyasztóig eljutó folyam maximalizálása. Vegyünk fel két s', t' pontot, és kössük össze s'-t az összes termelővel, t'-t pedig az összes fogyasztóval, az élek kapacitása ezek között pedig legyen $\infty$. +\\ +Ekkor az s' és a t'-t vesszük termelőnek és fogyasztónak, innen triviális a megoldás. +\\ +\\ +Ha nem csak élekhez, hanem pontokhoz is rendelhetünk c(v) kapacitásokat és megköveteljük, hogy minden v-re +$\sum_{u,v\in E}^{} f(u,v) \leq c(v)$ +, akkor minden v pontot helyettesítsünk két ponttal, v' és v''-vel. Ha egy él az u pontból a v pontba mutatott, akkor helyette vegyünk fel egy u''-ból v'-be mutató élet a hozzá tartozó kapacitással együtt, ezen kívül minden v'-ből mutasson c(v) kapacitású él v''-be. +\\ +\\ +Amennyiben irányítatlan élek is szerepelnek a hálózatban, akkor cseréljük le őket két, átellenes irányított éllel, mindkettő kapacitása legyen az irányítatlan él kapacitásával egyenlő. +\end{tetel} \ No newline at end of file diff --git a/fejezetek/10_tetel.tex b/fejezetek/10_tetel.tex index a7ee878..b687c99 100644 --- a/fejezetek/10_tetel.tex +++ b/fejezetek/10_tetel.tex @@ -1,43 +1,65 @@ -\section{10. tétel} +\section{10. tétel: Menger tételei} -\begin{definicio}{PÁROSÍTÁS} -\textbf{Párosításnak}, vagy \textbf{részleges párosításnak} nevezünk egy M élhalmazt, ha semelyik két élnek közös pontja. Az ilyen éleket független éleknek nevezzük. A részleges párosítás lefedi éleinek végpontjait. Egy párosítás \textbf{teljes párosítás}, ha a gráf minden pontját lefedi. +\begin{definicio}{DISZJUNKT UTAK} +Vegyük (G,s,t,c) folyamot, ezen belül veszünk utakat. \textbf{Páronként éldiszjunkt vagy élidegen útnak} nevezünk utakat, ha páronként nincsen közös élük. \textbf{Belsőleg pontdiszjunkt utaknak} nevezünk utakat, ha páronként nincs közös pontjuk. \end{definicio} -\begin{definicio}{ALTERNÁLÓ ÚT} -Hozzunk létre egy részleges párosítást egy páros gráfon belül, ekkor a párosítás során bevett élek legyenek az X élhalmaz elemei. Alternáló útnak nevezünk olyan élsorozatot, ami felváltva tartalmaz nem-X beli és X-beli élt. -\end{definicio} +\begin{tetel}{DISZJUNKT FOLYAMOK} +Ha a kapacitások egész számok, akkor van olyan maximális folyam, melyben minden élen a folyam értéke egész. Így nyilvánvaló, hogy ha a kapacitás minden élen 1 vagy 0, akkor van olyan maximális folyam, melynek minden élén a folyam értéke vagy 1 vagy 0. Ha elhagyjuk ez utóbbi éleket, akkor diszjunkt utakat kapunk s-ből t-be. Ezeknek a számát úgy is meg tudjuk kapni, hogy veszünk egy minimális vágást és az élhalmazának az elemszámával lesz egyenlő a diszjunkt utak száma. +\end{tetel} -\begin{definicio}{JAVÍTÓ ÚT} -G(A,B,E) páros gráfban van már párosítás (nem teljes). P út \textbf{javító út}, ha párosítatlan A-ból indul, párosítatlan B-be érkezik és P alternáló út. Ha ez a javító út elkészül, úgy tudjuk bevenni, hogy a ``nem-X''-beli éleket bevesszük és a régebben X-beli éleket pedig nem. -\end{definicio} +\begin{tetel}{DISZJUNKT FOLYAM ALGORITMUS} +Vegyünk tetszőleges hálózatot, és futtassuk le a fentebb leírt módszert rajta úgy, hogy vegyünk egy minimális vágást a hálózatban. A visszaélek (tehát amik a t-t tartalmazó halmazból az s-et tartalmazó halmazba mennek) legyenek 0 értékűek, egyébként pedig 1 értékűek az élek. Ebben már meg lehet keresni a diszjunkt utakat. +\end{tetel} -\begin{definicio}{JAVÍTÓ UTAS ALGORITMUS (MÓDOSÍTOTT BFS)} -Bemenetként kapjuk meg M párosítást valamint G(A,B,E) gráfot. Ha létezik ebben a gráfban javító út, akkor azt vegyük be, ezt folytassuk addig, amíg létre tudunk hozni újabb és újabb javító utakat. Ha már nem tudunk újabb élt bevenni a párosításba, akkor álljunk le. Ebben az esetben már maximális a párosítás. Az algoritmus mohó módon működik. -\end{definicio} +\begin{tetel}{MENGER Tétel} +Ha G egy irányított gráf, $s,t\in V(G)$, akkor az s-ből t-be vezető páronként élidegen irányított utak maximális száma megegyezik az összes irányított s-t utat lefogó élek minimális számával. +\end{tetel} -\begin{tetel}{KŐNIG-TÉTEL} -Ha G páros gráf, akkor $\nu(G) = \tau(G)$. Ha G-ben nincs izolált pont, akkor $\alpha(G) = \rho(G)$ is teljesül. +\begin{bizonyitas}{} +Ha létezik G-ben k darab ilyen irányított s-t út, akkor az s-t utakat lefogó élek száma nyilvánvalóan legalább k. Nézzük az egyenlőtlenség másik oldaláról is. T.f.h. az s-t utakat lefogó élek minimális száma k. Legyen minden él kapacitása 1. Az így kapott hálózatban a maximális folyam értéke legalább k. Ekkor a Ford-Fulkerson tétel miatt a minimális vágás értéke is legalább k. Azt már beláttuk, hogy van olyan maximális folyam, ahol minden élen a folyamérték 0 vagy 1. Lássuk be, hogy G-ben van k élidegen irányított s-t út. Egy ilyen út legalább van, különben nem lehetne k a folyam értéke. Az ebben az útban szereplő élek kapacitását csökkentsük nullára, így a folyam értéke legalább k-1 lesz. Folytassuk a gondolatmenetet és kapunk k élidegen irányított s-t utat. +\end{bizonyitas} + +\begin{tetel}{MENGER Tétel} +Ha G egy irányított gráf, $s,t\in V(G)$ két nem szomszédos pont, akkor az s-ből t-be vezető, végpontoktól eltekintve pontidegen irányított utak maximális száma megegyezik az összes irányított s-t utat s és t felhasználása nélkül lefogó pontok minimális számával. \end{tetel} \begin{bizonyitas}{} -Először az első állítást bizonyítjuk. Legyen M egy olyan párosítás, mely a javító utak módszerével már nem bővíthető. Legyen $U = A - X$, T' azon B-beli pontok halmaza, amelyek élerhetőek U-ból alternáló úton. T pedig ezek párjainak halmaza. Legyen $Y = T' \cup (X - T)$. Ennek a halmaznak éppen $|M|$ pontja van. Ezek minden élt lefognak, hiszen $N(T\cup U) = T'$, ugyanúgy, mint a Hall-tétel bizonyításában. Így $\tau(G) \leq |M| \leq \nu(G)$ amiből viszont már következik az állítás a CUCCOS VISZONY (\textit{8. tétel}) tétel alapján. Most már könnyű belátni a második állítást is, Gallai két tétele miatt ugyanis $\nu(G) + \rho(G) = \tau(G) + \alpha(G)$ és imént beláttuk, hogy $\nu(G) = \tau(G)$. +Készítsünk egy új G' gráfot. Minden pontot húzzunk szét két ponttá. Ha a G gráfban egy minimális ponthalmaz lefogja az irányított s-t utakat, akkor a lefogó pontoknak megfelelő (v', v'') pontok is lefogó ponthalmazt alkotnak s-t-re G'-ben. Kevesebb él nem elég a lefogáshoz, mert ha a lefogó élek közt lennének (a'', b') típusú élek, akkor ezeket helyettesítjük (b', b'')-vel, ha $b' \neq t$, illetve (a', a'')-val, ha $b' = t$. Így pedig G-ben egy kisebb lefogó ponthalmazt nyernénk. Vagyis a G-beli lefogó pontok és a G'-beli lefogó élek minimális száma egyenlő. Az is könnyen látható, hogy G-beli pontdiszjunkt utaknak G'-ben éldiszjunkt utak felelnek meg és fordítva, G'-beli élidegen utaknak G-ben pontidegen utaknak felelnek egy. Innen az előző tétel segítségével bizonyítjuk az állítást. \end{bizonyitas} -\begin{tetel}{HALL-TÉTEL} -Egy $G = (A,B)$ páros gráfban akkor és csak akkor van A-t lefedő párosítás, ha minden $X \subseteq A$ részhalmazra $|N(X)| \geq |X|$ (ezt \textbf{Hall-feltételnek} nevezzük). +\begin{tetel}{MENGER Tétel} +Ha G egy irányítatlan gráf, $s,t\in V(G)$, akkor az s-ből t-be vezető élidegen irányítatlan utak maximális száma megegyezik az összes irányítatlan s-t utat lefogó élek minimális számával. +\end{tetel} + +\begin{bizonyitas}{} +Vezessük vissza irányított gráfos problémára. A bizonyítás a számításelmélet jegyzet 70. oldalán található, hosszú. +\end{bizonyitas} + +\begin{tetel}{MENGER Tétel} +Ha G egy irányítatlan gráf, $s,t\in V(G)$ két nem szomszédos pont, akkor az s-ből t-be vezető, végpontoktól eltekintve pontidegen irányítatlan utak maximális száma megegyezik az összes irányítatlan s-t utat s és t felhasználása nélkül lefogó pontok minimális számával. +\end{tetel} + +\begin{bizonyitas}{} +Előző tételhez hasonlóan. +\end{bizonyitas} + +\begin{definicio}{TÖBBSZÖRÖS ÖSSZEFÜGGŐSÉG} +Egy G gráfot \textbf{k-szorosan összefüggőnek} nevezünk, ha legalább k+1 pontja van, és akárhogy hagyunk el belőle k-nál kevesebb pontot, a maradék gráf összefüggő marad. A gráf \textbf{k-szorosan élösszefüggő}, ha akárhogy hagyunk el belőle k-nál kevesebb élt, összefüggő gráfot kapunk. A k-szoros összefüggőség ``erősebb'' a k-szoros élösszefüggőségnél. +\end{definicio} + +\begin{tetel}{A G gráf akkor és csak akkor k-szorosan összefüggő, ha legalább $k + 1$ pontja van, és bármely két pontja között létezik k pontidegen út.} +Hasonlóan, G akkor és csak akkor k-szorosan élösszefüggő, ha bármely két pontja között létezik k élidegen út. \end{tetel} \begin{bizonyitas}{} -??? \\ -Ha létezik A-t fedő párosítás, akkor minden A-beli pontnak különböző párja van, tehát tetszőleges $X \subseteq A$-ra. Azt kell igazolnunk, hogy $\nu(G) \geq |A|$. Legyen U minimális (azaz $\tau(G)$ méretű) lefogó ponthalmaz, és legyen $U_A :=U\cap A,U_B:=U\cap B$. Mivel U lefogja az $X := A \backslash U_A$-ból induló éleket, ezért $N(X) \subseteq U_B$, tehát $|(NX)| \leq |U_B|$. A Kőnig-tétel ill. a Hall-feltétel miatt -$$\nu(G) = \tau(G) = |U| = |U_A| + |U_B| \geq |U_A| + |N(X)| \geq |U_A| + |X| = |A|$$ +Először a második részt bizonyítjuk. Ha G k-szorosan élösszefüggő, akkor az u-v utakat lefogó élek minimális száma nyilván legalább k. Így Menger idevágó tétele szerint élidegen u-v utak maximális száma legalább k. Ennek a résznek a megfordítása is következik a Menger tételből. Ha G k-szorosan összefüggő, akkor bármely két, $u,v\in V(G)$ pontot választva legalább k darab, u-tól és v-től különböző pontra van szükség ahhoz, hogy lefogjuk az összes u és v közötti utat (u-v éltől eltekintve). Így az utolsó Menger tétel alapján létezik u és v között k pontidegen út. Ha G bármely két pontja között létezik k pontidegen út, akkor nyilván nem lehet ezeket k-nál kevesebb ponttal lefogni, tehát a k-szoros összefüggőség következik ebből. \end{bizonyitas} -\begin{tetel}{FROBENIUS-TÉTEL} -Egy $G = (A,B)$ páros gráfban akkor és csak akkor van teljes párosítás, ha $|A| = |B|$ és $|N(X)| \geq |X|$ minden $X \subseteq A$-ra. +\begin{tetel}{MENGER Tétel} +A legalább 3 pontú G gráf akkor és csak akkor 2-szeresen összefüggő, ha tetszőleges két pontján át vezet kör. Igaz az is, hogy akkor és csak akkor 2-szeresen összefüggő, ha bármely két élén át vezet kör. \end{tetel} \begin{bizonyitas}{} -A két feltétel szükségessége nyilvánvaló. Ha viszont teljesül a második feltétel, akkor a Hall-tétel miatt van A-t fedő párosítás. Mivel azonban $|A| = |B|$, ezért ez lefedi B-t is. +Az első állítás triviális, hiszen két pontidegen u-v út együtt egy kört ad, amely átmegy u-n és v-n. A második állítás pedig az elsőből következik. Lássuk be, hogy ha G 2-szeresen összefüggő, akkor e, f éleken keresztül van kör. Vegyünk fel két pontot úgy, hogy ezekkel osszuk két részre az e illetve az f élt. Az így kapott gráf is 2-szeresen összefüggő. Az első állítás szerint ezen a két ponton át is megy kör, és ez a kör az eredeti gráfban átmegy e-n és f-en. A megfordítás ismét nyilvánvaló. \end{bizonyitas} diff --git a/fejezetek/11_tetel.tex b/fejezetek/11_tetel.tex index 974b42e..f83296d 100644 --- a/fejezetek/11_tetel.tex +++ b/fejezetek/11_tetel.tex @@ -1,42 +1,80 @@ -\section{11. tétel} +\section{11. tétel: BFS és Kruskal algoritmusa} -% a kommentezett reszek allitolag nem a tetel reszei, ha valaki jobban tudja, nyugodtan allitsa oket vissza vagy torolje +\url{http://cs.bme.hu/bsz2/bfs.pdf} -\begin{definicio}{REGULÁRIS GRÁF} -Egy gráfot \textbf{$k$-regulárisnak} nevezünk, ha minden pont foka $k$. Egy gráfra azt mondjuk, hogy \textbf{reguláris}, ha létezik olyan k, amire k-reguláris. -\end{definicio} - -\begin{tetel}{REGULÁRIS GRÁFBAN TELJES PÁROSÍTÁS} -Minden reguláris páros gráfban létezik teljes párosítás. +\begin{tetel}{A BFS-algoritmus futása során a következőket tartjuk nyilván} +\begin{itemize} +\item $b(i) (i = 1,2,3,...)$: az i-edikként bejárt csúcs +\item $t(v) (v \in V)$: v távolsága s-től +\item $m(v) (v \in V, v \neq s)$: v-t megelőző csúcs az algoritmus által megtalált, s-ből v-be vezető legrövidebb úton +\item j: az eddig bejárt csúcsok száma +\item k: a jelenleg aktív csúcs sorszáma a $b(1), b(2),...$ sorozatban. +\end{itemize} \end{tetel} -\begin{bizonyitas}{} -Vegyünk egy páros gráfot A, B pontosztállyal, ami k-reguláris. Először lássuk be, hogy ugyanaz az elemszáma A és B-nek. A-ból $k\cdot n$ él megy ki, B-be pedig $k \cdot m$ él megy. $k\cdot n = k\cdot m$, osszuk le k-val $\rightarrow n = m$. Hall-feltétel: $|N(A) \geq |A|$. A-ból $k\cdot|A|$ él megy ki, ezek a N(A) csúcsokba mennek. Ez annyit jelent, hogy egy N(A)-beli csúcsba átlagosan $(k\cdot |A|) \backslash |N(A)|$ él megy, tehát $(k\cdot |A|) \backslash |N(A)| \leq k$ (mivel egy csúcsba maximum k él megy). Szorozzuk be $|N(A|$-val és osszunk k-val. $|A| \leq |N(A)|$, Hall feltétel OK, Frobenius-tétel OK, létezik teljes párosítás. -%Tegyük fel, hogy G k-reguláris és rendelkezik A, B pontosztályokkal és $k \geq 1$, és tekintsünk tetszőleges $X \subseteq A$ ponthalmazt. Mivel X-beli pontokból összesen $|X|\cdot k$ darab él indul ki, és N(X) minden pontjába ezek közül legfeljebb k fut be, ezért -%$$|N(X)| \geq \frac{1}{k}k|X| = |X|$$ -%Az $X = A$ esetre ugyanezzel a módszerrel $|A| = |B|$, mert $N(A) = B$ és így az A-beli pontokból kiinduló élekből N(A) minden pontjába pontosan k él fut be. Ebből Frobenius tétellel kijön a teljes párosítás. -\end{bizonyitas} +\begin{tetel}{BFS Algoritmus} +Bemenete a BFS algoritmusnak: Egy G gráf és egy $s \in V$ csúcs. +\\ +\textbf{Az algoritmus:} +\begin{itemize} +\item{\textbf{0.}} $j = 1$, $k = 1$, $b(1) = s$, $t(s) = 0$, minden $v \neq s$-re $t(v) = *$ +\item{\textbf{1.}} HA a b(k) csúcsnak van olyan v szomszédja, amelyre $t(v) = *$, AKKOR: + \begin{itemize} + \item $j = j + 1$ + \item $b(j) = v$ + \item $t(v) = t(b(k)) + 1$ + \item $m(v) = b(k)$ + \item Vissza az \textbf{1.} lépéshez. + \end{itemize} +\item{\textbf{2.}} + \begin{itemize} + \item Ha $k = j$, akkor \textbf{STOP}. + \item $k = k + 1$ + \item Vissza az \textbf{1.} lépéshez. + \end{itemize} +\end{itemize} -\begin{definicio}{ÉLSZÍNEZÉS} -Egy G gráf élei \textbf{k színnel színezhetőek}, ha minden élt ki lehet színezni k színnel úgy, hogy bármely két szomszédos él színe különböző legyen. G \textbf{élkromatikus száma} $\chi_e(G) = k$, ha G élei k színnel színezhetőek, de $k - 1$-gyel már nem. -\end{definicio} +% Mivel van, akinek a matematikus notáció nem túl olvasható (pl. ezen részlet szerzője), ezért alább olvasható ugyanezen algoritmus C++-szerűen refaktorálva, bizonyos Clean Code szempontokra ügyelve. Az alább látható algoritmus ténylegesen refaktorálás és teljesen egyenértékű a fentivel; nem tartalmaz módosításokat. + +% \afterpage{% +% \begin{framed} +% \noindent \large{\textbf{BFS algoritmus, C++-szerűen}} +% \lstinputlisting[language=C]{res/bfs.cpp} +% \end{framed} +% \clearpage +% } + + +Az algoritmus lineáris futásidejű, tehát $c \cdot e$ lépésszámú. -\begin{tetel}{VIZING-TÉTEL} -Ha G egyszerű gráf, akkor $\chi_e(G) \leq \Delta(G) + 1$. Bizonyítás $\emptyset$. \end{tetel} -\begin{tetel}{ÉLKROMATIKUS SZÁM} -Tetszőleges G gráfra $\chi_e(G) \geq \Delta(G)$ áll. +\begin{definicio}{BFS-FA} +A BFS algoritmus futtatása után kapott F feszítőfát nevezzük \textbf{BFS fának}. F összefüggő, ha az eredeti bemeneti gráf is összefüggő volt, valamint F nem tartalmaz kört (a fa definíciója miatt). Az is megfigyelhető, hogy bármely $v \in V$ csúcsra az s-et v-vel összekötő F-beli út a legrövidebbek egyike az s-ből a v-be vezető G-beli utak közül. +\end{definicio} + +\begin{tetel}{Kruskal Algoritmus} +Bemenet: G gráf és az élekhez tartozó w súlyfüggvény. Az éleket rendezzük sorba úgy, hogy a legalacsonyabb költségűek legyenek először a sorban. A sorban kezdjünk előre haladni. Ha az él bevétele esetén a kapott gráf körmentes marad, akkor vegyük be. Ezt addig ismételjük, amíg van izolált pont, vagy amíg az élsorozat végére nem érünk. A kapott gráf a G gráf minimális költségű feszítőfája. +\\ +\\ +Ezt az eljárást \textbf{mohó algoritmusnak} nevezzük, mivel a végrehajtás során minden lépésben az éppen akkor a legjobbnak tűnő lehetőséget választjuk ki. \end{tetel} -\begin{bizonyitas}{} -Az egy csúcsból induló élek egymástól különböző színt kapnak, és ez speciálisan a maximális fokszámú csúcsokból induló élekre is igaz. -\end{bizonyitas} +\begin{definicio}{MINIMÁLIS SÚLYÚ FESZÍTŐFA} +Legyen G gráf és annak éleihez rendelt $w: E \rightarrow \mathbb{R}$ súlyfüggvény. A gráfnak azon feszítőfáját, melyre ez a súlyfüggvény minimális, a gráf \textbf{minimális súlyú feszítőfájának} nevezzük. +\end{definicio} -\begin{tetel}{KŐNIG-TÉTEL} -Ha G páros gráf, akkor $\chi_e(G) = \Delta(G)$ +\begin{tetel}{} +A Kruskal-algoritmus minimális súlyú feszítőfát talál. \end{tetel} \begin{bizonyitas}{} -Elég azt igazolni, hogy $\chi_e(G) \leq \Delta(G)$ az előző állítás miatt. Létezik olyan H páros gráf, melynek G részgráfja, és H minden csúcsának fokszáma $\Delta(G)$. Ha sikerül a $\Delta(G)$-reguláris H gráf éleit $\Delta(G)$ színnel kiszínezni, akkor egyúttal a G részgráf éleinek is megkapjuk egy ugyanennyi színnel való színezését. H gráf élszínezéséhez elegendő azt megmutatni, hogy tetszőleges reguláris páros gráfban létezik teljes párosítás, ezt pedig már bizonyítottuk egy fentebbi tételben. +Két állítást kell bizonyítanunk - azt, hogy feszítőfát ad az algoritmus, és azt, hogy az minimális. Kezdjük az elsővel. Legyen G egy összefüggő, súlyozott gráf (tehát van súlyfüggvény hozzárendelve) és F legyen egy részgráfja, amit az algoritmus produkál. F-ben nem lehet kör, mivel az algoritmus egy fát épít. F nem lehet nem összefüggő sem, mivel az első él (amit az algoritmus talál), ami összeköt két független komponenst F-ben még nem hozhat létre kört. Tehát F feszítőgráf. +\\ +A következő állítást teljes indukcióval bizonyítjuk be. Legyen H egy élhalmaz, amit az algoritmus a futása során generál, a minimális súlyú feszítőfának ezt a H élhalmazt tartalmaznia kell, hiszen ebben vannak minimális súlyú élek. +Az első lépésnél az állítás igaz, hiszen H üres, és minden gráfnak részgráfja az üres gráf. A k-adik lépésnél vegyük az állítást igaznak és legyen T a minimális súlyú feszítőfa, ami tartalmazza H-t. Ha az algoritmus által kiválasztott következő él, e, szintúgy benne van a T-ben, akkor az állítás szintúgy igaz a $H + {e}$ élhalmazra. Különben $T + {e}$ élhalmazban létezik egy C kör, és ezen kívül még létezik egy olyan f él, ami befejezi a C kört, de nem része H-nak. (Ha nem létezne f, akkor e-t már nem vehettük volna be, mivel kört produkált volna $H + f$-ben). Ekkor $T - {f} + {e}$ szintúgy egy fa, és azonos az összsúlya T-jével, hiszen T-nek minimális az összsúlya, és f-nek a súlya nem lehet kisebb, mint e-nek, hiszen akkor e helyett az f élet választotta volna az algoritmus. Tehát $T - {f} + {e}$ egy minimális súlyú feszítőfa. Ezek alapján az indukciós feltevést bebizonyítottuk, és az állítás igaz, amikor H egy feszítőfává válik, ami csak akkor igaz, ha H egy minimális súlyú feszítőfa. \end{bizonyitas} + +\begin{tetel}{Alkalmazás} +Pontok - városok, élek - utak, súly - hossz; Villamos hálózatok, Kirchhoff-törvények, áramköri elemekhez súlyokat párosítunk +\end{tetel} diff --git a/fejezetek/12_tetel.tex b/fejezetek/12_tetel.tex index 7c1accc..1c5f367 100644 --- a/fejezetek/12_tetel.tex +++ b/fejezetek/12_tetel.tex @@ -1,41 +1,46 @@ -\section{12. tétel} - -\begin{definicio}{HÁLÓZAT} -Legyen G egy irányított gráf. Rendeljünk minden éléhez egy c(e) nemnegatív számot, amit az él \textbf{kapacitásának} nevezünk. Jelöljünk ki két pontot, s-et és t-t G-ben, melyet \textbf{termelőnek} és \textbf{fogyasztónak} nevezünk. Ekkor a (G,s,t,c) négyest \textbf{hálózatnak} nevezzük. -\end{definicio} - -\begin{definicio}{FOLYAM, FOLYAMÉRTÉK} -Legyen f(e) az a ``vízmennyiség'', ami az e élen folyik át. Ez az f függvény \textbf{megengedett függvény}, ha $f(e) \leq c(e)$ minden élre és -$$m(v) = \sum\{f(e)|e\,\,vegpontja\,\,v\} - \sum\{f(e) | e\,\,kezdopontja\,\,v\} = 0$$ -minden $v\in V(G)$-re, kivéve az s és t pontokat. Egy megengedett függvényt \textbf{folyamnak} hívunk. Könnyen belátható, hogy $m(t) = -m(s)$. Ezt a közös értéket a folyam értékének nevezzük és $m_f$-el jelöljük. Egy élt \textbf{telítettnek} hívunk egy folyamban, ha $f(e) = c(e)$ és \textbf{telítetlennek}, ha $f(e) < c(e)$. -\end{definicio} - -\begin{definicio}{VÁGÁS} -Legyen $s \in X \subseteq V(G) \backslash {t}$, sem X, sem $V(G) - X$ nem üres halmaz. Azoknak az éleknek a C halmazát, melyeknek egyik végpontja X-beli, másik $V(G) - X$-beli, a hálózati folyam egy (s,t)-\textbf{vágásának} nevezzük. A \textbf{vágás értéke}, c(C), azon éleken levő kapacitások összege, melyek egy X-beli pontból egy $V(G) - X$-beli pontba mutatnak. Ezeket előremutató éleknek nevezzük. Tehát a vágás értékében nem játszanak szerepet a visszafelé mutató élek, vagyis azok, melyek egy X-beli pontba mutatnak. -\end{definicio} - -\begin{tetel}{JAVÍTÓ ÚT HÁLÓZATRA Algoritmus} -Legyen a gráfban $s = v_0, v_1... v_k = t$ egy út, aminek most nem kell feltétlenül az irányítás szerint haladnia. Növelhetjük a folyam értékét abban az esetben, ha minden $i = 0,1,2,...,k-1$-re vagy $e_i = (v_i , v_{i + 1})$ és $f(e_i) < c(e_i) $, vagy $e_i = (v_{i + 1} , v_i )$ és $f(e_i) > 0 $. -Ekkor az első típusú éleken növeljük a folyam értékét, míg a második típusúakon csökkentjük, így az össz folyamérték nő. Az ilyen utakat javító utaknak hívjuk.\\ Egy folyam értéke akkor és csak akkor maximális, ha nincs javító út s-ből t-be. -\end{tetel} - -\begin{tetel}{MAXIMÁLIS FOLYAM} -Egy folyam értéke akkor és csak akkor maximális, ha nincs javító út s-ből t-be. +\section{12. tétel: Legrövidebb utak adott csúcsból: Dijsktra és Ford algoritmusai} + +% \begin{tetel}{Az algoritmusok futása során a következőket tartjuk számon} +Az algoritmusok futása során a következőket tartjuk számon: + +\begin{itemize} +\item[] l(e) - az e él hossza +\item[] d(v) - a v pontba az s kezdőpontból eddigi legrövidebb út hossza. d(s) = 0. +\end{itemize} +Kulcslépések: +\begin{itemize} +\item[\textbf{(*)}]$d(s) = 0$, minden $v \neq s$-re $d(v) = \infty$ +\item[\textbf{(**)}]Ha x-ből vezet egy e él y-ba és $d(y) > d(x) + l(e)$, akkor $d(y) = d(x) + l(e)$. +\end{itemize} +%\end{tetel} + +\begin{tetel}{DIJKSTRA-ALGORITMUS} +\textbf{Az algoritmus:} +\begin{itemize} +\item[\textbf{0.}] $S = {s}, T = V\backslash {s}$ és \textbf{(*)}. +\item[\textbf{1.}] Minden S-beli pontból minden T-beli pontba vezető e élre végezzük el \textbf{(**)} javítást. +\item[\textbf{2.}] A T-beli pontok közül legyen $v_0$ az, amelyiken a d(v) érték a legkisebb. Tegyük át $v_0$-t T-ből S-be. +\item[\textbf{3.}] Ha T üres, \textbf{STOP}. Ha nem, vissza \textbf{1.} lépéshez. +\end{itemize} +Az algoritmus lépésszáma $c\cdot n^3$, mivel az 1. lépés k. elvégzésekor $|S| = k,\,\, |T| = v - k$, így az összes \textbf{(**)} hívások száma $\sum k(v-k) = \sum kv - \sum k^2$ és ennek az összege $k^3$-höz közelít.\\Az algoritmusnak létezik egy kedvezőbb futási idejű változata, $c\cdot n^2$ lépésszámmal.\\ +\textbf{Az optimalizált algoritmus:} +\begin{itemize} +\item[\textbf{0.}] $S = {s}, T = V\backslash {s}$ és \textbf{(*)}, valamint $v_0 = s$. +\item[\textbf{1.}] Csak a $v_0$-ból a T-beli pontokba vezető e élekre végezzük el a \textbf{(**)} javítást. +\item[\textbf{2.}] A T-beli pontok közül legyen $v_0$ az, amelyiken a d(v) érték a legkisebb. Tegyük át $v_0$-t T-ből S-be. +\item[\textbf{3.}] Ha T üres, \textbf{STOP}. Ha nem, vissza \textbf{1.} lépéshez. +\end{itemize} \end{tetel} -\begin{bizonyitas}{} -Legyen P egy javító út. Ekkor P minden első típusú élére a $c(e) - f(e)$, második típusú élére pedig f(e) érték szigorúan pozitív. Legyen ezeknek minimuma d. Az első típusú élekre növeljük f(e)-t d-vel, második típusúaknál csökkentsük f(e)-t d-vel. Ekkor a módosított folyam is megengedett marad, értéke viszont d-vel nőtt. T.f.h. nincs javító út s-ből t-be. Lehetnek azonban olyan pontok a gráfban amelyek elérhetőek s-ből javító úton. Legyen az ilyen pontok halmaza $X \subset V(G)$. Ekkor sem X, sem $V(G) - X$ nem üres, hiszen $s \in X, t\in V(G) - X$. Tekintsünk egy olyan e élt, mely egy X-beli x pontból egy nem X-beli y-ba mutat. Ekkor $f(e) = c(e)$, hiszen ellenkező esetben az s-ből x-be vezető javító út e-vel meghosszabbítva egy s-ből y-ba vezető javító utat szolgáltatna. Ugyanígy egy olyan élre, ami egy nem X-beliből egy X-belibe mutat, teljesül, hogy f(e) = 0. Tehát az X és $V(G) - X$ között futó élek mind telítettek, és a visszafele mutató éleket nem használjuk, tehát ezen a vágáson nem folyhat több víz. Vagyis f maximális folyam. -\end{bizonyitas} - -\begin{tetel}{FORD-FULKERSON (MAXFLOW-MINCUT) TÉTEL} -A maximális folyam értéke egyenlő a minimális vágás értékével, azaz -$$max\{m_f|f\,\,egy\,\,folyam\,\,s-bol\,\,t-be\} = min(c(C)|C\,\,vagas)$$ -\end{tetel} - -\begin{bizonyitas}{} -A maximális folyam nyilván nem lehet nagyobb a minimális vágásnál, hiszen ha minden előremutató él telített, a visszafele mutató éleken pedig 0 a folyam értéke, akkor ezen a vágáson nem folyhat át több víz. Az előző tételben beláttuk, hogy ha létezik egy f maximális folyam, akkor létezik ilyen értékű vágás. Azt, hogy maximális értékű folyam mindig létezik, a következő tételben bizonyítjuk. -\end{bizonyitas} - -\begin{tetel}{EDMONDS-CARP TÉTEL} -Ha mindig a legrövidebb javító utat vesszük, akkor a maximális folyam meghatározásához szükséges lépések száma felülről becsülhető a pontok számának polinomjával. +\begin{tetel}{FORD-ALGORITMUS} +A Ford-algoritmus megengedi a negatív súlyú éleket is, valamint az algoritmus egyszerűbb, mint a Dijsktra-algoritmus. +\begin{itemize} +\item[\textbf{0.}] Számozzuk meg az éleket 1-től e-ig, ezt rögzítsük le (tetszőleges sorrend). Legyen $i = 1$ és \textbf{(*)}. +\item[\textbf{1.}] A rögzített sorrendben végezzük el a \textbf{(**)} javítást minden élen. +\item[\textbf{2.}] $i = i + 1$. Ha $i > v$, akkor \textbf{STOP}. Különben folytassuk \textbf{1.} lépésnél. +\end{itemize} +Az algoritmus lépésszáma $c\cdot e\cdot v$, ez jóval nagyobb általában, mint $n^2$, ezt az árat kell megfizetnünk a negatív élhossz feature-ért. Mi történik negatív kör esetén? Ezt valahogyan fel kell ismerni! A módosított 2. lépés, ami jelzi, ha negatív összsúlyú körbe kerültünk: +\begin{itemize} +\item[\textbf{2.}] Ha az \textbf{1.} lépés során egyetlen javítás sem történt, akkor \textbf{STOP} (és megvannak a minimális úthosszak). Különben $i = i + 1$. Ha $i \leq v + 1$, folytassuk \textbf{1.} lépésnél, ha pedig $i > v + 1$, akkor \textbf{STOP} (és van negatív összsúlyú kör). +\end{itemize} \end{tetel} diff --git a/fejezetek/13_tetel.tex b/fejezetek/13_tetel.tex index c1c1a9a..edf5794 100644 --- a/fejezetek/13_tetel.tex +++ b/fejezetek/13_tetel.tex @@ -1,29 +1,53 @@ -\section{13. tétel} +\section{13. tétel: Floyd algoritmusa} -\begin{tetel}{EGÉSZÉRTÉKŰSÉGI LEMMA} -Ha (G,s,t,c) hálózatban minden e él c(e) kapacitása egész szám, akkor létezik olyan f maximális folyam, hogy f a G gráf minden élén egész értéket vesz fel. Az ilyen folyamot \textbf{egészfolyamnak} nevezzük. -\end{tetel} +\url{http://cs.bme.hu/bsz2/dfs.pdf} -\begin{tetel}{A FOLYAMPROBLÉMA ÁLTALÁNOSÍTÁSAI} -T.f.h. a hálózatban több termelő, $s_1, s_2,...,s_k$ és több fogyasztó, $t_1, t_2,..t_k$ van. A feladat az összes termelőtől az összes fogyasztóig eljutó folyam maximalizálása. Vegyünk fel két s', t' pontot, és kössük össze s'-t az összes termelővel, t'-t pedig az összes fogyasztóval, az élek kapacitása ezek között pedig legyen $\infty$. -\\ -Ekkor az s' és a t'-t vesszük termelőnek és fogyasztónak, innen triviális a megoldás. -\\ -\\ -Ha nem csak élekhez, hanem pontokhoz is rendelhetünk c(v) kapacitásokat és megköveteljük, hogy minden v-re -$\sum_{u,v\in E}^{} f(u,v) \leq c(v)$ -, akkor minden v pontot helyettesítsünk két ponttal, v' és v''-vel. Ha egy él az u pontból a v pontba mutatott, akkor helyette vegyünk fel egy u''-ból v'-be mutató élet a hozzá tartozó kapacitással együtt, ezen kívül minden v'-ből mutasson c(v) kapacitású él v''-be. +\begin{tetel}{FLOYD-ALGORITMUS} +A Floyd-algoritmus a gráfban lévő összes pontpár közt megadja a távolságokat. Ezt a Ford-algoritmussal is megtehettük volna, viszont annak a futási ideje az összes pontból kiindítva $c\cdot ev^2$-tel lett volna arányos. A Floyd-algoritmus ezt megteszi mindössze $c\cdot v^3$ alatt. A sikeres futás feltétele az, hogy a gráfban NE legyen negatív összsúlyú kör.\\ +T.f.h. G irányított gráf a $V(G) = {v_1, v_2,..., v_n}$ pontokon. A $v_i$-ből $v_j$-be mutató él hosszát, azaz súlyát, jelöljük l(i,j)-vel és t.f.h. a gráfban nincs negatív összsúlyú irányított kör. Ha nincs él $v_i$-ből $v_j$-be, akkor legyen $l(i,j) = \infty$. Továbbá $l(i,i) = 0$, minden $i = 1, 2,..., n$-re. Jelölje $d^{(k)}(i,j)$ a $v_i$-ből $v_j$-be vezető legrövidebb olyan irányított út hosszát, mely csak k-nál szigorúan kisebb pontokon megy át. Így $d^{(1)}(i,j) = l(i,j)$ és $d^{(n+1)}$ lesz az eredetileg keresett legrövidebb irányított út hossza lesz $v_i$-ből $v_j$-be. Világos, hogy a $v_i$-ből $v_j$-be vezető legrövidebb olyan út, ami csak $k + 1$-nél szigorúan kisebb pontokon megy át, vagy átmegy $v_k$-n, vagy nem. Ha nem megy át, akkor $d^{(k+1)}(i,j) = d^{(k)}(i,j)$. Ha viszont átmegy, akkor $d^{(k+1)}(i,j) = d^{(k)}(i,k) + d^{(k)}(k,j)$. Csak azt kell megnéznünk, mely esetben találunk rövidebb utat. Ezek után már világos, hogy az algoritmus lépésszáma $c\cdot v^3$-bel arányos. \\ -\\ -Amennyiben irányítatlan élek is szerepelnek a hálózatban, akkor cseréljük le őket két, átellenes irányított éllel, mindkettő kapacitása legyen az irányítatlan él kapacitásával egyenlő. +\textbf{Az algoritmus:} +\begin{itemize} +\item{\textbf{0.}} Minden i,j rendezett párra legyen $d^{(1)}(i,j) = l(i,j)$ és $k=2$. +\item{\textbf{1.}} Minden i,j rendezett párra +$$d^{(k+1)}(i,j) = min\{d^{(k)}(i,j),\,\, d^{(k)}(i,k) + d^{(k)}(k,j)\}$$ +\item{\textbf{2.}} Ha $k = n + 1$, akkor STOP. Különben $k = k + 1$ és folytassuk \textbf{1.} lépésnél. +\end{itemize} \end{tetel} -\begin{tetel}{DISZJUNKT FOLYAMOK} -Ha a kapacitások egész számok, akkor van olyan maximális folyam, melyben minden élen a folyam értéke egész. Így nyilvánvaló, hogy ha a kapacitás minden élen 1 vagy 0, akkor van olyan maximális folyam, melynek minden élén a folyam értéke vagy 1 vagy 0. Ha elhagyjuk ez utóbbi éleket, akkor diszjunkt utakat kapunk s-ből t-be. Ezeknek a számát úgy is meg tudjuk kapni, hogy veszünk egy minimális vágást és az élhalmazának az elemszámával lesz egyenlő a diszjunkt utak száma. -\end{tetel} +\begin{definicio}{IRÁNYÍTOTT ACIKLIKUS GRÁF} +Egy G gráfot akkor nevezünk \textbf{irányított aciclikus gráfnak} (DAG), ha irányított élei vannak és nem tartalmaz kört. +\end{definicio} -\begin{definicio}{DISZJUNKT UTAK} -Vegyük (G,s,t,c) folyamot, ezen belül veszünk utakat. \textbf{Páronként éldiszjunkt útnak} nevezünk utakat, ha páronként nincsen közös élük. \textbf{Belsőleg pontdiszjunkt utaknak} nevezünk utakat, ha páronként nincs közös pontjuk. +\begin{definicio}{TOPOLOGIKUS ELRENDEZÉS} +Legyen G egy irányított gráf. G topologikus elrendezése a csúcsoknak egy olyan $v_1, v_2,..., v_n$ sorrendje, melyben $x\rightarrow y \in E$ esetén x előbb van, mint y (azaz ha $x = v_i, y = v_j,\,\,akkor\,\,i d(x) + l(e)$, akkor $d(y) = d(x) + l(e)$. -\end{itemize} -\end{tetel} - -\begin{tetel}{DIJKSTRA-ALGORITMUS} -\textbf{Az algoritmus:} -\begin{itemize} -\item[\textbf{0.}] $S = {s}, T = V\backslash {s}$ és \textbf{(*)}. -\item[\textbf{1.}] Minden S-beli pontból minden T-beli pontba vezető e élre végezzük el \textbf{(**)} javítást. -\item[\textbf{2.}] A T-beli pontok közül legyen $v_0$ az, amelyiken a d(v) érték a legkisebb. Tegyük át $v_0$-t T-ből S-be. -\item[\textbf{3.}] Ha T üres, \textbf{STOP}. Ha nem, vissza \textbf{1.} lépéshez. -\end{itemize} -Az algoritmus lépésszáma $c\cdot n^3$, mivel az 1. lépés k. elvégzésekor $|S| = k,\,\, |T| = v - k$, így az összes \textbf{(**)} hívások száma $\sum k(v-k) = \sum kv - \sum k^2$ és ennek az összege $k^3$-höz közelít.\\Az algoritmusnak létezik egy kedvezőbb futási idejű változata, $c\cdot n^2$ lépésszámmal.\\ -\textbf{Az optimalizált algoritmus:} -\begin{itemize} -\item[\textbf{0.}] $S = {s}, T = V\backslash {s}$ és \textbf{(*)}, valamint $v_0 = s$. -\item[\textbf{1.}] Csak a $v_0$-ból a T-beli pontokba vezető e élekre végezzük el a \textbf{(**)} javítást. -\item[\textbf{2.}] A T-beli pontok közül legyen $v_0$ az, amelyiken a d(v) érték a legkisebb. Tegyük át $v_0$-t T-ből S-be. -\item[\textbf{3.}] Ha T üres, \textbf{STOP}. Ha nem, vissza \textbf{1.} lépéshez. -\end{itemize} -\end{tetel} - -\begin{tetel}{FORD-ALGORITMUS} -A Ford-algoritmus megengedi a negatív súlyú éleket is, valamint az algoritmus egyszerűbb, mint a Dijsktra-algoritmus. -\begin{itemize} -\item[\textbf{0.}] Számozzuk meg az éleket 1-től e-ig, ezt rögzítsük le (tetszőleges sorrend). Legyen $i = 1$ és \textbf{(*)}. -\item[\textbf{1.}] A rögzített sorrendben végezzük el a \textbf{(**)} javítást minden élen. -\item[\textbf{2.}] $i = i + 1$. Ha $i > v$, akkor \textbf{STOP}. Különben folytassuk \textbf{1.} lépésnél. -\end{itemize} -Az algoritmus lépésszáma $c\cdot e\cdot v$, ez jóval nagyobb általában, mint $n^2$, ezt az árat kell megfizetnünk a negatív élhossz feature-ért. Mi történik negatív kör esetén? Ezt valahogyan fel kell ismerni! A módosított 2. lépés, ami jelzi, ha negatív összsúlyú körbe kerültünk: -\begin{itemize} -\item[\textbf{2.}] Ha az \textbf{1.} lépés során egyetlen javítás sem történt, akkor \textbf{STOP} (és megvannak a minimális úthosszak). Különben $i = i + 1$. Ha $i \leq v + 1$, folytassuk \textbf{1.} lépésnél, ha pedig $i > v + 1$, akkor \textbf{STOP} (és van negatív összsúlyú kör). -\end{itemize} -\end{tetel} diff --git a/fejezetek/16_tetel.tex b/fejezetek/16_tetel.tex deleted file mode 100644 index ea80eeb..0000000 --- a/fejezetek/16_tetel.tex +++ /dev/null @@ -1,53 +0,0 @@ -\section{16. tétel} - -\url{http://cs.bme.hu/bsz2/dfs.pdf} - -\begin{tetel}{FLOYD-ALGORITMUS} -A Floyd-algoritmus a gráfban lévő összes pontpár közt megadja a távolságokat. Ezt a Ford-algoritmussal is megtehettük volna, viszont annak a futási ideje az összes pontból kiindítva $c\cdot ev^2$-tel lett volna arányos. A Floyd-algoritmus ezt megteszi mindössze $c\cdot v^3$ alatt. A sikeres futás feltétele az, hogy a gráfban NE legyen negatív összsúlyú kör.\\ -T.f.h. G irányított gráf a $V(G) = {v_1, v_2,..., v_n}$ pontokon. A $v_i$-ből $v_j$-be mutató él hosszát, azaz súlyát, jelöljük l(i,j)-vel és t.f.h. a gráfban nincs negatív összsúlyú irányított kör. Ha nincs él $v_i$-ből $v_j$-be, akkor legyen $l(i,j) = \infty$. Továbbá $l(i,i) = 0$, minden $i = 1, 2,..., n$-re. Jelölje $d^{(k)}(i,j)$ a $v_i$-ből $v_j$-be vezető legrövidebb olyan irányított út hosszát, mely csak k-nál szigorúan kisebb pontokon megy át. Így $d^{(1)}(i,j) = l(i,j)$ és $d^{(n+1)}$ lesz az eredetileg keresett legrövidebb irányított út hossza lesz $v_i$-ből $v_j$-be. Világos, hogy a $v_i$-ből $v_j$-be vezető legrövidebb olyan út, ami csak $k + 1$-nél szigorúan kisebb pontokon megy át, vagy átmegy $v_k$-n, vagy nem. Ha nem megy át, akkor $d^{(k+1)}(i,j) = d^{(k)}(i,j)$. Ha viszont átmegy, akkor $d^{(k+1)}(i,j) = d^{(k)}(i,k) + d^{(k)}(k,j)$. Csak azt kell megnéznünk, mely esetben találunk rövidebb utat. Ezek után már világos, hogy az algoritmus lépésszáma $c\cdot v^3$-bel arányos. -\\ -\textbf{Az algoritmus:} -\begin{itemize} -\item{\textbf{0.}} Minden i,j rendezett párra legyen $d^{(1)}(i,j) = l(i,j)$ és $k=2$. -\item{\textbf{1.}} Minden i,j rendezett párra -$$d^{(k+1)}(i,j) = min\{d^{(k)}(i,j),\,\, d^{(k)}(i,k) + d^{(k)}(k,j)\}$$ -\item{\textbf{2.}} Ha $k = n + 1$, akkor STOP. Különben $k = k + 1$ és folytassuk \textbf{1.} lépésnél. -\end{itemize} -\end{tetel} - -\begin{definicio}{IRÁNYÍTOTT ACIKLIKUS GRÁF} -Egy G gráfot akkor nevezünk \textbf{irányított aciclikus gráfnak} (DAG), ha irányított élei vannak és nem tartalmaz kört. -\end{definicio} - -\begin{definicio}{TOPOLOGIKUS ELRENDEZÉS} -Legyen G egy irányított gráf. G topologikus elrendezése a csúcsoknak egy olyan $v_1, v_2,..., v_n$ sorrendje, melyben $x\rightarrow y \in E$ esetén x előbb van, mint y (azaz ha $x = v_i, y = v_j,\,\,akkor\,\,i