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



Podobné dokumenty
Jan Březina. 7. března 2017

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.

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

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

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

3. Prohledávání grafů

Úvod do teorie grafů

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

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

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

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

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

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

GRAFY A GRAFOVÉ ALGORITMY

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

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

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

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

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

NP-úplnost problému SAT

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

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

Lineární algebra - I. část (vektory, matice a jejich využití)

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

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

TEORIE GRAFŮ TEORIE GRAFŮ 1

Vzdálenost uzlů v neorientovaném grafu

Metody síťové analýzy

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

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

Operace s maticemi

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

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Výběr báze. u n. a 1 u 1

Úvod do informatiky. Miroslav Kolařík

Algoritmy na ohodnoceném grafu

Cílem této kapitoly je uvedení pojmu matice a jejich speciálních typů. Čtenář se seznámí se základními vlastnostmi matic a s operacemi s maticemi

Matice sousednosti NG

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

Operace s maticemi. 19. února 2018

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

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

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

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

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

13. cvičení z PSI ledna 2017

Naproti tomu gramatika je vlastně soupis pravidel, jak

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

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

1. července 2010

Lingebraické kapitolky - Počítání s maticemi

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

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

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

II. Úlohy na vložené cykly a podprogramy

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

Minimalizace KA - Úvod

Vektorový prostor. d) Ke každému prvku u V n existuje tzv. opačný prvek u, pro který platí, že u + u = o (vektor u nazýváme opačný vektor k vektoru u)

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

Základy maticového počtu Matice, determinant, definitnost

IB112 Základy matematiky

Převoditelnost problémů nezávislé množiny na problém hamiltonovského cyklu () IS HC 1/10

Dokumentace k semestrální práci z předmětu PT

Přijímací zkouška - matematika

TGH06 - Hledání nejkratší cesty

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Jednoduché cykly

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

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

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

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Jan Pavĺık. FSI VUT v Brně

ALGORITMY A DATOVÉ STRUKTURY

Union-Find problém. Kapitola 1

TGH06 - Hledání nejkratší cesty

Lineární algebra Operace s vektory a maticemi

10 Podgrafy, isomorfismus grafů

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C)

Nepřímá úměrnost I

Slovo ALGEBRA pochází z arabského al-jabr, což znamená nahrazení. Toto slovo se objevilo v názvu knihy

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

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

Úvod do lineární algebry

Obecnou definici vynecháme. Jednoduše řečeno: složenou funkci dostaneme, když dosadíme za argument funkci g. Potom y f g

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Textové popisky. Typ dat

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.

1.4.6 Negace složených výroků I

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

x 0; x = x (s kladným číslem nic nedělá)

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Zdrojem většiny příkladů je sbírka úloh 1. cvičení ( ) 2. cvičení ( )

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Transkript:

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? To si teď vysvětlíme. Všechny možné reprezentace si budeme vysvětlovat na následujícím grafu G = (V, ) a orientovaném grafu H = (W, F ). V každé sekci budou jejich reprezentace uvedeny jako příklad. a b c graf G graf H d V této knize označujeme vrcholy grafu písmeny abecedy. Je to tak lepší pro výklad a diskuse nad grafy v příkladech. V počítači označujeme vrcholy pomocí čísel, 2 až n. Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.. Seznam hran Uložíme si počet vrcholů a seznam všech hran. Hrana je dvojice vrcholů. V neorientovaných grafech je jedno, jestli si hranu uv pamatujeme jako dvojici uv nebo vu. le v případě orientovaných grafů už musíme dodržet správné pořadí vrcholů. Většinou za správné pořadí považujeme to po směru šipky. Orientovaný graf může kromě šipky uv obsahovat i opačnou šipku vu. Neorientovaný graf na obrázku má 5 vrcholů až a seznam hran,,,,,. Orientovaný graf má 4 vrcholy a až d a seznam hran ab, ac, ba, cb a dc. Tato reprezentace je vhodná spíše pro zadávání grafu na vstupu nebo pro skladování grafu na pevném disku. Často ale začínáme od a končíme vrcholem n.

2 KPITOL. RPRZNT GRFU.2 Matice sousednosti Matice sousednosti zachycuje, které vrcholy spolu sousedí. V matici si pro každou dvojici vrcholů (u, v) pamatujeme, jestli z vrcholu u vede hrana do vrcholu v. Z toho je vidět, že matice reprezentuje orientované grafy. Neorientovaný graf G si můžeme reprezentovat tak, že ho nejprve převedeme na orientovaný graf G a ten teprve reprezentujeme pomocí matice sousednosti. Orientovaný graf G dostaneme z G tak, že každou neorientovanou hranu uv nahradíme dvojicí šipek uv a vu, jdoucích proti sobě. Matice sousednosti má velikost n n a je definována jako = (a u,v ), kde a u,v = { uv uv Protože graf neobsahuje smyčky (hrany z v do v), tak je a v,v = pro každý vrchol v V. Podobně je vidět, že pro neorientované grafy dostaneme symetrickou matici. (G) = a b c d (H) = Matici sousednosti budeme celkem často používat, protože se s ní jednoduše pracuje. Hlavně velmi rychle zjistíme, jestli je uv hranou grafu. Matice sousednosti obsahuje jen nuly nebo jedničky. Často si ale boolovskou matici rozšíříme na matici integerů, protože pak si v a ij můžeme pamatovat ohodnocení hrany ij. Pokud graf není úplný, tak musíme určit jednu hodnotu, která znamená, že hrana neexistuje (běžně se bere počítačové, které pro integery je MXINT; podobně pokud jsou všechna ohodnocení hran nezáporná, tak můžeme použít ). Pokud si do a ij uložíme vzdálenost vrcholu i od vrcholu j, tak dostaneme matici vzdáleností..3 Seznam sousedů Reprezentaci si vysvětlíme pro orientované grafy. Neorientovaný graf G bychom si reprezentovali tak, že ho nejprve převedeme na orientovaný graf G, který už budeme umět reprezentovat (viz jak to bylo popsáno u matice sousednosti). Teď se podívejme, jak reprezentovat orientovaný graf G = (V, ). Pro každý vrchol v V si budeme pamatovat seznam jeho sousedů. To je vrcholy, do kterých z v vede hrana. a b c d

.4. VÝHOY NVÝHOY JNOTLIVÝH RPRZNTÍ 3 bychom se vyhnuli spojovým seznamům a přitom neplýtvali pamětí, tak jednotlivé seznamy poskládáme za sebe do jednoho pole. bychom neztratili přehled o tom, kde který seznam sousedů začíná, tak si stále ponecháme pole V[ ] obsahující ukazatele na začátky seznamů. Políčko V[i] bude obsahovat index do pole Sousedi[ ], na kterém začíná seznam sousedů vrcholu i. Seznam sousedů vrcholu i bude končit o jednu pozici dříve než začíná seznam sousedů vrcholu i +. bychom věděli kde končí seznam sousedů posledního vrcholu, tak rozšíříme obě pole o jedna (odpovídá to přidání fiktivního vrcholu s prázdným seznamem sousedů). V: 4 6 8 2 3 Sousedi: 2 3 4 5 6 7 8 9 2 3.4 Výhody a nevýhody jednotlivých reprezentací Nejprve si musíme rozmyslet, co chceme v grafu dělat. Mezi nejčastější operace patří testování, jestli jsou dva vrcholy u V a v V spojeny hranou. Jinými slovy potřebujeme zjistit, zda je uv hrana. ruhou častou operací je průchod všech sousedů vrcholu v. Následujíc tabulka shrnuje, jak dlouho tyto dotazy trvají v jednotlivých reprezentacích. Zároveň udává i prostorovou složitost každé reprezentace. Reprezentace Je uv hrana? Projít sousedy v Prostorová složitost seznam hran O(m) O(m) O(m) matice sousednosti O() O(n) O(n 2 ) seznam sousedů O(n) O(#sousedů) O(n + m) Matice sousednosti nám jako jediná reprezentace umožňuje v konstantním čase určit, jestli je uv hrana grafu (však je tomu šitá na míru). Pro řídké grafy (grafy, které mají málo hran) za to zaplatíme vyšší paměťovou náročností. Příkladem řídkých grafů jsou rovinné grafy, které mají nejvýše 3n 6 = O(n) hran. Na druhou stranu pro husté grafy (grafy, které mají alespoň c n 2 hran pro nějaké c > ) je to ideální reprezentace. Zabere lineárně mnoho prostoru ve velikosti grafu, testování, jestli je uv hrana, proběhne v čase O() a dokonce i průměrný počet sousedů je Ω(n). V některých algoritmech hodně často procházíme všechny sousedy některých vrcholů a testy, zda je uv hrana, ani nepotřebujeme. V takových případech je nejlepší použít reprezentaci grafu seznamem sousedů. Z předchozích odstavců je vidět, že je každá reprezentace někdy výhodná, každá jindy. Záleží na tom, co s grafem chceme provádět. Pro každý algoritmus si musíme vybrat individuálně. Poznámka: Někdy si spolu s grafem chceme reprezentovat i jeho další vlastnosti. Například pro rovinné grafy chceme znát seznam všech stěn. Pro každou

4 KPITOL. RPRZNT GRFU stěnu chceme rychle zjistit seznam hran a vrcholů, které obsahuje. Naopak pro každou hranu chceme vědět, ve kterých stěnách je obsažena. Návrh takové datové struktury už není složitý a proto necháváme na čtenáři, aby si rozmyslel, jak takové věci efektivně reprezentovat..5 Příklady. (Převody mezi reprezentacemi) Pro každé dvě reprezentace grafu navrhněte nejefektivnější způsob převodu z první reprezentace do druhé. Určete časovou složitost převodu. 2. (Obrácení hran v orientovaném grafu) ostanete orientovaný graf reprezentovaný maticí sousednosti. Obrátit všechny šipky na druhou stranu je jednoduché, stačí vzít matici transponovanou T. Matice transponovaná k matici = (a i,j ) je matice T = (a j,i ) (prohodíme řádky za sloupce a naopak). le co když dostaneme graf reprezentovaný seznamem sousedů? Jak rychle obrátíte hrany v této reprezentaci? 3. (Mocnina orientovaného grafu) Mocnina orientovaného grafu G = (V, ) je graf G 2 = (V, 2 ), kde uv 2 právě tehdy když z u vede orientovaná cesta délky 2 do v (neboli existuje vrchol w V takový, že uw a wv ). Navrhněte efektivní algoritmus, který dostane graf G reprezentovaný buď maticí sousednosti nebo seznamem sousedů, a vytvoří graf G 2 reprezentovaný stejným způsobem. Jaká je časová složitost vašeho algoritmu? 4. (Hledání stoku) ostanete orientovaný graf reprezentovaný maticí sousednosti. Většina algoritmů pracujících s maticí sousednosti má časovou složitost alespoň Ω(n 2 ). le jsou i výjimky. (a) Zkuste co nejrychleji najít univerzální stok grafu. Univerzální stok je takový vrchol, do kterého vede n hran ze všech ostatních vrcholů, ale ze kterého nevedou žádné hrany ven. Zvládnete to v čase O(n)? (b) Zkuste co nejrychleji najít stok grafu. Stok je takový vrchol, ze kterého nevedou žádné hrany ven. Jaká bude časová složitost vašeho algoritmu? 5. (a) (Matice incidence) Česky bychom mohli říci matice náležení. Tato matice zachycuje, kdy platí v e pro v V a e. Matice incidence I má velikost n m a je definována jako I = (i v,e ) v V,e, kde { v e i v,e = v e Pro graf G ze začátku kapitoly dostáváme následující matici. I(G) = e e e e e e V každém sloupci jsou právě dvě jedničky, protože každá hrana má právě dva konce. Pokud bychom chtěli takto reprezentovat orientovaný graf, tak musíme jedničku u výchozího vrcholu šipky změnit na mínus jedničku.

.5. PŘÍKLY 5 (b) Matice incidence orientovaného grafu G = V, ) je matice tvaru n m = (b v,e ), kde pokud hrana e vychází z vrcholu v b v,e = pokud hrana e přichází do vrcholu v jinak. Zjistěte, jaký význam mají položky matice T, kde T značí matici transponovanou k matici.