Grafové algoritmy. Programovací techniky

Podobné dokumenty
Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Vzdálenost uzlů v neorientovaném grafu

Úvod do teorie grafů

Algoritmy na ohodnoceném grafu

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

Paralelní grafové algoritmy

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

TGH06 - Hledání nejkratší cesty

TGH08 - Optimální kostry

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

Algoritmizace prostorových úloh

TGH06 - Hledání nejkratší cesty

07 Základní pojmy teorie grafů

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

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

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

Použití dalších heuristik

4EK311 Operační výzkum. 5. Teorie grafů

Dijkstrův algoritmus

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

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.

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

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

Metody síťové analýzy

TEORIE GRAFŮ TEORIE GRAFŮ 1

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Matice sousednosti NG

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Jarníkův algoritmus. Obsah. Popis

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

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

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

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

Operační výzkum. Síťová analýza. Metoda CPM.

Stromy, haldy, prioritní fronty

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Algoritmy a datové struktury

Jan Březina. 7. března 2017

Dijkstrův algoritmus (připomenutí)

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

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

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

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

Základní datové struktury III: Stromy, haldy

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

= 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

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

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

Jan Březina. Technical University of Liberec. 21. dubna 2015

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

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

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

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

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

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

TGH04 - procházky po grafech

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Jan Březina. Technical University of Liberec. 30. dubna 2013

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

Dynamické datové struktury III.

TGH02 - teorie grafů, základní pojmy

Úvod do informatiky. Miroslav Kolařík

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

PLANARITA A TOKY V SÍTÍCH

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

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

bfs, dfs, fronta, zásobník

Prohledávání do šířky = algoritmus vlny

ALGORITMY A DATOVÉ STRUKTURY

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Přijímací zkouška - matematika

TGH09 - Barvení grafů

Prioritní fronta, halda

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.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

Optimalizace & soft omezení: algoritmy

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

TGH02 - teorie grafů, základní pojmy

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

6. Tahy / Kostry / Nejkratší cesty

TGH02 - teorie grafů, základní pojmy

TGH10 - Maximální toky

NPRG030 Programování I, 2018/19 1 / :03:07

Ohodnocené orientované grafy

1 Teorie grafů. Základní informace

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

3. Prohledávání grafů

Časová a prostorová složitost algoritmů

GRAFY A GRAFOVÉ ALGORITMY

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

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

Dynamické programování

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

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

"Agent Hledač" (3. přednáška)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. FAKULTA STROJNÍHO INŽENÝRSTVÍ Ústav automatizace a informatiky TEORIE GRAFŮ. Doc. RNDr. Ing. Miloš Šeda, Ph.D.

Transkript:

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 nulový u vrcholů ani u hran Grafy Orientované hrana (u,v) označena šipkou u->v Neorientované pokud ex. (u,v), existuje také (v,u) Souvislost graf je souvislý, jestliže pro všechny v(i) z V existuje cesta do libovolného v(j) z V, nesouvislý graf je rozdělen na komponenty Strom graf, ve kterém pro každé 2 vrcholy existuje právě jedna cesta

Grafy Úvod - Terminologie

Incidenční matice: Grafy Úvod Reprezentace grafu

Matice sousednosti:

Spojové seznamy: - výhodné pokud je proměnný počet hran

Neorientovaný graf:

Plexová struktura: - princip podobný reprezentaci seznamem, ale statické pole je nahrazeno dynamickým spojovým seznamem - výhodné pokud používáme proměnný počet uzlů Orientovaný graf: 1 2 4 5 / 2 3 / 3 4 / 4 2 5 / 5 1 /

Neorientovaný graf: 1 2 4 5 / 2 1 3 4 3 2 4 / 4 1 2 3 5 / 5 1 4 /

Ohodnocené grafy hrany grafu jsou ohodnoceny (např. délka cesty mezi dvěma městy, doba potřebná k projetí apod.) reprezentace grafů incidenční maticí je obdobná, akorát místo hodnot ±1 je uvedeno ohodnocení hrany, 0 se obvykle nahrazuje symbolem. pokud reprezentujeme graf spojovým seznamem nebo plexovou strukturou má položka seznamu tvar u h Ukazatel na další prvek ohodnocení hrany Uzel ve kterém hrana končí

Prohledávání grafu Systematický postup pro řešení následujících úloh: 1. Zjistit, zda vrchol t je dosažitelný z vrcholu r 2. Najít množinu všech vrcholů dosažitelných z vrcholu r 3. Najít jakoukoliv cestu z vrcholu r do vrcholu t (pokud existuje) 4. Najít jakékoliv cesty z vrcholu r do všech vrcholů, které jsou z něj dosažitelné 5. Pro všechny vrcholy, které jsou dosažitelné z vrcholu r provést zadanou operaci Metody prohledávání: prohledávání do hloubky (depth-first search) prohledávání do šířky (breath-first search) heuristické prohledávání

Prohledávání grafu do hloubky

Časová složitost prohledávání do hloubky: O( V + H )

Prohledávání grafu do šířky Časová složitost prohledávání do šířky: O( V + H )

Vyhledávání nejkratší cesty v grafech Úkolem této skupiny algoritmů je nalézt nejkratší orientovanou cestu: z daného vrcholu do daného vrcholu, z daného výchozího vrcholu do každého vrcholu grafu, z každého vrcholu do daného koncového vrcholu, mezi všemi uspořádanými dvojicemi vrcholů Algoritmy jsou založeny na prohledávání grafu, do kterého je přidáno kritérium při výběru hran - délka cesty (součet cen všech hran, které tvoří cestu z výchozího vrcholu do koncového vrcholu). Pokud nalezneme jakoukoliv cestu z výchozího vrcholu do libovolného dalšího, testujeme, je-li to nejkratší cesta ověřujeme platnost trojúhelníkové nerovnosti c j >c i +c ij, Kde c j je cena dosud nejkratší cesty z výchozího vrcholu do vrcholu v j, c ij je cena hran mezi vrcholy v i a v j. Pokud je nerovnost splněna, nalezli jsme lepší cestu a c j :=c i +c ij, pokud ne neměníme nic.

Základní algoritmus

Zlepšený algoritmus

Dijkstrův algoritmus Hledání nejkratší cesty v ohodnoceném grafu z vrcholu s do vrcholu t Předpokládáme: Graf je souvislý Neorientované hrany (lze použít i pro orientované grafy) Má nezáporně ohodnocené hrany Z navštívených vrcholů vytváříme mrak. Zpočátku mrak obsahuje počáteční vrchol S, postupně přidáváme uzly až do nalezení cílového uzlu V každém kroku přidáme do mraku vrchol v vně mraku s nejmenší vzdáleností d(v) (prioritní fronta) Opravíme vzdálenosti vrcholů sousedících s v (vede často k relaxaci hran)

Dijkstrův algoritmus Relaxace hran Relaxace hrany e upravuje vzdálenost d(z) takto: d(z) min{d(z),d(u)+weight(e)}

Bellman-Fordův algoritmus podobný Dijkstrovu algoritmu, v algoritmu je zavedeno další pole, ve kterém je u každého vrcholu uvedeno, kolik hran obsahuje nejkratší cesta z výchozího vrcholu do daného vrcholu. algoritmus preferuje nejkratší cestu s nejmenším počtem hran algoritmu lze využít k detekci cyklu se zápornou cenou v grafu o n vrcholech je maximálně n-1 hran pokud algoritmus neskončí po n-1 krocích je v grafu cyklus se zápornou cenou.

Bellman-Fordův algoritmus

Floyd-Warshallův algoritmus Algoritmus hledající minimální cestu mezi všemi páry vrcholů (all-pair shortest path algorithm) Vhodný pro husté grafy v tom případě rychlejší než Dijkstra opakovaný pro všechny vrcholy Pracuje s maticí sousednosti Složitost O(n 3 ) Můžeme stanovit max. počet vrcholů, přes které se jde Je technikou dynamického programování viz dále

Matice sousednosti je uložena ve w d je matice aktuálně spočtených nejkratších vzdáleností mezi je matice nejkratších mezicest, je nainicializována na -1 (null) V každém kroku algoritmu zjišťuji, jestli existuje mezi vrcholy i,j kratší cesta přes vrchol k, pokud ano, nastavím vzdálenost v d[i][j] na novou velikost a do path[i][j] zaznamenám vrchol k

Floyd-Warshallův algoritmus

Floyd-Warshallův algoritmus Rekonstrukce nejkratší cesty mezi i,j V mezi[i,j] je index vrcholu k, přes který se má jít. Pokud k není - 1(null) podívám se do mezi na nejkratší cestu mezi i,k a k,j Toto opakuji rekurzivně dokud nenajdu mezi[i,j] == -1 null). Cesta(i,j) begin end; if mezi[i,j]=null then tisk(i,j) else begin Cesta(i, mezi[i,j]); Cesta(mezi[i,j], j); end;

Minimální kostra grafu Algorimus na hledání minimální kostry grafu (Minimum Spanning Tree) Kostra grafu: minimální souvislý podgraf, který obsahuje všechny vrcholy neobsahuje cykly je to strom Definice: Je dán souvislý graf G, jehož hrany jsou ohodnoceny reálnými čísly, které budeme nazývat cenami. Kostrou grafu, která má nejmenší ohodnocení hran mezi všemi kostrami, nazýváme nejlevnější (minimální) kostrou grafu

Kruskalův algoritmus:

Primův Jarníkův algoritmus

for u V do begin klíč[u]:= end; klíč[r]:=0; před[r]:=nil; uvnitř[u]:=false Prim- Jarnikův algoritmus (využívá prioritní frontu) Q:=prioritní_fronta(V); {vložení vrcholů do prioritní fronty Q} while Neprázdná(Q) do end; begin u:=odebermin(q); for v Adj[u] do if (not(uvnitř[v])) and (w[u,v]<klíč[v]) then begin klíč[v]:=w(u,v); end; uvnitř[u]:=true; ZmenšiKlíč(Q,v,klíč[v]); před[v]:=u

Primův-Jarníkův algoritmus Příklad(1)

Primův-Jarníkův algoritmus Příklad - pokračování

Toky v sítích

Příklady grafů se zadanou velikostí toku, kapacitou hrany a dolním omezením.

Maximální tok sítí

Příklad: