Pro určení minimální cesty v orientovaném ohodnoceném grafu se využívá Bellmanův princip optimality [Demel, J., 1988].
· je-li cesta z A do C optimální, pak na této cestě musí ležet i cesta z B do C
Obr. 3.17 Podmínka Bellmanova principu optimality
· všechny hrany grafu jsou ohodnoceny ,
· v grafu nesmí být cykly Þ i < j (hrana musí vystupovat z uzlu i s číslem menším a vstupovat do uzlu j s číslem větším),
Obr. 3.18 Podmínka užití Bellmanova principu optimality
· nesmí být rovnoběžné hrany – odstraníme pomocí fiktivních hran s nulovým ohodnocením.
Obr. 3.19 Tvorba fiktivního prvku
Hrana spojující uzly i, k je fiktivní hrana s nulovým ohodnocením.
Při hledání minimální (maximální) cesty v ohodnoceném orientovaném grafu postupujeme od koncového uzlu k počátečnímu uzlu.
Ohodnocení v koncovém uzlu (Tn = 0) položíme rovno nule. Pak postupujeme proti směru orientace hran k počátečnímu uzlu a u každého uzlu si pamatujeme minimální (maximální) hodnotu součtu ohodnocení hran předchozí části cesty a směr, odkud jsme do daného uzlu došli. Hodnota v počátečním uzlu dává celkovou nejkratší (nejdelší) cestu v grafu.
Tabulka 3.4 Stanovení délek cesty
Nejkratší cesta |
Nejdelší cesta |
Ti = min ( Tj + tij ) Tn = 0 |
Ti = max ( Tj + tij ) Tn = 0 |
Obr. 3.20 Příklad orientovaného grafu – nejkratší cesta
Nejkratší cesta vede uzly: 1 – 2 – 3 – 4 – 6,
Délka cesty: 3 + 1 + 2 + 4 = 10 jednotek.
Obr. 3.21 Příklad orientovaného grafu – nejdelší cesta
Nejdelší cesta vede uzly: 1 – 3 – 5 – 6,
Délka cesty: 5 + 7 + 8 = 20 jednotek.
Obr. 3.22 Příklad neorientovaného grafu
Graf musí být ohodnocený, neorientovaný, bez číslování uzlů.
1. Označíme počáteční uzel číslem nula.
2. V každém dalším kroku budeme ohodnocovat neohodnocené uzly, které jsou spojeny hranami s již ohodnocenými uzly a to tak, že je hodnotíme podle vztahu
.
kde je: U( ti ) - hodnota ohodnoceného uzlu,
tij - hodnota hrany mezi ohodnoceným a neohodnoceným uzlem.
3. Hodnota koncového uzlu nám dává hodnotu minimální cesty
4. Hrany, které leží na minimální cestě určíme podle vztahu
,
směrem od posledního uzlu k prvnímu.
Platí, že rozdíl hodnot sousedících uzlů musí být hodnota hrany.
a) b)
c) d)
Obr. 3.23 Postup ohodnocování uzlů