Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilMarian Vlček
1
Stromy a kostry
2
Definice stromu Souvislý (neorientovaný) graf – mezi každými dvěma vrcholy existuje (alespoň jedna) cesta Strom je souvislý graf, který neobsahuje kružnice
3
Další možné definice stromu Strom je souvislý graf, který má |V|-1 hran Strom je graf bez kružnic, který má |V|-1 hran Strom je graf, kde mezi každou dvojicí různých vrcholů existuje právě jedna cesta
4
Podgraf, kostra Graf G’=(V’,E’) je podgrafem grafu G=(V,E), pokud V’ je podmnožina V a E’ je podmnožina E. Graf K je kostrou grafu G, pokud – K je podgrafem G – K obsahuje všechny vrcholy G – K je strom
5
Existence koster Nesouvislé grafy nemají kostru Každý souvislý graf má kostry Stromy mají právě jednu kostru Úplné grafy mají |V| |V|-2 koster.
6
Graf a jeho kostry
7
Hledání minimální kostry Pokud je graf hranově ohodnocený aditivní veličinou má smysl hledat minimální kostru Jak ji hledat? – Vygenerovat všechny kostry, spočítat jejich délku a vybrat nejkratší. – To není dobrý postup, neboť počet koster roste exponenciálně.
8
Borůvkův algoritmus Otakar Borůvka (1899-1995)
9
Borůvkův algoritmus 1.Seřaď hrany grafu podle jejich délky 2.Vezmi nejkratší hranu grafu 3.Pokud neuzavře kružnici, zařaď ji do kostry 4.Pokud kostra neobsahuje n-1 hran, pokračuj bodem 2.
10
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Nalezněte nejlevnější kostru v neorientovaném grafu, který je dan touto maticí:
11
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Nejkratší hrana je A-C, ta neuzavírá kružnici AC
12
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Druhá v pořadí hrana B-E AC B E
13
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Hrana E-G je stejně dlouhá a také neuzavírá kružnici, je to třetí hrana kostry AC B E G
14
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Čtvrtá hrana je G-H AC B E G H
15
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Teď je na řadě B-C, také neuzavírá kružnici, je to pátá hrana kostry A C B E G H
16
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 F-C je šestá hrana kostry A C B E G H F
17
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Hrana A-G by uzavřela kružnici, proto ji přeskočím a do kostry nezařadím A C B E G H F
18
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Z téhož důvodu nepoužiji ani hranu B-H ani hranu C-H A C B E G H F
19
Příklad ABCDEFGH A--131-- 511 B13--313210--5 C13 10--3135 D--1310--5101312 E--2 5 112-- F 103 11--6 G5 13 26--2 H115512-- 2 Hrana D-E kružnici neuzavírá, je to sedmá a poslední hrana kostry, kostra je hotova a její celková cena je 1+2+2+2+3+3+5 = 16. A C B E G H F D
20
Časová složitost algoritmu Graf s n vrcholy má maximálně n 2 hran. V první fázi Borůvkova algoritmu musím hrany srovnat do posloupnosti dle délky. To vyžaduje n 2. logn 2 operací. V druhé fázi vždy vezmu hranu a zjistím, zda do kostry patří, či ne. V nejhorším možném případě budu muset otestovat všech n 2 hran. Celkem tedy potřebuji maximálně n 2 + n 2. logn 2 = n 2 (1+2.logn) operací To je přijatelné číslo, např. pro n=10000, vychází 28 000 000 operací.
21
Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit počtem kroků, které algoritmus musí provést, než problém rozhodne.
22
Průměrná a pesimistická složitost Je zřejmé, že u téhož algoritmu i při stejném rozsahu zpracovávaných dat může výpočet trvat různou dobu v závislosti na konkrétních hodnotách vstupních dat. Bude totiž pro různá data potřeba provést různý počet kroků. Je tedy třeba rozlišovat – Pesimistickou výpočetní složitost – definovanou jako složitost, které je dosaženo v „nejhorším možném případě“ pro daný rozsah zpracovávaných dat. – Průměrnou výpočetní složitost – definovanou jako aritmetický průměr složitostí pro různé vstupy daného rozsahu s přihlédnutím k pravděpodobnostnímu rozložení těchto možných vstupů.
23
Funkce časové složitosti Je zřejmé, že sledovaná doba výpočtu nezávisí pouze na algoritmu, ale velmi výrazně i na rozsahu dat, s kterými algoritmus pracuje. Tomuto údaji budeme říkat rozměr vstupu charakterizován přirozeným číslem. Časovou složitost lze měřit pouze zobecněným měřením, kde mírou složitosti je funkce, která rozměru vstupu přiřazuje čas, respektive počet operací potřebných pro provední výpočtu.
24
Asymptotická složitost U těchto funkcí se zajímáme především o jejich růst v závislosti na růstu rozměru vstupu. Tedy o tak zvané asymptotické chování této funkce při neomezeném růstu rozměru vstupu. Toto chování posuzujeme porovnáním s chováním běžně známých funkcí, o jejichž růstu máme určitou představu.
25
Typické třídy výpočetní složitosti Θ (1) – růst nezáleží na rozměru vstupu Θ (n) – lineární růst (složitost je přímo úměrná rozměru dat) Θ (n × log n) – tento růst dosahují „chytré“ algoritmy řazení („třídění“) Θ (n 2 ) – kvadratický růst, například Dijskrův algoritmus Θ (n 3 ) – kubický růst typický pro některé operace s maticemi a algoritmy řešení soustav lineárních rovnic Θ (n k ) pro nějaké přirozené číslo k z N – polynomiální růst Θ (2 n ), exponenciální růst Θ (n!) – faktoriální růst.
26
Srovnání doby výpočtu log 2 nN N log 2 n n2n2 n3n3 n4n4 2n2n n!n! 2 10 s20 s 40 s80 s160 s40 s20 s 5 23,1 s50 s116 s250 s 1,25ms6,25ms 320 s 1,2ms 10 33,2 s100 s332 s 1ms10ms100ms10,2 ms1,17s 15 39,1 s150 s587 s 2,25ms33,8ms507ms328ms 15,1 days 20 43,2 s200 s864 s 4ms80ms1,6s10,5s 771000 years 25 46,4 s250 s 1,16ms6,25ms156ms3,91s5,59min 30 19,1 s300 s 5,73ms9ms270ms37,5s2,98h 50 56,4 s500 s 28,2ms25ms1,25s1,04min357years 100 66,4 s 1ms6,64ms100ms10s16,7min 200 76,4 s 2ms15,3ms400ms1,34min4,47h 50089,4 s5ms44,4ms2,5s4,17min13,9h
27
Srovnání doby výpočtu Původ ní 2-krát5-krát10-krát 100- krát 1 000- krát (n)(n) 1002005001 00010 000 100 000 (n2)(n2) 1001412233161 0003 162 (n3)(n3) 1001251702154641 000 (2 n ) 100101102103107110 (n!)100 101
28
Úloha obchodního cestujícího TSP (Travel Salesman Problem) Hledání nejkratší Hamiltonovské cesty
29
sir Wiliam Rowan Hamilton (1805-1865)
30
Hamiltonovská cesta Hamiltonovská cesta je cesta procházející všemi vrcholy neorientovaného grafu. Je-li graf hranově ohodnocen aditivní veličinou, má smysl mluvit o nejkratší Hamiltonovské cestě. V úplném grafu je n! Hamiltonovských cest, metoda generování všech cest je tedy prakticky nepoužitelná. Bohužel lidstvo nezná žádný algoritmus, který by pracoval s výrazně lepší časovou složitostí A navíc se zdá, že podobný algoritmus ani neexistuje.
31
Littlův algortimus Algoritmus pro hledání nejkratší Hamiltonovské cesty. Pesimistická výpočetní složitost algoritmu je n! Algoritmus tedy nezaručuje nalezení řešení v „rozumném čase“. Průměrná výpočetní složitost je ale podstatně menší. V mnoha případech algortimus „rozumně zafunguje“ Algoritmus patří mezi tzv. heuristiky
32
Příklad ABCDEFG A--4141615142 B4--31871715 C143--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 --
33
Příklad ABCDEFG A--4141615142 B4--31871715 C143--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 -- AG CF 2 1 3 4 B D 6 E 7 Vygeneruji minimální kostru, v tomto případě má délku 1+2+3+4+6+7=23
34
Příklad Kdyby nejlevnější kostra byla cesta, tj. kdyby neobsahovala vrcholy stupně >= 3, musela by to být nejkratší Hamiltonovská cesta. Pokud nejlevnější kostra není cesta, víme alespoň, že délka nejkratší Hamiltonovské cesty bude větší nebo rovna délce nejkratší kostry. V našem případě bude tedy nejkratší Hamiltonovská cesta dlouhá alespoň 23.
35
Příklad Pokud nejkratší kostra není cesta, obsahuje alespoň jeden vrchol stupně alespoň 3. V našem případě je to vrchol B. Pokud by bylo takových vrcholů více, vybereme (náhodně) jeden z nich. Ve výsledné HC určitě nebudou zároveň všechny tři hrany BA,BC a BE. Rozdělíme tedy úlohu na 3 pod úlohy, hledání nejkratší HC v grafu bez hrany BA,
36
Příklad Rozdělíme tedy úlohu na 3 pod úlohy, – hledání nejkratší HC v grafu bez hrany BA, – hledání nejkratší HC v grafu bez hrany BC, – Hledání nejkratší HC v grafu bez hrany BE. Výsledky všech tří úloh porovnáme a nejkratší řešení bude i řešením původní úlohy.
37
Hledání nejkratší HC v grafu bez hrany BA ABCDEFG A--141615142 B --31871715 C143--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 -- AG CF 2 1 3 B D 6 E 7 Opět hledám minimální kostru. Graf se rozpadl na dvě komponenty, musím najít nejkratší hranu, která propojí komponentu A,D,G s komponentou B,C,E,F a nebude to hrana AB
38
Hledání nejkratší HC v grafu bez hrany BA ABCDEFG A--141615142 B --31871715 C143--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 -- AG CF 2 1 3 B D 6 E 7 Z 11 hran, které přicházejí do úvahy je nejkratší hrana EG. Ta mne vytvoří kostru (nikoli cestu) o ceně 28. 9
39
Schéma řešení Původní úloha Min 23 Podúloha bez AB Podúloha bez BC Podúloha bez BE Min 28
40
Hledání nejkratší HC v grafu bez hrany BC ABCDEFG A--4141615142 B4--1871715 C14--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 -- AG CF 2 1 4 B D 6 E 7 Je třeba propojit komponentu C,F s komponentou A,B,D,E,G některou z devíti možných hran.
41
Hledání nejkratší HC v grafu bez hrany BC ABCDEFG A--4141615142 B4--1871715 C14--1018120 D161810--13186 E1571813--129 F141711812--20 G2152069 -- AG CF 2 1 4 B D 6 E 7 Nejkratší hrana je hrana CD dlouhá 10. Ta mi dává vznik minimální kostře dlouhé 1+10+6+2+4+7=30. Tato kostra je Hamiltonovskou cestou a je tedy konečným řešením podúlohy. Zároveň vím, že řešení celé původní úlohy bude maximálně 30 (a minimálně 23). 10
42
Schéma řešení Původní úloha Min 23 Max 30 Podúloha bez AB Podúloha bez BC Podúloha bez BE Min 28 30
43
Hledání nejkratší HC v grafu bez hrany BE ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--13186 E151813--129 F141711812--20 G2152069 -- AG CF 2 1 3 4 B D 6 E Vrchol E je třeba připojit někam jinam, než na B.
44
Hledání nejkratší HC v grafu bez hrany BE ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--13186 E151813--129 F141711812--20 G2152069 -- AG CF 2 1 3 4 B D 6 E Nejlevnější možnost je připojit ho na G, tím mi vznikne kostra (nikoli cesta) o celkové délce 25. Nyní tedy vím, že hodnota řešení původní úlohy se bude pohybovat mezi 25 a 30. 9
45
Schéma řešení Původní úloha Min 25 Max 30 Podúloha bez AB Podúloha bez BC Podúloha bez BE Min 28 30 Min 25
46
Heuristika Varianta bez hrany BE má menší dolní odhad, než varianta bez hrany AB. Budu tedy pokračovat v jejím rozvíjení. Minimální kostra v této variantě obsahuje vrchol G stupně 3. Opět tedy vygeneruji 3 podúlohy, v nichž budou kromě hrany BE zakázány ještě postupně hrany AG,DG a EG.
47
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG
48
Hledání nejkratší HC v grafu bez hran BE a AG ABCDEFG A--414161514 B4--3181715 C143--1018120 D161810--13186 E151813--129 F141711812--20 G 152069 -- AG CF 1 3 4 B D 6 E Je třeba propojit komponenty A,B,C,F a D,E,G jinou hranou, než BE, nebo AG. V úvahu připadá 10 hran. 9
49
Hledání nejkratší HC v grafu bez hran BE a AG ABCDEFG A--414161514 B4--3181715 C143--1018120 D161810--13186 E151813--129 F141711812--20 G 152069 -- AG CF 1 3 4 B D 6 E Nejkratší mezi nimi je hrana CD, ta vede ke kostře (nikoli cestě) délky 33. 9 10
50
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG Min 33
51
Prořezávání stromu (princip mezí) Ve variantě bez hran BE a AG je nejlepší možné dosažitelné řešení s hodnotou 33. Ale my již jinde ve stromě umíme najít řešení za 30. Proto můžeme celou větev „bez BE a AG“ odříznout a dále nezkoumat.
52
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG Min 33
53
Hledání nejkratší HC v grafu bez hran BE a DG ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--1318 E151813--129 F141711812--20 G215209 -- AG CF 2 1 3 4 B D E Vrchol D je třeba připojit někam jinam, než na G. 9
54
Hledání nejkratší HC v grafu bez hran BE a DG ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--1318 E151813--129 F141711812--20 G215209 -- AG CF 2 1 3 4 B D E Nejlépe to půjde na C. Vznikla kostra (nikoli cesta) s celkovém délkou 29. Tu zatím nelze odříznout, pravděpodobně ji budeme muset dále rozvětvit. 9 10
55
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG Min 33 Min 29
56
Hledání nejkratší HC v grafu bez hran BE a DG ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--13186 E151813--12 F141711812--20 G215206 -- AG CF 2 1 3 4 B D 6 E Vrchol E je třeba připojit někam jinam než na B, či G
57
Hledání nejkratší HC v grafu bez hran BE a DG ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--13186 E151813--12 F141711812--20 G215206 -- AG CF 2 1 3 4 B D 6 E Nejlépe bude použít hranu EF. Tím vznikne Hamiltonovská cesta délky 28. 12
58
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG Min 33 Min 29 28
59
Závěr Nově vzniklá Hamiltonovská cesta je lepší, než dosavadní minimum 30. Zároveň nám toto nově nalezené minimum umožní odříznout větev „bez AB“ s dolním odhadem též 28 (maximálně bychom mohli získat druhé stejně dobré řešení). A také mohu odříznout větev „bez BE a DG“ s dolním odhadem 29. Ve schématu řešení již nezůstala žádná neprozkoumaná větev.
60
Schéma řešení Původní úloha Min 25 Max 30 bez AB bez BC bez BE Min 28 30 Min 25 bez BE a AG bez BE a DG bez BE a EG Min 33 Min 29 28
61
Hledání nejkratší HC v grafu bez hran BE a DG ABCDEFG A--4141615142 B4--3181715 C143--1018120 D161810--13186 E151813--12 F141711812--20 G215206 -- AG CF 2 1 3 4 B D 6 E Řešení E-F-C-B-A-G-D s délkou 28 je tedy minimální Hamiltonovská cesta. 12
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.