VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
|
|
- Květa Vlčková
- před 8 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF INFORMATICS GRAFY A ALGORITMY PRO HLEDÁNÍ NEJKRATŠÍCH CEST GRAPHS AND SHORTEST PATH ALGORITHMS BAKALÁŘSKÁ PRÁCE BACHELOR THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR MICHAL HAMERNÍK Mgr. MARTINA BOBALOVÁ, Ph.D. BRNO 2009
2 Anotace Práce představuje učební text zaměřený na problematiku teorie grafů a grafových algoritmů. Teorie grafů pomáhá často řešit problémy a vztahy mezi částmi komplikovaných celků a grafové algoritmy pomáhají tyto problémy rychle a efektivně optimalizovat. V této práci jsou uvedeny základy teorie grafů, dále popis vybraných algoritmů a jejich případné praktické využití. Práce může být využita jako doplňující text při výuce předmětu Diskrétní matematika na Fakultě podnikatelské Vysokého učení technického v Brně. Annotation This bachelor thesis represents an educational text focused on graph theory and graph algorithms. The graph theory often helps to solve problems between parts of a complicated unit and graph algorithms are quick and effective in their optimization. Basics of graph theory, samples of graph algorithms and practical examples of use are described in it. This thesis can be used as a supplementary text in Discrete Mathematics taught at Faculty of Business and Management in Brno University of Technology. Klíčová slova Orientovaný graf, neorientovaný graf, algoritmy pro hledání nejkratších cest, Dijkstrův algoritmus, Floyd-Warshallův algoritmus, Bellman-Fordův algoritmus, Johnsonův algoritmus Keywords Directed graph, non-directed graph, shortest path algorithms, Dijkstra s algorithm, Floyd-Warshall algorithm, Bellman-Ford algorithm, Johnson s algorithm 2
3 HAMERNÍK, M. Grafy a algoritmy pro hledání nejkratších cest. Brno: Vysoké učení technické v Brně, Fakulta podnikatelská, s. Vedoucí bakalářské práce Mgr. Martina Bobalová, Ph.D. 3
4 Čestné prohlášení Prohlašuji, že předložená bakalářská práce je původní a zpracoval jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem ve své práci neporušil autorská práva (ve smyslu Zákona č. 121/2000 Sb., o právu autorském a o právech souvisejících s právem autorským). V Kopřivnici dne 21. května Podpis 4
5 Poděkování Na tomto místě bych rád poděkoval paní Mgr. Martině Bobalové, Ph.D. za její pomoc, rady a připomínky v průběhu zpracování této bakalářské práce. 5
6 Obsah 1. Úvod Historický vývoj Celosvětový vývoj Vývoj v českých zemích Nejznámější grafové úlohy Základní pojmy z teorie grafů Matematická reprezentace grafů Grafové algoritmy pro hledání nejkratších cest Dijkstrův algoritmus Floyd - Warshallův algoritmus Bellman Fordův algoritmus Johnsonův algoritmus Asymptotická složitost algoritmů Zhodnocení a závěr Seznam informačních zdrojů Seznam obrázků a tabulek Rejstřík
7 1. Úvod Naše jednadvacáté století je století dynamickým. Rychlý rozvoj a vývoj můžeme sledovat ve všech oblastech lidských činností. Motorem veškerého myšlení je mozek, který je zdrojem nápadů a myšlenek. Ale k jejich realizaci jsou zapotřebí stroje, přístroje a různá zařízení, kterými pak nápady uvedeme do praxe, aby nám už tak dost uspěchaný a komplikovaný život ulehčily. Klasické obory jako jsou matematika, fyzika, chemie aj. jsou proto stále v popředí zájmu vědců a výzkumných pracovníků, protože tvoří pilíře dalších vědních oborů, bez kterých si náš život již těžko dokážeme představit např. informatika. Současný výzkum informatiky se věnuje zlepšení komunikace mezi člověkem a počítačem a zefektivnění způsobů tvorby, využití a hledání informací mimo jiné i za použití struktur zvané grafy, jejichž vlastnosti zkoumá teorie grafů. Pod pojmem graf si většina lidí představuje graf statistický nebo graf funkce. Tato práce o zmíněných druzích grafů pojednávat nebude, nýbrž se zaměří na grafy reprezentované jako diskrétní struktury, které jsou tvořeny vrcholy, a ty propojeny hranami, sloužící jako abstrakce různých problémů, kde jsou důležitější topologické vlastnosti než například umístění v prostoru. Takovéto struktury mohou pomáhat nejenom v informatice ale i v elektrotechnice, chemii, informatice, sociologii a dalších oborech. Jedním z typických problémů teorie grafů je hledání nejkratší cesty a na tento problém je práce zaměřena. 7
8 2. Historický vývoj 2. 1 Celosvětový vývoj Za zakladatele teorie grafů se považuje Leonhard Euler, který roku 1736 ve své publikaci Solutio problematis ad geometriam situs pertinentis řešil úlohu, zda je možné projít přes sedm mostů ve městě Königsbergu (dnešní Kaliningrad), kde podmínkou bylo, že po každém mostu je možné projít právě jednou. Grafy a jejich využívání v úlohách pak nadlouho zůstávaly na okraji zájmu matematiků až do roku 1847, kdy Gustav Kirchhoff publikoval zákony, které platí v elektrických obvodech a slouží k výpočtu napětí a proudu v jednotlivých větvích obvodu. V roce 1852 byl Francisem Guthriem představen problém čtyř barev. Byla položena jednoduchá otázka, zda je možné obarvit libovolnou mapu za pomoci nejvýše čtyř barev tak, aby každé dvě sousední země měly barvu odlišnou. Teorie grafů zasáhla v roce 1857 i chemii, když Arthur Cayley za pomocí grafů zjišťoval počty různých uskupení molekul alkanů Vývoj v českých zemích Ve 20. století docházelo k velkému rozvoji teorie grafů i za účasti českých matematiků. V roce 1926 publikoval Otakar Borůvka algoritmus pro nalezení minimální kostry grafu za účelem výstavby elektrických sítí. Stejný problém, avšak jiným algoritmem, vyřešil v roce 1930 také Vojtěch Jarník. Jedním z novodobých významných českých matematiků v oblasti teorie grafů je Václav Chvátal z Concordia University in Montreal, který se mimo jiné, podílel na vývoji programu Concorde TSP Solver sloužící k řešení problému obchodního cestujícího (viz kapitola 3). Concorde je využíván konkrétněji k řešení problémů v genetice při mapování genového fondu, k predikci funkcí proteinů, pro návrhy tras vozidlům, konverze bitmapových obrázků na malby kreslené nepřerušenými tahy, pro plánování tras lodí pro seismický výzkum atd., a to vše v rekordně krátkých časech. 8
9 3. Nejznámější grafové úlohy 1 Úloha o sedmi mostech města Königsberg Jak již bylo zmíněno, tak tato slavná úloha, jejímž úkolem bylo zjistit, zda bylo možné přejít sedm mostů ve městě takovým způsobem, aby ten, kdo se o to pokusí, vstoupil na každý most pouze jednou. Leonhard Euler jako první dokázal, že to možné není. Obrázek 1: Úloha o sedmi mostech města Königsberg Euler na základě mapy města Königsberg problém převedl na graf a dokázal, že eulerovský tah v grafu neexistuje (viz obrázek číslo 1). Eulerovské grafy mají totiž tu vlastnost, že je možné je nakreslit jedním tahem. Jednoduchá definice pro eulerovské grafy zní, že graf G je eulerovský, právě když je souvislý a každý vrchol má sudý stupeň. Poznámka: Dnešní situace v Königsbergu, v současné době nazývanému Kaliningrad, je díky historickému dění v této oblasti jiná. Jeden most byl zničen již před druhou světovou válkou a pak byl znovu vybudován Němci v roce 1935, dva z mostů byly zničeny za britského náletu v roce 1944 a další dva byly později zničeny Sověty při stavbě dálnice. 1 Zpracováno dle: Graph theory - History, Wikipedie otevřená encyklopedie (12) 9
10 Obrázek 2: Dnešní pohled na Kaliningrad 2 Z mapy a obrázku číslo 2 je patrné, že po výše zmíněných historických událostech je možné projít mosty v Kaliningradu, propojující stejný ostrůvek s pevninou, takovým způsobem, že se každý most projde pouze jednou. Úloha jezdce V této úloze je úkolem, aby se šachový jezdec v souladu s šachovými pravidly pohyboval po prázdné šachovnici tak, aby každé pole navštívil právě jednou. Tímto problémem se zabývali již středověcí arabští a indičtí učenci a první řešení jsou známá již z 9. století. Tato úloha se řeší dále v různých modifikacích, kde se mění velikosti šachovnice nebo je podmínkou, že jezdec se musí pohybovat po šachovnici 8x8 polí tak, aby měl možnost se vrátit na výchozí místo, kde přesně ve případech jezdec končí na poli, odkud opět ohrožuje své startovní pole. Hamiltonova hra V roce 1857 sir William Hamilton vymyslel hru, jejímž úkolem bylo pospojovat všechny vrcholy pravidelného dvanáctistěnu tak, aby byl každý vrchol použit právě jednou, a vrátit se do výchozího místa. Problém čtyř barev Problém čtyř barev je formulován tímto způsobem: Stačí čtyři barvy na obarvení libovolné politické mapy tak, aby žádné dva sousedící státy nebyly obarveny stejnou 2 Zpracováno dle: Google maps Kaliningrad (13) 10
11 barvou? Obecněji se lze tázat na minimální potřebný počet barev. Podařilo se dokázat, že pět barev postačuje. Oproti tomu tvrzení, že čtyři barvy stačí, dlouhou dobu odolávalo všem pokusům o důkaz, nikdo však také nebyl schopen nalézt mapu, která by ho vyvrátila. Důkaz představili až roku 1976 američtí matematici Kenneth Appel a Wolfgang Haken tím, že pomocí počítačového programu vymodelovali 1936 možných konfigurací. Následně pak dokázali, že tyto konfigurace pokrývají všechny možnosti (k tomu potřebovali 1200 hodin procesorového času). Tento důkaz však velká část matematiků odmítá akceptovat, protože jej žádný matematik není schopen přímo zkontrolovat. Úloha obchodního cestujícího a čínského pošťáka Tyto úlohy patří mezi tzv. NP-úplné problémy, což znamená, že v obecném případě není znám algoritmus jak nalézt řešení v rozumném čase, které by bylo v čase úměrném nějaké mocnině počtu vrcholů. V praxi se tyto úlohy řeší pouze přibližně heuristickými algoritmy. Problém obchodního cestujícího je tedy obtížný diskrétní optimalizační problém, jehož úkolem je najít nejkratší možnou trasu, procházející všemi městy a vracející se nazpět do výchozího města. Problém čínského pošťáka je definován způsobem, že pošťák musí denně projít všechny ulice svého obvodu a vrátit se na místo, odkud vyšel. Jde mu o to, aby tato cesta byla co nejkratší, avšak na rozdíl od úlohy obchodního cestujícího může projít některými místy vícekrát. 11
12 4. Základní pojmy z teorie grafů Graf G je uspořádaná dvojice (V,E), kde V je libovolná neprázdná množina a E je množina dvoubodových podmnožin množiny V. Prvky množiny V se jmenují vrcholy (uzly) grafu G a prvky množiny E hrany grafu. 3 Grafy se dle svých vlastností dělí na mnoho podskupin, kde základní rozdělení je na jednoduchý graf a multigraf. Jednoduchý graf se skládá z vrcholů a vždy dva různé vrcholy spojuje právě jedna hrana. Naproti tomu takzvaný multigraf se skládá z vrcholů a hran, přičemž dva různé vrcholy může spojovat více různých hran. Občas potřebujeme v grafu využít i takzvané smyčky, které však v multigrafech nejsou povoleny. Takovým to grafům pak říkáme pseudografy (viz obrázek číslo 3). Obrázek 3: Jednoduchý graf, multigraf a pseudograf Konkrétnější, a pro tuto práci důležitější dělení grafů, je na grafy neorientované a orientované. Neorientované grafy Neorientovaný graf G je uspořádaná dvojice (V,E), kde V je libovolná neprázdná množina a E je množina dvoubodových podmnožin množiny V. Prvky množiny V se jmenují vrcholy (uzly) grafu G a prvky množiny E hrany grafu. Hrany se zapisují způsobem e ={x,y}, tedy vrcholy x a y spolu incidují. Už z principu neorientovaných grafů navíc platí, že množiny {x,y}a {y,x} jsou si rovny. Další vlastností je, že jedna 3 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 95, (3) 12
13 hrana má společné maximálně dva vrcholy. Vrchol, který neinciduje s žádnou hranou je nazýván izolovaným. 4 Stupeň vrcholu Stupeň vrcholu je vyjádřen číslem, které značí počet hran, se kterými vrchol inciduje (viz obrázek číslo 4). Stupeň vrcholu značíme x. Je-li vrchol izolovaný pak x = 0. Vlastnosti vrcholů v grafu: Součet všech stupňů vrcholů v grafu je roven dvojnásobku počtu hran, tedy Počet vrcholů lichého stupně v grafu je vždy sudé číslo Obrázek 4: Stupně vrcholů v grafu Bipartitní graf Pojmem bipartitní graf (viz obrázek číslo 5) se označuje takový graf, jehož množinu vrcholů lze rozdělit na dvě části tak, že žádné dva vrcholy ze stejné množiny nejsou spojeny hranou. Pokud jsou všechny vrcholy množiny z první části propojeny s množinou vrcholů z části druhé, hovoříme o úplném bipartitním grafu. 4 Zpracováno dle: MEZNÍK, Ivan. Diskrétní matematika, s. 37 (4) 13
14 Obrázek 5: Bipartitní graf Podgraf, faktor grafu Podgraf je část grafu, která vznikne vybráním podmnožiny hran spolu s vrcholy, které s danými hranami incidují (viz obrázek číslo 6). Obrázek 6: Podgraf Faktor grafu vyjadřuje, že graf má stejnou množinu vrcholů jako původní graf (viz obrázek číslo 7). Obrázek 7: Faktor grafu 14
15 Isomorfismus Dva grafy G=(V,E) a G =(V,E ) nazýváme isomorfní, pokud existuje vzájemné jednoznačné zobrazení - bijektivní. 5 Isomorfismus ve své podstatě představuje přejmenování vrcholů v grafu, v matematické terminologii znamená ekvivalentní. Při ověřování isomorfnosti grafů musíme hledat způsob, jak je možné vrcholy prvního grafu přejmenovat tak, aby odpovídaly vrcholům grafu druhého. Obrázek 8: Isomorfismus Na obrázku číslo 8 jsou všechny tři grafy isomorfní. Isomorfismus u prvních dvou grafů se dá znázornit například takovýmto zobrazením: 1 a, 2 d, 3 b, 4 e, 5 c, 6 f. Možností takovýchto zobrazení existuje mnohem více. Poznámka: Pro malé obrázky není zpravidla těžké rozhodnout, zda jsou isomorfní nebo ne, i když na příkladu z obrázku číslo 8 to nemusí být na první pohled patrné. Avšak rozhodování, zda jsou grafy isomorfní, je obecně obtížné a není znám žádný efektivní algoritmus fungující ve všech případech. Dokonce se soudí, že ani žádný efektivní algoritmus neexistuje. 5 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 98, (3) 15
16 Planární graf Planární (rovinný) graf je graf, pro který existuje takové rovinné zakreslení, že žádné dvě hrany se nekříží. 6 Může se stát, že graf je nakreslen takovým způsobem, že se hrany protínají, ale přitom jinou grafickou interpretací může být nakreslen bez protínání hran. V takovém případě se jedná o planární reprezentaci grafu (viz obrázek číslo 9). Obrázek 9. Planární graf Cesta a souvislost v grafu Cesta Definice Cestou v grafu je posloupnost vrcholů a hran (v 0,e 1,... v n,e n ), kde vrcholy v 0... v n jsou navzájem různé vrcholy grafu G a pro každé i= 1, 2... n je e i ={ v i-1, v i } Ε(G). 7 Cesta je tedy posloupnost vrcholů, pro kterou platí, že v grafu existuje hrana z daného vrcholu do jeho následníka (viz obrázek číslo 10). Žádné dva vrcholy (a tedy ani hrany) se přitom neopakují. Poslední podmínka odlišuje cestu od dvou podobných pojmů tah a sled: tah je posloupnost, kde se mohou opakovat vrcholy, ale ne hrany sled je posloupnost, kde se mohou opakovat i hrany 6 Zpracováno dle: MEZNÍK, Ivan. Diskrétní matematika, s. 46 (4) 7 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 102, (3) 16
17 Obrázek 10: Cesta v grafu Souvislost Definice Řekněme, že graf G = (V, E) je souvislý, jestliže pro každé dva jeho vrcholy x a y existuje v G cesta z x do y. 8 Pokud graf není souvislý, tak části, ze kterých se skládá (a samy jsou souvislé), se nazývají komponenty grafu. Rozdíl mezi grafem souvislým a nesouvislým je prezentován na obrázku číslo 11. Obrázek 11: Ilustrace grafové souvislosti a nesouvislosti Kružnice (cyklus) v grafu Definice Kružnicí v grafu rozumíme uzavřenou posloupnost propojených vrcholů, kde každý vrchol neorientované kružnice má stupeň Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 103, (3) 9 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 102, (3) 17
18 Nejkratší možnou kružnicí v grafech je trojúhelník, tedy úplný graf se třemi vrcholy. Definice cesty a kružnice jsou si velmi podobné. V obou dvou případech pracujeme s posloupností hran a vrcholů. Avšak na rozdíl od cesty je v kružnici první a poslední vrchol stejný a na navíc kružnice nepovoluje nulovou délku. Kružnice má výše zmíněnou minimální délku 3 (viz obrázek číslo 12). Obrázek 12: Kružnice v grafech Strom grafu Definice Graf je stromem právě tehdy, když každé dva jeho různé vrcholy jsou spojeny jedinou cestou. Strom je tedy souvislý graf neobsahující kružnici (acyklický) a mezi každými dvěma jeho vrcholy existuje právě jedna cesta (viz obrázek číslo 13). Obrázek 13: Ukázky stromů Pro stromy platí tzv. Eulerův vzorec pro stromy V = E
19 Poznámka: Stromy se často využívají v informatice k ukládání a vyhledávání dat jako datová struktura. Jejich hlavní výhodou je vysoká efektivita vyhledávání, ale lze je také využít k efektivnímu řazení hodnot. Kostra grafu Definice Kostrou grafu G rozumíme podgraf v G, který obsahuje všechny vrcholy grafu G a je stromem. 10 Kostra grafu je tedy libovolný podgraf, který hranami spojuje všechny vrcholy původního grafu a zároveň sám neobsahuje žádnou kružnici (viz obrázek číslo 14). Obrázek 14: Kostra grafu Orientované grafy Pojmem orientovaný graf (viz obrázek číslo 15) se v teorii grafů označuje takový graf, jehož hrany jsou uspořádané dvojice. Naproti tomu hrany neorientovaných grafů jsou hrany reprezentovány dvouprvkovými množinami. Hrany orientovaného grafu mají tedy pevně danou orientaci a hrany vycházející z x do y a z y do x budou vyjadřovány různými hranami. 10 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 150, (3) 19
20 Definice Orientovaný graf G je dvojice (V, E), kde E je podmnožina kartézského součinu V V. Prvky E nazýváme orientované hrany. Orientovaná hrana e má tvar (x, y). Říkáme, že tato orientovaná hrana vychází z x a končí v y. 11 Obrázek 15: Orientovaný graf Silně souvislý graf Graf je silně souvislý, existuje-li pro každou dvojici uzlů x a y cesta z x do y i z y do x. Ohodnocený graf Pokud k hranám grafů, ať už neorientovaným nebo i orientovaným, přiřadíme čísla, pak je nazýváme ohodnocenými (viz obrázek číslo 16). Takovéto grafy mají poté velmi rozsáhlou možnost využití. Přiřazená čísla mohou reprezentovat vzdálenost mezi městy, cenu, kterou musíme zaplatit za průchod hranou, časovou náročnost úkonu apod. Obrázek 16: Příklad ohodnocených grafů 11 Zpracováno dle: MATOUŠEK, J. a NEŠETŘIL, J. Kapitoly z diskrétní matematiky, s. 128, (3) 20
21 V případě, že jsou v grafu hrany ohodnocené, tak součet hodnot z určitého výchozího uzlu do uzlu koncového vyjadřuje tzv. délku cesty. V takových grafech poté existuje možnost, za pomocí algoritmů, hledat cesty nejkratší nebo v některých úlohách, typu časové analýzy u metody kritické cesty, naopak cesty nejdelší. 21
22 5. Matematická reprezentace grafů 12 Doposud byly grafy popisovány pomocí různých typů diagramů, avšak grafy se dají popsat i jinými způsoby. Mezi další způsoby popisu grafů patří možnost pomocí seznamu sousedů již zmíněné datové struktury anebo pomocí matic. Jako nejdůležitější maticový popis grafů se využívá matice sousednosti. Matice sousednosti Definice: Nechť je dán obyčejný graf G = (V,E) s množinou hran E = {e 1.. e n } a množinou uzlů V = {v 1.. v n }. Matice sousednosti bude čtvercová matice řádu n x n, která ponese označení S a její prvky s ij se budou řídit předpisy: U neorientovaných grafů s ij = 1, pokud uzly v i a v j budou sousední s ij = 0, pokud uzly v i a v j sousední nebudou U orientovaných grafů s ij = 1, pokud hrana z uzlu v i povede do uzlu v j s ij = 0, pokud hrana z uzlu v i nepovede do uzlu v j Z těchto předpisů také vyplývá, že na hlavní diagonále matice, pokud budeme uvažovat o grafech bez smyček, budou vždy nuly, dále že u neorientovaných grafů bude matice symetrická podle hlavní diagonály. Počet jedniček v matici u neorientovaných grafů bude roven dvojnásobku počtu hran, zatímco počet jedniček v matici u orientovaných grafů bude stejný jako počet hran (viz obrázek číslo 17). 12 Zpracováno dle: VEČERKA, A., Grafy a grafové algoritmy, s. 16, (5) 22
23 Obrázek 17: Matice sousednosti U ohodnocených grafů stačí jen jedničky nahradit čísly reprezentující metriku v grafu a dostaneme tak matici sousednosti pro ohodnocené grafy. Reprezentace grafů při programování Jelikož se hojně při programování grafových struktur využívá matic sousednosti, tak si programátor vystačí s dvourozměrným polem řádu n x n. Avšak matice sousednosti není vždy nejvhodnějším způsobem reprezentace grafu v paměti počítače. Obzvlášť když má graf málo hran. V těchto případech bývá vhodnější pro každý vrchol zadat seznam jeho sousedů. Takovou reprezentaci je možno udělat pomocí dvou jednorozměrných polí. První pole v tomto případě má stejný počet prvků jako je počet uzlů v grafu. Každému uzlu poté odpovídá jeden prvek pole, v němž je uložena hodnota indexu, od kterého v druhém poli začíná seznam uzlů, které jsou sousedy daného uzlu. V poli, ve kterém jsou uvedeny seznamy sousedů, musí existovat na konci seznamu sousedů jednotlivých uzlů druh oddělovače, který nám říká, kde seznamy sousedů končí. Jako příznak ukončení se dá využít například číslo -1. Pro urychlení některých komplikovanějších algoritmů se využívají složitější reprezentace grafů. Taková reprezentace může být za pomocí dynamické datové struktury, kde uzel grafu bude reprezentován jako strukturovaný datový typ a každý uzel bude obsahovat pole (seznam) ukazatelů na sousední uzly. 23
24 6. Grafové algoritmy pro hledání nejkratších cest Jednou ze základních úloh v teorii grafů je hledání nejkratší cesty v grafech mezi dvěma zadanými vrcholy. Takový požadavek vzniká v mnoha praktických příkladech např. při hledání nejkratšího dopravního spojení. Dosud objevené algoritmy řešící tento typ úlohy většinou počítají mnohem více, než je od nich požadováno - zpravidla nalézají nejkratší cesty z výchozího vrcholu do všech (nebo mnoha) vrcholů. V teorii grafů existuje velké množství algoritmů, které korektně fungují při splnění některých grafových podmínek. Některé typy algoritmů fungují například jen tehdy, když se jedná o neorientovaný graf, nebo právě tehdy, když se jedná o graf orientovaný. Také se musí brát v potaz ohodnocení hran, neboť některé algoritmy nedokážou pracovat se záporně ohodnocenými hranami v grafech Dijkstrův algoritmus Dijkstrův algoritmus (čti Dajkstrův, holandské jméno) je algoritmus, který byl roku 1959 představen informatikem Edsgerem Wybe Dijkstrou, sloužící k nalezení nejkratší cesty v grafu. Je konečný (pro jakýkoliv konečný vstup algoritmus skončí), protože v každém průchodu cyklu se do množiny navštívených uzlů přidá právě jeden uzel. Průchodů cyklem je tedy nejvýše tolik, kolik má graf vrcholů. Funguje nad hranově kladně ohodnoceným grafem a nezáleží na tom, zda je graf orientovaný či nikoliv. Popis algoritmu Mějme graf G, v němž hledáme nejkratší cestu. Řekněme, že V je množina všech vrcholů grafu G a množina E obsahuje všechny hrany grafu G. Algoritmus pracuje tak, že si pro každý vrchol v z množiny V pamatuje délku nejkratší cesty, kterou se k němu dá dostat. Označme tuto hodnotu jako d[v]. Na začátku mají všechny vrcholy v hodnotu d[v]=, kromě počátečního vrcholu s, který má d[s]=0. Nekonečno symbolizuje, že neznáme cestu k vrcholu. Dále si algoritmus udržuje množiny Z a N, kde Z obsahuje už navštívené vrcholy a N dosud nenavštívené. Algoritmus pracuje v cyklu tak dlouho, dokud N není prázdná nebo je navštíven koncový bod nejkratší možnou cestou. V každém průchodu cyklu se přidá jeden vrchol vmin z N do Z, a to takový, který má nejmenší hodnotu d[v] ze všech vrcholů v z N. 24
25 Pro každý vrchol u, do kterého vede hrana (označme její délku jako l(vmin,u)) z vmin, se provede následující operace. Pokud (d[vmin] + l(vmin,u)) < d[u], pak do d[u] přiřaď hodnotu d[vmin] + l(vmin,u), jinak neprováděj nic. Až algoritmus skončí, potom pro každý vrchol v z V je délka jeho nejkratší cesty od počátečního vrcholu uložena v d[v]. Příklad Na začátku algoritmu všem vrcholům, kromě počátečního, nastavíme hodnotu nekonečno symbolizující fakt, že neznáme cestu k vrcholu. Počátečnímu vrcholu nastavíme jako výchozí hodnotu nulu (viz obrázek číslo 18). Koncovým vrcholem je uzel číslo pět. Obrázek 18: První (inicializační) krok Dijkstrova algoritmu Je patrné, že graf nemá záporně ohodnocené hrany, tedy nejkratší možnou nalezenou cestou je cesta o délce nula, proto je tedy i přiřazena počátečnímu vrcholu. V každém následujícím kroku algoritmu (obrázky číslo 19-24) bude vybrán uzel, který nemusí být celkově optimální, ale prozatím bude nejblíže počátečnímu vrcholu. Poté přepočítáme hodnoty každému uzlu, který je s nově výchozím propojen hranou. 25
26 Obrázek 19: Druhý krok Dijkstrova algoritmu V tomto okamžiku jediný navštívený (optimální) uzel je uzel počáteční. Jako s následujícím (nově výchozím) uzlem budeme počítat s uzlem číslo čtyři (díky jeho menší vzdálenosti od počátku), ze kterého se přepočítají další následovníci. Obrázek 20: Třetí krok Dijkstrova algoritmu Nyní docházíme k důležitému zjištění, a to takovému, že z počátečního uzlu do uzlu číslo dva jsme nalezli kratší cestu než původní přímou. Přesuneme se tedy do uzlu číslo dva (nově výchozí) a přepočítáme hodnotu v třetím uzlu. Následuje návrat zpět do uzlu číslo čtyři z důvodu nižší metriky než je u uzlu dva. 26
27 Obrázek 21: Čtvrtý krok Dijkstrova algoritmu Když se podíváme na uzly číslo pět a tři, zjistíme jednoduchým porovnáním jejich délkových hodnot, že jsme již nejkratší možnou cestu našli a algoritmus ukončíme. Obrázek 22: Výsledek Dijkstrova algoritmu Poznámka Při programování a použití řídkých grafů (grafy s počtem hran mnohem menším než V 2 ) může být Dijkstrův algoritmus implementován mnohem efektivněji tím, že se graf zapisuje pomocí seznamu ukazatelů na sousední uzly. Modifikace Dijkstrova algoritmu 13 Dijkstrův algoritmus, ačkoliv je poměrně rychlým algoritmem, existuje v několika modifikacích, které hledání nejkratší cesty urychlují a zefektivňují. 13 Zpracováno dle: ČERNÝ, J., Základní grafové algoritmy, s. 101, (8) 27
28 Mezi základní modifikace patří: Obousměrný Dijkstrův algoritmus Dijkstrův algoritmus s heuristikou Silniční hierarchie (zefektivnění hledání) Obousměrný Dijkstrův algoritmus Jedná se o modifikaci algoritmu, kde během průběhu algoritmu se střídají dvě jednosměrná vyhledávání. Jedno je vedeno ze startovní pozice s a druhé pak z pozice cílové d. Obě vyhledávání vytváří strom nejkratších cest ze startovního bodu S, respektive cílového bodu D. Algoritmus je ukončen ve chvíli, kdy je průnik stromů D a S neprázdný. Nalezená cesta je pak kombinace cest. Tato modifikace se využívá ke směrování v městských dopravních sítích. Dijkstrův algoritmus s heuristikou Dijkstrův algoritmus hledá nejkratší cestu rovnoměrně na všechny strany prochází tedy všechny vrcholy v pořadí určeném vzdáleností od počátku. Když budeme hledat cestu například z Prahy do Brna tak při běhu algoritmu spočítáme nejkratší cesty také do Jihlavy, ale i Karlových Varů. Přitom Karlovy Vary leží na opačné straně od Prahy než Brno. Heuristika u tohoto algoritmu spočívá v tom, že místo vzdálenosti d[v] budeme počítat s vzdálenost z v do cíle vzdušnou čarou. To nám zaručí, že cestu do Jihlavy spočítáme dříve než do Karlových Varů díky tomu, že vrcholy poblíž cíle budou zvýhodněny. Silniční hierarchie Představme si, že graf G odpovídá silniční síti celé Evropy (přibližně milión vrcholů). Pokud bychom chtěli nalézt nejkratší cestu z Helsinek do Lisabonu tak využijeme Dijkstrův algoritmus. Kdybychom chtěli realizovat nějaký plánovač tras, kde existuje možnost změny cesty a tedy i velké množství výpočtů, které by měly probíhat v reálném čase, tak samostatný Dijkstrův algoritmus se prováděl několik desítek minut. 28
29 Když tedy budeme hledat nejkratší cestu z Tampere do Lisabonu, tak ji nebudeme hledat v celé silniční síti Evropy (jedná se o příliš velký graf), ale ve třech fázích a v mnohem menších grafech. V první fázi nalezneme nejkratší cesty z Tampere na hraniční přechody Finska. Ve druhé fázi nalezneme nejkratší cesty z hraničního přechodu Finska do Portugalska. Cesty navíc hledáme ve zjednodušeném grafu evropské silniční sítě, který jako vrcholy obsahuje pouze hraniční přechody. Ve třetí fázi nalezneme nejkratší cesty z hraničních přechodů Portugalska do Lisabonu. Z výsledku všech tří fází poskládáme acyklický graf, který obsahuje pouze Tampere, Lisabon a hraniční přechody Finska a Portugalska. Takovýto graf má už jen pár vrcholů a i díky tomu, že je acyklický můžeme v něm najít cestu v lineárním čase. Hierarchie může mít i více úrovní. Celou Evropu můžeme rozdělit na oblasti podle států, státy na oblasti podle krajů. Oblasti vůbec nemusí odpovídat právnímu rozdělení. Jde jen o to, aby každá oblast měla málo vstupních míst. Čím méně jich bude graf mít, tím bude jednodušší a algoritmus rychlejší. Pro řešení problému jak nalézt ty správné silnice se poté využívají různě modifikované heuristiky. Využití Tento algoritmus je často používán u síťových prvků jako součást směrovacích protokolů typu OSPF (Open Shortest Path First), což je adaptivní hierarchický distribuovaný routovací protokol, provádějící změny v routovacích tabulkách na základě změny stavu v síti a jedná se o nejpoužívanější routovací protokol uvnitř autonomních systémů. Taktéž modifikace tohoto algoritmu se používají například pro hledání spojení vlaků nebo tras v navigačních systémech. Modifikace spočívají v tom, zda hledáme nejkratší nebo nejrychlejší trasu. 29
30 6. 2 Floyd - Warshallův algoritmus Floyd-Warshallův algoritmus hledá nejkratší vzdálenosti mezi všemi páry uzlů. Docílí toho tak, že porovnává všechny možné cesty mezi každými dvěma uzly a algoritmus postupně zlepšuje odhad nejlepší cesty až do okamžiku, kdy už ví, že nalezená cesta je opravdu ta nejkratší. Algoritmus je zejména vhodný pro husté grafy, kde je rychlejší než Dijkstrův, opakovaný pro všechny vrcholy. Algoritmus je založen na práci s maticí sousednosti. Popis algoritmu Máme graf G o vrcholech 1 až N. Čtvercová matice sousednosti D[i][j] o rozměrech N x N nese ohodnocení hran grafu. Algoritmus se skládá z N fází. Na konci každé k-té fáze bude algoritmus porovnávat délku cesty v D[i][j], která může obsahovat vrcholy 1 až k 1, s délkou cesty, která může navíc obsahovat vrchol k. Porovná se tedy hodnota D[i][j] s hodnotou D[i][k] + D[k][j] a menší z nich bude uložena do prvku D[i][j]. Po absolvování všech N fází je algoritmus u konce a můžeme z matice sousednosti zjistit délky nejkratších cest mezi všemi dvojicemi vrcholů v grafu. S rekonstrukcí cest algoritmus nepočítá, ale o tuto funkci jej lze rozšířit. Příklad Stejně jako při provádění algoritmu počítačem, tak i při početní metodě je vhodnější příklad propočítávat za pomocí matic sousednosti. Jelikož je příklad velmi jednoduchý, ale obsahuje velký počet kroků, tak některé budou záměrně vynechány. Obrázek 23: Graf pro demonstraci Floyd - Warshallova algoritmu 30
31 Z příkladového grafu (viz obrázek číslo 23) si sestrojíme matici sousednosti, ve které postupně budeme porovnávat v jednotlivých krocích hodnoty vzdáleností N N N N (k,i,j)=(1,1,2) (k,i,j)=(1,1,3) 0 + N < N? < 1? NENÍ NENÍ N N N N (k,i,j)=(2,2,2) (k,i,j)=(1,2,3) N + N < 0? N + 1 < 3? NENÍ NENÍ N N N N (k,i,j)=(1,3,3) (k,i,j)=(1,3,4) < 0? < 5? NENÍ ANO JE Jako výslednou matici získáme matici, ve které budou uloženy vzdálenosti mezi vzájemně propojenými uzly (viz obrázek číslo 24). 31
32 N N Obrázek 24: Výsledná matice Floyd - Warshallova algoritmu Poznámka Velkou nevýhodou tohoto algoritmu je jeho výpočetní složitost s rostoucím počtem vrcholů, mezi kterými nejkratší vzdálenost počítáme, jelikož počet kroků algoritmu roste podobně rychle jako graf funkce y= x 3. Využití Tento algoritmus se využívá více v matematických disciplínách, než v reálných případech. Lze jej využít například pro inverze regulárních matic (Gauss-Jordanova eliminace) nebo testování zda je neorientovaný graf bipartitní Bellman Fordův algoritmus Bellman Fordův algoritmus hledá nejkratší cestu v orientovaném grafu s libovolným ohodnocením hran (tedy i se záporným ohodnocením). Pro správný průběh algoritmu se nesmí v případě záporně ohodnocených hran objevit v grafu záporný cyklus, který by automaticky probíhal do nekonečna (viz obrázek číslo 25). Obrázek 25: Příklad záporného cyklu v grafu 32
33 Popis algoritmu Bellman-Fordův algoritmus také, stejně jako Dijkstrův algoritmus, využívá metodu relaxace hran, která zajišťuje aktuálně nastavenou hodnotu nejkratší vzdálenosti od počátečního uzlu. Jestliže je algoritmem zjištěno, že hodnota v uzlu je vyšší než hodnota z nynějšího uzlu plus ohodnocení hrany z nynějšího uzlu do uzlu, v kterém bychom chtěli změnit jeho hodnotu, tak tuto hodnotu změníme, respektive snížíme. Hlavní rozdíl oproti Dijkstrovu algoritmu spočívá v průchodu grafu. U Dijkstrova algoritmu, jestliže projdeme všechny následníky jednoho uzlu tak tento uzel uzavře a poté ho už neupravuje. V Bellman-Fordovu algoritmu se toto neděje, jelikož všechny uzly v grafu se několikrát projíždí a postupně se upravují hodnoty vzdáleností nejkratších cest. Algoritmus je tedy oproti Dijkstrovému algoritmu jednodušší, ale pomalejší. Příklad Na následujícím příkladě bude demonstrován chod Bellman-Fordova algoritmu (viz obrázek 26). Pro vhodnější znázornění jednotlivých kroků, se využije tabulka, ve které budou uváděny a přepočítávány hodnoty vzdáleností v jednotlivých iteracích. Obrázek 26: Graf pro demonstraci Bellman - Fordova algoritmu Na začátku algoritmu, stejně jako u Dijkstrova algoritmu, všem vrcholům, kromě počátečního, nastavíme hodnotu nekonečno symbolizující fakt, že neznáme cestu k vrcholu. Počátečnímu vrcholu nastavíme jako výchozí hodnotu nulu. 33
34 Poté začneme prošetřovat jednotlivé hrany, kde zjistíme cesty do uzlu B a následně do uzlu C. Ke konci první iterace zjišťujeme, že do vrcholu C vede kratší cesta než přímá. Poslední řádek tabulky tedy ještě zaktualizujeme (viz tabulka číslo 1). iterace A B C D E Tabulka 1: První iterace Bellman - Fordova algoritmu V druhé iteraci algoritmu se posouváme směrem k dalším uzlům a nacházíme vzdálenost do uzlu E. Při šetření uzlu B ještě nacházíme nejkratší (prozatím) cestu do uzlu D. V posledním kroku druhé iterace dochází ke zjištění, že do uzlu D existuje kratší cesta než přímá a to přes uzel E. Hodnoty opět aktualizujeme. iterace A B C D E Tabulka 2: Druhá iterace Bellman - Fordova algoritmu Poslední řádek tabulky číslo 2 u druhé iterace, je zároveň i řešením nejkratších cest z uzlu A do všech ostatních. Samotný neoptimalizovaný algoritmus by však druhou iteraci nekončil. Celkově se provedou iterace čtyři (n-1 iterací, kde n je počet uzlů), avšak v těch dvou následujících se už tabulka nezaktualizuje. Tento počet iterací je navržen kvůli zajištění správnosti algoritmu. Poznámka Pokud bychom chtěli mít plně funkční a optimalizovaný Bellman Fordův algoritmus, tak je nutné do něj zahrnout zjišťování aktualizací metriky, kde po splnění podmínek (neprovede se žádná další aktualizace některé hrany) další iterace se nebudou muset 34
35 provádět a algoritmus může být ukončen dříve. Vhodné je také zavést testování výskytu záporných cyklů, aby algoritmus neběžel do nekonečna. Využití Jako praktický příklad využití tohoto algoritmu můžeme uvést implementaci ve směrovacím protokolu RIP (Routing Information Protocol), který slouží ke komunikaci routerů propojených v síti. Bellman-Fordův algoritmus je využit k nalezení nejkratších cest mezi prvky sítě a přibližně do 30ti sekund po změně topologie sítě je schopen aktualizovat směrovací tabulku routerů. Velikost sítí je však omezena. Největší možná vzdálenost mezi routery je 15 skoků. Přestože patří tento protokol mezi nejstarší doposud používané směrovací protokoly v sítích, má stále své uplatnění v menších sítích, a to především pro svou nenáročnou konfiguraci a jednoduchost. Existují různé verze tohoto protokolu a nejnovější RIPng byl definován pro použití v IPv Johnsonův algoritmus Základní myšlenkou Johnsonova algoritmu je n-násobné použití Dijkstrova algoritmu, kde n je počet vrcholů grafu. Algoritmus nám slouží k hledání nejkratších cest mezi všemi páry vrcholů v řídkých orientovaných grafech. Připouští záporné hrany, avšak v grafu nesmí existovat žádný záporný cyklus. Samotný algoritmus využívá jak Dijkstrova algoritmu tak i Bellman-Fordova algoritmu. Bellman-Fordův algoritmus je využíván k výpočtu transformace vstupního grafu, která odstraní záporné váhy hran, což splní podmínky pro běh Dijkstrova algoritmu z každého uzlu. Algoritmus je pojmenován po Donaldu Johnsonovi, který jej zveřejnil v roce Popis algoritmu Johnsonův algoritmus se skládá z následujících kroků: 1. Prvně je přidán nový uzel q s nulovou váhou do všech uzlů grafu 2. Bellman-Fordův algoritmus je využit tak, že z nového vrcholu q vyhledává pro každý vrchol v nejkratší cestu, s hodností h(v), z q do v. Pokud v tomto kroku bude zjištěn negativní cyklus, algoritmus se ukončí. 35
36 3. Hrany z původního grafu se přepočítají za pomocí hodnot spočtených podle Bellman-Fordova algoritmu: hraně z u do v, která má délku w(u,v) je přiřazena nová délka w(u, v) + h(u)-h(v). 4. Pro každý uzel se spustí Dijkstrův algoritmus pro nalezení nekratší cesty v grafu s přetransformovanými hranovými hodnotami. Nalezené cesty v transformovaném grafu jsou ve výsledku totožné s cestami jako v grafu původním. Avšak vzhledem tomu, jakým způsobem jsou přepočítány jednotlivé hrany, které jsou navíc, pro chod Dijkstrova algoritmu, nezáporné, tak délky cest neodpovídají skutečným hodnotám. Vzdálenosti mohou být ale přepočítány zpětnou transformací z hodnot Dijkstrova algoritmu. Příklad V následujícím příkladě jsou popsány první tři etapy Johnsonova algoritmu. Z obrázku číslo 27 je patrné, že v grafu není žádný záporný cyklus. Obrázek 27: Původní graf Strom znázorňující nejkratší cesty do jednotlivých uzlů je počítán Bellman-Fordovým algoritmem, kde q je počáteční uzel a hodnoty cest do ostatních uzlů jsou počítány jako nejkratší cesta z uzlu q do daného uzlu. Za zmínku stojí fakt, že všechny hodnoty jsou negativní, a jelikož má hrana z q nulovou délku, tak velikost nejkratší cesty nemůže být větší než hodnota té hrany (viz obrázek číslo 28). 36
37 Obrázek 28: Strom nalezený Bellman-Fordovým algoritmem Na obrázku číslo 29 je již transformovaný graf, kde každá hranová hodnota je přepočtena podle výše zmíněného vzorce. Žádná hrana tak už není ohodnocena záporně, ale i přes tento fakt je nejkratší cesta mezi dvěma libovolnými uzly v takto přetransformovaném grafu shodná s cestou v grafu původním. Algoritmus bude ukončen hned po provedení Dijkstrova algoritmu ze všech uzlů. Obrázek 29: Transformovaný graf bez záporně ohodnocených hran Využití Tento algoritmus, se stejně jako Floyd-Warshallův algoritmus, v praktických případech moc nevyužívá a zůstává součástí matematických disciplín, kde díky své rychlosti může právě Floyd-Warshallův algoritmus nahrazovat. 37
38 7. Asymptotická složitost algoritmů 14 Při řešení algoritmických úloh je vhodné mít nástroj, kterým dokážeme porovnat efektivitu a rychlost vykonávání jednotlivých algoritmů. Pro tento účel byly zavedeny pojmy asymptotická složitost a operační náročnost algoritmu. Asymptotická složitost je způsob klasifikace počítačových algoritmů. Určuje operační náročnost algoritmu tak, že zjišťuje, jakým způsobem se bude chování algoritmu měnit v závislosti na změně počtu vstupních dat. Při vyjadřování asymptotické složitosti zanedbáváme operace nezávislé na datech, dílčí jednodušší části algoritmu a multiplikační konstanty. Příklady časové složitosti O(1) - indexování prvku v poli (konstantní složitost) O(log 2 N) - vyhledání prvku v seřazeném poli metodou půlení intervalu (logaritmická složitost) O(N) - vyhledání prvku v neseřazeném poli lineárním vyhledáváním (lineární složitost) O(N log N) - seřazení pole reálných čísel podle velikosti např. algoritmem Mergesort (lineárně logaritmická složitost) O(N 2 ) - diskrétní Fourierova transformace (kvadratická složitost) O(2 N ) - řešení problému obchodního cestujícího za pomoci dynamického programování (exponencionální složitost) O(n!) - přesné řešení problému obchodního cestujícího pomocí hrubé síly (faktoriálová složitost) Poznámka Tyto příklady jsou řazeny od nejrychlejších k nejpomalejším. 14 Zpracováno dle: Asymptotická složitost Wikipedie, otevřená encyklopedie, (7) 38
39 Časová složitost algoritmů pro hledání nejkratších cest Dijkstrův algoritmus Při nejjednodušší implementaci Dijkstrova algoritmu je asymptotická časová složitost O( V 2 + E ), kde V je počet vrcholů a E počet hran. Při použití binární haldy (stromová datová struktura) bude složitost O(( E + V )log V ). Fibonacciho halda čas dokonce zlepší na O( E + V log V ). Floyd-Warshallův algoritmus Tento algoritmus, jelikož využívá kvadratické množství paměti vůči počtu vrcholů graf, má asymptotickou složitost rovnu O(V 3 ). Bellman-Fordův algoritmus Složitost tohoto algoritmu je rovna O(V*E). Johnsonův algoritmus Složitost tohoto algoritmu je rovna O(V 2 log V + VE). V E Dijkstrův algoritmus Dijkstrův algoritmus (binární halda) Dijkstrův algoritmus (Fibonacciho halda) Floyd- Warshallův algoritmus Bellman- Fordův algoritmus Johnsonův algoritmus ,20 2, , ,82 6, , ,02 8, , Tabulka 3: Časová složitost vybraných algoritmů Tabulka číslo 3 názorně demonstruje rychlosti algoritmů. Avšak přímo srovnávat je nemůžeme, jelikož hodnoty, které algoritmy vrátí, nejsou stejného charakteru. 39
40 8. Zhodnocení a závěr Teorie grafů je moderní a rychle se rozvíjející oblast matematiky. Jejich poznatků a aplikací se užívá v mnoha dalších disciplínách od informatiky až po řešení různých hříček a hlavolamů. Práce je zaměřena na hledání nejkratších cest v grafech, jelikož s těmito optimalizačními úlohami se člověk setkává každý den a ani si toho nemusí být vědom. Na úlohy pro hledání nejkratších cest existuje několik druhů algoritmů, ale každý z nich pracuje jiným způsobem a od toho se odvíjejí i výsledky nalezených cest. Nutné je taky podotknout, že následníci Edsgera Dijkstry se jeho algoritmem nechávali inspirovat, výjimku tvoří jen Floyd-Warshallův algoritmus. Všechny čtyři představené algoritmy mají významné uplatnění v matematických disciplínách a informatice. Dijkstrův algoritmus je poměrně rychlý algoritmus, který při jeho modifikacích pomocí různých stromových datových struktur nebo heuristik dosahuje velmi nízkých časů pro vyhodnocení výsledků. Výsledkem tohoto algoritmu je nalezení nejkratší cesty z počátečního bodu do bodu koncového, která je složena z menších, avšak také nejkratších cest do jednotlivých uzlů, které jsou součástí výsledné cesty. Floyd-Warshallův algoritmus je ze všech čtyř uvedených algoritmů algoritmem nejjednodušším, avšak časově nejnáročnějším. Počítá vzdálenosti mezi všemi dvojicemi uzlů, avšak u výsledných cest známe pouze vzdálenost. Pokud bychom chtěli znát i konkrétní cesty z jednotlivých uzlů, tak by bylo nutno algoritmus upravit. Bellman-Fordův algoritmus dokáže spočítat nejkratší cesty i v záporně ohodnocených grafech, ale za podmínky, že v grafu není obsažen záporný cyklus. Johnsonův algoritmus je ze všech čtyř algoritmů nejsložitějším. Dokáže pracovat s negativně ohodnocenými hranami, a i přes skutečnost, že je složen jak z Bellman- Fordova algoritmu (pro detekci záporně ohodnocených hran) a Dijkstrova algoritmu (pro počítání nejkratších cest z jednotlivých uzlů) je rychlejší než Floyd-Warshallův algoritmus řešící tentýž optimalizační problém. Pokud jako hlavní kritérium pro srovnání algoritmů bereme jednoduchost zápisu, je na tom Floyd-Warshallův algoritmus nejlépe. Je jednodušší na výpočet i programátorský 40
41 zápis. Dijkstrův i Bellman-Fordův algoritmus díky své podobnosti jsou na stejné úrovni složitosti. Johnsonův algoritmus je ze všech čtyř nejsložitější hlavně díky tomu, že je spojen z dvou jiných algoritmů. Co se týče asymptotické časové složitosti při hledání nejkratších cest mezi všemi vrcholy tak je nejrychlejší Johnsonův algoritmus. Dokonce i Floyd-Warshallův algoritmus je rychlejší než pro všechny vrcholy opakovaný Dijkstrův algoritmus bez modifikací. Pro hledání cest mezi dvěma vrcholy je nejvhodnější algoritmus Dijkstrův. 41
42 9. Seznam informačních zdrojů Odborná literatura 1) ČADA, Roman, KAISER, Tomáš a RYJÁČEK, Zdeněk. Diskrétní matematika, 2004, 232 s. ISBN ) DEMEL, Jiří. Grafy a jejich aplikace, 2002, 180 s. ISBN ) MATOUŠEK, Jiří a NEŠETŘIL, Jaroslav. Kapitoly z diskrétní matematiky s. ISBN ) MEZNÍK, Ivan. Diskrétní matematika, 2004, 132 s. ISBN X 5) VEČERKA, Arnošt. Grafy a grafové algoritmy, 2007, 112 s. Katedra informatiky univerzity Palackého v Olomouci Elektronické zdroje 6) All Sources Shortest Path: The Floyd-Warshall Algorithm[online] [cit ]. Dostupné z: < 7) Asymptotická složitost [online] [cit ]. Dostupné z: < 8) ČERNÝ, Jakub. Základní grafové algoritmy, 2008, 175 s. [online][cit ]. Dostupné z: < 9) DEMAINE, Erik. Shortest Paths II:Bellman-Ford, Linear Programming, Difference Constraints [online] [cit ]. Dostupné z: < 10) DEMAINE, Erik. Shortest Paths III:All-pairs Shortest Paths, Matrix Multiplication, Floyd-Warshall, Johnson [online] [cit ]. Dostupné z: < 11) Grafové algoritmy [online] [cit ]. Dostupné z: < 12) Graph theory History [online] [cit ]. Dostupné z: < 42
43 13) Kaliningrad [online] [cit ]. Dostupné z: < &sll= , &sspn= ,78.75&ie=utf8&ll= , &spn= , &t=h&z=15&iwloc=A> 14) Konigsberg bridges [online] [cit ]. Dostupné z: < 15) One Source Shortes Path: Dijkstra s Algorithm [online] [cit ]. Dostupné z: < 16) Teorie grafů [online] [cit ]. Dostupné z: < 17) The Traveling Salesman Problem [online] [cit ]. Dostupné z: < > 43
44 10. Seznam obrázků a tabulek Obrázek 1: Úloha o sedmi mostech města Königsberg... 9 Obrázek 2: Dnešní pohled na Kaliningrad Obrázek 3: Jednoduchý graf, multigraf a pseudograf Obrázek 4: Stupně vrcholů v grafu Obrázek 5: Bipartitní graf Obrázek 6: Podgraf Obrázek 7: Faktor grafu Obrázek 8: Isomorfismus Obrázek 9. Planární graf Obrázek 10: Cesta v grafu Obrázek 11: Ilustrace grafové souvislosti a nesouvislosti Obrázek 12: Kružnice v grafech Obrázek 13: Ukázky stromů Obrázek 14: Kostra grafu Obrázek 15: Orientovaný graf Obrázek 16: Příklad ohodnocených grafů Obrázek 17: Matice sousednosti Obrázek 18: První (inicializační) krok Dijkstrova algoritmu Obrázek 19: Druhý krok Dijkstrova algoritmu Obrázek 20: Třetí krok Dijkstrova algoritmu Obrázek 21: Čtvrtý krok Dijkstrova algoritmu Obrázek 22: Výsledek Dijkstrova algoritmu Obrázek 23: Graf pro demonstraci Floyd - Warshallova algoritmu Obrázek 24: Výsledná matice Floyd - Warshallova algoritmu Obrázek 25: Příklad záporného cyklu v grafu Obrázek 26: Graf pro demonstraci Bellman - Fordova algoritmu Obrázek 27: Původní graf Obrázek 28: Strom nalezený Bellman-Fordovým algoritmem Obrázek 29: Transformovaný graf bez záporně ohodnocených hran
45 Tabulka 1: První iterace Bellman - Fordova algoritmu Tabulka 2: Druhá iterace Bellman - Fordova algoritmu Tabulka 3: Časová složitost vybraných algoritmů
46 11. Rejstřík Bellman Fordův algoritmus, 32 Bipartitní graf, 13 Cesta, 16 Dijkstrův algoritmus, 24 Dijkstrův algoritmus s heuristikou, 28 Faktor grafu, 14 Floyd - Warshallův algoritmus, 30 Graf, 12 Hamiltonova hra, 10 Isomorfismus, 15 Jednoduchý graf, 12 Johnsonův algoritmus, 35 Kostra grafu, 19 Kružnice, 17 Matice sousednosti, 22 Multigraf, 12 Neorientovaný graf, 12 Obousměrný Dijkstrův algoritmus, 28 Ohodnocený graf, 20 Orientované grafy, 19 Planární graf, 16 Podgraf, 14 Problém čtyř barev, 10 Pseudograf, 12 Silně souvislý graf, 20 Silniční hierarchie, 28 Sled, 16 Složitost algoritmů, 38 Souvislost, 17 Strom grafu, 18 Stupeň vrcholu, 13 Tah, 16 Úloha čínského pošťáka, 11 Úloha jezdce, 10 Úloha o sedmi mostech města Königsberg, 9 Úloha obchodního cestujícího, 11 46
Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová
Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy
Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.
6 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info množina vrcholů a množina hran hrana vždy spojuje
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.
Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Vzdálenost uzlů v neorientovaném grafu
Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující
4 Pojem grafu, ve zkratce
Petr Hliněný, FI MU Brno, 2014 1 / 24 FI: IB000: Pojem grafu 4 Pojem grafu, ve zkratce Třebaže grafy jsou jen jednou z mnoha struktur v matematice a vlastně pouze speciálním případem binárních relací,
Definice 1 eulerovský Definice 2 poloeulerovský
Dále budeme předpokládat, že každý graf je obyčejný a má aspoň tři uzly. Definice 1 Graf G se nazývá eulerovský, existuje-li v něm uzavřený tah, který obsahuje každou hranu v G. Definice 2 Graf G se nazývá
Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant
Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je
TGH02 - teorie grafů, základní pojmy
TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 28. února 2017 Metainformace materiály: jan.brezina.matfyz.cz/vyuka/tgh (./materialy/crls8.pdf - Introduction to algorithms)
Základní pojmy teorie grafů [Graph theory]
Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme
TGH06 - Hledání nejkratší cesty
TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 26. března 2013 Motivační problémy Silniční sít reprezentovaná grafem. Najdi nejkratší/nejrychlejší cestu z místa A do místa
TGH06 - Hledání nejkratší cesty
TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 31. března 2015 Motivační problémy Silniční sít reprezentovaná grafem. Ohodnocené hrany - délky silnic. Najdi nejkratší/nejrychlejší
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Grafové úlohy Daniela Szturcová Tento
Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.
Graf 2 0 3 1 4 5 Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd. Běžné reprezentace grafu Uzly = indexy Stupně uzlů
Algoritmus pro hledání nejkratší cesty orientovaným grafem
1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval
Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest
Obsah prezentace Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest 1 Základní pojmy Vrchol grafu: {množina V} Je to styčná vazba v grafu, nazývá se též uzlem, prvkem
5 Orientované grafy, Toky v sítích
Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost
Operační výzkum. Síťová analýza. Metoda CPM.
Operační výzkum Síťová analýza. Metoda CPM. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační číslo
07 Základní pojmy teorie grafů
07 Základní pojmy teorie grafů (definice grafu, vlastnosti grafu, charakteristiky uzlů, ohodnocené grafy) Definice grafu množina objektů, mezi kterými existují určité vazby spojující tyto objekty. Uspořádaná
TEORIE GRAFŮ TEORIE GRAFŮ 1
TEORIE GRAFŮ 1 TEORIE GRAFŮ Přednášející: RNDr. Jiří Taufer, CSc. Fakulta dopravní ČVUT v Praze, letní semestr 1998/99 Zpracoval: Radim Perkner, tamtéž, v květnu 1999 ZÁKLADNÍ POJMY Říkáme, že je dán prostý
Jan Březina. 7. března 2017
TGH03 - stromy, ukládání grafů Jan Březina Technical University of Liberec 7. března 2017 Kružnice - C n V = {1, 2,..., n} E = {{1, 2}, {2, 3},..., {i, i + 1},..., {n 1, n}, {n, 1}} Cesta - P n V = {1,
Hledáme efektivní řešení úloh na grafu
Hledáme efektivní řešení úloh na grafu Mějme dán graf následující úlohy: G = ( V, E), chceme algoritmicky vyřešit Je daný vrchol t dosažitelný z vrcholu s? Pokud ano, jaká nejkratší cesta tyto vrcholy
Úvod do teorie grafů
Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí
Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT
PEF ČZU Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT Okruhy SZB č. 5 Zdroje: Demel, J., Operační výzkum Jablonský J., Operační výzkum Šubrt, T., Langrová, P., Projektové řízení I. a různá internetová
TGH02 - teorie grafů, základní pojmy
TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 31. března 2015 Počátek teorie grafů Leonard Euler (1707 1783) 1735 pobyt v Královci (Prusko), dnes Kaliningrad (Rusko)
Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014
Teorie grafů Radim Farana Podklady pro výuku pro akademický rok 013/014 Obsah Kostra grafu. Tahy,. Úloha čínského pošťáka. Zdroj: Vítečková, M., Přidal, P. & Koudela, T. Výukový modul k předmětu Systémová
zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.
Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít
H {{u, v} : u,v U u v }
Obyčejný graf Obyčejný graf je dvojice G= U, H, kde U je konečná množina uzlů (vrcholů) a H {{u, v} : u,v U u v } je (konečná) množina hran. O hraně h={u, v} říkáme, že je incidentní s uzly u a v nebo
TGH02 - teorie grafů, základní pojmy
TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 5. března 2013 Počátek teorie grafů Leonard Euler (1707 1783) 1735 pobyt v Královci (Prusko), dnes Kaliningrad (Rusko) Úloha:
Teorie grafů. Teoretická informatika Tomáš Foltýnek
Teorie grafů Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Opakování z minulé přednášky Co je to složitostní třída? Jaké složitostní třídy známe? Kde leží hranice mezi problémy řešitelnými
Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66
Teorie grafů Petr Hanuš (Píta) BR Solutions - Orličky 2010 23.2. 27.2.2010 Píta (Orličky 2010) Teorie grafů 23.2. 27.2.2010 1 / 66 Pojem grafu Graf je abstraktní pojem matematiky a informatiky užitečný
TGH05 - aplikace DFS, průchod do šířky
TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující
Metody síťové analýzy
Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický
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.
1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste
Algoritmy na ohodnoceném grafu
Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus
nelze projít pomocí tzv. eulerovského tahu tedy, nelze nakreslit jedním tahem
Teorie grafů je matematická disciplína. Spadá do oblasti diskrétní matematiky je to specifická matematická disciplína, diskrétní znamená nespojitá odvíjí se od toho, že procesy v počítačích popisujeme
10 Přednáška ze
10 Přednáška ze 17. 12. 2003 Věta: G = (V, E) lze nakreslit jedním uzavřeným tahem G je souvislý a má všechny stupně sudé. Důkaz G je souvislý. Necht v je libovolný vrchol v G. A mějme uzavřený eurelovský
TGH05 - aplikace DFS, průchod do šířky
TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující
ALGORITMY A DATOVÉ STRUKTURY
Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu
Drsná matematika III 9. přednáška Rovinné grafy: Stromy, konvexní mnohoúhelníky v prostoru a Platónská tělesa
Drsná matematika III 9. přednáška Rovinné grafy: Stromy, konvexní mnohoúhelníky v prostoru a Platónská tělesa Jan Slovák Masarykova univerzita Fakulta informatiky 13. 11. 2006 Obsah přednášky 1 Literatura
4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.
4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a
4EK311 Operační výzkum. 5. Teorie grafů
4EK311 Operační výzkum 5. Teorie grafů 5. Teorie grafů definice grafu Graf G = uspořádaná dvojice (V, E), kde V označuje množinu n uzlů u 1, u 2,, u n (u i, i = 1, 2,, n) a E označuje množinu hran h ij,
10 Podgrafy, isomorfismus grafů
Typické příklady pro zápočtové písemky DiM 470-2301 (Kovář, Kovářová, Kubesa) (verze: November 25, 2018) 1 10 Podgrafy, isomorfismus grafů 10.1. Určete v grafu G na obrázku Obrázek 10.1: Graf G. (a) největší
GRAFY A GRAFOVÉ ALGORITMY
KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ
MATEMATIKA A 3 Metodický list č. 1
Metodický list č. 1 Název tématického celku: Úvod do problematiky diskrétní matematiky Cíl: Cílem tohoto tématického celku je vymezení oblasti diskrétní matematiky a příprava na další výklad kurzu. Jedná
opakování reprezentace grafů, dijkstra, bellman-ford, johnson
opakování reprezentace grafů, dijkstra, bellman-ford, johnson Petr Ryšavý 19. září 2016 Katedra počítačů, FEL, ČVUT opakování reprezentace grafů Graf Definice (Graf) Graf G je uspořádaná dvojice G = (V,
Dijkstrův algoritmus
Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované
TGH12 - Problém za milion dolarů
TGH12 - Problém za milion dolarů Jan Březina Technical University of Liberec 7. května 2013 Složitost problému Co je to problém? Složitost problému Co je to problém? K daným vstupním datům (velkému binárnímu
NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší
Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
Drsná matematika III 10. demonstrovaná cvičení Kostry grafů
Drsná matematika III 10. demonstrovaná cvičení Kostry grafů Martin Panák Masarykova univerzita Fakulta informatiky 21.11. 2006 1 Domácí úlohy z minulého týdne Příklad 1 Příklad 2 Příklad 3 2 Borůvkův algoritmus
Úvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,
Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.
Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi
Jarníkův algoritmus. Obsah. Popis
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
Teoretická informatika Tomáš Foltýnek Barvení grafů Platónská tělesa
Tomáš Foltýnek foltynek@pef.mendelu.cz Barvení grafů Platónská tělesa strana 2 Opakování z minulé přednášky Co je to prohledávání grafu? Jaké způsoby prohledávání grafu známe? Jak nalézt východ z bludiště?
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUT OF INFORMATICS GRAFY A GRAFOVÉ ALGORITMY GRAPHS AND GRAPH
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme
Drsná matematika III 9. přednáška Rovinné grafy: Stromy, konvexní mnohoúhelníky v prostoru a Platónská tělesa
Drsná matematika III 9. přednáška Rovinné grafy: Stromy, konvexní mnohoúhelníky v prostoru a Platónská tělesa Jan Slovák Masarykova univerzita Fakulta informatiky 14. 11. 21 Obsah přednášky 1 Literatura
Diskrétní matematika. DiM /01, zimní semestr 2016/2017
Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2016/2017 O tomto souboru Tento soubor je zamýšlen především jako pomůcka
Učební texty k státní bakalářské zkoušce Matematika Teorie grafů. študenti MFF 15. augusta 2008
Učební texty k státní bakalářské zkoušce Matematika Teorie grafů študenti MFF 15. augusta 2008 1 17 Teorie grafů Požiadavky Základní pojmy teorie grafů, reprezentace grafu. Stromy a jejich základní vlastnosti,
Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května 2009. First Prev Next Last Go Back Full Screen Close Quit
Teorie grafů zadání úloh letní semestr 2008/2009 Poslední aktualizace: 19. května 2009 Obsah Úloha číslo 1 5 Úloha číslo 2 6 Úloha číslo 3 7 Úloha číslo 4 8 Úloha číslo 5 9 Úloha číslo 6 10 Úloha číslo
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
Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI
Hlavolamy a teorie grafů
Hlavolamy a teorie grafů Petr Kovář 1 petr.kovar@vsb.cz 1 Vysolá škola báňská Technická univerzita Ostrava, Škola matematického modelování, 2009 Přehled přednášky Úloha hanojských věží Část 1. Co není
Paralelní grafové algoritmy
Paralelní grafové algoritmy Značení Minimální kostra grafu Nejkratší cesta z jednoho uzlu Nejkratší cesta mezi všemi dvojicemi uzlů Použité značení Definition Bud G = (V, E) graf. Pro libovolný uzel u
Diskrétní matematika. DiM /01, zimní semestr 2018/2019
Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2018/2019 O tomto souboru Tento soubor je zamýšlen především jako pomůcka
= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez
Síť Síť je čtveřice N = ( G, s, t, c) kde G ( V, A) = je prostý orientovaný graf a každé orientované hraně ( u, v) je přiřazeno nezáporné číslo, které se nazývá kapacita hrany ( u, v), formálně c ( u,
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
Použití dalších heuristik
Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),
Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?
Kapitola 9 Matice a počet koster Graf (orientovaný i neorientovaný) lze popsat maticí, a to hned několika různými způsoby. Tématem této kapitoly jsou incidenční matice orientovaných grafů a souvislosti
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Diskrétní matematika. DiM /01, zimní semestr 2018/2019
Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2018/2019 O tomto souboru Tento soubor je zamýšlen především jako pomůcka
Přijímací zkouška - matematika
Přijímací zkouška - matematika Jméno a příjmení pište do okénka Číslo přihlášky Číslo zadání 1 Grafy 1 Pro který z následujících problémů není znám žádný algoritmus s polynomiální časovou složitostí? Problém,
Metody analýzy dat I (Data Analysis I) Rozsáhlé struktury a vlastnosti sítí (Large-scale Structures and Properties of Networks) - pokračování
Metody analýzy dat I (Data Analysis I) Rozsáhlé struktury a vlastnosti sítí (Large-scale Structures and Properties of Networks) - pokračování Základní (strukturální) vlastnosti sítí Stupně vrcholů a jejich
Výroková a predikátová logika - III
Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY GRAFY, GRAFOVÉ ALGORITMY A JEJICH VYUŢITÍ PŘI HLEDÁNÍ NEJKRATŠÍ CESTY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF INFORMATICS GRAFY, GRAFOVÉ ALGORITMY A JEJICH VYUŢITÍ
PQ-stromy a rozpoznávání intervalových grafů v lineárním čase
-stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S
Kurz operačního výzkumu pro posluchače kombinovaného studia na FAST VUT v systému MOODLE
Kurz operačního výzkumu pro posluchače kombinovaného studia na FAST VUT v systému MOODLE Jiří Novotný Ústav matematiky a deskriptivní geometrie Stavební fakulta VUT v Brně Veveří 95, 602 00 Brno e-mail:
Teorie grafů Jirka Fink
Teorie grafů Jirka Fink Nejprve malý množinový úvod Definice. Množinu {Y; Y X} všech podmnožin množiny X nazýváme potenční množinoumnožiny Xaznačíme2 X. Definice. Množinu {Y; Y X, Y =n}všech n-prvkovýchpodmnožinmnožiny
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 204 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
TGH09 - Barvení grafů
TGH09 - Barvení grafů Jan Březina Technical University of Liberec 15. dubna 2013 Problém: Najít obarvení států na mapě tak, aby žádné sousední státy neměli stejnou barvu. Motivační problém Problém: Najít
CVIČNÝ TEST 36. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
CVIČNÝ TEST 36 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST 1 Určete iracionální číslo, které je vyjádřeno číselným výrazem (6 2 π 4
Stromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 05 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia
Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů
Kapitola 11 Vzdálenost v grafech V každém grafu lze přirozeným způsobem definovat vzdálenost libovolné dvojice vrcholů. Hlavním výsledkem této kapitoly je překvapivé tvrzení, podle kterého lze vzdálenosti
VYUŽITÍ NĚKTERÝCH METOD TEORIE GRAFŮ PŘI ŘEŠENÍ DOPRAVNÍCH PROBLÉMŮ
VYUŽITÍ NĚKTERÝCH METOD TEORIE GRAFŮ PŘI ŘEŠENÍ DOPRAVNÍCH PROBLÉMŮ Markéta Brázdová 1 Anotace: Metody operačního výzkumu mají při řešení praktických problémů široké využití. Článek se zabývá problematikou
Algoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO
HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO Heuristické algoritmy jsou speciálními algoritmy, které byly vyvinuty pro obtížné úlohy, jejichž řešení je obtížné získat v rozumném čase. Mezi
Datové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
4EK213 LINEÁRNÍ MODELY
4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 3. přednáška SIMPLEXOVÁ METODA I. OSNOVA PŘEDNÁŠKY Standardní tvar MM Základní věta LP Princip simplexové metody Výchozí řešení SM Zlepšení řešení
autorovu srdci... Petr Hliněný, FI MU Brno 1 FI: MA010: Průnikové grafy
9 Krátké povídání o průnikových grafech Od této lekce teorie grafů se zaměříme lehce na několik vybraných partíı teorie grafů bĺızkých autorovu srdci... Naším prvním výběrem jsou průnikové grafy, což jsou
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka
TGH08 - Optimální kostry
TGH08 - Optimální kostry Jan Březina Technical University of Liberec 14. dubna 2015 Problém profesora Borůvky řešil elektrifikaci Moravy Jak propojit N obcí vedením s minimální celkovou délkou. Vedení
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_148_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:
OPTIMALIZAČNÍ ÚLOHY Problém optimalizace v různých oblastech: - minimalizace času, materiálu, - maximalizace výkonu, zisku, - optimalizace umístění komponent, propojení,... Modelový příklad problém obchodního
Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018
Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018 doc. Mgr. Jiří Dvorský, Ph.D. Verze zadání 6. dubna 2018 První verze Obecné pokyny 1. Celkem jsou k dispozici tři zadání příkladů. 2.
Vybíravost grafů, Nullstellensatz, jádra
Vybíravost grafů, Nullstellensatz, jádra Zdeněk Dvořák 10. prosince 2018 1 Vybíravost Přiřazení seznamů grafu G je funkce L, která každému vrcholu G přiřadí množinu barev. L-obarvení je dobré obarvení
VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5
VLASTNOSTI GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 5 Evropský sociální fond Praha & EU: Investujeme do vaší