Vzdálenost uzlů v neorientovaném grafu

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

Použití dalších heuristik

Úvod do teorie grafů

Grafové algoritmy. Programovací techniky

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Grafové algoritmy. Programovací techniky

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

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

Algoritmy na ohodnoceném grafu

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

TGH06 - Hledání nejkratší cesty

07 Základní pojmy teorie grafů

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

Matice sousednosti NG

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

TGH06 - Hledání nejkratší cesty

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

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

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

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

Algoritmizace prostorových úloh

Ohodnocené orientované grafy

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

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

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.

TEORIE GRAFŮ TEORIE GRAFŮ 1

Dijkstrův algoritmus (připomenutí)

Dijkstrův algoritmus

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

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

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

Metody síťové analýzy

TGH02 - teorie grafů, základní pojmy

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

Stromy, haldy, prioritní fronty

PLANARITA A TOKY V SÍTÍCH

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

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

Dynamické programování

TGH02 - teorie grafů, základní pojmy

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

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

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

TGH08 - Optimální kostry

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

TGH02 - teorie grafů, základní pojmy

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

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

Přijímací zkouška - matematika

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

6. Tahy / Kostry / Nejkratší cesty

Základy umělé inteligence

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

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

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

ALGORITMY A DATOVÉ STRUKTURY

Grafové algoritmy. Aktualizováno: 29. listopadu / 228

Paralelní grafové algoritmy

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

Úvod do informatiky. Miroslav Kolařík

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Jan Březina. 7. března 2017

Grafy (G) ρ(h) = [u,v]

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Ú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ů

Grafové algoritmy. Programovací techniky

3. Prohledávání grafů

Jarníkův algoritmus. Obsah. Popis

TGH10 - Maximální toky

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

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

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

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

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

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

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

= 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

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

STROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6

popel, glum & nepil 16/28

Aplikovaná numerická matematika - ANM

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

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

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Algoritmy I, složitost

TGH09 - Barvení grafů

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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 Skalární součin. študenti MFF 15. augusta 2008

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

Jednoduché cykly

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

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

3. Grafy a matice. Definice 3.2. Čtvercová matice A se nazývá rozložitelná, lze-li ji napsat ve tvaru A =

STROMY. v 7 v 8. v 5. v 2. v 3. Základní pojmy. Řešené příklady 1. příklad. Stromy

Dynamické programování

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

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

Transkript:

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í tyto dva uzly značíme ji d G (u, v) délka cesty = počet hran v cestě

Graf 0 h2 h1 h6 4 2 h3 1 h5 h4 h7 5 3 d G (0, 5) = 3 d G (0, 3) = 2, d G (3, 0) = 2 d G (0, 2) = 1

Vlastnosti vzdálenosti vzdálenost d(u, v) je celé nezáporné číslo d(u, v) 0; přitom d(u, v) = 0, právě když u = v symetrie: d(u, v) = d(v, u) trojúhelníková nerovnost: d(u, v) d(u, z) + d(z, v) je-li d(u, v) > 1, pak platí: z V, ( u z v d(u, v) = d(u, z) + d(z, v) )

Vzdálenost uzlů v orientovaném grafu Je dán orientovaný neohodnocený graf G = (V,E,I) vzdálenost d (u, v) uzlů u a v v orientovaném souvislém grafu G je délka nejkratší orientované cesty (= počet hran) spojující tyto dva uzly není symetrická d (u, v) je definována pokud existuje mezi u a v orientovaná cesta, jinak je d (u, v) = d (u, v) je definována pro všechny dvojice uzlů pouze v případě silně souvislého grafu

Vzdálenost uzlů v orientovaném a ohodnoceném grafu S = (h 1, h 2,..., h k ) je spojení orientovaneho grafu G = (V,E,I) s reálným ohodnocením hran w : E R w-délkou spojení S nazýváme reálné číslo d w (S) definované d ( S) = w h i i= 1 k w( )

Vzdálenost uzlů v orientovaném a ohodnoceném grafu w-vzdálenost d w (u, v) z uzlu u do uzlu v je nejmenší w-délka spojení z u do v, pokud takové spojení v grafu G existuje je-li uzel v z uzlu u nedostupný, pokládáme d w (u, v) =

Vzdálenost uzlů v orientovaném a ohodnoceném grafu problém: pokud je v grafu cyklus se záporným ohodnocením hran, neexistuje minimální spojení opakovaným zařazením cyklu stále snižujeme délku spojení, tedy minimum je - jestliže žádná orientovaná cesta z u do v neprochází cyklem grafu se zápornou nebo nulovou w-délkou, pak bude každé minimální spojení určující w-vzdálenost d w (u, v) orientovanou cestou

Vlastnosti vzdálenosti vzdálenost d(u, v) je celé nezáporné číslo pouze pro nezáporná celočíselná ohodnocení d(u, v) 0; přitom d(u, v) = 0, právě když u = v pouze po kladné ohodnocení hran

symetrie Vlastnosti vzdálenosti neexistuje u orientovaných grafů trojúhelníková nerovnost: d(u, v) d(u, z) + d(z, v) platí

Vlastnosti vzdálenosti nechť G = (V,E,I) je orientovaný graf s ohodnocením hran w : E R a buď L = (u 1, u 2,..., u k ) cesta určující vzdálenost d w (u 1, u k ) z uzlu u 1 do uzlu u k pro libovolná i, j : 1 i j k potom platí d w (u1, uk ) = dw(u1, ui ) + dw(u i, u j ) + d w (u j, u k ))

Základní úloha nalezení nejkratších cest z jednoho zadaného uzlu s V do všech ostatních uzlů u V grafu G

Varianty základní úlohy 1. nalezení nejkratších cest z každého uzlu u V do pevně zadaného cílového uzlu t lze řešit jako základní úlohu v opačně orientovaném grafu G

Varianty základní úlohy 2. nalezení jedné nejkratší cesty mezi jedinou zadanou (uspořádanou) dvojicí uzlů u, v V. řešíme-li základní úlohu s výchozím uzlem u, vyřešíme tím i tuto úlohu není znám žádný algoritmus, který by měl asymptotickou složitost v nejhorším případě lepší než algoritmus pro základní úlohu

Varianty základní úlohy 3. nalezení nejkratší cesty pro všechny (uspořádané) dvojice uzlů u, v V lze řešit s použitím algoritmu pro základní úlohu - použijeme jej postupně pro každý uzel grafu v roli výchozího uzlu existují i maticové algoritmy

Princip algoritmu pro základní úlohu vychází z algoritmu prohledávání grafu do šířky u uzlu s (výchozí) nastaví vzdálenost na hodnotu 0 a u ostatních na nekonečno prochází graf do šířky a přepočítává vzdálenosti na základě tzv. relaxace hrany

INIT-PATHS(G,s,w) Inicializace // s je počáteční uzel, w je ohodnocení hran { } for každý uzel u V { // všechny uzly grafu mají od s // nekonečnou vzdálenost } d[u] = ; // p[u] je přechůdce u na nejkratší cestě p[u] = NULL; d[s] = 0;

Princip: Relaxace hrany pokud je vzdálenost do uzlu v přes uzel u kratší než dosavadně spočítaná, přepočtu vzdálenost a opravím předchůdce uzlu v na u

Relaxace hrany RELAX(u,v,w) { if ( d[v] > d[u] + w(u, v) ) { d[v] = d[u] + w(u, v); p[v] := u; }

Relaxace hrany

Dijkstrův algoritmus ohodnocení hran musí být nezáporné algoritmus šíří při prohledávání grafu vlnu, která pohlcuje uzly, k nímž byla již nalezena nejkratší cesta složitost O( E log 2 V ).

Dijkstrův algoritmus zdroj: doc. Kolář: Teoretická informatika, FIT ČVUT

Dijkstrův algoritmus zdroj: doc. Kolář: Teoretická informatika, FIT ČVUT

Počáteční inicializace INIT_PATH d[s]=0, d[u]=, d[v]=, d[x]=, d[y]= p[s]=null, p[u]=null, p[v]=null, p[x]=null, p[y]=null nastavím množinu uzavřených uzlů na prázdnou S = Ø všechny uzly grafu vložím do fronty Q a seřadím dle vzdálenosti d Q = { s(0), u( ), v( ), x( ), y( ) }

z Q vyberu uzel nejbližší k s a uzavřu jej je to sám uzel s S = {s} pro všechny sousedy uzlu s provedu relaxaci hrany u: d[u] = 2, předchůdce p[u]=s x: d[x] = 4, předchůdce p[x]=s Q = {u(2), x(4), v( ), y( ) } Q není prázdná, z Q vyberu uzel nejbližší k s a uzavřu jej je to uzel u S = {s,u}

pro všechny sousedy uzlu u provedu relaxaci hrany v: d[v] = 5, předchůdce p[v]=u x: d[x] = 3, předchůdce p[x]=u vzdálenost do x byla přes za 4, půjdu-li přes u, je za 3 Q = {v(3), x(5), y( ) } atd.

Bellmanův-Fordův algoritmus použitelný i pro záporné ohodnocení hran Dijkstrův algoritmus relaxoval vždy jen hrany vycházející z vybraného uzlu, B-F algoritmus opakovaně relaxuje systematicky všechny hrany algoritmus zároveň detekuje záporné cykly algoritmus vrací true/false, zda detekoval záporný cyklus

Bellmanův-Fordův algoritmus BELLMAN-FORD(G,s,w) { } INIT-PATHS(G, s) for i = 1 to U 1 { for každou hranu (u, v) H RELAX(u, v,w) } for každou hranu (u, v) H if (d[v] > d[u] + w(u, v) ) return FALSE; return TRUE;

Bellmanův-Fordův algoritmus

Upravený Bellmanův-Fordův algoritmus vybírá pro relaxaci ty hrany, pro jejichž počáteční uzel se hodnota vzdálenosti v předchozí relaxaci snížila

Upravený Bellmanův-Fordův algoritmus

Acyklický graf graf, který nemá cykly uzly lze topologicky uspořádat je zachováno pořadí předchůdce následník, tj. uzly lze zapsat do posloupnosti takové, že pro každé dva uzly platí, že dříve zapsaný uzel je v grafu předchůdce později zapsaného při hledání nejkratších cest stačí procházet uzly v topologickém pořadí a relaxovat hrany směrem k následníkům

Acyklický graf topologické uspořádání uzlů: 5, 2, 3, 1, 6,4

Acyklický graf graf je acyklický právě tehdy, když tento graf a každý jeho neprázdný podgraf obsahuje vstupní uzel vstupní uzel uzel, jehož vstupní stupeň je 0, tj. nevchází do něj žádná hrana výstupní uzel uzel, jehož výstupní stupeň je 0, tj. nevychází z něj žádná hrana stejná věta platí i pro výstupní uzel

Test acykličnosti grafu int je_acyklicky(g) { while (G je neprázdný) { if (neexistuje vstupní uzel) { graf není acyklický return 0; } u = vstupní uzel //odejmi uzel u z grafu a incidující hrany G = G {u} přidej uzel u do posloupnosti } return 1;

Test acykličnosti grafu

Test acykličnosti grafu 5

Test acykličnosti grafu 5, 2

Test acykličnosti grafu 5, 2, 3

Test acykličnosti grafu 5, 2, 3, 1

Test acykličnosti grafu 5, 2, 3, 1

Test acykličnosti grafu 5, 2, 3, 1, 6

Test acykličnosti grafu 5, 2, 3, 1, 6, 4

Hledání vzdáleností v acyklickém grafu

Nejkratší cesty mezi všemi uzly Maticové operace Je dán graf G = (V,E,I) a jeho matice sousednosti A Prvek a i,j (k) k-té mocniny matice sousednosti A k na pozici i,j určuje počet sledů délky právě k je-li prvek na diagonále, existuje v grafu uzavřený sled délky k

Příklad: v1 v3 v2 A = 0 1 0 1 0 1 0 1 1 3 A = 0 1 1 2 1 3 1 3 3

Nejkratší cesty mezi všemi uzly Maticové operace pokud použijeme operace v tělese mod 2, jsou v mocninách matic pouze 1 vyjadřují existenci sledů, nikoliv počet protože délka nejkratšího sledu je délkou nejkratší cesty, můžeme odvodit: pokud se poprvé objeví nenulový prvek na pozici i,j v k-té mocnině, nejkratší cesta má délku k v grafu o n uzlech může existovat nejdelší cesta maximálně délky n-1 hledáme-li cesty, stačí spočítat max. (n-1) mocninu