diff --git a/KMA DMA/Otázky ke zkoušce/15. Stromy.md b/KMA DMA/Otázky ke zkoušce/15. Stromy.md index 8b11be3..3c32559 100644 --- a/KMA DMA/Otázky ke zkoušce/15. Stromy.md +++ b/KMA DMA/Otázky ke zkoušce/15. Stromy.md @@ -21,8 +21,5 @@ faktor (podgraf jiný, než je graf $G$). Faktor grafu $G$ (podgraf se stejnými vrcholy ale s odebranými stranami), který je stromem, se nazývá **kostra grafu** $G$. - - - **Věta**: Každý souvislý graf má alespoň jednu kostru. - najdu kružnici - odstraním hranu - opakuji (reverzní mazací algoritmus) \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/18. Eulerovské grafy.md b/KMA DMA/Otázky ke zkoušce/18. Eulerovské grafy.md index dbfd069..114a348 100644 --- a/KMA DMA/Otázky ke zkoušce/18. Eulerovské grafy.md +++ b/KMA DMA/Otázky ke zkoušce/18. Eulerovské grafy.md @@ -1,4 +1,29 @@ # Eulerovské grafy -Tah z $u$ do $v$ v grafu $G$ je sled $(u = v_{0}, v_{1}, \dots, v_{k} = v)$, ve kterém se mohou opakovat vrcholy, ale hrany $v_{i−1}v_i$ jsou pro různá $i$ různé. Uzavřený tah je tah, který je uzavřeným sledem. Uzavřený tah je eulerovský, pokud používá každou hranu grafu $G$. -- Za jakých podmínek existuje sled, který používá každou hranu daného grafu právě jednou? \ No newline at end of file +Tah z $u$ do $v$ v grafu $G$ je sled $(u = v_{0}, v_{1}, \dots, v_{k} = v)$, ve kterém se **mohou opakovat vrcholy**, ale **hrany** $v_{i−1}v_i$ **jsou** pro různá $i$ **různé**. +- Tahem nazveme sled, ve kterém se neopakují hrany. + +**Uzavřený tah** je tah, který je uzavřeným sledem (začíná a končí stejným vrcholem). + +**Uzavřený tah** je **eulerovský**, pokud používá každou hranu grafu $G$. + +**Eulerovským grafem** nazveme graf $G$, který obsahuje eulerovský tah. + +## Existence eulerovského tahu + +Za jakých podmínek existuje sled, který používá každou hranu daného grafu právě jednou? + +**Věta**: Souvislý graf $G$ má eulerovský tah, právě když **všechny** jeho **vrcholy** mají **sudý stupeň** (jde z něj sudý počet hran). + +- orientovaný graf je eulerovský právě tehdy, je-li souvislý a každý jeho vrchol má vstupní stupeň rovný výstupnímu + +### Hierholzerův algoritmus + +Algoritmus pro hledání eulerovských tahů. + +1) vybereme libovolný vrchol $v \in G$ souvislého grafu +2) následujeme hrany a tvoříme tah $w$ z tohoto vrcholu, dokud se nevrátíme do vrcholu $v$ +3) díky sudému stupni každého vrcholu se na žádném vrcholu není možné zaseknout (jednou hranou se vstoupí a existuje další nepoužitá, kterou se vystoupí) +4) tento tah bude uzavřeným, ale možná nepokryje všechny vrcholy a hrany grafu +5) dokud existuje vrchol $u \in w$, který má nevyužité hrany, začneme nový tah z $u$, který následuje nepoužité hrany, dokud se nevrátíme do $u$ +6) jelikož se jedná o souvislý graf, opakováním předchozího kroku vyčerpáme všechny hrany grafu \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/20. Incidenční matice grafu, totální unimodularita.md b/KMA DMA/Otázky ke zkoušce/20. Incidenční matice grafu, totální unimodularita.md index e1210c3..66cef99 100644 --- a/KMA DMA/Otázky ke zkoušce/20. Incidenční matice grafu, totální unimodularita.md +++ b/KMA DMA/Otázky ke zkoušce/20. Incidenční matice grafu, totální unimodularita.md @@ -4,7 +4,7 @@ **Definice**: Nechť $G$ je **neorientovaný graf** s vrcholy $V = \{v_{1}, \dots, v_{n}\}$ a hranami $E = \{e_{1}, \dots, e_{m}\}$. Matice $M(G)$ typu $n/m$ definovaná předpisem -$m_{i,j} = \begin{cases} 1, \text{ jestliže } v_{i} \in e_{j}, \\ 0 \text{ jinak} \end{cases}$ +$m_{i,j} = \begin{cases} 1, & \text{jestliže } v_{i} \in e_{j}, \\ 0 & \text{jinak} \end{cases}$ se nazývá **vrcholově-hranová incidenční matice** grafu $G$. @@ -12,7 +12,7 @@ se nazývá **vrcholově-hranová incidenční matice** grafu $G$. **Definice**: Nechť $\vec{G}$ je **orientovaný graf** s vrcholy $V = \{v_{1}, \dots, v_{n}\}$ a hranami $E = \{e_{1}, \dots, e_{m}\}$. Předpokládáme, že graf $\vec{G}$ **neobsahuje smyčky** (hrany $x, x$). Matice $M(\vec{G})$ typu $n/m$ definovaná předpisem -$m_{i,j} = \begin{cases} 1 \rule{1cm}{0pt} \text{pokud hrana } e_{j} \text{ začíná ve vrcholu } v_{i}\\-1 \rule{.6cm}{0pt} \text{pokud hrana } e_{j} \text{ končí ve vrcholu } v_{i}\\0 \rule{.85cm}{0pt} \text{ jinak (} e_{j} \text{ nekoliduje s } v_{i}\text{)} \end{cases}$ +$m_{i,j} = \begin{cases} 1 & \text{pokud hrana } e_{j} \text{ začíná ve vrcholu } v_{i}\\-1 & \text{pokud hrana } e_{j} \text{ končí ve vrcholu } v_{i}\\0 & \text{jinak (} e_{j} \text{ nekoliduje s } v_{i}\text{)} \end{cases}$ se nazývá **vrcholově-hranová incidenční matice** orientovaného grafu $\vec{G}$. - n-tý řádek je n-tý vrchol a jednotlivé sloupce určují začátek ($+1$) nebo konec ($-1$) hrany v tomto vrcholu diff --git a/KMA DMA/Otázky ke zkoušce/22. Matice sousednosti a počty sledů.md b/KMA DMA/Otázky ke zkoušce/22. Matice sousednosti a počty sledů.md index d4d8010..40e9405 100644 --- a/KMA DMA/Otázky ke zkoušce/22. Matice sousednosti a počty sledů.md +++ b/KMA DMA/Otázky ke zkoušce/22. Matice sousednosti a počty sledů.md @@ -2,7 +2,7 @@ **Maticí sousednosti** orientovaného grafu $\vec{G}$ (připouštíme i smyčky) nazveme čtvercovou matici $A(\vec{G}) = (a_{ij})$ řádu $n$, definovanou předpisem -$a_{i,j} = \begin{cases} 1, \rule{.8cm}{0pt} \text{pokud v } \vec{G} \text{ existuje hrana } (i, j), \\ 0 \rule{1cm}{0pt} \text{jinak}. \end{cases}$ +$a_{i,j} = \begin{cases} 1, & \text{pokud v } \vec{G} \text{ existuje hrana } (i, j), \\ 0 & \text{jinak}. \end{cases}$ Pro neorientovaný graf $G$ definujeme matici sousednosti $A(G)$ jako matici sousednosti **jeho symetrické orientace**. (obecně $A(\vec{G})$ není symetrická) @@ -16,4 +16,3 @@ Nechť $\vec{G}$ je orientovaný graf a $A(\vec{G}) = (a_{ij})$ je jeho matice s - Matice sousednosti $A^0(\vec{G})$ bude rovna jednotkové matici řádu $n$. - Matici $A^k(\vec{G})$ získám násobením matic sousedností $k$-krát (matice na $k$-átou). - diff --git a/KMA DMA/Otázky ke zkoušce/23. Vzdálenost a vážená vzdálenost v grafech, metrika.md b/KMA DMA/Otázky ke zkoušce/23. Vzdálenost a vážená vzdálenost v grafech, metrika.md new file mode 100644 index 0000000..391b2c9 --- /dev/null +++ b/KMA DMA/Otázky ke zkoušce/23. Vzdálenost a vážená vzdálenost v grafech, metrika.md @@ -0,0 +1,82 @@ +# Vzdálenost vrcholů + +Nechť $x, y \in V(\vec{G})$. Délka nejkratšího orientovaného sledu z $x$ do $y$ v grafu $\vec{G}$ se nazývá **vzdálenost vrcholů** $x$ a $y$ v grafu $\vec{G}$ a značíme ji $\text{d}(x, y)$. Pokud v $\vec{G}$ neexistuje sled z $x$ do $y$, píšeme $\text{d}(x, y) = \infty$. + +- $\text{d}(x, x) = 0$ +- v neorientovaném grafu je vzdálenost definována jako v jeho symetrické orientaci + +**Věta**: Nechť $G$ je neorientovaný graf. Potom pro každé $x, y, z \in V(G)$ platí: +1) $\text{d}(x, y) \geq 0, \quad \text{d}(x, y) = 0 \implies x = y,$ + - pozitivní definitnost +2) $\text{d}(x, y) = \text{d}(y, x),$ + - symetrie +3) $\text{d}(x, z) \leq \text{d}(x, y) + \text{d}(y, z).$ + - trojúhelníková nerovnost +- v orientovaných grafech neplatí 2) + +## Distanční matice + +**Distanční matice grafu** $\vec{G}$ je matice $D(\vec{G}) = (d_{ij})$ řádu $n$, definovaná předpisem $d_{ij} = \text{d}(v_{i}, v_{j})$, kde $v_{1}, \dots, v_{n}$ jsou vrcholy grafu $\vec{G}$. +- obsahuje délku nejkratší možné cesty mezi prvky $v_{i}, v_{j}$ + +**Věta**: Nechť $\vec{G}$ je orientovaný graf, $D(\vec{G})$ jeho **distanční matice**. Pro každé $i \neq j$ je prvek $d_{ij}$ roven nejmenší mocnině $k$, pro kterou je prvek na pozici $(i, j)$ v matici sousednosti $A^k(\vec{G})$ nenulový. + +**Poznámka**: Tímto způsobem umíme nalézt distanční matici v čase $\mathcal{O}(n^4)$. + +**Věta**: Graf $\vec{G}$ je acyklický, právě když existuje $k \in \mathbb{N}$ takové, že $A^k(\vec{G})$ je matice samých nul. + +# Ohodnocené grafy + +Nechť $\vec{G}$ je orientovaný graf. Funkce $w : E(\vec{G}) \to (0, \infty)$ se nazývá **hranové ohodnocení grafu** $\vec{G}$. Graf se zadaným ohodnocením se nazývá **ohodnocený graf**. + +## Vážená matice sousednosti + +**Váženou maticí sousednosti** grafu $\vec{G}$ nazveme matici $W(\vec{G}) = (w_{ij})$ definovanou předpisem + +$w_{ij} = \begin{cases} w(i, j) & \text{pokud } (i, j) \in E(\vec{G}), \\ 0 & \text{jinak.} \end{cases}$ + +- obsahuje ohodnocení orientovaných hran z vrcholu $v_{i}$ do $v_{j}$ + +**Poznámka**: Pro neorientovaný graf $G$ opět definujeme matici $W(G)$ jako váženou matici sousednosti jeho symetrické orientace. Tato matice je **symetrická** a má **nulové diagonální prvky**. + +## $w$-délka cesty + +Mějme orientovanou cestu $\vec{P} \subseteq \vec{G}$ v $\vec{G}$. Číslo $w(\vec{P}) = \sum_{h\in H(\vec{P})} w(h)$ se nazývá **$w$-délkou cesty** $\vec{P}$. Je-li $\vec{P}$ dílky nula, klademe $w(\vec{P}) = 0$. +- jedná se o sumu ohodnocení všech hran cesty + +Mějme vrcholy $x, y \in V(\vec{G})$ a orientovanou cestu $\vec{P}$ z $x$ do $y$ minimální $w$-délky. +- Potom říkáme, že $\vec{P}$ je **minimální cesta** z $x$ do $y$ v grafu $\vec{G}$. +- Číslo $w(\vec{P})$ se nazývá **$w$-vzdálenost vrcholů** $x$ a $y$ v grafu $\vec{G}$ a značí se $\text{d}^w(x, y)$. +- Jestliže v grafu $\vec{G}$ neexistuje orientovaná cesta z $x$ do $y$, klademe $\text{d}^w(x, y) = \infty$. ++ platí $\text{d}^w(x, x) = 0$ + +**Poznámka**: Pro neorientovaný graf $G$ se tyto pojmy definují analogicky pro symetrickou orientaci grafu $G$. + +## $w$-distanční matice + +Mějme orientovaný graf $\vec{G}$ s vrcholy $v_{1}, \dots, v_{n}$. Potom matici $D^w(\vec{G})$ definovanou předpisem $d^w_{ij} = \text{d}^w(v_{i}, v_{j})$ nazveme **$w$-distanční maticí** grafu $\vec{G}$. +- obsahuje nejkratší možnou $w$-délku cestu z vrcholu $v_{i}$ do $v_{j}$ + +### Nalezení $w$-distanční matice + +1) Matici $D_{0}(\vec{G})$ definujeme předpisem + + $d^0_{ij} = \begin{cases} 0 & \text{pro } i = j, \\ \infty & \text{pro } i \neq j, (i, j) \notin E(\vec{G}), \\ w(i, j) & \text{pro } i \neq j, (i, j) \in E(\vec{G}). \end{cases}$ + +2) Definujeme nové operace + - $a \oplus b = \min(a, b),$ + - $a \otimes b = a + b.$ + +3) $k$-tou mocninou matice $D_{0}(\vec{G})$ při těchto operacích značíme $D_{0}^{(k)}$. + +**Věta**: Nechť $\vec{G}$ je ohodnocený orientovaný graf, nechť $r$ je nejmenší číslo, pro které $D_{0}^{(r)}(\vec{G}) = D_{0}^{(r+1)}(\vec{G})$. Potom $D^w(\vec{G}) = D_{0}^{(r)}(\vec{G})$. +- $w$-distanční matice je taková mocnina matice $D_{0}(\vec{G})$, pro kterou je o 1 vyšší mocnina této matice stejná jako původní umocněná + +**Poznámka**: Tento postup pracuje v čase $\mathcal{O}(n^4)$. Nejlepší známé algoritmy pracují v čase $\mathcal{O}(n^3)$. + +**Poznámka**: Pro neorientovaný graf $G$ definujeme $d^w(u, v)$ analogicky pro symetrickou orientaci grafu $G$. + +**Tvrzení**: Nechť $G$ je neorietovaný graf. Potom pro každé $x, y, z \in V(G)$ platé +1) $d^w(x, y) \geq 0, \quad d^w(x, y) = 0 \iff x = y,$ +2) $d^w(x, y) = d^w(y, x),$ +3) $d^w(x, z) \leq d^w(x, y) + d^w(y, z).$ \ No newline at end of file