Diskrétní matematika Opakování - příklady
Nalezněte kostru následujícího grafu Kruskalovým algoritmem. Příklad 1 Nalezněte kostru následujícího grafu Kruskalovým algoritmem. 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Kruskalův algoritmus: Opakuj následující kroky, dokud je to možné: Z hran grafu G, které dosud nebyly vybrány, vyber nejkratší hranu, která nevytváří žádnou kružnici s hranami již vybranými. Množina vybraných hran je kostrou grafu G, která je navíc minimální 6 3 1 4 5 7 12 1 6 7 10 9 13 5 8 7 10 14 5 1 5 7 3 2 3 6 11
Nalezněte nejkratší cestu v grafu z bodu Příklad 2 Nalezněte nejkratší cestu v grafu z bodu 1 do bodu 14 Dijkstrovým algoritmem 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Dijkstrův algoritmus Výchozí vrchol označíme hodnotou 0 a ostatní vrcholy označíme hodnotou 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11
Z vrcholu 1 se můžeme dostat do vrcholů 2 a 4 a to: do vrcholu 2 za 5 jednotek a do vrcholu 4 za 6 jednotek. Zapíšeme to do grafu. 6 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5
Nyní vezmeme nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 16 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 16 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 16 19 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 16 19 6 10 3 10 1 4 5 7 12 1 6 7 10 9 13 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů 6 16 19 3 29 6 10 10 1 4 5 7 12 1 6 20 7 10 9 13 26 5 10 10 9 8 7 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Vezmeme další nejmenší vrchol, který jsme ještě neměli a změníme vzdálenosti do jeho sousedů. Pokud máme 2 nejmenší vrcholy – vybereme libovolný z nich 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 29 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Další nejnižší hodnota je hodnota 21 v cílovém vrcholu, algoritmus tedy můžeme ukončit. 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezení nejkratší cesty: Postupujeme od cíle a hledáme cestu tím, že od hodnoty posledního vrcholu odčítáme vzdálenosti mezi ním a jeho sousedy. Tam kde se výsledek rovná hodnotě sousedního vrcholu vede nejkratší cesta 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezení nejkratší cesty: 21 – 9 = 25 21 – 1 = 20 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezení nejkratší cesty: 20 – 5 = 25 20 – 3 = 17 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezení nejkratší cesty: 17 –10 = 16 17 – 7 = 10 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezení nejkratší cesty: 10 – 10 = 6 10 – 5 = 5 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Nalezli jsme nejkratší cestu v grafu z vrcholu 1 Nalezení nejkratší cesty: 5 – 5 = 0 Nalezli jsme nejkratší cestu v grafu z vrcholu 1 do vrcholu 14 6 16 19 26 6 10 3 10 1 4 5 7 12 1 6 20 30 7 10 9 13 26 5 10 10 9 8 7 25 21 9 10 14 5 1 5 7 3 2 3 6 11 5 10 17 20
Obarvěte následující graf metodou nezávislých množin Příklad 3 Obarvěte následující graf metodou nezávislých množin 1 2 3 4 5 6 7 8 9 10
Metoda nezávislých množin: do grafu zapíšeme stupně jednotlivých vrcholů vrcholy můžeme seřadit: a) náhodně b) seřadit vzestupně podle stupně c) volíme vrchol s aktuálně nejmenším stupněm 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Metoda nezávislých množin: Zvolíme řazení vrcholů možností : b) seřadit vzestupně podle stupně tedy: 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Metoda nezávislých množin: Zvolíme řazení vrcholů možností : b) seřadit vzestupně podle stupně 1 6 7 2 5 3 4 8 9 10 Mějme barvy: 1 2 3 4 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
1 6 7 2 5 3 4 8 9 10 Hledáme první nezávislou množinu. Do první nezávislé množiny začleníme vrchol 1. 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Vrcholy 2 a 8 nemůžeme přiřadit do první nezávislé množiny Vrcholy 2 a 8 nemůžeme přiřadit do první nezávislé množiny. Další vrchol, který lze přiřadit do první nezávislé množiny je vrchol 6. 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Vrcholy 5 a 10 nemůžeme přiřadit do první nezávislé množiny Vrcholy 5 a 10 nemůžeme přiřadit do první nezávislé množiny. Další vrchol, který lze přiřadit do první nezávislé množiny je vrchol 7. 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Vrcholy 3 a 4 nemůžeme přiřadit do první nezávislé množiny Vrcholy 3 a 4 nemůžeme přiřadit do první nezávislé množiny. Další vrchol, který lze přiřadit do první nezávislé množiny je vrchol 9. 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Dostali jsem první nezávislou množinu, kterou nyní můžeme obarvit první barvou a to barvou modrou. 1 6 7 2 5 3 4 8 9 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
2 5 3 4 8 10 Nyní hledáme druhou nezávislou množinu. Do druhé nezávislé množiny začleníme vrchol 2. 2 5 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Vrcholy 3 a 8 nemůžeme přiřadit do druhé nezávislé množiny. 2 5 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Další vrchol, který lze přiřadit do druhé nezávislé množiny je vrchol 5. Vrcholy 4 a 10 nemůžeme přiřadit do druhé nezávislé množiny. 2 5 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Dostali jsem druhou nezávislou množinu, kterou nyní můžeme obarvit druhou barvou a to barvou červenou. 2 5 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Nyní hledáme třetí nezávislou množinu. Do třetí nezávislé množiny začleníme vrchol 3. Vrchol 8 nemůžeme přiřadit do třetí nezávislé množiny. 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Do třetí nezávislé množiny začleníme vrchol 4 Do třetí nezávislé množiny začleníme vrchol 4. Vrchol 10 nemůžeme přiřadit do třetí nezávislé množiny. 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Dostali jsem třetí nezávislou množinu, kterou nyní můžeme obarvit třetí barvou a to barvou černou. 3 4 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
8 10 Nyní hledáme čtvrtou nezávislou množinu. Do čtvrté nezávislé množiny začleníme vrchol 8. 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Do čtvrté nezávislé množiny začleníme vrchol 10. 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
Nyní máme graf obarvený. Dostali jsem čtvrtou nezávislou množinu, kterou nyní můžeme obarvit čtvrtou barvou a to barvou zelenou. Nyní máme graf obarvený. 8 10 2 3 4 4 3 2 1 2 3 4 5 6 2 7 4 4 8 9 10 4
K následujícímu grafu nalezněte duální graf Příklad 4 K následujícímu grafu nalezněte duální graf 1 2 3 4 5 6 7 8 9 10
Duální graf je takový graf, jehož vrcholy odpovídají stěnám původního grafu a hrany vedou mezi každou dvojicí stěn, které sdílejí společnou hranu. 1 2 3 4 5 6 7 8 9 10
Duální graf