Jarníkův algoritmus. Obsah. Popis



Podobné dokumenty
zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

1. Minimální kostry Od mìsteèka ke kostøe

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Paralelní grafové algoritmy

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

GRAFY A GRAFOVÉ ALGORITMY

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

TGH08 - Optimální kostry

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

Algoritmizace prostorových úloh

TGH06 - Hledání nejkratší cesty

Vzdálenost uzlů v neorientovaném grafu

TGH06 - Hledání nejkratší cesty

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Matematické symboly a značky

a jiné elektronické přístroje včetně mobilů. Pracujte samostatně. Povolen je 1 list A4 vlastnoručně psaných poznámek k předmětu...

Základy algoritmizace

Binární vyhledávací stromy pokročilé partie

Algoritmy na ohodnoceném grafu

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

a jiné elektronické přístroje včetně mobilů. Pracujte samostatně. Povolen je 1 list A4 vlastnoručně psaných poznámek k předmětu...

07 Základní pojmy teorie grafů

8 Přednáška z

TGH05 - aplikace DFS, průchod do šířky

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Algoritmus pro hledání nejkratší cesty orientovaným grafem

1. Nakreslete všechny kostry následujících grafů: nemá žádnou kostru, roven. roven n,

TGH05 - aplikace DFS, průchod do šířky

H {{u, v} : u,v U u v }

Úvod do teorie grafů

Úvod do informatiky. Miroslav Kolařík

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Univerzita Pardubice Fakulta elektrotechniky a informatiky Programový nástroj pro plánování svozných a rozvozových tras v regionu

5 Rekurze a zásobník. Rekurzivní volání metody

12. Aproximační algoritmy

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

matice([[1,1,0,0,0],[1,1,1,0,0],[0,1,1,0,0],[0,0,0,1,1],[0,0,0,1,1]],1). matice([[1,1,1],[1,1,0],[1,0,1]],2).

Úvod do mobilní robotiky AIL028

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

III přednáška Toky v sítích

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Návrh a implementace algoritmů pro adaptivní řízení průmyslových robotů

MATEMATIKA A 3 Metodický list č. 1

Přijímací zkouška - matematika

Jan Březina. 7. března 2017

8. Geometrie vrací úder (sepsal Pavel Klavík)

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

10 Podgrafy, isomorfismus grafů

Použití dalších heuristik

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Často potřebujeme hledat mezi dvěma vrcholy grafu cestu, která je v nějakém

TGH02 - teorie grafů, základní pojmy

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Prioritní fronta, halda

PROBLÉM ČTYŘ BAREV. Lze obarvit jakoukoliv mapu v rovině čtyřmi barvami tak, aby žádné dvě sousedící oblasti neměly stejnou barvu?

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

TGH10 - Maximální toky

Základní grafové algoritmy

2. RBF neuronové sítě

Základní pojmy teorie grafů [Graph theory]

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014

Minimální kostry. Teorie. Štěpán Šimsa

autorovu srdci... Petr Hliněný, FI MU Brno 1 FI: MA010: Průnikové grafy

Obsah. KAPITOLA 1 Dříve než začneme 19 Kdysi dávno aneb střípky z historie algoritmických strojů třicátá léta 22

Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Vedoucí práce: RNDr. Martin Pergel, Ph.D.

Hledáme efektivní řešení úloh na grafu

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

opakování reprezentace grafů, dijkstra, bellman-ford, johnson

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66

TEORIE GRAFŮ TEORIE GRAFŮ 1

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Teorie grafů. Teoretická informatika Tomáš Foltýnek

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

5 Orientované grafy, Toky v sítích

bfs, dfs, fronta, zásobník, prioritní fronta, halda

ALGORITMY A DATOVÉ STRUKTURY

Rekurentní rovnice, strukturální indukce

Grafové algoritmy. Programovací techniky

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Filtrace snímků ve frekvenční oblasti. Rychlá fourierova transformace

bfs, dfs, fronta, zásobník, prioritní fronta, halda

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Gramatická evoluce a softwarový projekt AGE

6. Tahy / Kostry / Nejkratší cesty

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

ADT STROM Lukáš Foldýna

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Univerzita Pardubice Fakulta elektrotechniky a informatiky. Vizualizace hledání nejkratší cesty na grafech. Bc. Tomáš Havránek

13. Třídící algoritmy a násobení matic

Transkript:

1 z 6 28/05/2015 11:44 Jarníkův algoritmus Z Wikipedie, otevřené encyklopedie Jarníkův algoritmus (v zahraničí známý jako Primův algoritmus) je v teorii grafů algoritmus hledající minimální kostru ohodnoceného grafu. Najde tedy takovou podmnožinu hran grafu, která tvoří strom obsahující všechny vrcholy původního grafu a součet ohodnocení hran z této množiny je minimální. Poprvé algoritmus popsal Vojtěch Jarník roku 1930, později byl znovuobjeven roku 1957 Robertem Primem a poté ještě jednou roku 1959 Edsgerem Dijkstrou. V zahraničí se téměř výlučně používá označení Primův algoritmus, vzácně pak Jarníkův algoritmus nebo DJP algoritmus. Obsah 1 Popis 2Časová složitost 3 Příklad 4 Implementace v pseudokódu 4.1 S použitím haldy 5 Důkaz správnosti 6 Reference 7 Literatura 8 Externí odkazy Popis Algoritmus začíná s jedním vrcholem a postupně přidává další a tím zvětšuje velikost stromu do té doby, než obsahuje všechny vrcholy. Vstup: souvislý ohodnocený graf G(V,E) Inicializace: V' = {x}, kde x je libovolný vrchol z V, E' = {} Opakuj dokud není V'=V: Vyber hranu (u,v) z E s minimální cenou tak, že u je ve V' a v není ve V' Přidej v do V', přidej (u,v) do E' Výstup: G(V',E') je minimální kostra grafu Časová složitost

2 z 6 28/05/2015 11:44 Datová struktura s ohodnocením hran Celková časová složitost matice sousednosti V 2 binární halda (v pseudokódu níže) a seznam sousedů O((V + E) log(v)) = E log(v) Fibonacciho halda a seznam sousedů E + V log(v) Jednoduchá implementace s použitím reprezentace grafu pomocí matice sousednosti a prohledáváním pole cen má časovou složitost O(V 2 ). S použitím binární haldy a seznamu sousedů dosáhneme složitosti O(E log V), kde E je počet hran a V je počet vrcholů. S použitím sofistikované Fibonacciho haldy složitost snížíme až na O(E + V log V), což je obzvláště rychlé u grafů, kde E je. Příklad

arníkův algoritmus Wikipedie z 6 28/05/2015 11:44 Obrázek Popis Dosud neviděn Sousedé Dosavadní řešení Toto je náš původní ohodnocený graf. Není to strom, protože definice stromu požaduje, aby v grafu nebyly žádné kružnice a tento graf kružnice obsahuje. Čísla poblíž hran označují jejich cenu. C, G A, B, E, F D Žádná hrana zatím není označena a vrchol D byl vybrán náhodně jako startovní vrchol. Druhý vybraný vrchol je nejbližší k vrcholu D: cena hrany do A je 5, do B je 9, do E je 15 a F je 6. Cena hrany do bodu A (5) je nejnižší, použijeme tedy (a v našem diagramu vyznačíme) tuto hranu. C, G B, E, F A, D Dalším vybraným vrcholem je nejbližší vrchol buď k D nebo k A. Cena hrany z D do B je 9 a z A do B je 7, do E je 15 a do F je 6. Cena poslední jmenované hrany je nejnižší, zvolíme tedy hranu z D do F. C B, E, G A, D, F V tomto případě je nejkratší hrana z A do B. C, E, G A, D, F, B V tomto případě je nejkratší hrana z B do E. Další dvě hrany obarvujeme na červeno, protože je už nebudeme moci C, G A, D, F, B, E použít. Nechceme, aby vznikla kružnice.

4 z 6 28/05/2015 11:44 Jediné zbývající vrcholy jsou C a G. Hrana z E do C váží 5 a hrana z E do G váží 9. Vybíráme tedy hranu do C. Hranu G A, D, F, B, E, C z B do C obarvujeme na červeno. Zbývá nám už jenom vrchol G. Hrana do F váží 11 a do E 9. Vybíráme tedy hranu do E. Všechny vrcholy jsou už součástí stromu, získali jsme tedy minimální A, D, F, B, E, C, G kostru grafu (na diagramu je obarvená zelenou). Celková váha kostry je 39. Implementace v pseudokódu S použitím haldy Inicializace vstupy: Graf, funkce vracející ohodnocení hran a startovní vrchol na začátku jsou všechny vrcholy nastaveny na status dosud neviděn, startovní vrchol je umístěn do grafu a všechny hrany do haldy tak, aby vracela hranu s nejnižší vahou. Pro každý vrchol v grafu nastav min_vzdálenost vrcholu na nastav otec vrcholu na null nastav min_seznam_sousedů vrcholu na prázdný_seznam nastav je_v_q vrcholu na true nastav vzdálenost startovního vrcholu na nula přidej do haldy Q všechny vrcholy v grafu. Algoritmus V popisu algoritmu výše, nejbližší vrchol je Q[0] okraj je v v Q, kde vzdálenost v < poté, co je nejbližší vrchol vyjmut z haldy dosud neviděn je v v Q, kde vzdálenost v =, co je nejbližší vrchol vyjmut z haldy Cyklus selže pokud halda vrátí nulu. Seznam sousedů je vytvořen tak, aby mohl vrátit orientovaný graf. časová složitost: V na cyklus, log(v) na vyjmutí hrany z haldy Dokud poslední_přidaný = vrať minimum v Q

5 z 6 28/05/2015 11:44 nastav je_v_q čeho poslední přidaný na false přidej poslední_přidaný na (min_seznam_sousedu čeho (otec čeho poslední_přidaný)) přidej (otec čeho poslední_přidaný) do (min_seznam_sousedů čeho poslední_přidaný) časová složitost: E/V, průměrný počet vrcholů pro každý soused čeho poslední_přidaný Jestliže (je_v_q čeho soused) a zároveň (váha(poslední_přidaný, soused) < min_vzdálenost čeho soused) nastav otec čeho soused na poslední_přidaný nastav min_vzdálenost čeho soused na váha(poslední_přidaný, soused) časová složitost: log(v), výška haldy uprav soused v Q, podle min_vzdálenost Důkaz správnosti Nechť P je souvislý, ohodnocený graf. S každou iterací Jarníkova algoritmu je přidána hrana, která spojuje vrchol v podgrafu s vrcholem mimo podgraf. Jelikož je P souvislý, musí existovat cesta mezi všemi dvojicemi vrcholů. Nechť výstup Jarníkova algoritmu je Y a Y 1 je minimální kostra grafu P. Jestliže Y 1 =Y, pak Y je minimální kostra grafu. V opačném případě, nechť e je první hrana přidaná během konstrukce Y, která není v Y 1 a V je množina vrcholů spojených hranami přidanými před e. Pak jeden konec hrany e je v V a druhý není. Jelikož Y 1 je kostra grafu P, pak musí existovat cesta v Y 1 spojující oba konce hrany. Někde v této cestě se musí objevit hrana f spojující vrchol ve V s vrcholem, který není ve V. Ve chvíli, kdy je e přidána k Y by mohla být místo ní přidána také f, pokud by ovšem vážila méně. Jelikož ale byla přidána e, můžeme soudit, že w(f) w(e). Nechť Y 2 je graf získaný odstraněním f a přidáním e z Y 1. Je snadné ukázat, že Y 2 je souvislý, má stejný počet hran jako Y 1 a celková váha hran není vyšší než u Y 1. Y 2 je tudíž minimální kostra grafu P a obsahuje e a všechny hrany přidané předtím při konstrukci V. Opakováním těchto kroků nakonec zjistíme, že minimální kostra grafu P je identická s Y. Tímto jsme tedy dokázali, že Y je minimální kostra grafu. Reference V tomto článku byl použit překlad textu z článku Prim's algorithm (https://en.wikipedia.org /wiki/prim%27s_algorithm?oldid=135413690) na anglické Wikipedii. Literatura V. Jarník: O jistém problému minimálním, Práce Moravské Přírodovědecké Společnosti, 6, 1930, pp. 57-63. R. C. Prim: Shortest connection networks and some generalisations. In: Bell System Technical Journal, 36 (1957), pp. 1389 1401 (anglicky) D. Cherition and R. E. Tarjan: Finding minimum spanning trees. In: SIAM Journal of Computing, 5 (Dec. 1976), pp. 724 741 (anglicky)

6 z 6 28/05/2015 11:44 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 23.2: The algorithms of Kruskal and Prim, pp.567 574. (anglicky) Externí odkazy Obrázky, zvuky či videa k tématu Jarníkův algoritmus ve Wikimedia Commons Problém minimální kostry grafu: Jarníkův algoritmus (http://www-b2.is.tokushima-u.ac.jp/~ikeda /suuri/dijkstra/prim.shtml) Animovaný příklad Jarníkova algoritmu (http://students.ceid.upatras.gr/~papagel/project/prim.htm) Jarníkův algoritmus (Java Applet) (http://www.mincel.com/java/prim.html) Prim's algorithm code (http://www.algorithm-code.com/wiki/prim%27s_algorithm) Citováno z http://cs.wikipedia.org/w/index.php?title=jarníkův_algoritmus&oldid=12220078 Kategorie: Grafové algoritmy Stránka byla naposledy editována 28. 5. 2015 v 11:36. Text je dostupný pod licencí Creative Commons Uveďte autora Zachovejte licenci 3.0 Unported, případně za dalších podmínek. Podrobnosti naleznete na stránce Podmínky užití.