Cvičebnice teorie grafů se zaměřením na problematiku toků v sítích

Podobné dokumenty
Přijímací řízení akademický rok 2011/12 Kompletní znění testových otázek matematický přehled

Mocnina částečně uspořádané množiny

Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Rovinné nosníkové soustavy Gerberův nosník

Práce se seznamy. Operace na datových strukturách. Práce se seznamy del a insert. Práce se seznamy member. Seznam: rekurzivní datová struktura

Koš Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď 1. 1 Které číslo doplníte místo otazníku? ?

1.3.5 Řešení slovních úloh pomocí Vennových diagramů II

Rovinné nosníkové soustavy III Příhradový nosník

( ) ( ) ( ) Vzdálenost bodu od přímky II. Předpoklady: 7312

Technická kybernetika. Obsah

Obrázková matematika D. Šafránek Fakulta jaderná a fyzikálně inženýrská, Břehová 7, Praha 1

Petriho sítě PES 2007/2008. Doc. Ing. Tomáš Vojnar, Ph.D.

1.3.6 Řešení slovních úloh pomocí Vennových diagramů I

Technická dokumentace Ing. Lukáš Procházka

( ) ( ) Sinová věta II. β je úhel z intervalu ( 0;π ). Jak je vidět z jednotkové kružnice, úhly, pro které platí. Předpoklady:

4.4.1 Sinová věta. Předpoklady: Trigonometrie: řešení úloh o trojúhelnících.

Trojkloubový nosník. Rovinné nosníkové soustavy

ŘEŠENÍ OBVODŮ S TRANSIMPEDANČNÍMI OPERAČNÍMI ZESILOVAČI POMOCÍ GRAFŮ SIGNÁLOVÝCH TOKŮ

Rovinné nosníkové soustavy Gerberův nosník

PT 1. ročník 2. ročník 3. ročník 4. ročník 5. ročník

Půjdu do kina Bude pršet Zajímavý film. Jedině poslední řádek tabulky vyhovuje splnění podmínky úvodního tvrzení.

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky. Úloha č. 3. Student

Nadměrné daňové břemeno

Konstrukce na základě výpočtu II

Podobnosti trojúhelníků, goniometrické funkce

Box diagram výroby Hranice produkčních možností

1 Logické řízení (prof. Ing. Jiří Tůma, CSc.)

Koš Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď

Přijímací řízení akademický rok 2013/2014 NavMg. studium Kompletní znění testových otázek mikroekonomie

Rovinné nosníkové soustavy

4.3.9 Sinus ostrého úhlu I. α Předpoklady: Správně vyplněné hodnoty funkce a c. z minulé hodiny.

{ } ( ) ( ) Vztahy mezi kořeny a koeficienty kvadratické rovnice. Předpoklady: 2301, 2508, 2507

Konstrukce na základě výpočtu II

Slovní úlohy na sjednocení dvou množin s neprázdným průnikem. II b III

Jak oslabit PC, aby algoritmus: neměl paměťové nároky PC, povede k vyřazení hodnoty z domény proměnné! e f. e f. a b. a b. byl silnější než AC?

SMR 2. Pavel Padevět

ANALYTICKÁ GEOMETRIE V PROSTORU

4.4.3 Kosinová věta. Předpoklady:

e Stavby pro reklamu podle 3 odst. 2. f

ověření Písemné ověření a ústní zdůvodnění

6 Řešení soustav lineárních rovnic rozšiřující opakování

Název školy: ZŠ A MŠ ÚDOLÍ DESNÉ, DRUŽSTEVNÍ 125, RAPOTÍN Název projektu: Ve svazkové škole aktivně - interaktivně Číslo projektu:

Diferenciální počet. Spojitost funkce

INTEGRÁLNÍ POČET. Primitivní funkce. Neurčitý integrál. Pravidla a vzorce pro integrování

ÚSPORNÝ POPIS OBVODŮ S TRANSIMPEDANČNÍMI OPERAČNÍMI ZESILOVAČI MODIFIKOVANOU METODOU UZLOVÝCH NAPĚTÍ

Konstrukce na základě výpočtu I

7 Analytická geometrie

Zjednodušená styčníková metoda

Zlomky závěrečné opakování

a 1 = 2; a n+1 = a n + 2.

AO XXX Kontrolní list Systém řízení výroby

Větu o spojitosti a jejich užití

Plánováníá a rozvrhování

Konstrukce na základě výpočtu III

Otázka č. 4 (PRA): Za subjekty trestního řízení jsou považováni také:

+ c. n x ( ) ( ) f x dx ln f x c ) a. x x. dx = cotgx + c. A x. A x A arctgx + A x A c

STATICKY NEURČITÉ RÁMOVÉ KONSTRUKCE S PODDAJNOU PODPOROU SILOVÁ METODA

Integrály definované za těchto předpokladů nazýváme vlastní integrály.

- Ohybový moment zleva:

Geometrie. Mgr. Jarmila Zelená. Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou

Výfučtení: Goniometrické funkce

4.2.1 Goniometrické funkce ostrého úhlu

Přijímací řízení akademický rok 2015/2016 Bc. studium Kompletní znění testových otázek ekonomie

1. ÚPRAVY ALGEBRAICKÝCH VÝRAZŮ V REÁLNÉM OBORU 1.1. ZLOMKY A ABSOLUTNÍ HODNOTA

Koš Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď 1. 1 Které číslo doplníte místo otazníku: c

Model transformátoru v grafech signálových toků Jitka Mohylová Josef Punčochář

29. PL Čtyřúhelníky, mnohoúhelníky Čtyřúhelník = rovinný útvar, je tvořen čtyřmi úsečkami, které se protínají ve čtyřech bodech (vrcholech).

ZATĚŽOVACÍ ZKOUŠKY. Obr. 1. Statická zatěžovací zkouška; zatížení (N) zatlačení (cm)

Fyzikální kabinet GymKT Gymnázium J. Vrchlického, Klatovy

Ekonomický přehled. Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď

Střední škola obchodu, řemesel, služeb a Základní škola, Ústí nad Labem, příspěvková organizace Vzdělávací středisko Trmice

Okruhy a doporučená literatura písemné přijímací zkoušky - obor Přístroje a metody pro biomedicínu specifická část testu

Hygiena dutiny ústní u dospělých. aneb Čistěte si pouze ty zuby, které si chcete zachovat!!

( t) ( t) ( t) Nerovnice pro polorovinu. Předpoklady: 7306

Skalární matice. Jednotková matice. Matice také mohou být různě symetrické. Nejčastěji se však uplatní symetrie podle diagonály:

Riemannův určitý integrál.

Tangens a kotangens

Základy teorie matic

Lineární nerovnice a jejich soustavy

MATEMATIKA. Základní poznatky z matematiky. Olomouc 2010

Rovinné nosníkové soustavy II h=3

1.7.4 Výšky v trojúhelníku II

Je regulární? Pokud ne, na regulární ji upravte. V původní a nové gramatice odvod te řetěz 1111.

Přijímací řízení akademický rok 2015/2016 Bc. studium Kompletní znění testových otázek matematika

TROJÚHELNÍK. JAN MALÝ UK v Praze a UJEP v Ústí n. L. sin α = b a.

Obsah rovinného obrazce

Masarykova univerzita Fakulta informatiky. Detekce cyklů v dynamických grafech. Jaroslav Bendík

m n. Matice typu m n má

56. ročník Matematické olympiády. b 1,2 = 27 ± c 2 25

Posloupnost v matematice je řada čísel. Je přesně určeno pořadí čísel, je tedy dáno, které číslo je první, druhé atd.

KVADRATICKÁ FUNKCE (vlastnosti, grafy)

Úvod do Teoretické Informatiky ( UTI)

3 Algebraické výrazy. 3.1 Mnohočleny Mnohočleny jsou zvláštním případem výrazů. Mnohočlen (polynom) proměnné je výraz tvaru

2.7.7 Obsah rovnoběžníku

FUNKCE SINUS A KOSINUS

2.8.5 Lineární nerovnice s parametrem

Komplexní čísla. Pojem komplexní číslo zavedeme při řešení rovnice: x = 0

Vzdělávací materiál. vytvořený v projektu OP VK. Název školy: Gymnázium, Zábřeh, náměstí Osvobození 20. Číslo projektu: CZ.1.07/1.5.00/34.

R n výběr reprezentantů. Řekneme, že funkce f je Riemannovsky integrovatelná na

ŘEŠENÍ SOUTĚŽNÍ ÚLOHY JAKO PROSTŘEDEK ROZVOJE OSOBNOSTI ŽÁKA S NADÁNÍM PRO MATEMATIKU. Vladimír VANĚK- Bohumil NOVÁK

Transkript:

Menelov zeměělská lesniká univerzit v Brně Provozně ekonomiká fkult Cvičenie teorie grfů se změřením n prolemtiku toků v sítíh Diplomová práe Veouí práe: Mgr. Tomáš Foltýnek, Ph.D. B. Lukáš Konečný Brno 29

N tomto místě ue zání práe.

Poěkování Rá yh poěkovl veouímu práe Mgr. Tomáši Foltýnkovi, Ph.D. z jeho připomínky ry při osoníh konzultíh, které mi yly velkým přínosem při vyprování této práe.

Prohlášení Prohlšuji, že jsem iplomovou prái n tém Cvičenie teorie grfů se změřením n prolemtiku toků v sítíh vyprovl smosttně to s použitím oornýh zrojů, které uváím v seznmu litertury. V Brně, ne....

Astrkt Konečný, L. Cvičenie teorie grfů se změřením n prolemtiku toků v sítíh. Diplomová práe. Brno, 29. Práe se zývá tvorou úloh pro vičenii teorie grfů kompletně je změřen n prolemtiku toků v sítíh. Zpočátku jsou vysvětleny ůležité teoretiké pojmy z olsti teorie grfů. Vlstní část práe se zývá tvorou zásoy úloh pro uouí přemět Teorie grfů. Součástí vlstní práe je vytvoření pomůky pro výuku přestvovnou plikí, která názorným grfikým způsoem převáí, jk prují vyrné lgoritmy z prolemtiky toků v sítíh. Klíčová slov Grf, uzel, hrn, iprtitní grf, síť, párování, mximální párování, mximální tok sítí, Emons-Krpův lgoritmus, Forův-Fulkersonův lgoritmus. Astrt Konečný, L. Grph theory exerise ook fouse on the flows issues in networks. Diplom thesis. Brno, 29. My iplom thesis els with the tsks retion for grph theory workook n is ompletely fouse on the flows in networks issues. Initilly, there re expline the importnt theoretil onepts in the fiel of grph theory. The own prt of the tsk els with the stok tsks retion for the future sujet Grph Theory. The prt of the work itself is the retion of tools for the tehing presente y the pplition tht emonstrtes with the help of visul grphi mnner the wy selete lgorithms, onerning the flows in networks issues, work. Keywors Grph, vertex, ege, iprtite grph, network, mthing, mximum mthing, mximum network flow, Emons-Krp s lgorithm, For-Fulkerson s lgorithm.

Osh Úvo íl práe... 8. Úvo... 8.2 Cíl... 8 2 Teorie grfů... 2. Grf... 2.2 Neorientovný orientovný grf... 2.3 Prostý jenouhý grf... 2.4 Souvislost grfu... 2.5 Ohonoení grfu... 2.5. Hrnově ohonoený grf... 2 2.5.2 Uzlově ohonoený grf... 2 2.5.3 Hrnově i uzlově ohonoený grf... 2 2.6 Reprezente grfů závání grfů... 2 2.6. Seznm hrn... 2 2.6.2 Mtie sousenosti... 2 2.6.3 Seznm souseů... 3 2.6.4 Mtie iniene... 3 2.7 Prohleávání grfu... 3 2.7. Algoritmus průhou o hlouky... 4 2.7.2 Algoritmus průhou o šířky... 4 2.8 Biprtitní grf... 4 3 Sítě... 5 3. Definie sítě... 5 3.2 Tok v síti... 5 3.3 Dlší terminologie... 5 3.4 Úloh o mximálním toku... 6 3.5 Hleání mximálního toku v síti... 6 3.5. Historiký vývoj lgoritmů... 6 3.5.2 Forův-Fulkersonův lgoritmus... 6 3.5.3 Emons-Krpův lgoritmus hleání nejkrtšíh rezervníh est... 2 3.5.4 Golergův lgoritmus... 22 4 Párování v grfeh... 24 4. Mximální párování v iprtitníh grfeh... 24 4.. Meto střívýh est... 24 4..2 Meto převou n tok v síti... 25 4.2 Úloh o mximálním párování... 25 5 Aplike pro toky v sítíh... 26 5. Zání plike... 26 5.2 Požvky n pliki... 26

5.2. Rozělení uživtelů funkionlit... 26 5.2.2 Neutentizovný uživtel... 26 5.2.3 Autentizovný uživtel... 27 5.2.4 Implementovné lgoritmy... 27 5.2.5 Vizulize implementovnýh lgoritmů... 27 5.3 Návrh plike... 28 5.3. Dtová vrstv... 28 5.4 Implemente plike... 29 5.4. Autentize uživtelů... 29 5.4.2 Přístup k tázi... 29 5.4.3 Vstupní t (souor)... 29 5.4.4 Vizulize implementovnýh lgoritmů... 3 5.4.5 Algoritmy pro hleání mximálního toku... 3 5.4.6 Výpočet mximálního párování v iprtitním grfu... 32 5.5 Testování plike... 34 5.6 Nszení plike... 34 6 Seznm úloh teorie grfů... 35 6. Buouí přemět Teorie grfů... 35 6.2 Úlohy n vlstnosti grfů... 35 6.3 Implemente grfu... 37 6.4 Stromy kostry... 39 6.5 Prohleávání grfu... 42 6.6 Hleání optimálníh sleů... 44 6.7 Toky v sítíh jejih plike... 47 6.8 Úlohy řešené pomoí grfů... 49 7 Řešení úloh teorie grfů... 52 7. Úlohy n vlstnosti grfů... 52 7.2 Implemente grfu... 53 7.3 Stromy kostry... 55 7.4 Prohleávání grfu... 56 7.5 Hleání optimálníh sleů... 57 7.6 Toky v sítíh jejih plike... 59 7.7 Úlohy řešené pomoí grfů... 62 8 Diskuse... 63 9 Závěr... 64 Litertur... 65 Přílohy... 67 A Vstupní souor pro mximální tok... 68 B Vstupní souor pro mximální párování... 69

Úvo íl práe. Úvo První zmínk teorie grfů pohází již z osmnátého století (736), ky se švýrský mtemtik Leonhr Euler zývl prolémem mostů měst Králove. Tento prolém z použití teorie grfů již v ávné oě tké vyřešil (respektive okázl, že prolém nemá řešení). O té oy se ž oposu řešilo znčné množství prolémů teorie grfů. Velké množství tké ylo vyřešeno, některé se pořilo vyřešit ž s nástupem počítčů ones tké existují úlohy, n něž neexistuje lgoritmus, který y je vyřešil v rozumném čse. Npříkl úloh ohoního estujíího, čkoliv se zá ýt velmi jenouhá skutečnost je opčná. Ani o s nástupem využitím počítčů nepřispěl k nlezení efektivního lgoritmu. Dnes se setkáváme s mnoh úlohmi, které npomáhjí nlézt optimální řešení v reálném světě. Mezi nejvýznmnější úlohy můžeme zřit: přiřzoví prolém, oprvní prolém, prolém ohoního estujíího, hleání kritiké esty, lší..2 Cíl V rámi práe ue zpotřeí ůklně se seznámit s elou prolemtikou teorie grfů ůsleně nstuovt vyrné lgoritmy pro jejih implementi. Teoretikou část práe formulovt tk, y ji ylo možné použít jko učení text pro hystný přemět Teorie grfů. Seznámení s elou teoretikou i prktikou prolemtikou teorie grfů ue potřeným záklem pro vytvoření osttečně velké zásoy úloh rozsáhlé olsti teorie grfů, zejmén pk olsti toků v sítíh. Vytvořená záso úloh ue využíván pro výuku provičování temtikýh elků hystného přemětu Teorie grfů. Pro tento, le i jiné přeměty zývjíí se teorií grfů (zejmén toků v sítíh), ále vytvořit pliki, která ue názorným způsoem reprezentovt vyrné lgoritmy pro- 8

lemtiky teorie grfů. Tto plike ue využíván jko pomůk ve výue, íky níž y stuenti měli snno pohopit vyrné lgoritmy. 9

2 Teorie grfů 2. Grf Grfem v teorii grfů rozumíme ojekty, které můžeme popst pomoí množiny uzlů hrn. Množin uzlů musí ýt, n rozíl o množiny hrn, neprázná. Grf, jehož množin hrn je prázná, se nzývá iskrétní. Stupeň uzlu vyjřuje počet hrn, s nimiž uzel iniuje. Izolovný uzel je uzel, který neiniuje s žánou hrnou. Všehny uzly iskrétního grfu jsou tuíž izolovné stupně nul. Definie grfu je násleujíí: =(,, ), ke je neprázná množin uzlů (vrholů), jejíž prvky jsou uzly grfu, je množin hrn, je inienční zorzení ( : )[5]. Poku máme hrnu grfu tto hrn spojuje uzly znmená to, že hrn iniuje s uzly [8]. O uzleh říkáme, že jsou přilehlé. O hrnáh, jež mjí společné uzly, se též říká, že jsou přilehlé. Je-li inienční zorzení tkové, že hrně h přiřzuje vojii uzlů ( (h) =(, )), pk nzýváme počáteční konový uzel hrny h. O tkto přiřzené vojii uzlů říkáme, že uzly jsou sousení. Smyčkou je nzýván tková hrn h, která má počáteční konový uzel stejný ( = ). 2.2 Neorientovný orientovný grf Má-li grf všehny hrny neorientovné, říkáme o něm, že je neorientovný. Ayhom mohli prohlásit všehny hrny z neorientovné, musí pro kžou hrnu h grfu pltit, že existuje-li (h) =(, ), musí existovt i hrn h, pro niž pltí (h ) =(, ) [5]. Poku se vyskytne lespoň jen hrn, pro niž nepltí přeešlá pomínk, mluvíme o grfu orientovném. Oriente hrn orientovného grfu se nejčstěji znázorňuje šipkou u konového uzlu. 2.3 Prostý jenouhý grf Poívejme se nyní n efinii inienčního zorzení. Viíme, že toto zorzení připouští existeni vou různýh hrn h h tkovýh, že (h ) = (h )=(, ). Ji-

nými slovy, mezi uzly existuje víe souhlsně orientovnýh hrn. Tkovým hrnám říkáme násoné hrny. Grf, který oshuje násoné hrny, se nzývá multigrf. Opkem multigrfu, tey grfu ez násonýh hrn, je grf prostý. Poku je grf prostý nví neoshuje ni smyčku, nzývá se jenouhý [5]. 2.4 Souvislost grfu Ayhom mohli správně pohopit pojem souvislost grfu, musíme si nejprve vysvětlit význm sleu v teorii grfů. Nehť máme grf =(,, ), v jeho uzly. Sleem mezi uzly nzveme posloupnost uzlů hrn:,h,,h,,,,h,, pro kterou pltí: =, = (h )={, } pro =,, [3]. Uzel nzýváme počáteční uzel konový uzel sleu. Poku se počáteční uzel rovná konovému uzlu sleu (sle zčíná končí v počátečním uzlu sleu), jená se o sle uzvřený. Číslo nám určuje élku sleu mezi uzly. Víme tey o je sle to nám ovoluje vysvětlit pojem souvislost grfu. O neorientovném grfu můžeme říi, že je souvislý, jestliže mezi kžými věm jeho uzly existuje sle [2]. Poněku složitější je situe u grfu orientovného, rozlišujeme totiž slou silnou souvislost. Slě souvislý grf je tehy, poku je souvislý po převeení n neorientovný grf []. Silně souvislý grf je tehy, poku pro kžé v uzly, existuje orientovná est z uzlu o uzlu orientovná est z uzlu o uzlu [5]. Ve sleu není zkomponováno omezení opkovtelnosti uzlů hrn. Nyní ueme sle postupně omezovt. Sle, ve kterém se neopkuje žáná hrn, se nzývá th. Th, ve kterém se neopkuje žáný uzel, (s výjimkou = ) se nzývá est. Omezit můžeme tké estu. Uzvřená neorientovná est, se nzývá kružnie. Uzvřená orientovná est se nzývá yklus. 2.5 Ohonoení grfu Grf je složen z množiny uzlů hrn. Ohonoení grfu je tková opere, která všem prvkům množiny (množin) grfu přiří reálné číslo. Jk ylo řečeno, grf je složen ze

vou množin (uzlů hrn). Kominí těhto vou množin ostneme elkem tři možnosti, jk ohonotit grf. 2.5. Hrnově ohonoený grf Nehť kžé hrně h je přiřzeno liovolné reálné číslo R, pk grf =(,, ) nzveme hrnově ohonoený grf. 2.5.2 Uzlově ohonoený grf Nehť kžému uzlu je přiřzeno liovolné reálné číslo R, pk grf = (,, ) nzveme uzlově ohonoený grf. 2.5.3 Hrnově i uzlově ohonoený grf Nehť kžé hrně h kžému uzlu je přiřzeno liovolné reálné číslo R, pk grf =(,, ) nzveme hrnově uzlově ohonoený grf. 2.6 Reprezente grfů závání grfů Již víme o je grf jkýh může nývt vlstností. Nevíme le jk se grf zává, poku ho heme tře jen nkreslit neo okone uložit o počítče pro náslené zprování progrmem. Nyní si ukážeme možné způsoy reprezente grfu. 2.6. Seznm hrn Závání grfu pomoí seznmu hrn je vhoné zejmén při závání o progrmu neo při ukláání n pevný isk. Hrn v tomto přípě určuje vojii jí přilehlýh (konovýh) uzlů. Poku se jená o neorientovný grf, je nám jeno z je hrn ve tvru neo. Není to le jeno v přípě orientovného grfu, ke ve vojii říkáme, že uzel je počátečním uzel konovým uzlem hrny. 2.6.2 Mtie sousenosti Mtie sousenosti nám říká, které uzly spolu souseí. Mtie reprezentuje orientovný grf, neoť v ní jsou zznmenány hrny veouí z uzlu o uzlu. Jelikož lze le zznment o mtie jk orienti hrny tk i orienti hrny, lze tké v mtii sousenosti reprezentovt neorientovné grfy. Ty poznáme pole toho, že mtie je symetriká. 2

Mtie sousenosti má velikost je efinován jko =(, ),, ke, = [2]. Poku grf neoshuje smyčku, jsou všehny prvky hlvní igonály nulové. Jk ylo výše uveeno, mtie sousenosti oshuje pouze nuly jeničky. V jistýh přípeh (npř. při zprování počítčovým progrmem) lze o mtie místo, = uložit ohonoení hrny. Tkto vytvořená mtie nám pk může usnnit několik výpočetníh kroků při prái s mtií. Ovšem musí ýt jeinečná honot pro,, neoť i ohonoení hrny může ýt nulové. 2.6.3 Seznm souseů Jk už z npisu vyplývá, tento způso reprezente grfu je zložen n seznmu souseů ostupnýh z jenotlivýh uzlů grfu. Vše je řešeno tk, že máme ynmiký seznm uzlů. Pro kžý uzel tohoto seznmu je án ynmiký seznm jeho násleníků. Jk je viět, lze tkto závt jk orientovné, tk i neorientovné grfy. 2.6.4 Mtie iniene Inienční mtie orientovného grfu je mtie o rozměreh. Řáky mtie přestvují uzly sloupe hrny. Mtie je efinovná vzthem =(, ), ke, = h h há í h h ř há í []. Jelikož kžá orientovná hrn má jeen počáteční konový uzel, nhází se v kžém sloupi právě jen jen. Poku yhom htěli tkto efinovt neorientovný grf, může mtie oshovt pouze nulu jeničku. Jeničku oshuje, poku hrn h iniuje s uzlem v přípě opčném.. Nulu 2.7 Prohleávání grfu K tomu, yhom mohli prováět opere s úji ohonoenýh grfů, musíme umět grf proházet. Průho grfem tey řeší úlohu, ky potřeujeme provést nějkou operi n úji všeh uzlů grfu. Existují v systemtiké průhoy, které nám umožní projít přes všehny uzly grfu o hlouky o šířky [3]. 3

2.7. Algoritmus průhou o hlouky Algoritmus využívá tovou strukturu zásoník je vyjářen v násleujííh kroíh:. N zčátku máme prázný zásoník. U kžého uzlu si pmtujeme znčku, která říká, z jsme uzel již nvštívili. Do zásoníku vložíme vstupní uzel oznčíme jej. 2. Oeereme uzel z vrholu zásoníku, nzvěme ho. 3. Kžý neoznčený uzel, o kterého vee hrn z uzlu, přiáme n vrhol zásoníku oznčíme jej. 4. Kroky 2 3 opkujeme, oku není zásoník prázný []. 2.7.2 Algoritmus průhou o šířky Tento lgoritmus využívá tovou strukturu front. Algoritmus průhou je opět vyjářen v násleujííh kroíh:. N zčátku máme práznou frontu. U kžého uzlu si pmtujeme znčku, která říká, z jsme uzel již nvštívili. Do fronty vložíme vstupní uzel oznčíme jej. 2. Oeereme první uzel z fronty, nzvěme ho. 3. Kžý neoznčený uzel, o kterého vee hrn z uzlu přiáme n kone fronty oznčíme jej. 4. Kroky 2 3 opkujeme, oku není front prázná []. 2.8 Biprtitní grf Grf je nzýván iprtitní právě tehy, poku množin uzlů je rozložitelná n vě isjunktní množiny, tkové, že všehny hrny grfu spojují pouze uzly ležíí v různýh množináh. Zápis iprtitního grfu může ýt násleujíí: = (, ),,. Úplný iprtitní grf je tkový grf, v němž kžá vojie uzlů, je spojen právě jenou hrnou. Úplný iprtitní grf znčíme,, ke je počet uzlů množiny je počet uzlů množiny [5]. 4

3 Sítě 3. Definie sítě Síť je čtveřie (,,, ), ke je orientovný grf, (zroj) je uzel grfu, o nějž nevházejí žáné hrny, (stok) je uzel grfu, z nějž nevyhází žáné hrny, : R je funke přiřzujíí hrnám ohonoení (kpitu, průtok) [5], pro lší výkl ji ueme znčit,. 3.2 Tok v síti Ve většině přípů může mít síť větší množství toků. Oeně lze říi, že z tok v síti, se povžuje funke, která kžé hrně sítě přiřzuje nezáporné reálné číslo (h) splňujíí kpitní omezení pomínku zhování toku. Kpitní omezení říká, že tok liovolné hrny sítě, nesmí překročit kpitu této hrny ( (h) (h)) [6]. Pomínk zhování toku říká, že součet toků ve vstupníh hrnáh liovolného uzlu krom uzlů, se musí rovnt součtu toků ve hrnáh výstupníh tohoto uzlu [6]. 3.3 Dlší terminologie Ayhom správně pohopili násleujíí kpitoly, je potře si vysvětlit některé ůležité pojmy. Velikost toku je součet všeh toků vyházejííh z uzlu (zroje) neo vstupujííh o uzlu (stoku) [5]. Rezervní kpit hrny je rozíl mezi kpitou hrny jejím ktuálním tokem [5]. Rezervní kpit esty je minimální honot rezervní kpity hrny n této estě [5]. Nsyená hrn je hrn, jejíž velikost ktuálního toku se rovná kpitě hrny [5]. Nsyená est je est, která má lespoň jenu hrnu nsyenou. 5

Rezervní síť je pogrf tvořený pouze hrnmi s klnou rezervní kpitou [5]. Rezervní est je est ze zroje o stoku, která má všehny hrny s klnou rezervní kpitou [5]. Nsyený tok je tehy, poku kžá rezervní est je nsyená [9]. Mximální tok sítí je tok mjíí největší možnou velikost [6]. Neexistuje tey lší rezervní est. 3.4 Úloh o mximálním toku Formule oené úlohy nlezení mximálního toku je násleujíí: Je án trnsportní síť (,,, ). Nším úkolem je njít tok o zroje y měl o největší velikost (mximální tok). o stoku, tk 3.5 Hleání mximálního toku v síti 3.5. Historiký vývoj lgoritmů První zmínky lgoritmů hleání mximálního toku se vyskytují již v minulém století. Prvním lgoritmem pro hleání mximálního toku yl Forův-Fulkersonův lgoritmus z roku 957. Tento lgoritmus nlézá mximální tok opkovným hleáním rezervníh est ze zroje o stoku (tzv. - est). Poří nlézání rezervníh est není nikterk speifikováno, tuíž ho můžeme prohlásit z náhoné. N tímto náhoným pořím se zmysleli ž pánové Emons Krp. Moifikí hleání vžy nejkrtší rezervní esty (972) neo rezervní esty s mximální kpitou (973), yl přestven Emons-Krpův lgoritmus. Dlší pokrok v lgoritmeh přinesl Diniův lgoritmus v roe 972. Tento lgoritmus převáí prolém hleání mximálního toku n opkovné hleání nsyeného toku v síti speiálního tvru. N Diniův lgoritmus ále nvázli pánové Mlhotr, Kumr Mheshwri, kteří ve svém lgoritmu tří Inů (978) zefektivnili hleání nsyeného toku z Diniov lgoritmu. S revolučním lgoritmem přišel tké v roe 988 Golerg []. 3.5.2 Forův-Fulkersonův lgoritmus Algoritmus vyhází z hleání rezervníh est, musíme si proto u kžé hrny uržovt informe o ktuálním toku kpitě. 6

Tento lgoritmus můžeme rozělit o tří oenýh kroků. Prvním krokem je nlezení rezervní esty. Druhým krokem násleuje nvýšení toku o kpitu nlezené rezervní esty. Ve třetím kroku se opkuje posloupnost prvního ruhého kroku, oku existuje rezervní est. Nlezení rezervní esty je tey posttný krok. Algoritmus prohází grf nlézá rezervní estu pomoí náhoného výěru uzlů z oposu neoznčkovnýh uzlů. Jelikož lgoritmus hleá neorientovnou estu, prohází neoznčkovné přehůe i násleníky uzlu. Pro tyto uzly se uklájí informe o oznčkování, přehozím uzlu n rezervní estě, orienti hrny o jkou honotu lze nvýšit tok. Krok nlezení rezervní esty vystihuje násleujíí vývojový igrm pojmenovný Su Cest. 7

Zčátek Su Cest Vstup: síť S = (G, s, t, ) pro všehny uzly u grfu G nstv uzlel u n neoznčkovný pro uzel s (zroj) nstv přírůstek toku n nekonečno oznčkuj uzel s uzel s vlož o seznmu oeer ze seznmu liovolný uzel u pro všehny násleníky v uzlu u - seznm je prázný pro všehny přehůe v uzlu u + vrť flse Kone Su Cest uzel v nemá znčku tok hrny vu je klný - uzel v nemá znčku rezervní kpit hrny uv je klná - oznčkuj uzel v ulož záporný směr přehůe pro uzel v pro uzel v nstv přírůstek toku n minimum z honot (tok n uzlu u, tok hrny vu) + oznčkuj uzel v ulož klný směr přehůe pro uzel v pro uzel v nstv přírůstek toku n minimum z honot (tok n uzlu u, rezervní kpit hrny uv) + uzel v vlož o seznmu uzel v vlož o seznmu uzel v je roven uzlu t (stoku) - + vrť true Kone Su Cest Or. : Vývojový igrm nlezení rezervní esty For-Fulkersonovým lgoritmem 8

Je-li nlezen rezervní est, násleuje úprv toku poél této esty. Úprv proíhá o stoku ke zroji. Tento krok pro úprvu esty opět vystihuje násleujíí vývojový igrm pojmenovný Su zvys_tok. Zčátek Su zvys _tok zčni o uzlu t (stok ) v := t u := přehůe uzlu v n rezervní estě - je tok klného směru + sniž tok n hrně vu o kpitu rezervní esty zvyš tok n hrně uv o kpitu rezervní esty přeji n přehůe v := u - v je rovno s (zroji ) Kone Su zvys_ tok Or. 2: Vývojový igrm nvýšení toku nlezené rezervní esty + Nlezení rezervní esty náslené nvýšení toku je opkováno, oku existuje rezervní est. Není-li nlezen rezervní est, je již nlezený tok mximální. Poslení vývojový igrm nzvný For-Fulkerson v soě zhrnuje v výše uveené kroky zorzuje již kompletní lgoritmus pro výpočet mximálního toku. 9

Zčátek For-Fulkerson pro všehny hrny h grfu G nstv hrnu h n nulový tok oku Su Cest vrí true pro všehny hrny h vyházejíí z uzlu s (zroje) zvolej Su zvys _tok přičti tok n hrně h vytiskni součet toků Kone For-Fulkerson Or. 3: Vývojový igrm Forov-Fulkersonov lgoritmu 3.5.3 Emons-Krpův lgoritmus hleání nejkrtšíh rezervníh est Emons-Krpův lgoritmus je povžován z efektivnější metou Forov-Fulersonov lgoritmu. Celý lgoritmus se totiž liší jen v jeiném kroku, to kroku nlezení rezervní esty. Forův-Fulkersonův nlézá rezervní estu pomoí náhoného výěru uzlů z oposu neoznčkovnýh uzlů. Emons-Krpův lgoritmus hleání rezervní esty vylepšil o to, že nlezená rezervní est je vžy tou nejkrtší možnou rezervní estou. Tohoto vylepšení ve Forově-Fulkersonově lgoritmu oílíme prohleáváním grfu o šířky. Celý lgoritmus y se l opět vyjářit vývojovým igrmem. Digrm y yl z velké části totožný s igrmem pro Forův-Fulkersonův lgoritmus. Neue proto ze opět zorzen elý vývojový igrm pro tento lgoritmus, le jen igrm pro nlezení rezervní esty Emons-Krpovou metoou. Násleujíí igrm zorzuje ono nlezení. 2

Zčátek Su Cest Vstup: síť S = (G, s, t, ) pro všehny uzly u grfu G nstv uzlel u n neoznčkovný pro uzel s (zroj) nstv přírůstek toku n nekonečno oznčkuj uzel s uzel s vlož o fronty oeer ze zčátku fronty uzel u pro všehny násleníky v uzlu u - front je prázná pro všehny přehůe v uzlu u + vrť flse Kone Su Cest uzel v nemá znčku tok hrny vu je klný - uzel v nemá znčku rezervní kpit hrny uv je klná - oznčkuj uzel v ulož záporný směr přehůe pro uzel v pro uzel v nstv přírůstek toku n minimum z honot (tok n uzlu u, tok hrny vu) + oznčkuj uzel v ulož klný směr přehůe pro uzel v pro uzel v nstv přírůstek toku n minimum z honot (tok n uzlu u, rezervní kpit hrny uv) + uzel v vlož n kone fronty uzel v vlož n kone fronty uzel v je roven uzlu t (stoku) - + vrť true Kone Su Cest Or. 4: Vývojový igrm nlezení rezervní esty Emons-Krpovým lgoritmem 2

3.5.4 Golergův lgoritmus Nyní si ukážeme lgoritmus, který je zložen n leko jenoušší myšlene, než je nlézání rezervníh est. Záklní myšlenkou tohoto revolučního lgoritmu je, že konstruujeme vlnu toku, ne tok po elýh estáh [4]. Pro všehny hrny sítě,, jsou přiány hrny opčné ( ) s nulovou kpitou. Golergův lgoritmus používá vě záklní opere: protlčení toku po hrně nvýšení výšky uzlu. N kžém uzlu se uržuje přeytek toku (to o o uzlu přitéká, minus to o z uzlu otéká). Poku má uzel klný přeytek toku, znmená to, že je ktivní. Aktivními uzly se nemůžou stát uzly. Protlčení toku potom znmená, že z uzlu protlčíme o hrny tok ve výši menší z honot: přeytek toku n uzlu rezervní kpit hrny. Rezervní kpit hrny pro Golergův lgoritmus vypá násleovně: ( ) = ( ) ( ) + ( ) [2]. K pohopení násleujíího vývojového igrmu pro Golergův lgoritmus, je potře vysvětlit ještě pojem výšk uzlu (ve vývojovém igrmu znčeno ( )). Uzel má vžy výšku (počet uzlů sítě) uzel má vžy výšku. N zčátku lgoritmu má tey uzel výšku osttní uzly výšku. Tok z uzlu lze o hrny protlčit jen poku výšk uzlu je vyšší než výšk uzlu ( hrn vee z kope ). Z tohoto ůvou je potře uržovt výšku kžého uzlu, která se ue ěhem prováění lgoritmu postupně měnit (výšk uzlů se nemění). Celý lgoritmus je zhyen n násleujíím igrmu. 22

Zčátek Golerg Vstup: sí ť S = (G, s, t, ) pro všehny hrny h grfu G oplň khrně h hrnu opčnou s nulovou kpitou pro všehny uzly u grfu G uzlu s přiřď výšku U nstv výšku uzlu u n nul pro všehny hrny h grfu G - hrn h vyhází + zuzlu s nstv tok hrny h n nulu nstv tok hrny h n kpitu hrny přiej ktivní konový uzel hrny h n kone fronty oku není front prázná oeer ze zčátku fronty uzel u - uzel u je ktivní oku u je ktivní existuje hrn uv s klnou rezervou V(u) > V(v) protlč o hrny uv minimum z honot (přeytek uzlu u, rezervní kpit hrny uv) V(u) := (minimum V(v) ze všeh hrn uv, ke rezervní kpit je klná) + přiej uzel u n kone fronty + uzel v je ktivní není ve fontě přiej uzel v n kone fronty + - Kone Golerg Or. 5: Vývojový igrm Golergov lgoritmu 23

4 Párování v grfeh Množin hrn grfu se nzývá párování, právě tehy kyž neexistují vě liovolné různé hrny z množiny tkové, že mjí společný uzel [6]. Mximální párování je párování, které má nejvyšší možný počet hrn [6]. Perfektní párování je párování, jehož hrny pokrývjí všehny uzly [5]. 4. Mximální párování v iprtitníh grfeh 4.. Meto střívýh est Mějme grf množinu, která je liovolné párování v grfu. Střívá est vzhleem k párování je tková neorientovná est, jejíž hrny střívě leží neleží v párování [4]. Uzel se nzývá volný uzel párování, jestliže neexistuje hrn z párování, která je inientní s uzlem. Střívá est spojujíí v volné uzly se nzývá zlepšujíí est [8]. Symetriký rozíl množin, oznčujeme efinujeme jko množinu prvků osženýh v právě jené z množin neo, tj. =( ) ( ) [7]. Dále pole [5] pltí vět: je-li párování v grfu ( = ) je zlepšujíí est, pk = je rovněž párování pltí, že = +. Nehť je tey án iprtitní grf =((, ),, ), oený lgoritmus střívýh est je násleujíí:. njeme liovolné párování, 2. njeme zlepšujíí estu zčínjíí ve volném uzlu z množiny končíí ve volném uzlu z množiny, 3. párování vylepšíme symetrikým rozílem, 4. opkujeme tk louho, oku existuje zlepšujíí est [5].. 2. 3. Or. 6: Příkl metoy střívýh est 24

4..2 Meto převou n tok v síti Nehť máme iprtitní grf, pk je zřejmé, že množinu uzlů lze rozělit n vě isjunktní množiny. Kroky převou jsou násleujíí:. množinu uzlů sjenotíme s množinou uzlů {, }. Uzel se nzývá zroj uzel se nzývá stok. Tím nám vznikne množin uzlů sítě,, 2. kžá hrn grfu mezi uzlem uzlem opovíá orientovné hrně v síti, veené z uzlu o uzlu, 3. pro všehny uzly přiáme orientovnou hrnu o sítě, ze zroje o uzlu, 4. pro všehny uzly přiáme orientovnou hrnu o sítě, z uzlu o stoku, 5. kpitu kžé hrny sítě, nstvíme n honotu jen neo vyšší [6]. s t, Or. 7: Převo iprtitního grfu n tok v síti 4.2 Úloh o mximálním párování Formule oené úlohy nlezení mximálního párování je násleujíí: Je án iprtitní grf =((, ),, ). Nším úkolem je njít mximální párování mezi množinou uzlů. 25

5 Aplike pro toky v sítíh 5. Zání plike Aplike pro toky v sítíh ue sloužit jko pomůk pro výuku hystného přemětu Teorie grfů. Využití nje přeevším mezi stuenty, kteří íky ní snno pohopí průěh vyrnýh lgoritmů toků v sítíh. 5.. Funkční požvky V pliki ue implementován Forův-Fulkersonův Emons-Krpův lgoritmus pro hleání mximálního toku v síti. Dále ue implementován převo iprtitního grfu n síť s násleným výpočtem mximálního párování. Aplike ue rozělen n utentizovnou neutentizovnou část. V utentizovné části uou uživtelé ministrátor. Uživtelé uou mít kontrolu n vlstními grfy ministrátor ue mít kontrolu n všemi grfy i uživteli. 5..2 Nefunkční požvky Bue se jent o weovou pliki, která ue mít příjemné grfiké rozhrnní ue názorným způsoem grfiky reprezentovt průěh implementovnýh grfovýh lgoritmů. 5.2 Požvky n pliki 5.2. Rozělení uživtelů funkionlit Funkionlit plike ue rozělen o vou úrovní pole utentize utentizovný neutentizovný uživtel. Pro utentizovného uživtele ue z hleisk oprávnění plike rozělen tké o vou úrovní ministrátor uživtel. 5.2.2 Neutentizovný uživtel Tento uživtel se může zregistrovt ále prováět ke jko utentizovný uživtel. Po úspěšné registri se novému uživteli zšle zpráv s přihlšovími úji (uživtelským jménem heslem) elektronikou poštou. V přípě zpomenutí hesl si může uživtel zslt nové n svůj registrční e-mil. Dále neutentizovný uživtel může n- 26

čítt textový souor s korektními ty pro výpočet mximálního toku v síti neo mximálního párování v iprtitním grfu. Ten ue zprován v grfiké pooě uživteli znázorní výpočet mximálního toku či párování pole uživtelem zvoleného lgoritmu. 5.2.3 Autentizovný uživtel Uživtel Autentizovný uživtel má větší oprávnění s ohleem n funkionlitu plike. Může si t grfu uložit o táze s nimi pk provt i v uounu po korektní utentizi. Může zorzovt mximální tok v síti neo mximální párování v iprtitním grfu n liovolným vlstním grfem neo grfem, jež má příznk veřejnosti. Mimo to může uživtel vlstním grfům uělovt oprávnění veřejnosti, jk již vyplývá z přeešlé věty (tj. z požuje, y jeho grf yl veřejný všem uživtelům či nikoliv). Uživteli je tké umožněno mzání vlstníh grfů. Aministrátor Aministrátor má v pliki největší oprávnění. Aministrátor má rozšířenou funkionlitu o správu všeh uživtelů. Má kontrolu n všemi registrovnými uživteli všemi uloženými grfy, tyto uživtele grfy má oprávnění mzt. 5.2.4 Implementovné lgoritmy Výěr implementovnýh lgoritmů závisí čistě jen n utorovi práe. V pliki uou implementovány lgoritmy pro hleání mximálního toku v sítíh, konkrétně půje o Forův-Fulkersonův Emons-Krpův lgoritmus. Tyto lgoritmy uou ále využity při implementi lgoritmu převou iprtitního grfu n síť násleného nlezení mximálního párování v půvoním iprtitním grfu. 5.2.5 Vizulize implementovnýh lgoritmů Vizulize lgoritmů ue proíht věm způsoy:. V neutentizovné části se uživteli nráz po seou zorzí s návznýh orázků pole toho, jk proíhá vyrný grfový lgoritmus. 2. V utentizovné části se uživteli postupně zorzuje orázek pole uživtelem efinovného kroku vyrného grfového lgoritmu. 27

5.3 Návrh plike Návrh plike ue vyházet z třívrstvé rhitektury. Dtovou vrstvu ue tvořit tázový systém ORACLE, který ue uhovávt t plike. Aplikční vrstvu uou tvořit skripty plike prezenční vrstvu weový prohlížeč. Aplike ue mít snné intuitivní ovláání. To, že se jená o weovou pliki, ává uživtelům větší volnost při přístupu k pliki. Z výhou plike lze zmínit to, že si uživtel nemusí uklát žáné grfy, le přesto si může proházet průěh implementovnýh lgoritmů (stčí, kyž některý z uživtelů má uložen grf s příznkem veřejnosti). Pro implementi plike ue zvolen progrmoví jzyk Perl. Pro tento jzyk existuje elá ř moulů pro prái s grfikou, která vyplývá z požvků n pliki. Aplike ue mít jeno zjenoušení. Grf, n němž uou názorným způsoem převáěny implementovné lgoritmy, musí ýt jenouhý prostý. 5.3. Dtová vrstv Weová plike ue závislá n serverovýh služáh. Přestv plike je tková, že se uživtel může k pliki kykoliv vrátit, tk si znovu projít průěh lgoritmů n již jenou uloženýh grfeh. Z tohoto ůvou ue plike využívt tovou vrstvu pro ukláání t. Tto vrstv, jk již ylo uveeno výše, ue tvořen tázovým systémem ORACLE. Tento tázový systém je jeiný, se kterým mám zkušenosti, zároveň je ninstlován n školním serveru, ke ue plike nszen využíván. Entitně relční igrm Záklem tové vrstvy je správně nvržený entitně relční igrm. Digrm y měl ýt nvržen tk, y se v něm nevyskytovl reunne t. Návrh igrmu zorzuje násleujíí orázek. hrny min i login psswor emil ukl grfy i login jmgrfu verejne oshuje uzly i jmgrfu nzev sourniex sourniey mjí mjí i oku kolik km Or. 8: Entitně relční igrm plike 28

Entit min slouží k registri uživtelů. Ukláá se o ní přístupové jméno uživtele, jeho heslo registrční e-mil. N tuto entitu postupně nvzují entity grfy, uzly hrny. Tyto entity slouží k ukláání informí o grfeh registrovnýh uživtelů. V entitě grfy se uklájí informe o vlstníku grfu, jeho jménu příznku veřejnosti grfu. V entitě uzly se uklájí informe o grfu, kterému uzel náleží, názvu uzlu souřniíh uzlu pro vykreslení. V poslení entitě hrny se pk uklájí informe o počátečním konovém uzlu hrny jejím ohonoení. 5.4 Implemente plike Implemente plike proíhl n záklě strukturovného přístupu. Aplike je rozělen o jenotlivýh skriptů pole níky menu grfikého rozhrnní plike. Aplike využívá stnrně ninstlovnýh moulů n serveru kel.menelu.z. 5.4. Autentize uživtelů Autentize je řešen pomoí moulu session.pm, který není stnrně ninstlován n serveru kel.menelu.z, proto jsem si ho ninstlovl o vlstního resáře. 5.4.2 Přístup k tázi Přístup k tázi je relizován pomoí nezávislého rozhrnní pro Perl (DtBse Interfe DBI). 5.4.3 Vstupní t (souor) Závání ukláání grfů je relizováno n záklě vstupního textového souoru. V souoru jsou informe o vizulizi grfu. Pltí, že jeen vstupní souor oshuje informe o jenom grfu. Kontrol oshu vstupního souoru První pomínkou pro využití veškeré funkionlity plike pro výukové účely je vstupní souor s korektním oshem. Osh textového souoru je kontrolován plikí pomoí regulárníh výrzů. V přípě nesplnění korektnosti oshu, je uživtel n tuto skutečnost plikí upozorněn. Aplike rozlišuje v typy grfů, n nihž se převáějí lgoritmy: 29

síť (viz. příloh A) n tomto grfu je převáěn výpočet mximálního toku v síti pole zvoleného lgoritmu. Vstupní souor pro síť smí oshovt tři typy řáků:. název uzlu jeho pozie (npř. S,), 2. új o orientovné hrně oku km vee její ohonoení (př. S A 5), 3. prázný řáek z ůvou větší přehlenosti vstupního souoru. iprtitní grf (viz. příloh B) n tomto grfu je převáěn výpočet mximálního párování v iprtitním grfu. Vstupní souor pro iprtitní grf smí oshovt opět tři typy řáků:. název uzlu jeho pozie (př. Petr,), 2. új o hrně oku km vee (npř. Petr soustruh), 3. prázný řáek z ůvou větší přehlenosti vstupního souoru. Kontrol vizulize grfu vstupního souoru Druhou pomínkou pro využití veškeré funkionlity plike je kontrol vizulize grfu. Poté o je splněn korektnost oshu vstupního souoru, kontroluje plike korektnost vizulize grfu. V přípě nesplnění korektnosti vizulize grfu, je uživtel n tuto skutečnost opět plikí upozorněn. Kontrol korektnosti vizulize se liší v zásě pole typu grfu: síť:. musí oshovt jeen počáteční jeen konový uzel, 2. nesmí oshovt hrny ez počátečního neo konového uzlu, 3. nesmí oshovt smyčky, 4. nesmí oshovt izolovné uzly, 5. nesmí oshovt násoné hrny, 6. nesmí oshovt upliitní uzly. iprtitní grf pro úspěšné vyhonoení korektnosti vizulize, musí ýt ve vstupním souoru zány všehny uzly levé množiny pře všemi uzly prvé množiny tohoto grfu. Kontrol pk proíhá íky možnosti (nemožnosti) rozělení grfu n vě isjunktní množiny uzlů tk, že žáné v uzly ze stejné množiny nejsou propojeny hrnou. Dlší pomínky jsou ooné jko u sítě jsou uveeny ále:. nesmí oshovt hrny ez počátečního neo konového uzlu, 2. nesmí oshovt smyčky, 3

3. nesmí oshovt izolovné uzly, 4. nesmí oshovt násoné hrny, 5. nesmí oshovt upliitní uzly, 6. nesmí oshovt uzel s názvem Zroj Stok, tyto uzly jsou utomtiky přiány o grfu při výpočtu mximálního párování pomoí lgoritmů pro výpočet mximálního toku v síti. 5.4.4 Vizulize implementovnýh lgoritmů Pro názornou vizulizi grfu n ni návzné vyznčení průěhu vyrnýh grfovýh lgoritmů, yl použit moul pro prái s grfikou GD.pm. Moul okáže vytvořit orázek formátu PNG, který je tvořen z jenouhýh grfikýh elementů (kruh, linie, polygon, text). Orázek je pk prezentován uživteli. 5.4.5 Algoritmy pro hleání mximálního toku Forův-Fulkersonův lgoritmus Forův-Fulkersonův lgoritmus je v pliki implementován tk, že po nčtení korektníh t se nejprve zorzí uživtelem zný grf. V násleném prvním kroku lgoritmu se kžé hrně přiří ktuální nulový tok (vojie čísel, ke první určuje výši ktuálního toku ruhé určuje kpitu příslušné hrny). Ve ruhém kroku se nlezne rezervní est ze zroje o stoku, přičemž výěr uzlů esty záleží n náhoném výěru z oposu nenvštívenýh uzlů. Ve třetím kroku mohou nstt v přípy:. Zvýšení toku o honotu rezervy esty n všeh hrnáh ve směru nlezené esty ve ruhém kroku. 2. Snížení toku o honotu rezervy esty n všeh hrnáh proti směru nlezené esty ve ruhém kroku. Druhý třetí krok se v návznosti opkují, oku lze nlézt rezervní estu. Poté už je uživteli zorzen mximální tok v zném grfu. Emons-Krpův lgoritmus Emons-Krpův lgoritmus je v pliki implementován ooným způsoem, tk jk je tomu v přípě přeešlého Forov-Fulkersonov lgoritmu. Bue ze tey popsán pouze rozíl oproti výše uveenému lgoritmu. Rozíl spočívá v kroku nlezení rezervní esty. Ztímo Forův-Fulkersonův lgoritmus nlézá rezervní estu pomoí náho- 3

ného výěru uzlů z oposu nenvštívenýh, Emons-Krpův prohleává grf o šířky nlézá vžy nejkrtší možnou rezervní estu. Tím může ýt elý lgoritmus zkráen ž o několik kroků. Názornou ukázku plike převáějíí Emons-Krpův lgoritmus můžeme viět n násleujíím orázku: Or. 9: Ukázk hleání mximálního toku ve weové pliki 5.4.6 Výpočet mximálního párování v iprtitním grfu Jelikož v pliki yly implementovány v lgoritmy pro výpočet mximálního toku, yl y ško tyto lgoritmy nevyužít i pro výpočet mximálního párování v iprtitním grfu. Výpočet mximálního párování tey okonle využívá vou lgoritmů výpočtu mximálního toku zorzuje, jk kompletní lgoritmus hleání mximálního párování proíhá. Aplike po nčtení korektníh t nejprve zorzí uživtelem zný iprtitní grf. V násleném prvním kroku se množin uzlů rozšíří o uzly Zroj Stok, o množiny hrn se přijí hrny s jenotkovou kpitou veouí ze Zroje o kžého uzlu levé množiny uzlů iprtitního grfu hrny veouí z prvé množiny uzlů iprtitního 32

grfu o Stoku. Všem hrnám půvoního iprtitního grfu se přiří kpit Inf (nekonečno). V násleném ruhém kroku lgoritmu se kžé hrně již vzniklé sítě přiří ktuální nulový tok (vojie čísel, ke první určuje výši ktuálního toku ruhé určuje kpitu příslušné hrny). Ve třetím kroku se nlezne rezervní est ze zroje o stoku, přičemž výěr esty záleží n typu zvoleného lgoritmu pro výpočet mximálního toku v síti (viz Forův-Fulkersonův Emons-Krpův lgoritmus). Ve čtvrtém kroku mohou nstt v přípy:. Zvýšení toku o honotu rezervy esty n všeh hrnáh ve směru nlezené esty ve ruhém kroku. 2. Snížení toku o honotu rezervy esty n všeh hrnáh proti směru nlezené esty ve ruhém kroku. Třetí čtvrtý krok se v návznosti opkují, oku lze nlézt rezervní estu. Poté už je uživteli zorzeno mximální párování v zném iprtitním grfu. Názornou ukázku vyhleání mximálního párování můžeme viět n násleujíím orázku. Or. : Ukázk hleání mximálního párování ve weové pliki 33

5.5 Testování plike Pro ohlení neosttků funkionlity plike je zpotřeí pliki otestovt n skutečnýh teh. Pro testování utentizovné části plike yly zřízeny přístupy: pro uživtele přístup s uživtelským jménem krel heslem krel, pro ministrátor přístup s uživtelským jménem luks heslem luks. Testování plike jsem prováěl převážně sám. Toto testování zhrnovlo: testování korektnosti znýh vstupníh t, testování funkionlity plike. Korektnost závnýh vstupníh t je velmi ůležitá, protože uživtelé rái zkouší závt různé formáty t, tím i o jisté míry testovt stilitu plike. Vítil jsem se proto o této situe pliki testovl n znčném množství vstupníh t. Testování funkionlity plike ylo prováěno jen n korektníh vstupníh teh, neoť nekorektní t jsme v prvním testování vyloučili. Tk jko vstupní t, tk i funkionlit yl testován n znčném množství korektníh vstupníh t. 5.6 Nszení plike Aplike ue sloužit jko pomůk pro výuku hystného přemětu Teorie grfů. Otevření tohoto přemětu je plánováno n zimní semestr 29/2. V součsnosti je plike ninstlován n školním serveru kel.menelu.z po mým stuentským účtem je ostupná n rese https://kel.menelu.z/~xkonen4/dp/. Do otevření přemětu ue plike ninstlován n účet veouího této práe, tím i nszen o provozu. 34

6 Seznm úloh teorie grfů 6. Buouí přemět Teorie grfů Pro teorii grfů ue v uounu n nší škole (MZLU) vymezen smosttný přemět. Přemět ponese název Teorie grfů. Tto elá práe slouží jko popůrný mteriál pro onen uouí přemět Teorie grfů. V této části vlstní práe njeme zásou úloh k provičení temtikýh elků vyučovnýh v přemětu Teorie grfů. Úlohy jsou vytvořeny tk, y pokryly ný temtiký elek. 6.2 Úlohy n vlstnosti grfů V násleujíí kpitole nlezneme úlohy n vlstnosti grfů, které v temtikýh okruzíh nejsou z prktikého provičování zstoupeny, le přesto jsou n toto tém některé úlohy vytvořeny. Součástí je i úloh, která ukzuje, jk lze řešit prolémy ze život pomoí grfů. ) N levém řehu řeky stojí mtk, ote, polijt, vězeň, v synové vě ery (M, O, P, V, S, S, D, D). Cílem je převést všehny osoy n ruhý řeh. Prvil jsou násleujíí:. n prám smí mximálně vě osoy, 2. ote nesmí ýt s žánou z er ez přítomnosti mtky, 3. mtk nesmí ýt s žáným ze synů ez přítomnosti ote, 4. vězeň nesmí ýt sám s žáným členem roiny, 5. pouze polijt roiče mohou říit prám. Úloh je vyřešen n násleujíím grfu. Grf ere smozřejmě v úvhu jen posloupnost est, po kterýh se oje ke zárnému íli (nejkrtší esty ez upliit). Jk je viět, existují vě esty jk ostt všehny osoy n ruhý řeh. Písmen u jenotlivýh uzlů znmenjí, ko se právě nhází n levém řehu (M mtk, O Ote, P polijt, V vězeň, S syn, D er). 35

M,O,P,V,S,S,D,D M,O,S,S,D,D M,O,P,S,S,D,D M,O,S,S,D M,O,S,D,D M,O,P,V,S,S,D M,O,P,V,S,D,D O,P,V,S,S M,P,V,D,D M,O,P,V,S,S M,O,P,V,D,D P,V,S,S P,V,D,D O,P,V,S,S M,P,V,D,D O,S,S M,D,D M,O,S,S M,O,D,D S,S O,S,S D,D S M,D,D P,V,S D V P,V,D Ø P,V ) Nkreslete řešení úlohy pomoí grfu, poku n prám mohou vstoupit mximálně tři osoy. ) Má úloh řešení poku n prám mohou vstoupit mximálně tři osoy prám mohou říit pouze roiče? 2) Vypište všehny vlstnosti násleujíího grfu: C e f D k G A B h g E i j F l H 3) Co můžeme říi o vlstnosteh násleujííh vou grfů? e 36

4) Určete všehny pogrfy násleujíího grfu, jež oshují právě čtyři uzly, žáný z nih není izolovný: e 5) Určete všehny fktory násleujíího grfu: 6) Z násleujííh grfů,,, určete, které grfy jsou iprtitní. Jké je ostčujíí prvilo pro to, y yl liovolný grf iprtitní? ) ) ) ) 6.3 Implemente grfu Kpitol se věnuje sttiké ynmiké implementi grfu. Pro provičení sttiké implemente jsou ze úlohy n mtie sousenosti iniene. Pro provičení ynmiké implemente jsou ze úlohy reprezentovné výčtem souseů seznmem hrn. 37

7) Npište mtii sousenosti iniene pro násleujíí grf: C B h g F i f D A e E 8) Z násleujíí mtie sousenosti nkreslete rovinný grf: = 9) Mjí-li v grfy stejnou mtii sousenosti, jená se o izomorfní grfy? ) Npište, jk se projevují vlstnosti grfu zjištěné z úlohy v v mtii sousenosti mtii iniene. ) Z násleujíího grfu ovoďte mtii iniene: A C B g e D i f E h F 38

2) Násleujíí orientovný grf reprezentujte výčtem souseů seznmem hrn: f e 3) Násleujíí orientovný grf, který je zán výčtem souseů reprezentujte: ) mtií sousenosti, ) mtií iniene, ) seznmem hrn. Výčet souseů je násleujíí: ; ;, ;, ;. 4) Pro přeešlou úlohu nkreslete rovinný grf. 6.4 Stromy kostry Kpitol stromy kostry zhrnuje i úlohy pro vysvětlení některýh teoretikýh pojmů. Přeevším jsou ze le úlohy provičujíí stromy, kostry lgoritmy hlejíí minimální kostru. 5) Definujte pojem strom. Znáte víe ekvivlentníh efini stromů? 6) Co je to kostr grfu? 7) Pro všehny uzly násleujíího stromu určete: ) jejih hlouku, ) jejih výšku. 39

2 3 4 5 6 7 8 9 2 3 4 8) Město je o měst vzáleno km, město o měst 4 km, město o měst km, město o měst 2 km, město o měst 7 km, město o měst 3 km, město o měst 9 km město o měst 5 km. Do měst vee přítok voy, o osttníh měst nikoliv. Veďte přítok voy o zývjííh měst s využitím přítoku o měst tk, y potruní spojení pro přítok voy ylo o nejkrtší. Kolik kilometrů potruí ue potře? Situi měst tké jeiné možné potruní spojení pro přítok voy mezi nimi zorzuje násleujíí grf: A B 4 2 C 3 D 9 5 E 7 F 9) Z násleujíí mtie sousenosti nkreslete grf. Úje, v mtii znčí ohonoení hrn. Nul v mtii znčí, že mezi uzly nevee hrn. V nkresleném grfu nlezněte minimální kostru pomoí: ) Krusklov lgoritmu, ) Primov lgoritmu, ) Borůvkov lgoritmu. 4

= 5 5 5 2 3 25 2 2 23 8 5 2 2 2 3 23 5 6 25 2 5 7 8 2 7 3 6 3 2) Doplňte relční operátor mezi násleujíí tvrzení: Nehť máme zný liovolný strom, pk: ) počet pogrfů stromu je počtu koster stromu, ) počet koster stromu je počtu fktorů stromu. 2) Njěte příkly grfů pro přípy Vámi oszenýh relčníh operátorů z přeešlé úlohy. 22) Njěte příkl konečného souvislého grfu, v němž lze nlézt vě kostry, které nemjí žánou společnou hrnu. Kolik hrn musí mít minimálně tento grf? 23) Nehť je zán liovolný prostý souvislý grf, který oshuje právě jenu kružnii. Kolik různýh koster má tento grf? Lze počet koster vyjářit oeným vzorem? Poku no, ovoďte tento vzore. 24) Určete počet koster z násleujíího grfu všehny je nkreslete: F 4

6.5 Prohleávání grfu Kpitol prohleávání grfu provičuje úlohy prohleávání o šířky hlouky. U prohleávání o šířky se prováí i istnční rozkl množiny uzlů. U prohleávání o hlouky rozlišujeme prohleávání v poří pre-orer, in-orer post-orer. 25) Jké jsou nejpoužívnější lgoritmy prohleávání grfů? 26) Stručně vysvětlete lgoritmus BFS (prohleávání o šířky), jké tové struktury využívá? 27) Stručně vysvětlete lgoritmus DFS (prohleávání o hlouky), jké tové struktury využívá? 28) Násleujíí grf prohleejte lgoritmem BFS: 5 2 3 6 4 7 9 8 29) Násleujíí grf prohleejte lgoritmem BFS rozložte uzly o množin pole jejih úrovně znoření: 2 5 8 3 4 7 9 6 3) Co vyjřují úrovně znoření z přeešlé úlohy? Neoli jké jsou mezi nimi vzthy? 42

3) Násleujíí grf prohleejte lgoritmem DFS: 3 2 5 4 9 6 7 8 32) Pro průhoy o hlouky pre-orer, in-orer, post-orer npište poří prováění kí průhou. 33) Násleujíí inární strom prohleejte o hlouky v poří: pre-orer, in-orer post-orer: 2 3 4 6 9 5 7 8 34) Násleujíí grf prohleejte o hlouky v poří: pre-orer post-orer. 2 3 7 4 5 6 8 9 35) Je rozíl mezi průhoem o hlouky v poří level-orer průhoem o šířky u stromů? 43

36) Ověřte přeešlou úlohu n násleujíím grfu. 2 3 4 5 6 7 8 9 2 3 6.6 Hleání optimálníh sleů Hleání optimálníh sleů provičuje lgoritmy pro ono hleání jejih vlstnosti. Zání úloh je přeevším prktikého rázu, čtenář má proto lepší přestvu o použití lgoritmů v prxi. 37) Ve městě se heme ostt z míst o míst. Přitom můžeme estovt pouze městskou hromnou oprvou. Jsme líní, proto heme po estě o nejméně přestupovt. Násleujíí grf zorzuje shém trs z míst o míst. Uzly v grfu ( 9) znčí míst přestupu. Uzel je místo nástupu uzel je místo výstupu. Hrny znčí trsy, po kterýh se lze městskou hromnou oprvou oprvit z míst o míst. Pomoí Moorov lgoritmu určete rozkl množiny uzlů pole vzálenosti o míst njěte pro Vás jko línou osou nejlepší řešení pro estování: 7 8 B A 2 6 3 4 5 9 38) Které prohleávání grfu jsme při použití Moorov lgoritmu použili? 44

39) V úloze č. 37 jsme yli líní. Nyní už líní nejsme, le jsme netrpěliví. Cheme se tey z míst ostt o míst o nejryhleji, nezáleží nám n tom, kolikrát ueme po estě přestupovt. Pomoí Dijkstrov lgoritmu nlezněte z hleisk čsu nejkrtší estu z míst o míst. Všehny potřené úje jsou v násleujíím hrnově ohonoeném grfu, ke ohonoení hrny přestvuje čs (minuty) jízy mezi inientními uzly. Pro lepší přestvu tké uvžujeme okmžité přestupy v uzleh: 5 3 6 7 3 6 8 5 B A 7 8 2 2 6 9 4 6 4 3 4 5 5 4 9 4) Jká je pomínk ohonoení hrn pro Dijkstrův lgoritmus? 4) Jké jsou pomínky ohonoení hrn pro Forův lgoritmus? 42) Přeešlý hrnově ohonoený grf z úlohy č. 39 řešte Forovým lgoritmem. Kolikrát musíme přesenout, yhom ojeli z míst o míst o nejříve? 43) Pro násleujíí grf ovoďte mtii sousenosti. Tu uprvte tk, y z ní ylo možné vypočítt nejkrtší esty mezi všemi vojiemi uzlů pomoí Floy- Wrshllov lgoritmu vypočtěte ji: -5 3 2-2 e -6 4 3 5 45

44) Nházíme se v lyžřském střeisku, které přestvuje násleujíí grf. Hrny grfu přestvují lyžřské sjezovky (élky) uzly křížení sjezovek, n nihž je možné nsenou n vlek neht se vyvést n vrhol sjezovky. Z uzlu se již nelze ále vyvézt, jsme tey n vrholu sjezovek (uzel ). Dále jsme náročný lyžř požujeme sjížět sjezovku nejelší trsou nopk vlekem vyjížět nejkrtší trsou. Njěte trsu pro sjížění z o trsu pro vyjížění z o : T 4 2 3 2 2 3 5 f 3 e 6 4 4 g S 45) Z výroní hly potřeujeme přemístit stroj z míst o míst. Všehny možné esty jsou znázorněné n násleujíím grfu. Hrny grfu jsou možné esty (šířky), po nihž lze stroj přemístit, uzly jsou míst křížení těhto est. Njěte estu, kterou lze přemístit o nejširší nákl. Jká je šíře této esty? S 3,8 4,6 4,5 4,2 3,5 4,5 4,7 5, 4,3 4,8 4,2 3, 3,8 g 4,9 e 4, 4,3 f T 46) Násleujíí grf přestvuje skupinu činností (projektů) pole jejih možnýh návzností. Činnost vyházejíí z kžého uzlu (krom uzlu zčátek projektu) 46

může zčít, ž se ukončí všehny činnosti o něj přiházejíí. Ohonoení hrn znmená élk činností v čsovýh jenotkáh. Njěte kritikou estu projektu: S 24 29 36 53 24 47 2 48 f e 24 T 6.7 Toky v sítíh jejih plike N toky v sítíh je změřen elá práe. Provičuje jk teoretiké znlosti z této olsti, tk i prktiké plike lgoritmů n výpočet mximálního toku v síti mximálního párování v grfeh. 47) Definujte pojem tok řez v síti. 48) Co lze říi o minimálním řezu mximálním toku v síti? 49) Existuje síť, n které nelze nlézt mximální tok? 5) Dokžte, že poku nelze nlézt rezervní estu v síti, honot toku je již mximální. 5) V násleujíí síti nlezněte mximální tok z pomoí Emons-Krpov lgoritmu: 2 s 5 5 8 2 5 8 e 3 4 t 47

52) Přeešlou úlohu řešte Forovým-Fulkersonovým lgoritmem. 53) Nkreslete síť, n kterou použití Emons-Krpov neo Forov-Fulkersonov lgoritmu nemá vliv n postup při výpočtu mximálního toku sítí ným lgoritmem (tzn., postup použití oou lgoritmů ue v kžém kroku stejný). 54) Nkreslete liovolnou ohonoenou síť splňujíí násleujíí pomínku tk y: při plikování Emons-Krpov lgoritmu n výpočet mximálního toku yl lespoň jeen krok tkový, že liovolná nlezená rezervní est povee v protisměru lespoň jené hrny Vámi nkresleného grfu (tzn. lespoň v jenom kroku lespoň n jené hrně oje ke snížení ktuálního toku). 55) Lze tkový grf nkreslit i pro Forův-Fulkersonův lgoritmus, tk y pltil pomínk z přeešlé úlohy? Neoli, ť jsou rezervní esty vyrány jkkoli, oje lespoň n jené hrně ke snížení ktuálního toku? Poku no, nkreslete. Poku ne, oůvoněte tvrzení. 56) V násleujíí síti nlezněte mximální tok vyznčte v ní minimální řez: 2 s 4 27 6 5 5 2 3 e 8 5 f 2 g 8 t 57) Poku oeereme liovolnou hrnu z minimálního řezu sítí, jk se změní mximální tok v síti? 58) Vysvětlete názorně převeďte n násleujíím iprtitním grfu postup převou iprtitního grfu n síť, tk y mohlo ýt nlezeno mximální párování metoou výpočtu mximálního toku v síti: 48

59) Nlezněte mximální párování metoou převou n mximální tok sítí n násleujíím grfu: 6) Zjistěte, z násleujíí grf je iprtitní. Poku no, nkreslete jej tk, y n první pohle ylo viět, že se jená o iprtitní grf nlezněte mximální párování metoou střívýh est: e i k f h l g 6.8 Úlohy řešené pomoí grfů Tto kpitol je převážně prktikého hrkteru, ukzuje různé situe prktikýh prolémů řešenýh pomoí grfů grfovýh lgoritmů. 49

6) Máme osm měst (A H) mezi nimiž veou silnie. Situi měst silni mezi nimi zorzuje násleujíí grf. Silnie jsou nové my n ně potřeujeme nkreslit střeové čáry. Cheme projet kžou silnii jenou vrátit se o výhozího měst. Njěte trsu, kterou pojeete. Výhozím oem je město F. B E A C F H D G 62) Jká je pomínk pro sestrojení uzvřeného thu z přeešlé úlohy? Šel y tkový th njít z liovolného měst přeešlé úlohy? 63) Jsme v pozii zásoovče o kžého z měst úlohy č. 6 musíme zvézt ojenné zásoy. Nházíte se ve městě A. Njěte estu, po které ojeete všehn měst, vrátíte se o výhozího měst (respektive nlezněte kružnii, jejímž výhozím městem je město A). 64) N ílně je pět provníků pět strojů. Krel umí n fréze, soustruhu vrtče. Mrtin umí n fréze pile. Tom umí n vrtče ruse. Frnt umí n soustruhu pile. Lukáš umí n ruse pile. Kžému provníkovi přiřďte stroj, se kterým umí provt. 65) Mějme množinu stuentů {Krel, Mrtin, Anet, Luk} množinu izíh jzyků {ngličtin, němčin, špnělštin, frnouzštin, ruštin}. Mějme tké násleujíí tvrzení: Krel umí ngliky, němeky špnělsky, Mrtin umí ngliky špnělsky, Anet umí němeky frnouzsky, Luk umí ngliky, špnělsky rusky. 5

Dále máme čtyři týmy po třeh lieh, v nihž kžý umí kžý z množiny izíh jzyků. Do kžého týmu přiřďte jenoho ze stuentů tk, y se v kžém týmu všihni lié mezi seou orozuměli, žáné liovolné v týmu k tomu nepoužily stejný jzyk. O jký typ úlohy se jená? Kolik způsoy lze provést přiřzení? 66) Integrovná oprv Jihomorvského krje je rozělen o mnoh zón. Násleujíí grf přestvuje zóny v okolí entr Brn, které spolu souseí. Pro plán členění zón je potře vyrvit zóny rvmi tk, y žáné souseíí zóny neyly vyrveny stejnou rvou. Skutečnost je tková, že plán zón násleujíího grfu je vyrven pěti rvmi. Je možné tento počet rev snížit tk, y při tom yl splněn pomínk revnosti pro souseíí zóny? Otázk k zmyšlení: je tento počet možné snížit okone n tři rvy? g k l e i n m f h o j 5

7 Řešení úloh teorie grfů 7. Úlohy n vlstnosti grfů ) Možné řešení: ) M,O,P,V,S,S,D,D M,O,P,V,S,D,D M,O,P,V,D,D M,P,V,D,D O,M,P,V P,V M,O,S,D,D M,O,D,D M,D,D P,V V Ø ) Ano. 2) Grf je orientovný, ykliký, prostý, slě souvislý, rovinný oshuje smyčku. 3) Grf je pogrf grfu. O grfy jsou orientovné slě souvislé. Grf je ykliký, prostý rovinný. Grf je ykliký, prostý, rovinný je to strom. 4) Výčet hrn: {,,, }, {,, }, {,, }, {,, }, {,,, }, {,, }, {,, }, {,, }, {,,, }, {,, }, {,, }, {,, }, {,,, }, {,, }, {,, }, {,, }. 5) 52