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