# 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).$
- tj.  $\text{d}^w$ je metrika na $G$