Základní grafové algoritmy



Podobné dokumenty
Základy algoritmizace

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

Umělá inteligence a rozpoznávání

Jarníkův algoritmus. Obsah. Popis

Václav Matoušek KIV. Umělá inteligence a rozpoznávání. Václav Matoušek / KIV

Základní grafové algoritmy

Další povinnosti / odb. praxe. Návrh témat prací. Návaznost na další stud. prog.

Rekurentní rovnice, strukturální indukce

B-IIa Studijní plány pro bakalářský SP Informatika se zaměřením na vzdělávání

Úvodní poznámky a literatura. Robotika. Úvodní poznámky a literatura. Vladimír Smutný. Centrum strojového vnímání

Základy algoritmizace

Funkce. Lineární a kvadratické funkce s absolutní hodnotou. Mgr. Tomáš Pavlica, Ph.D. Digitální učební materiály, Gymnázium Uherské Hradiště

vjj 1. Windows programming. krátká nahlédnutí za oponu

Genetické programování 3. část

Rekurentní rovnice, strukturální indukce

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Eliška Sovová a Kristýna Fischerová projekt Čtenář a

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

Výuka programování v jazyce Python

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

KOMU JE KNIHA URČENA?

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

RIGORÓZNÍ ŘÍZENÍ NA MATEMATICKÉ SEKCI PŘÍRODOVĚDECKÉ FAKULTY MASARYKOVY UNIVERZITY POŽADAVKY K RIGORÓZNÍM ZKOUŠKÁM

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Bonn, Rheinischen Friedrich-Wilhelms-Universität

Speciální numerické metody 4. ročník bakalářského studia. Cvičení: Ing. Petr Lehner Přednášky: doc. Ing. Martin Krejsa, Ph.D.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Časová a prostorová složitost algoritmů

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů)

bfs, dfs, fronta, zásobník

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

AUTOMATY A GRAMATIKY

KOMU JE KNIHA URČENA?

Spojová implementace lineárních datových struktur

Rok narození 1963 Rozsah pr. vzt. na VŠ 1 Do kdy

Navrženy v 60. letech jako experimentální optimalizační metoda. Velice rychlá s dobrou podporou teorie

Summer Workshop of Applied Mechanics. Závislost míry tuhosti laminátové desky na orientaci vrstev a její maximalizace

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

ROZVOJ PŘÍRODOVĚDNÉ GRAMOTNOSTI ŽÁKŮ POMOCÍ INTERAKTIVNÍ TABULE

Příloha č. 1. Pořadové číslo 1 Název kurzu Změny v účetnictví od roku 2010 Počet osob 2 Minimální rozsah kurzu

Souhrnná zpráva za roky o řešení rozvojového programu MŠMT 514 Projekt Algovize - tvorba multimediálních pomůcek pro výuku algoritmů

5.1.7 Informatika a výpočetní technika. Časové, obsahové a organizační vymezení. ročník hodinová dotace

Informatika na Univerzitě Palackého

Čtenářství na školách

METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

TGH02 - teorie grafů, základní pojmy

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Přehled připomínek k předmětu PPA1

Obsah. Marketing a marketingové řízení 3. Úvod: marketing pro každého? kapitola 5 Podstata marketingu kapitola 17 Marketingové řízení 17

Co vás čeká. Osvojení si základy analytického myšlení při psaní algoritmů pomocí jazyka Python.

1 Biochemické animace na internetu

IV122 Matematika a programování Úvod kurzu. Radek Pelánek

Role členů rodiny, jejich práva a povinnosti Metodický list

Úvod do celočíselné optimalizace

Obsah. Úvod 9 Členění knihy 10

Protokol RSA. Tvorba klíčů a provoz protokolu Bezpečnost a korektnost protokolu Jednoduché útoky na provoz RSA Další kryptosystémy

Antonín Slavík Katedra didaktiky matematiky MFF UK. 50. výročí KDM MFF UK

k-dimenzionálním prostoru. problém: Zkonstruovat strom, který rozděluje prostor polorovinami

Rigorózní zkoušku uchazeč vykoná z historie matematiky a z jednoho z následujících předmětů (dle vlastní volby):

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT


III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jak se aktivně účastnit vědeckého semináře či konference presentací posteru?

A Žádost o akreditaci základní evidenční údaje (bakalářské a magisterské SP) Vysoká škola

Copyright Jiří Janda ISBN

1 Úvod do celočíselné lineární optimalizace

Úvodní přednáška. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Digitální učební materiál

Přijměte své bohatství!

B-Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Soulad studijního programu. Aplikovaná informatika

Paralelní programování

Počítačová geometrie I

Úvodní přednáška. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Úvod do programovacího jazyka Python

ALGORITMIZACE A DATOVÉ STRUKTURY (14ASD) 1. cvičení

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Předmět: Programování

Kombinatorika. In: Antonín Vrba (author): Kombinatorika. (Czech). Praha: Mladá fronta, pp. 3 [6].

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Nové knihy. Možný, P., Praško, J.: KOGNITIVNĚ-BEHAVIORÁLNÍ TERAPIE. ÚVOD DO TEORIE A PRAXE. Praha: Triton 1999, 304 s. (ISBN )

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Struktura seminární práce

Fyzikální laboratoř. Kamil Mudruňka. Gymnázium, Pardubice, Dašická /8

Problém batohu. Zdeněk Hanzálek ČVUT FEL Katedra řídicí techniky. 5. dubna 2011

Funkce. Mocninné funkce. Mgr. Tomáš Pavlica, Ph.D. Digitální učební materiály, Gymnázium Uherské Hradiště.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Úvod do programovacího jazyka Python

Předmět: Konverzace v ruském jazyce

Historie matematiky a informatiky

PODPORA VÝUKY MATEMATIKY E-LEARNINGOVÝMI KURZY S MULTIMEDIÁLNÍMI STUDIJNÍMI

Funkce. Logaritmická funkce. Mgr. Tomáš Pavlica, Ph.D. Digitální učební materiály, Gymnázium Uherské Hradiště

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

PC GRAMOTNOST PRO POLITOLOGY

Úvod, návod ke knize

MATEMATIKA. který byl zveřejněn v našem časopise v roce V tomto navazujícím

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Transkript:

i Základní grafové algoritmy Jakub Černý KAM, MFF UK 24. listopadu 2010 Verze 0.95 Homepage http://kam.mff.cuni.cz/ ~ kuba/ka Kontakt: kuba@kam.mff.cuni.cz

ii

Obsah Úvod v iii

iv OBSAH

Úvod Text je psán pro úplné začátečníky. To je pro kohokoliv, kdo má rozumné základy z programování a teorie grafů. Snažím se co nejnázorněji vysvětlovat fungování jednotlivých algoritmů, takže by tomu měli rozumět i středoškoláci. Na druhou stranu v ní svoje najdou i středně pokročilí. Pro začátečníky jsou určeny počáteční kapitoly, které vysvětlí základní pojmy. A dále začátky ostatních kapitol, které obsahují základy daných problémů. Pokročilejší mohou rovnou přeskočit na kapitoly, které je zajímají. Kromě základů na začátku každé kapitoly, dále najdou i alternativní řešení a souvislosti. Obecně se dá říci, že na začátku kapitoly jsou základy a postupně přituhuje. Kniha obsahuje jak teoretické výsledky, analýzy (včetně důkazů), tak i finty jak daný algoritmus dobře naprogramovat. Algoritmy jsou popsané pseudokódem, který by měl být čitelný každému, kdo zná základy programování. Přepsání pseudokódu do jiného programovacího jazyka by pro něj už mělo být jednoduché. Mým cílem je motivovat a hravě vysvětlit grafové algoritmy. Chtěl bych, aby kniha byla srozumitelná, plná příkladů a obrázků. Také bych chtěl, aby se kniha četla dobře a aby Vás snadno provedla obsaženými tématy. Zkrátka, abyste knihu četli pro radost. Ono není tak těžké o něčem napsat knihu, ale je hodně těžké napsat knihu, která se dobře čte. 1 Jak to shrnuje jeden citát: Rychlé psaní je těžké čtení, ale lehké čtení je zatraceně těžké psaní. Knihu jsem se snažil psát tak, jak by se mi to samotnému líbilo, když bych ještě neznal žádné grafové algoritmy. Je několik výborných zahraničních učebnic, ale ještě jsem neviděl rozumnou českou učebnici na grafové algoritmy. Z těchto důvodů jsem se rozhodl napsat tuto knihu. Když jsem na Karlově Univerzitě cvičil algoritmy, tak mi chyběla sbírka příkladů na procvičení grafových algoritmů. Proto je na konci každé kapitoly spousta příkladů. Jakub Černý, Ph.D. Co ještě obsahuje tato úvodní kapitola? Přehled anglickým učebnic, které mohu doporučit a které pro mě byly inspirací. Doporučení o tom, jak používat tuto knihu. Poděkování všem, kteří se zasloužili o to, aby tato kniha byla taková, jaká je. Nezávisle na čtení knihy si můžete přečíst dodatky, které jsou na konci celé knihy. Dodatky obsahují moderní poznatky o tom, jak funguje učení. Proslov ke studentům, učitelům. Značení použité v této knize. 1 Viz spousta nekvalitních překladů dobré zahraniční literatury nebo některé české rychlokvašky, kterým chybí dotažení do konce. v

vi OBSAH Podobné učebnice v angličtině a odkazy Anglická literatura o grafových algoritmech: Cormen, Leiserson, Rivest: Introduction to Algorithms [2] Dasgupta, Papadimitriou, and Vazirani: Algorithms [3] (dá se stáhnout z webu) Cook, Cunningham, Pulleyblank, Schriver: Combinatorial Optimization [1] Schrijver: Combinatorial Optimization [8] (na webu jsou lecture notes [9]) Erickson: Algorithms Course Materials (jsou na webu jako lecture notes [5]) Sbírky příkladů: (často i s ukázkovým řešením). Korespondenční seminář z programování (http://ksp.mff.cuni.cz) ACM programming contest (například http://uva.onlinejudge.org/) Odkazy na další literaturu najdete v jednotlivých kapitolách (tj. u věcí, se kterými to souvisí). Doporučení Jak už jsem psal na začátku. Tato kniha je pro kohokoliv, kdo má rozumné základy z programování a teorie grafů. Aspoň byste měli vědět, co je to zásobník, fronta, rekurze, pointer neboli ukazatel, dynamická alokace paměti a spojový seznam. Pro úvod do programování mohu doporučit knihu P. Töpfer: Algoritmy a programovací techniky [10]. Pro hezký úvod do teorie grafů mohu doporučit knihu Matoušek, Nešetřil: Úvod do diskrétní matematiky [6], nebo anglicky [7], [4]. Snažím se co nejnázorněji vysvětlovat fungování jednotlivých algoritmů, ale přeci jen má kniha svoje meze. Nedají se do ní vložit animace. Vřele každému doporučuji, aby si na internetu vyhledal animace, applety, které ilustrují průběh jednotlivých algoritmů. Často si do nich můžete zadat vlastní graf a krokovat jednotlivé kroky algoritmu. Pohrajte si s nimi. Vygoolujte si je. Varování: Programy v celé knize jsou psány tak, aby byli co nejpochopitelnější a co nejnázornější. Zkrátka jsou psány pro snadnou výuku. To znamená, že nemusí být optimalizovány pro co nejrychlejší implementaci (ta stejně záleží na programovacím jazyce a operačním sytému). Když už dobře pochopíte daný algoritmus, tak patří k programátorskému umění dobře algoritmus implementovat. Neberte to tak, jak je psáno, ale přemýšlejte o tom! Poděkování Chtěl bych mockrát poděkovat... Tomáš Holan, Jan Šarson, Andrea Bachtíková... za přečtení a korektury v textu.

Literatura [1] W. J. Cook, W. H. Cunningham, W. R. Pulleyblank, and A. Schrijver. Combinatorial optimization. John Wiley & Sons, Inc., New York, NY, USA, 1998. [2] T. H. Cormen, C. Stein, R. L. Rivest, and C. E. Leiserson. Introduction to Algorithms. McGraw-Hill Higher Education, 2001. [3] S. Dasgupta, C. Papadimitriou, and U. Vazirani. Algorithms. McGraw- Hill Higher Education, 2007. http://www.cs.berkeley.edu/~vazirani/ algorithms.html. [4] R. Diestel. Graph Theory, volume 173 of Graduate texts in mathematics. Springer, Berlin, 3rd edition, 2005. [5] J. Erickson. Algorithms course materials, 2009. http://www.cs.uiuc.edu/ ~jeffe/teaching/algorithms. [6] J. Matoušek and J. Nešetřil. Kapitoly z diskrétní matematiky. MatfyzPress, 1996. [7] J. Matoušek and J. Nešetřil. Invitation to Discrete Mathematics. Oxford University Press, 1998. [8] A. Schrijver. Combinatorial Optimization - Polyhedra and Efficiency. Springer- Verlag, Berlin, 2008. [9] A. Schrijver. Lecture notes, 2008. http://homepages.cwi.nl/~lex/. [10] P. Töpfer. Algoritmy a programovací techniky. Prometheus, 1995. 1