-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23 from kuklinistvan/master
2018-as vizsga aktualizálás
- Loading branch information
Showing
23 changed files
with
596 additions
and
539 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,3 +7,6 @@ | |
*~ | ||
\#*\# | ||
dockercmd.sh | ||
*.fdb_latexmk | ||
*.fls | ||
*.xdv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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)] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
Oops, something went wrong.