Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Stromy a kostry. Definice stromu Souvislý (neorientovaný) graf – mezi každými dvěma vrcholy existuje (alespoň jedna) cesta Strom je souvislý graf, který.

Podobné prezentace


Prezentace na téma: "Stromy a kostry. Definice stromu Souvislý (neorientovaný) graf – mezi každými dvěma vrcholy existuje (alespoň jedna) cesta Strom je souvislý graf, který."— Transkript prezentace:

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


Stáhnout ppt "Stromy a kostry. Definice stromu Souvislý (neorientovaný) graf – mezi každými dvěma vrcholy existuje (alespoň jedna) cesta Strom je souvislý graf, který."

Podobné prezentace


Reklamy Google