Úprava 15., 18., 20., 22. a přidání 23. otázky z DMA

This commit is contained in:
Filip Znachor 2023-08-20 11:01:28 +02:00
parent 41a46b6401
commit 443ddb0657
5 changed files with 112 additions and 9 deletions

View file

@ -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)

View file

@ -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_{i1}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?
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_{i1}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

View file

@ -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

View file

@ -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).

View file

@ -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).$