Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Vedoucí práce: RNDr. Martin Pergel, Ph.D.

Rozměr: px
Začít zobrazení ze stránky:

Download "Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Vedoucí práce: RNDr. Martin Pergel, Ph.D."

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta SVOČ 2011 Jindřich Ivánek Heuristikou řízené hledání optima v NP-těžkých úlohách Vedoucí práce: RNDr. Martin Pergel, Ph.D.

2 Obsah 1 Úvod 3 2 Algoritmus A* Úloha nejkratší cesty Popis A* Vlastnosti A* Aproximace Vybrané optimalizační NP-úplné problémy a jejich řešení pomocí A* Problém obchodního cestujícího (TSP) Zadání Heuristiky Aproximace Funkce pro A* Vrcholové pokrytí (VP) Zadání Heuristika Aproximace Funkce pro A* Problém batohu (PB) Zadání Heuristika Aproximace Funkce pro A* Rozvrhování úloh (RU) Zadání Heuristika Aproximace Funkce pro A* Implementace - uživatelská dokumentace Instalace a spuštění grafického rozhraní Výběr optimalizačního problému a zadání vstupních dat

3 Problém obchodního cestujícího Vrcholové pokrytí Problém batohu Rozvrhování úloh Parametry Průběžné informace o výpočtu a výsledné řešení Implementace - programátorská dokumentace Instalace a spuštění Ovládání programu z příkazové řádky Formát vstupních souborů Kompilace Datové struktury Halda a hrábě B-strom Popis řešených optimalizačních problémů Zdrojové soubory Porovnání heuristik a aproximací na příkladech Porovnání heuristik na souboru příkladů Problém obchodního cestujícího Vrcholové pokrytí Problém batohu Rozvrhování úloh Porovnání aproximací na příkladech Problém obchodního cestujícího Vrcholové pokrytí Problém batohu Rozvrhování úloh Závěr 44 Literatura 45

4 Kapitola 1 Úvod Předmětem předkládané práce je studium možností aplikace heuristikou řízeného prohledávání algoritmem A* na hledání optimálních řešení některých NP-těžkých problémů. Vycházíme z monografie N. J. Nilssona Problem-Solving Methods in Artificial Intelligence z roku 1971 [9], která popisuje použití A* na řešení problémů. Práce navazuje a dále rozšiřuje postup popsaný v článku [6], kde se využívá A* na řešení problému obchodního cestujícího. V práci zobecňujeme tento postup tak, aby šel využít na řešení různých typů optimalizačních úloh. Dalším přínosem je jeho vylepšení (např. ořezávání prohledávaného prostoru pomocí aproximace). Pro vybrané NP-úplné optimalizační problémy byl navržen převod na problém hledání nejkratší cesty a heuristiky a aproximace, které A* využívá. Popsaná metoda společně s vybranými problémy byla naimplementována, přičemž byl kladen důraz na prostorovou a časovou efektivitu. Vytvořené programové prostředí včetně zdrojových kódů je ke stažení na adrese 3

5 Kapitola 2 Algoritmus A* A* je algoritmus na hledání minimální cesty s použitím tzv. heuristiky. Heuristikou zde rozumíme dolní odhad délky zbývající cesty. Např. v grafu reprezentující vzdálenosti objektů na euklidovské rovině, může být taková heuristika vzdušná vzdálenost do cíle. Metody heuristikou řízeného prohledávání byly vyvinuty v 50. a 60. letech minulého století v rámci výzkumu umělé inteligence. Jejich obecnou teorii shrnuje monografie N. J. Nilssona Problem-Solving Methods in Artificial Intelligence z roku 1971 [9], z níž ve své práci také vycházíme. Popis heuristikou řízeného algoritmu A* a jeho vlastností je též součástí každého přehledu výzkumu umělé inteligence, viz například [11]. 2.1 Úloha nejkratší cesty V následující části formálně zadefinujeme pojmy, které jsou nezbytné pro popis algoritmu A*. Najprve zavedeme A*-graf, který bude reprezentovat stavový prostor v němž se hledá minimální cesta z počátečního do koncového stavu. Dále budeme definovat heuristickou funkci, kterou A* využívá jako dolní odhad pro řízené prohledávání. K heuristikám přidáme podmínku konzistence, jejíž splnění nám dá jisté záruky o chování algoritmu A*. Definice 2.1 (A*-graf). Bud G = V, E, c vážený orientovaný konečný graf s nezáporným ohodnocením hran c : E R + 0 (kde R + 0 označuje množinu nezáporných reálných čísel). Bud s V, T V, T takové, že v V existuje cesta z s do v a v V \ T existuje cesta z v do alespoň jednoho t T. Pětici V, E, c, s, T budeme nazývat A*-graf, V množina stavů, s startovní stav a T množina cílových stavů. Termín stav zde zavádíme pro odlišení od termínu vrchol, který budeme používat v zadání některých řešených optimalizačních problémů grafového charakteru v další kapitole (a také v souvislosti s tím, že algoritmus A* byl původně konstruován pro řízené prohledávání stavového prostoru v úlohách umělé inteligence). V dalším textu budeme symboly V, E, c, s, T značit příslušné součásti nějakého A*-grafu. 4

6 5 Definice 2.2 (Minimální cesta). Minimální cestou do stavu v V rozumíme cestu s minimální délkou ze všech cest z s do v. Délku takové cesty budeme označovat g(v). Minimální cestou v A*-grafu rozumíme cestu z s do nějakého cílového stavu t T délky min{g(t) t T }. Této délce budeme říkat optimum. Definice 2.3 (Heuristika). Heuristika je funkce h : V R + 0, která je vždy menší nebo rovna délce minimální cesty z v V jako startovního stavu do T. Perfektní heuristika je taková heuristika, která je rovna délce minimální cesty. Tuto heuristiku budeme označovat h. Pro každou heuristiku platí: v V : h(v) h (v). Definice 2.4 (Konzistentní heuristika). Konzistentní heuristika je heuristika h, pro kterou platí: v, w E : h(v) c ( v, w ) + h(w). (2.1) Tedy konzistentní heuristika je dolní odhad, který se postupným přibližováním k cíli nezhoršuje. Lemma 2.5 (Konzistence a dolní mez). Pokud funkce h : V R + 0, splňuje nerovnost (2.1) a platí t T : h(t) = 0, pak je h konzistentní heuristika, tj. splňuje též podmínku v V : h(v) h (v). Důkaz. Pro libovolný stav v V uvažujme minimální cestu do T. Tato cesta v, v 1,..., v k, t má délku h (v). Chceme dokázat, že h(v) h (v). Pro všechny hrany w, z minimální cesty podle (2.1) platí: h(w) h(z) c ( w, z ). Pokud všechny tyto nerovnosti sečteme, získáme: h(v) h(t) h (v). Definice 2.6 (Silnější heuristika). Řekneme, že heuristika h 1 je silnější než heuristika h 2, pokud v V : h 1 (v) h 2 (v). Lemma 2.7 (Maximum heuristik). Jsou-li h 1,..., h n konzistentní heuristiky, pak funkce h(v) = max(h 1 (v),..., h n (v)), v V dává konzistentní heuristiku, která je silnější než h 1,..., h n.

7 6 Důkaz. Stačí ukázat, že h je konzistentní. Necht v, w V jsou libovolné stavy takové, že v, w E. Protože i {1,..., n} : h(v) = h i (v) a h i je konzistentní heuristika, musí platit h(v) = h i (v) c (v, w) + h i (w) c (v, w) + h(w). Definice 2.8 (Odhad). Funkci f : V R + 0, v V : f(v) = g(v) + h(v), kde h je heuristika, budeme nazývat odhad (délky minimální cesty z s do T přes stav v). Perfektní odhad budeme označovat f, v V : f (v) = g(v) + h (v). Platí: t T : g(t) = h (s ), toto g(t) je optimum délka hledané minimální cesty. Pro všechny stavy v na této hledané cestě musí platit f (v) = h (s ). 2.2 Popis A* Nyní můžeme přistoupit k popisu samotného algoritmu A*. Vzhledem k navrženým aplikacím se omezíme na variantu algoritmu A* pro konzistentní heuristiky. Algoritmus A* v A*-grafu najde (s využitím libovolné konzistentní heuristiky h) minimální cestu ze startovního stavu s do množiny cílových stavů T. Pro použití algoritmu A* není třeba zadávat celý vstupní graf, nebot A* prohledává vstupní graf (generuje jeho potřebnou část) s použitím následujících funkcí: Definice 2.9 (A*-graf zadaný funkcemi). Pro A*-graf V, E, c, s, T definujme funkce: start() = s. cil(v) rozhodne, zda platí v T. naslednici(v) = množina následníků stavu v, tj. {w V v, w E }. ohodnoceni(v, w) = c ( v, w ). Z definice 2.9 A*-grafu zadaného funkcemi plyne, že lze vygenerovat množiny V, E pomocí funkce naslednici ze startovního stavu s = start() (protože všechny stavy jsou z s dosažitelné). Pokud T a v, w E : ohodnoceni(v, w) R + 0, vyhovuje tento graf definici 2.1. Vstupem pro algoritmus A* je A*-graf zadaný funkcemi a konzistentní heuristika (zadaná funkcí heuristika()). A* si pro každý (vygenerovaný) stav pamatuje délku aktuálně nejkratší cesty ze startovního stavu s.

8 7 Definice 2.10 (delka, odhad). Aktuální (z hlediska běhu A*) délku nejkratší cesty ze startovního stavu do v V budeme značit delka(v). Aktuální (z hlediska běhu A*) odhad délky nejkratší cesty ze startovního stavu do T přes v V je odhad(v) = delka(v) + h(v). Cílem algoritmu A* je tedy postupně generovat stavy a přibližovat hodnotu delka hodnotě g. Na závěr musí najít takový cílový stav t, jehož g(t) je minimální, a přitom má zajistit, že g(t) =delka(t). Popis práce algoritmu A*: A* používá ke své práci množinu otevřených stavů open a množinu uzavřených stavů closed. Na začátku je v open startovní stav s. V každém kroku A* vyjme z open stav s minimální hodnotou odhad a vloží ho do closed (tedy uzavře tento stav). Pak spočte hodnoty delka a odhad pro všechny jeho následníky (generované funkcí naslednici) a vloží je do open (tomu budeme říkat expanze). Výpočet hodnoty delka probíhá podobně jako v Dijkstrově algoritmu. Algoritmus 2.1 (A*). I. Inicializace s := start() delka(s ) := 0 odhad(s ) := heuristika(w) open := {s } closed := II. Hlavní cyklus while open do II.a) Selekce v := x open takové, že odhad(x) = min w open {odhad(w)} open := open \ {v} closed := closed {v} II.b) Terminalita if cil(v) then print Nalezeno optimum (delka(v))! KONEC end if II.c) Expanze for all w naslednici(v) do if w / closed & w / open then delka(w) := delka(v) + ohodnoceni(v, w) odhad(w) := delka(w) + heuristika(w) open := open {w} end if if w / closed & w open then

9 8 if delka(w) > delka(v) + ohodnoceni(v, w) then odhad(w) := odhad(w) delka(w) + delka(v) + ohodnoceni(v, w) delka(w) := delka(v) + ohodnoceni(v, w) end if end if end for end while Poznámka 2.11 (Složitost algoritmu 2.1). Počet průchodů hlavním cyklem (a tedy počet expanzí) může být v nejhorším případě stejný jako počet necílových stavů A*-grafu. Při každém průchodu cyklem musíme vyhledat minimální prvek v open, zařadit ho do closed a dále vygenerovat jeho následníky, u každého z nich zjistit, zda se nenachází v open nebo closed a pokud je nový, vypočítat heuristiku. Důležité je pozorování, že heuristiku počítáme pro každý stav pouze jednou, a to když ho vygenerujeme poprvé. Vyhledání přítomnosti prvku v open nebo closed musíme ale provádět opakovaně, v nejhorším případě pro každou hranu A*-grafu. Složitost A* je tedy O( V (selekce + heuristika) + E vyhledani). Pokud by A*-graf měl tu vlastnost, že by pro stupně všech stavů platilo v V : deg(v) log( V ), (2.2) pak by se v každé expanzi vygenerovalo maximálně log( V ) následníků. To znamená, že by se celková složitost zlepšila na O( V (selekce + heuristika + log( V ) vyhledani)). Poznamenejme, že všechny A*-grafy řešených problémů (uvedených v kapitole 3) tuto vlastnost mají. 2.3 Vlastnosti A* Uved me nyní několik důležitých pozorování o chování A*: Lemma 2.12 (O uzavírání stavů). Ve chvíli, kdy A* uzavírá stav v (vybere jej z open a zařadí do closed), je delka(v) = g(v). Důkaz. viz [9], str. 63, lemma 3-2. Pokud by byla heuristika nekonzistentní, lemma 2.12 neplatí! Důsledek Pokud se poprvé uzavírá cílový stav t T, neexistuje cesta menší délky do jiného z cílových stavů.

10 9 Věta 2.14 (Korektnost A*). Výsledek A* je vždy optimum délka minimální cesty z s do T. Důkaz. Vyplývá z důsledku Poznámka 2.15 (Dijkstrův algoritmus). Pokud v A* použijeme nulovou heuristiku ( v V : h 0 (v) = 0), chová se A* stejně jako Dijkstrův algoritmus. (Až na to, že nepočítá minimální cesty do všech stavů, ale pouze minimální cestu do množiny cílových stavů a do těch stavů, do nichž je cesta kratší než toto optimum.) Lemma 2.16 (O monotónnosti odhadů uzavíraných stavů). Hodnota min {odhad(w)}, během práce algoritmu A* neklesá a blíží se (zdola) k hodnotě w open optima. Důkaz. viz [9], str. 64, lemma 3-3 a pozorování, že díky konzistenci heuristiky nejsou odhady stavů zařazovaných do open menší, než byl odhad uzavíraného stavu. Lemma 2.17 (Síla heuristiky). Silnější heuristika umožňuje získat optimum prohledáním (vygenerováním) menší části grafu (za předpokladu, že stavy se stejným odhadem jsou uzavírány vždy ve stejném pořadí). Důkaz. viz [9], str. 64, theorem Aproximace Algoritmus A* při své práci probírá hodně stavů, které nemají šanci na úspěch (jejich ohodnocení je větší než optimum, tudíž nebudou součástí řešení). Pokud by se nám podařilo o nějakém stavu rozhodnout, že nemůže být součástí optimálního řešení, může algoritmus A* jeho expanzi přeskočit a tím svůj běh značně urychlit. V následující části definujeme aproximaci, což je vlastně horní odhad optima, a dokážeme, že přeskočení stavů, jejichž ohodnocení je větší než aproximace, neovlivní korektnost algoritmu A*. Tento postup v použité literatuře kupodivu není zmiňován. Definice 2.18 (Aproximace). Dílčí aproximace a : V R + 0 je duální funkce k heuristice. Pro daný stav v dá horní odhad délky nejkratší cesty do cílového stavu. Pro dílčí aproximaci a tedy platí v V : a(v) h (v). Hodnotu g(v) + a(v) budeme nazývat aproximací (minimální cesty z s do T přes stav v). Poznámka 2.19 (Heuristikou generovaná aproximace). Heuristikou generovanou dílčí aproximaci lze definovat na obecném grafu pro A* s danou heuristikou, a to hladovým procházením do hloubky podle minimálního odhadu následníků.

11 10 Poznamenejme, že tato aproximace nemusí být polynomiální, i když daná heuristika polynomiální je. Heuristika se při výpočtu této aproximace může totiž v nejhorším případě volat i E -krát. Následující dvě standartní definice umožnují ohodnotit kvalitu aproximací a navzájem je porovnávat: Definice 2.20 (Poměrová chyba). Řekneme, že algoritmus řeší problém s poměrovou chybou ρ(n), pokud pro každé zadání velikosti n platí: { opt max apr, apr } ρ(n) opt Definice 2.21 (Relativní chyba). Řekneme, že algoritmus řeší problém s relativní chybou ε(n), pokud pro každé zadání velikosti n platí: apr opt ε(n) opt Lemma 2.22 (Aproximace může být optimum). Pokud je v nějakém kroku algoritmu A* hodnota nejmenší známé aproximace stejná jako {odhad(w)}, pak je tato aproximace optimem. min w open Důkaz. Plyne z toho, že podle lemmatu 2.16 vždy platí min {odhad(w)} opt apr. w open Z důkazu lemmatu 2.22 též plyne, že v každém kroku algoritmu lze aktuální poměrovou chybu nejmenší známé aproximace shora omezit poměrem: apr opt apr min {odhad(w)}, w open a tak posoudit kvalitu dosaženého řešení například při přerušení výpočtu. Lemma 2.23 (Ořezávání stavů pomocí aproximace). Stavy, jejichž odhad je větší než (nejmenší známá) aproximace, nemusíme vůbec brát v úvahu (tj. A* je nemusí zařazovat do open ani closed). I pak zůstane A* korektní. Navíc, pokud si budeme pamatovat hodnotu (a příslušnou cestu) pro nejmenší známou aproximaci, nemusíme brát v úvahu ani stavy, které mají stejný odhad. Důkaz. Podle lemmatu 2.16 jsou uzavírány pouze ty stavy v V, jejichž odhad(v) opt apr. Tudíž by na stavy, jejichž odhad je větší než aproximace, stejně nedošla řada.

12 11 Pokud se odhad stavu rovná aproximaci, pak bud je to optimum, a tedy jedno z řešení my už ale jedno řešení známe (tím je ta aproximace), a to nám stačí 1. Pokud aproximace není optimum, znamená to, že odhad stavu je větší než optimum, a tudíž nás nemusí zajímat. Algoritmus 2.2 (A* s aproximací). I. Inicializace s := start() delka(s ) := 0 odhad(s ) := heuristika(s ) open := {s } closed := apr := aproximace(s ) II. Hlavní cyklus while open do II.a) Selekce v := x open takové, že odhad(x) = min w open {odhad(w)} open := open \ {v} closed := closed {v} II.b) Aproximace if delka(v) + aproximace(v) < apr then apr = delka(v) + aproximace(v) end if II.c) Terminalita if odhad(v) = apr then print Nalezeno optimum - aproximace (apr)! KONEC end if if cil(v) then print Nalezeno optimum (delka(v))! KONEC end if II.d) Expanze for all w naslednici(v) do if w / closed & w / open then delka(w) := delka(v) + ohodnoceni(v, w) odhad(w) := delka(w) + heuristika(w) if odhad(w) < apr then open := open {w} end if end if if w / closed & w open then if delka(w) > delka(v) + ohodnoceni(v, w) then 1 Kdybychom ovšem chtěli vypočítat všechna optimální řešení, tak tento přístup použít nemůžeme

13 12 odhad(w) := odhad(w) delka(w) + delka(v) + ohodnoceni(v, w) delka(w) := delka(v) + ohodnoceni(v, w) end if end if end for II.e) Terminalita if open = then print Nalezeno optimum - aproximace (apr)! KONEC end if end while V algoritmu 2.2 jsou oproti algoritmu 2.1 navíc části II.b) a II.e); část II.c) je rozšířena o kontrolu, zda aproximace není optimum, a část II.d) je rozšířena o kontrolu, zda odhad prvku není větší nebo roven aproximaci. Aproximaci není nutno volat v každé iteraci algoritmu, ale například jen za určitých podmínek (důsledek lemmatu 2.23). Poznámka 2.24 (Složitost algoritmu 2.2). Složitost A* se změní pouze tak, že pro každý stav spočítáme aproximaci. Složitost A* s aproximací je tedy O( V (selekce + heuristika + aproximace) + E vyhledani). Podobně jako pro algoritmus 2.1, pokud by A*-graf splňoval vlastnost (2.2), byla by složitost algoritmu A* s aproximací O( V (selekce + heuristika + aproximace + log( V ) vyhledani)).

14 Kapitola 3 Vybrané optimalizační NP-úplné problémy a jejich řešení pomocí A* Přehled NP-úplných problémů a algoritmů pro jejich řešení lze nalézt v řadě monografií, například [2, 3, 4, 5, 7]; kde jsou též podrobně definovány a studovány jejich vlastnosti. Výběr čtyř optimalizačních NP-těžkých problémů pro demonstraci řešení pomocí A* byl veden snahou zahrnout různorodé problémy, které by alespoň zčásti reprezentovaly spektrum lišících se typů. Vybrány byly: problém obchodního cestujícího, problém vrcholového pokrytí, problém batohu a problém rozvržení úloh. Pro každý zvolený problém je definováno jeho převedení na A*-graf a úlohu minimální cesty, jsou navrženy heuristiky s důkazy jejich konzistence a možné aproximace. Shrnutí pak obsahuje funkce pro zadání aplikace A* ve vyvinutém programovém prostředí. Je nutno podotknout, že heuristiky a aproximace mají pro využití v algoritmu A* smysl pouze tehdy, pokud mají polynomiální složitost. 13

15 Problém obchodního cestujícího (TSP) Zadání Graf s nezáporným ohodnocením hran G = V, E, c, hledáme nejkratší hamiltonovskou kružnici. Důkaz NP-úplnosti problému viz [5] str , (Theorem 3.4). Problém obchodního cestujícího (TSP) je standardním příkladem NP-úplného problému, který zůstává NP-úplný i při omezení na ohodnocení splňující trojúhelníkovou nerovnost nebo na ohodnocení hran pouze hodnotami 1 a 2, viz např [5]. To je důsledek toho, že TSP je silně NP-úplný. Pro jeho řešení byla zkonstruována nepřeberná řada algoritmů viz například [7], kap. 21. Převod na A*-graf vychází z principů dynamického programování [3], [6]. Definice 3.1 (A*-graf pro problém TSP). Zvolme libovolně startovní vrchol s V a definujme: V = { M, v M V, s M, v V \ M} {, s, V, s }, E = { M, v, M {v}, w v, w E, M, v, M {v}, w V }, c ( M, v, M {v}, w ) = c( v, w ), s =, s, T = { V, s }. Každá dvojice M, v ; M V, s M, v (V \ M) představuje podúlohu nalezení nejkratší cesty, která začíná ve startovním vrcholu s, projde všechny ostatní vrcholy z M právě jednou a končí ve vrcholu v. Mimoto dvojice, s představuje startovní stav a dvojice V, s představuje celkovou úlohu nalezení nejkratší hamiltonovské kružnice. Lemma 3.2 (Převod TSP na A*-graf). Nalezení minimální cesty v A*-grafu V, E, c, s, T je ekvivalentní s nalezením nejkratší hamiltonovské kružnice v grafu G s ohodnocením c. Důkaz. Každá cesta v A*-grafu z s do T, s, {s}, v 1, {s, v 1 }, v 2,..., M k, v k,..., V \ {v n 1 }, v n 1, V, s odpovídá hamiltonovské kružnici s, v 1,..., v n 1 v grafu G, přičemž délka této cesty je délkou kružnice n 2 c( s, v 1 ) + c( v i, v i+1 ) + c( v n 1, s ). i=1 Naopak každé hamiltonovské kružnici v G odpovídá taková cesta v A*-grafu. Poznámka 3.3 (Velikost A*-grafu pro TSP). Pro graf G s n vrcholy má příslušný A*-graf problému obchodního cestujícího 2 + (n 1) 2 n 2 stavů (viz [6]).

16 Heuristiky Definice 3.4 (1. heuristika pro TSP). U každého vrcholu, ze kterého obchodní cestující ještě nevyšel, vybereme hranu s minimálním ohodnocením. Součet těchto ohodnocení je heuristika. Formálně h ( V, s ) = 0 a pro M V h ( M, x ) = v V \M Tvrzení 3.5. Funkce h je konzistentní heuristika. min{c( v, w ) w (V \ (M {x})) {s}}. Důkaz. Stačí pro všechny stavy M, v V dokázat h ( M, x ) h ( M {x}, y ) + c( x, y ) Z definice heuristiky h plyne: h ( M, x ) h ( M {x}, y ) = = min{c( v, w ) w (V \ (M {x})) {s}} protože v V \M v V \(M {x}) min{c( v, w ) w (V \ (M {x, y})) {s}} min{c( x, w ) w (V \ (M {x})) {s}} c( x, y ) (V \ M) \ (V \ (M {x})) = {x}. Společně s tím, že h ( V, s ) = 0, je podle lemmatu 2.5 funkce h konzistentní heuristika. Definice 3.6 (2. heuristika pro TSP). U každého vrcholu, kam obchodní cestující ještě nevstoupil, vybereme hranu s minimálním ohodnocením. Součet těchto ohodnocení je heuristika. Formálně h ( V, s ) = 0 a pro M V h ( M, x ) = min{c( v, w ) v V \ M}. w (V \(M {x})) {s} Tvrzení 3.7. Funkce h je konzistentní heuristika.

17 16 Důkaz. Důkaz konzistence je analogický předchozímu. Pozorování 3.8. Heuristika h není silnější než heuristika h a heuristika h není silnější než heuristika h. Důkaz. Jako protipříklad uvažujme toto zadání problému obchodního cestujícího: úplný graf V, E, c s ohodnocením s, v E : c( s, v ) = 1, kde s V je startovní vrchol, c( v, w ) = 2 jinde. Pak pro startovní stav, s je h (, s ) = 2 ( V 1) + 1, h (, s ) = V, takže h není silnější než h. Analogický protipříklad ukáže, že také h není silnější než h. Definice 3.9 (3. heuristika pro TSP). Kombinací obou heuristik získáme silnější heuristiku, která vede k větší redukci prohledané části A*-grafu (viz lemma 2.17): h(x) = max{ h (x), h (x)} Aproximace Hladově po minimálních hranách (horší aproximace než heuristikou generovaná): Doplňujeme cestu na hamiltonovskou kružnici tak, že u každého vrcholu vybereme hranu, která má nejmenší ohodnocení z hran, které vedou do vrcholů, kde obchodní cestující ještě nebyl Funkce pro A* start() = (, s). cil(x) uspěje pokud x = V, s. naslednici( M, v ) = { M {v}, w v, w E, w / M} pro M {v} V, = { V, s } jinak. oceneni( M, v, M {v}, w ) = c( v, w ). heuristika(x) viz aproximace(x) viz 3.1.3

18 Vrcholové pokrytí (VP) Zadání Pro neorientovaný graf G = V, E hledáme množinu vrcholů X V takovou, že každá hrana z E je pokrytá alespoň jedním vrcholem z X. Chceme, aby tato množina pokrývajících vrcholů byla co nejmenší. Důkaz NP-úplnosti problému viz [5] str (Theorem 3.3). Vrcholové pokrytí bylo vybráno jako klasická NP-úplná úloha z teorie grafů, která je minimalizační (je duální k úloze hledání maximální nezávislé množiny vrcholů). Na rozdíl od ostatních v této práci řešených problémů je u vrcholového pokrytí uniformní ohodnocení hran. V příslušném A*-grafu tak mají všechny cesty z počátečního do libovolného stavu stejnou délku. Třída cílových stavů (pokrývajících množin vrcholů) může být rozsáhlá je uzavřená na nadmnožiny, které ovšem nebudou algoritmem A* generovány. Pro VP existuje 2-aproximační algoritmus, tj. aproximace, která má poměrovou chybu ρ(n) = 2, viz aproximace ( ). Definice 3.10 (A*-graf pro problém VP). Pro každou množinu vrcholů X V označme množinu nepokrytých hran: Definujme: N(X) = {{v, w} E X {v, w} = } V = {X X V } = P(V ), E = { X, X {v} v V \ X}, c ( X, X {v} ) = 1, s =, T = {X N(X) = }. Lemma 3.11 (Převod VP na A*). Nalezení minimální cesty v A*-grafu V, E, c, s, T je ekvivalentní s nalezením minimálního vrcholového pokrytí v grafu G. Důkaz. Každému vrcholovému pokrytí X V grafu G odpovídá cílový stav X T v A*-grafu. Libovolná cesta z s do X má přitom délku X Heuristika Definice 3.12 (1. heuristika pro VP). Bud G N (X) podgraf G, který obsahuje pouze hrany v N(X). Heuristikou h(x) je nejmenší k N takové, že k (deg GN(X) (v i )) N(X), i=1

19 18 kde v 1,..., v k jsou vrcholy z G N (X), seřazené sestupně podle deg GN(X). Pro cílový stav X G, N(X) = definujeme h(x) = 0. To znamená: z vrcholů, které jsou v G N (X), vybíráme vrcholy, dokud součet jejich stupňů nedosáhne N(X). Minimální počet takových vrcholů je heuristika, nebot přinejmenším takový počet vrcholů bude nutno zařadit do libovolného pokrytí zbývajících hran. Tvrzení Funkce h je konzistentní heuristika. Důkaz. Je třeba ukázat, že X V, v V \ X platí h(x) 1 + h(x {v}). Necht X V, v V \ X. Označme N(X) = n 1, N(X {v}) = n 2, w X : d(w) = deg GN(X) (w), d (w) = deg GN(X {v}) (w). Zřejmě platí n 2 = n 1 d(v). Necht h(x {v}) = k a b 1,..., b k jsou vrcholy v G N(X {v}) takové, že platí d (b 1 ) d (b k ) N(X {v}) = n 2. Uvažujme vrcholy b 1,..., b k v grafu G N(X). Definujme d + (b i ) = d (b i )+1, pokud {b i, v} E a d + (b i ) = d (b i ) jinak. Pak d + (b 1 ),..., d + (b k ) jsou stupně vrcholů b 1,..., b k v grafu G N(X). Platí d + (b 1 ) d + (b k ) + d(v) d (b 1 ) d (b k ) + d(v) n 2 + d(v) = n 1, tedy h(x) nemůže být větší než k + 1, takže h(x) 1 + h(x {v}). Společně s tím, že h(x) = 0 pro X T, je podle lemmatu 2.5 funkce h konzistentní heuristika Aproximace 1. Hladová: Ze zbylých vrcholů z G N(X) vybereme do pokrytí vrchol s největším stupněm a iterujeme, dokud zbývá nějaká nepokrytá hrana. 2. Hranová (2-aproximace): Z N(X) vybereme libovolnou hranu. Do pokrytí přidáme oba její vrcholy a iterujeme Funkce pro A* start() =. cil(x) uspěje, pokud N(X) =. naslednici(x) = {X {v} v (V \ X)}. oceneni(x, X {v}) = 1. heuristika(x) viz aproximace(x) viz 3.3.3

20 Problém batohu (PB) Zadání Máme n předmětů o objemu o i > 0 a ceně c i > 0 a batoh o objemu K > 0. Chceme vybrat takové předměty, které se do batohu vejdou ( o i K) a jejichž součet cen je co největší. Důkaz NP-úplnosti problému viz [5] str. 247 MP9. Pro problém batohu existuje úplně polynomiální aproximační schéma. Protože maximalizační problém nevyhovuje pro aplikaci A*, budeme řešit opačný problém: hledáme ty předměty, které do batohu nedáme, a chceme, aby jejich cena byla co nejmenší. Proto začneme s přeplněným batohem, kde budou všechny předměty, a budeme z něj předměty postupně odebírat, tak, aby se tam zbytek vešel. Stavem bude množina indexů předmětů v batohu. Startovní stav bude obsahovat všechny předměty, cílové stavy budou reprezentovat množiny předmětů, které se již vejdou do batohu. Třída cílových stavů je tak uzavřena na podmnožiny, které ovšem nebudou algoritmem A* dále generovány. Definice 3.14 (A*-graf pro problém PB). Označme I = {1,..., n} množinu indexů všech předmětů a definujme: V = {X X I} = P(I), E = { X, X \ {i} i X}, c ( X, X \ {i} ) = c i, s = I, T = {X V o i K}. i X Lemma 3.15 (Převod PB na A*). Nalezení minimální cesty v A*-grafu V, E, c, s, T je ekvivalentní s vyřešením problému batohu. Důkaz. Každý cílový stav X T představuje jedno přípustné řešení daného problému batohu. Délka každé cesty z s do X v A*-grafu je součtem cen předmětů, které do batohu nedáme (tj. předmětů s indexy I \ X). Minimální cesta v A*-grafu tak dává maximální cenu předmětů, které se do batohu vejdou Heuristika Definice 3.16 (1. heuristika pro PB). Počítáme, jako kdyby šlo předměty dělit. Bereme předměty z X sestupně podle o i c i a odebereme jich tolik (případně z posledního jen část), aby se objem zbylých předmětů rovnal objemu batohu. Cena takto vyhozených předmětů (z posledního jen patřičná část) je heuristika h(x). Formálně: Přečíslujme předměty z X tak, aby byly seřazeny sestupně podle o i c i, tedy o 1 c 1 o 2 c 2... on c n. Definujme přebytečný objem v batohu K (X) = i X o i K. Pak objem

21 20 odebíraných předmětů je o o k 1 +p o k = K (X) a jejich cena c c k 1 +p c k = h(x), kde p je poměr rozdělení posledního předmětu: 0 p = K (X) (o o k 1 ) o k 1. Pokud je K (X) 0, jde o cílový stav a h(x) = 0. Tvrzení Funkce h je konzistentní heuristika. Důkaz. Je třeba ukázat, že X I, y X platí h(x) c y + h(x \ {y}). Necht X I, y X; x 1,..., x n jsou patřičně seřazené předměty. Platí: K (X \ {y}) = i X o i o y K = K (X) o y. 1. Pokud y {x 1,..., x k 1 }, pak h(x \ {y}) = c c k 1 + p c k c y = h(x) c y. 2. Jinak y = x k nebo y / {x 1,..., x k }. Pro oba případy označme l počet předmětů odebraných heuristikou h(x \ {y}) a p poměr pro rozdělení posledního odebíraného předmětu v téže heuristice. Tedy h(x \ {y}) = c c l 1 + p c l, K (X \ {y}) = o o l 1 + p o l. Víme, že rozdíl přebytečného objemu je Ale také K (X) K (X \ {y}) = o y. K (X) K (X \ {y}) = = (o o k 1 + p o k ) (o o l 1 + p o l ) = = (1 p ) o l + o l o k 1 + p o k. Označme c h rozdíl obou heuristik: c h = h(x) h(x \ {y}) = = (c c k 1 + p c k ) (c c l 1 + p c l ) = = (1 p ) c l + c l c k 1 + p c k. Díky seřazení předmětů platí: o y c y o k c k o k 1 c k 1... o l+1 c l+1 o l c l.

22 21 Protože pro kladná čísla platí x a b c d x a+c b+d, dostáváme: Tedy o y c y p o k + o k o l+1 + (1 p ) o l p c k + c k c l+1 + (1 p ) c l c y c h = h(x) h(x \ {y}). = o y c h. Společně s tím, že h(x) = 0 pro X T, je podle lemmatu 2.5 funkce h konzistentní heuristika Aproximace Stejně jako heuristika, ale poslední předmět nedělíme, odstraníme ho celý Funkce pro A* start() = I. cil(x) uspěje, pokud i X o i K. naslednici(x) = {X \ {i} i X}. oceneni(x, X \ {i}) = c i. heuristika(x) viz aproximace(x) viz Rozvrhování úloh (RU) Zadání Máme n úloh daných hodnotami c i, t i, p i, r i R + 0, kde c i určuje čas potřebný na provedení úlohy, t i určuje čas požadovaného ukončení úlohy, penále p i určuje postih za nestihnutí úlohy v požadovaném čase a konečně r i je koeficient růstu penalizace. Definujme nákladovou funkci: f i : R + 0 R + 0, f i (t) = p i + r i (t t i ) pro t > t i, f i (t) = 0 jinak. Chceme seřadit úlohy tak, aby součet jejich nákladových funkcí v čase ukončení úlohy byl co nejmenší. Jinými slovy hledáme permutaci q(i) takovou, aby minimalizovala celkové náklady f i (s i + c i ), kde s i = c j je začátek provádění úlohy i. q(j)<q(i) Důkaz NP-úplnosti problému viz [5] str , SS3.

23 22 Zvolená varianta problému rozvrhování úloh je jedna z jednodušších, avšak vystihuje kombinatorickou podstatu problémů rozvrhování [14] a je NP-úplná. Heuristické odhady jsou zde obtížné vzhledem k tomu, že nákladové funkce závisí na čase. Pro důkazy konzistence námi navržených odhadů stačí, že nákladové funkce jsou neklesající. Definice 3.18 (A*-graf pro problém RU). Označme I = {1,..., n} množinu všech indexů úloh, stav bude podmnožina X I, která představuje podproblém rozvržení úloh z X. Pro X I označme součet časů úloh z této podmnožiny c X = c i. Definujme: i X V = {X X I} = P(I), E = { X, X {i} i I \ X}, c ( X, X {i} ) = f i (c X + c i ), s =, T = {I}. Lemma 3.19 (Převod RU na A*). Nalezení minimální cesty v A*-grafu (V, E, c, s, T ) je ekvivalentní s vyřešením problému rozvrhování úloh. Důkaz. Každá cesta z s do T v A*-grafu představuje jednu permutaci (rozvržení úloh). Délka této cesty je součet nákladových funkcí pro toto rozvržení Heuristika Definice 3.20 (1. heuristika pro RU). Sečteme nákladové funkce zbývajících úloh, kdyby byly rozvrženy jako první: h 1 (X) = h 1 (I) = 0. i (I\X) f i (c X + c i ) pro X I, Tvrzení Funkce h 1 je konzistentní heuristika. Důkaz. Je třeba ukázat že pro každé X I, y I \ X platí h 1 (X) f y (c X + c y ) + h 1 (X {y}). Díky tomu, že nákladové funkce jsou neklesající, pro i I \ (X {y}) platí: f i (c X + c i ) f i (c (X {y}) + c i ) = f i (c X + c y + c i ).

24 23 Odtud získáme i (I\X) f i (c X + c i ) f y (c X + c y ) + i (I\(X {y})) f i (c (X {y}) + c i ). Společně s tím, že h 1 (I) = 0, je h 1 podle lemmatu 2.5 konzistentní heuristika. Definice 3.22 (2. heuristika pro RU). Bud c seznam časů zbývajících úloh seřazených do neklesající posloupnosti podle jejich času. V každém bodě, kde by končila nějaká úloha podle tohoto rozvržení, určíme minimální nákladovou funkci přes všechny zbývající úlohy. Heuristika bude součet těchto minim. h 2 (X) = h 2 (I) = 0. I\X i=1 min f j(c X + j (I\X) i c k) pro X I, k=1 Tvrzení Funkce h 2 je konzistentní heuristika. Důkaz. Je třeba ukázat, že pro každé X I, y I \ X platí h 2 (X) f y (c X + c y ) + h 2 (X {y}). Necht X I, y I \ X. Pro libovolné časy t 1, t 2 platí: t 1 t 2 min f j (t 1 ) min f j (t 2 ), j I\X j I\(X {y}) protože nákladové funkce f j jsou neklesající. Označme n = I \ X, dále m takový index, že c m = c y, a pro všechna i {1,..., n} : c i = i k=1 c k,. Označme T rozvržení časů podle heuristiky h 2(X) a T rozvržení, které začíná časem úlohy y a pak následuje rozvržení podle heuristiky h 2 (X {y}): T = c X + c 1, c X + c 2,..., c X + c m, c X + c m+1,..., c X + c n, T = c X + c m, c X + c m + c 1,..., c X + c m + c m 1, c X + c m+1,..., c X + c n. Pak stačí ukázat, že i {1,..., n} : T i T i. To je ale pravda, protože platí i {1,..., m} : c i c m + c i 1 a pro i > m : T i = T i. Odtud plyne n min f j(t i ) f y (T 1) + j (I\X) i=1 n min f j(t i ), j (I\(X {y})) i=2

25 24 tedy I\X i=1 min j (I\X) f j (c X + i c k ) f y (c X + c y ) + k=1 I\X {y} i=1 min j (I\(X {y})) f j (c (X {y}) + i c k ). Společně s tím, že h 2 (I) = 0, je h 2 podle lemmatu 2.5 konzistentní heuristika. Pozorování Heuristika h 1 není silnější než heuristika h 2 a heuristika h 2 není silnější než heuristika h 1. Důkaz. Jako první protipříklad uvažujme zadání RU se dvěma úlohami s hodnotami c 1 = c 2 > 0, t 1 = t 2 = 0, p 1 > p 2 > 0, r 1 = r 2 = 0. Pak h 1 ( ) = p 1 + p 2, h 2 ( ) = 2 p 2, tedy h 2 není silnější než h 1. Druhý protipříklad bude mít stejné zadání až na to, že stanovíme t 1 = t 2 = c 1 = c 2 > 0. Pak h 1 ( ) = 0, h 2 ( ) = p 2, tedy h 1 není silnější než h 2. Definice 3.25 (3. heuristika pro RU). Kombinací obou heuristik získáme silnější heuristiku, která vede k větší redukci prohledané části A*-grafu (viz lemma 2.17): h 3 (X) = max{h 1 (X), h 2 (X)} pro X I Aproximace 1. Zbylé úlohy seřadíme sestupně podle nákladové funkce v čase, když by byla tato úloha rozvržena jako hned následující. Vybereme úlohu s nejdražším penále a iterujeme. Pro stav X tedy vybereme úlohu s max f i(c X + c i ). i I\X 2. Podobně jako předchozí, akorát vybíráme podle průměru nákladových funkcí při rozvržení na začátku a na konci. Pro stav X tedy vybereme úlohu s max i I\X f i (c X + c i ) + f i (c I ) Funkce pro A* start() =. cil(x) uspěje, pokud X = I. naslednici(x) = {X {i} i I \ X}. oceneni(x, X {i}) = f i (c X + c i ). heuristika(x) viz aproximace(x) viz k=1

26 Kapitola 4 Implementace - uživatelská dokumentace Jako uživatelské rozhraní pro vytvořený programový systém bylo vyvinuto jednoduché grafické prostředí. Po výběru řešeného optimalizačního problému následuje jeho zadání, kde může uživatel zvolit načtení dat ze souboru, nebo náhodné generování dat. Možná je též úprava aktuálního zadání a jeho uložení do souboru pro opakované spuštění (například s jinými parametry). Balík s programovým prostředím je ke stažení na adrese Obrázek 4.1: Výběr řešeného optimalizačního problému 4.1 Instalace a spuštění grafického rozhraní Grafické rozhraní bylo napsáno v programovacím jazyce Python s využitím grafické knihovny Tkinter. Protože programový systém požaduje platformu Linux, není zatím použití jiné platformy možné (viz sekce 5.1). Spuštění grafického rozhraní tak vyžaduje programovací jazyk Python, grafickou knihovnu Tk, a její podporu pro Python: python-tk (v distribuci Debian splní všechny tyto požadavky instalace balíku python-tk). 25

27 26 K instalaci stačí překopírovat obsah balíku do libovolného adresáře na pevném disku. Při výpočtu větších zadání může program vyžadovat poměrně velké místo na pevném disku, je proto vhodné na něm mít dost volného místa. Spuštění grafického rozhraní se provede spuštěním skriptu onp-star-gui. Adresářová struktura: bin spustitelné soubory programového systému (pro každý řešený optimalizační problém jeden, jsou to tsp, vp, pb, ru), gui grafické rozhraní, src zdrojové kódy, examples ukázková zadání, tyto lze pomocí uživatelského prostředí načíst. 4.2 Výběr optimalizačního problému a zadání vstupních dat Je možno zvolit jeden ze čtyř implementovaných optimalizačních NP-úplných problémů popsaných v kapitole 3 - viz obrázek 4.1. Pro jednotlivé optimalizační problémy se zadávají vstupní data v různé struktuře. Vždy lze zadání načíst z připraveného souboru, nebo je náhodně generovat. Takto připravená data lze libovolně upravovat a případně uložit. Při generování dat se použije zadaná velikost úlohy, a objeví se dialog, ve kterém je možné nastavit rozmezí generovaných čísel. Velikost úlohy lze kdykoliv změnit, přičemž tato změna není destruktivní, tedy při zmenšení velikosti zůstane zachována patřičná počáteční část dat. Některá předpřipravená zadání lze nalézt v adresáři examples. Pokud si zadání zapomenete uložit, nic se neděje, program automaticky ukládá poslední zadání do souboru examples/last Problém obchodního cestujícího Zadání ohodnoceného grafu pro problém obchodního cestujícího probíhá pomocí matice, viz obrázek 4.2. Políčko v řádku i a sloupci j určuje ohodnocení hrany z vrcholu i do vrcholu j. Zadáním jakékoli záporné hodnoty se příslušná hrana odstraní z grafu. Je ovšem třeba upozornit, že program nijak nekontroluje, zda v zadaném grafu existuje hamiltonovská kružnice. V případě, že neexistuje, chování programu není definované Vrcholové pokrytí Neorientovaný graf pro vrcholové pokrytí se zadává pomocí trojúhelníkové matice sousednosti, reprezentované zaškrtávacími políčky, viz obrázek 4.3. Zaškrtnutím políčka na i-tém řádku a j-tém sloupci označíme přítomnost hrany mezi vrcholy i a j v grafu.

28 27 Obrázek 4.2: Zadání TSP maticí ohodnocených hran Obrázek 4.3: Zadání grafu pro VP trojúhelníkovou maticí sousednosti Problém batohu Předměty pro zadání problému batohu se zadávají do tabulky, kde každý řádek představuje jeden předmět, viz obrázek 4.4. Navíc se určuje objem batohu. Všechny tyto hodnoty musí být nezáporné.

29 Rozvrhování úloh Obrázek 4.4: Zadání objemů a cen předmětů pro PB Úlohy pro zadání rozvrhování úloh se zadávají do tabulky, kde každý řádek představuje jednu úlohu, viz obrázek 4.5. Všechny tyto hodnoty musí být nezáporné. 4.3 Parametry Parametry běhu A* jsou dvojího druhu (viz obrázek 4.6. Nejprve může uživatel volit heuristiku a aproximaci z nabídky uvedené v textu k vybranému optimalizačnímu problému (viz kapitola 3). Heuristika 0 znamená použití nulové heuristiky (viz poznámka 2.15). Aproximace 0 znamená použití heuristikou generované aproximace (viz poznámka 2.19). Dále jsou zadávány technické parametry týkající se rozsahu haldy a B-stromu (tyto parametry mimo jiné ovlivňují množství použité paměti při výpočtu). V zadání parametrů jsou nabízeny vhodné předdefinované hodnoty.

30 29 Obrázek 4.5: Zadání úloh pro RU 4.4 Průběžné informace o výpočtu a výsledné řešení Po spuštění probíhá vlastní výpočet (viz obrázek 4.7), jehož průběh je zobrazován ve formě údajů o dosaženém dolním odhadu optima (vycházející z použité heuristiky postupně roste), horním odhadu optima (vycházející z použité aproximace při nalezení lepší aproximace klesne) a jemu odpovídajícímu nejlepšímu známému řešení. Poměr mezi oběma odhady ukazuje, jak se běh algoritmu přibližuje k cíli. Další informace se týkají rozsahu provedeného prohledávání (počet expanzí) a aktuální velikosti haldy. U rozsáhlejších zadání dochází k překročení maximálního zadaného rozměru haldy, což vede k odkládání části položek do vnější paměti (viz údaje o odkládací mezi počtu odložených položek a obsazené paměti). Tyto údaje během výpočtu kolísají. Po úspěšném zakončení běhu se objeví výsledné optimum, nalezené optimální řešení a celkový počet expanzí (viz obrázek 4.8), který dokumentuje složitost provedeného výpočtu. Poznamenejme, že při řešení jednoho příkladu lze použít různé heuristiky a aproximace. Výsledkem však musí být stejné optimum. Lišit se může nalezené optimální řešení (může se to to stát v případě že existuje více optimálních řešení běžné třeba u VP). Výrazně se může lišit počet expanzí v závislosti na síle použité heuristiky ve vztahu k danému zadání úlohy.

31 30 Obrázek 4.6: Zadání parametrů běhu algoritmu A* Obrázek 4.7: Průběžné výsledky Obrázek 4.8: Výsledné řešení

32 Kapitola 5 Implementace - programátorská dokumentace Implementován je algoritmus A* s aproximací (algoritmus 2.2). Program je napsán obecně a využívá funkcí z definice 2.9, které reprezentují A*-graf pro optimalizační problém (ne nutně NP-úplný). Implementace je provedena v jazyce C, který byl vybrán pro svoji rychlost. Při psaní programu byl brán zřetel na šetření pamětí a rychlost. Také z tohoto důvodu nejsou použity žádné externí knihovny a všechny datové struktury jsou napsány s přihlédnutím ke specifickým požadavkům algoritmu A*. Algoritmus A* při své práci volá funkce, které definují jednotlivé optimalizační problémy. Přiřazením zdrojového kódu pro daný problém ke kódu pro A* vznikne samostatný spustitelný program. 5.1 Instalace a spuštění K instalaci stačí překopírovat obsah instalačního balíku do libovolného adresáře na pevném disku. Spustitelné soubory pro platformu Linux jsou v adresáři bin Ovládání programu z příkazové řádky Základní program nepoužívá žádné grafické prostředí, volby pro běh programu lze zadat použitím voleb na příkazové řádce. Grafický program popsaný v kapitole 4 je pouze jeho grafickou nadstavbou, která spustí program pro daný problém s příslušnými volbami a interpretuje jeho výstup. Na příkazové řádce lze využít následující volby: -v ovládá upovídanost programu. Očekává nezáporné celé číslo. Základní hodnota je 1, možnosti jsou f specifikuje soubor, který obsahuje zadání. 31

33 32 -s pokud není určen soubor se zadáním, specifikuje velikost náhodně vygenerovaného problému, který se použije. Pokud je určen soubor se zadáním pomocí parametru -f, hodnota -s se ignoruje. Musí být kladné celé číslo. Základní hodnota: 20. -h specifikuje číslo použité heuristiky. 0 označuje nulovou heuristiku. Základní hodnota je vždy nejvyšší přípustné číslo (podle počtu heuristik pro daný problém). -a stejné jako -h, ale pro aproximace. 0 označuje použití heuristikou generované aproximace. -u specifikuje hodnotu heapmax, tedy maximální velikost haldy. Podrobnosti v sekci 5.2. Základní hodnota: d specifikuje hodnotu heapmin, tedy velikost haldy, na kterou se zmenší, pokud dojde k překročení heapmax. Podrobnosti v sekci 5.2. Základní hodnota: m velikost paměti v MB pro cache B-stromu. Základní hodnota: 100. Přípustné volby jsou pro všechny čtyři spustitelné soubory stejné Formát vstupních souborů Formát zadání jednotlivých problémů (tedy souborů předaných parametrem -f) je následující. Pro zadání problému obchodního cestujícího a problému vrcholového pokrytí je formát jednotný: na prvním řádku je přirozené číslo označující počet vrcholů n = V grafu; na dalších řádcích je graf zadaný maticí ohodnocení hran. Matice musí být zadaná jako n n desetinných čísel oddělených mezerou nebo novým řádkem. Tyto hodnoty jsou použity pro vyplnění matice n n po řádcích. Každá hodnota může být celé nebo desetinné číslo. Jakákoliv záporná hodnota znamená, že se příslušná hrana nebude v grafu vyskytovat. Hodnoty na diagonále se ignorují, program se chová tak, jako kdyby tam byla záporná hodnota. U zadání problému batohu je na prvním řádku desetinné číslo určující objem batohu. Na druhém řádku je přirozené číslo n určující počet předmětů. Následuje n řádků se dvěma desetinnými čísly oddělenými mezerou, které určují objem a cenu předmětu. Všechna čísla v zadání musí být nezáporná. U zadání problému rozvrhování úloh je na prvním řádku přirozené číslo n určující počet úloh. Následuje n řádků se čtyřmi desetinnými čísly oddělenými mezerou, které určují postupně čas úlohy, čas požadovaného skončení úlohy, penále za nestihnutí a koeficient růstu penále. Všechna čísla v zadání musí být nezáporná. Místo jakéhokoliv desetinného čísla může být číslo celé (které bude programem převedeno na desetinné). Při nesplnění některého z požadavků program vypíše chybové hlášení a skončí.

34 Kompilace Program byl vyvíjen v operačním systému Linux s použitím kompilátoru gcc. Pro zkompilování programu stačí spustit příkaz make v adresáři src. Tím by se měly vytvořit spustitelné soubory tsp, vp, pb, ru v adresáři bin. 5.2 Datové struktury Algoritmus A* používá ke své práci dvě množiny prvků: open a closed. V každém kroku algoritmu se z open vybere minimální prvek a ten se z open odstraní (a přesune se do closed). Struktura starající se o open musí také umět zmenšit hodnotu nějakého prvku, aniž by se porušila jednoduchost výběru prvku minimálního. Dále je potřeba v open i closed rychle vyhledat přítomnost nějakého prvku. Pokud je nalezen, tak zjistit, jestli se nachází v open nebo closed. S vědomím těchto předpokladů byly zvoleny následující datové struktury: K implementaci open je použita minimální halda (tedy halda s minimem v kořeni, viz [10], str. 35). Tato halda navíc implementuje funkci HeapDecreaseKey, která umožňuje po zmenšení hodnoty prvku jeho správné přeřazení uvnitř haldy. Dále halda podporuje volání zadané funkce vždy, když se změní pozice prvku v haldě (volání HeapDecreaseKey vyžaduje pozici prvku v haldě). K uložení všech prvků (tj. uzavřené prvky množina closed a prvky v haldě množina open) a jejich vyhledávání jsou použity tzv. hrábě, tedy hashovací tabulka, kde každý záznam v tabulce představuje seznam prvků. Protože při řešení větších zadání velikost haldy neúměrně roste a s ní i pamět ové nároky, odkládá se část dat do souboru. Toto odkládání je řízeno dvěma parametry: heapmax (maximální velikost haldy, která se nemůže překročit) a heapmin (velikost, na kterou se zmenší velikost haldy při překročení heapmax). Pokud velikost haldy překročí heapmax, zmenší se velikost haldy na heapmin odložením prvků z haldy do souboru. Zároveň se nastaví parametr odkladlimit na hodnotu posledního prvku haldy. Při vkládání nového prvku do haldy se nejprve porovná s parametrem odkladlimit; pokud je hodnota prvku větší, prvek se do haldy nevloží, ale odloží se do souboru. Tím pádem dříve nebo později dojde k vyprázdnění haldy. Ve chvíli, kdy se to stane, naplníme haldu prvky ze souboru na velikost heapmin. Může se stát, že v odkládacím souboru bude nějaký prvek vícekrát (vygeneruje se stejný stav). Toto se řeší při načítání prvků ze souboru, kdy se kontrolují duplicity a do haldy se dá prvek s nejmenším odhadem. Také je možné, že se v odkládacím souboru vyskytují prvky s odhadem větším nebo rovným aproximaci. Tyto prvky prostě při načítání nezařadíme do haldy. K odkládání do souboru se používá B-strom (viz [10], sekce 5.1). Díky tomu můžeme odložené prvky řadit za běhu a není třeba při načítání prvků z odkládacího souboru všechny projít (což by bylo značně neefektivní).

35 Halda a hrábě Je použita binární halda. Halda zaručuje operace vložení prvku, vyjmutí minimálního prvku a zmenšení hodnoty nějakého prvku v čase O(log n). Implementace haldy je napsána obecně, umožňuje pracovat s jakoukoliv strukturou, k porovnávání jednotlivých prvků používá dodanou porovnávací funkci. Hrábě se skládají z hashovací tabulky, jejíž každý řádek obsahuje seznam prvků, které mají stejný hash. Podrobnější popis takových struktur lze nalézt například v [13], sekce 6.8. Hashovací funkce musí být definována v závislosti na řešeném problému, protože A* nic neví o datech, která jsou pro optimalizační problém používána k reprezentaci stavů. Čas potřebný k vyhledání daného prvku záleží na kvalitě hashovací funkce: pokud by hashovací funkce zaručovala rovnoměrné rozdělení, byl by to O(n/hashMax), kde hashmax je velikost hashovací tabulky B-strom Jako sekundární pamět algoritmu A* byla použita lehce modifikovaná varianta tzv. redundantního B + -stromu, kdy nelistové uzly mohou obsahovat více položek než listové uzly: Definice 5.1 (B-strom pro A*). Redundantní B + -strom řádu (n, m) je orientovaný strom, který splňuje následující požadavky: 1. Kořen má nejméně 2 potomky, pokud není listem. 2. Každý nekořenový nelistový uzel má nejméně n a nejvýše n potomků Každý list má nejméně m a nejvýše m datových záznamů Všechny cesty z kořene do listu jsou stejně dlouhé. 5. Data v nelistovém uzlu jsou organizována následovně: p 0, (k 1, p 1 ), (k 2, p 2 ),..., (k l, p l ) kde p i jsou ukazatele na potomky, k i jsou klíče, které jsou uspořádány vzestupně. 6. Data v listovém uzlu jsou organizována následovně: p r, (k 1, d 1 ), (k 2, d 2 ),..., (k l, d l ) kde p r je ukazatel na pravého souseda (listový uzel nejblíže vpravo), k i jsou klíče, které jsou uspořádány vzestupně, d i jsou ke klíči asociovaná data, (k i, d i ) představuje jeden datový záznam. 7. Odpovídá-li ukazateli p i podstrom U(p i ), potom pro všechny nelistové uzly a všechny i {1,... n} platí:

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

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry. Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít

Více

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

Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů Kapitola 11 Vzdálenost v grafech V každém grafu lze přirozeným způsobem definovat vzdálenost libovolné dvojice vrcholů. Hlavním výsledkem této kapitoly je překvapivé tvrzení, podle kterého lze vzdálenosti

Více

GRAFY A GRAFOVÉ ALGORITMY

GRAFY A GRAFOVÉ ALGORITMY KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ

Více

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.

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. Intervalové stromy Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme průběžně provádět tyto dvě operace: 1. Změna jednoho čísla v posloupnosti. 2. Zjištění součtu čísel

Více

12. Aproximační algoritmy

12. Aproximační algoritmy 12. Aproximační algoritmy (F.Haško,J.enda,.areš, ichal Kozák, Vojta Tůma) Na minulých přednáškách jsme se zabývali různými těžkými rozhodovacími problémy. Tato se zabývá postupy, jak se v praxi vypořádat

Více

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

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

Často potřebujeme hledat mezi dvěma vrcholy grafu cestu, která je v nějakém 1. Nejkrat¹í cesty Často potřebujeme hledat mezi dvěma vrcholy grafu cestu, která je v nějakém smyslu optimální typicky nejkratší možná. Už víme, že prohledávání do šířky najde cestu s nejmenším počtem

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

1. Minimální kostry. 1.1. Od mìsteèka ke kostøe

1. Minimální kostry. 1.1. Od mìsteèka ke kostøe . Minimální kostry Napadl sníh a přikryl peřinou celé městečko. Po ulicích lze sotva projít pěšky, natož projet autem. Které ulice prohrneme, aby šlo dojet odkudkoliv kamkoliv, a přitom nám házení sněhu

Více

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA INFORMATIKY A STATISTIKY Hlavní specializace: Ekonometrie a operační výzkum Název diplomové práce Optimalizace trasy při revizích elektrospotřebičů Diplomant: Vedoucí

Více

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí: Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.

Více

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.

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. Kapitola 3 Počítání s maticemi Matice stejného typu můžeme sčítat a násobit reálným číslem podobně jako vektory téže dimenze. Definice 3.1 Jsou-li A (a ij ) a B (b ij ) dvě matice stejného typu m n, pak

Více

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize 2000 - Joseph Weizenbaum

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize 2000 - Joseph Weizenbaum Umělá inteligence UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI 1943-56 začátky (modelování neuronů a sítí na počítači) 1952-69 velká očekávání (GPS, Lisp, microworlds) 1966-74

Více

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

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

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

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka

Více

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla Ramseyovy věty Martin Mareš Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla na mé letošní přednášce z Kombinatoriky a grafů I Předpokládá, že čtenář se již seznámil se základní

Více

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615) IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná

Více

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

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY BAKALÁŘSKÁ PRÁCE Numerické metody jednorozměrné minimalizace Vedoucí bakalářské práce: RNDr. Horymír

Více

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

Vrcholová barevnost grafu

Vrcholová barevnost grafu Vrcholová barevnost grafu Definice: Necht G = (V, E) je obyčejný graf a k N. Zobrazení φ : V {1, 2,..., k} nazýváme k-vrcholovým obarvením grafu G. Pokud φ(u) φ(v) pro každou hranu {u, v} E, nazveme k-vrcholové

Více

Jarníkův algoritmus. Obsah. Popis

Jarníkův algoritmus. Obsah. Popis 1 z 6 28/05/2015 11:44 Jarníkův algoritmus Z Wikipedie, otevřené encyklopedie Jarníkův algoritmus (v zahraničí známý jako Primův algoritmus) je v teorii grafů algoritmus hledající minimální kostru ohodnoceného

Více

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.

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. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste

Více

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech. Kapitola 9 Skalární součin Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech. Definice 9.1 Je-li x = (x 1,..., x n ) T R n 1 reálný

Více

Jazyk matematiky. 2.1. Matematická logika. 2.2. Množinové operace. 2.3. Zobrazení. 2.4. Rozšířená číslená osa

Jazyk matematiky. 2.1. Matematická logika. 2.2. Množinové operace. 2.3. Zobrazení. 2.4. Rozšířená číslená osa 2. Jazyk matematiky 2.1. Matematická logika 2.2. Množinové operace 2.3. Zobrazení 2.4. Rozšířená číslená osa 1 2.1 Matematická logika 2.1.1 Výrokový počet logická operace zapisujeme čteme česky negace

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Grafové úlohy Daniela Szturcová Tento

Více

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

H {{u, v} : u,v U u v } Obyčejný graf Obyčejný graf je dvojice G= U, H, kde U je konečná množina uzlů (vrcholů) a H {{u, v} : u,v U u v } je (konečná) množina hran. O hraně h={u, v} říkáme, že je incidentní s uzly u a v nebo

Více

Implementace numerických metod v jazyce C a Python

Implementace numerických metod v jazyce C a Python Fakulta elektrotechnická Katedra matematiky Dokumentace k semestrální práci Implementace numerických metod v jazyce C a Python 2013/14 Michal Horáček a Petr Zemek Vyučující: Mgr. Zbyněk Vastl Předmět:

Více

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

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

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer

Více

Lineární programování

Lineární programování Lineární programování Úlohy LP patří mezi takové úlohy matematického programování, ve kterých jsou jak kriteriální funkce, tak i všechny rovnice a nerovnice podmínek výhradně tvořeny lineárními výrazy.

Více

3. Matice a determinanty

3. Matice a determinanty . Matice a determinanty Teorie matic a determinantů představuje úvod do lineární algebry. Nejrozsáhlejší aplikace mají matice a determinanty při řešení systémů lineárních rovnic. Pojem determinantu zavedl

Více

10 Přednáška ze

10 Přednáška ze 10 Přednáška ze 17. 12. 2003 Věta: G = (V, E) lze nakreslit jedním uzavřeným tahem G je souvislý a má všechny stupně sudé. Důkaz G je souvislý. Necht v je libovolný vrchol v G. A mějme uzavřený eurelovský

Více

13. Třídící algoritmy a násobení matic

13. Třídící algoritmy a násobení matic 13. Třídící algoritmy a násobení matic Minulou přednášku jsme probírali QuickSort, jeden z historicky prvních třídících algoritmů, které překonaly kvadratickou složitost aspoň v průměrném případě. Proč

Více

Dnešní program odvozování v Bayesovských sítích exaktní metody (enumerace, eliminace proměnných) aproximační metody y( (vzorkovací techniky)

Dnešní program odvozování v Bayesovských sítích exaktní metody (enumerace, eliminace proměnných) aproximační metody y( (vzorkovací techniky) Umělá inteligence II Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Bayesovská síť zachycuje závislosti mezi náhodnými proměnnými Pro zopakování orientovaný acyklický graf

Více

Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem 2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem 1 SPECIFIKACE ÚLOHY Cílem tohoto úkolu bylo naprogramovat řešení

Více

TGH06 - Hledání nejkratší cesty

TGH06 - Hledání nejkratší cesty TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 26. března 2013 Motivační problémy Silniční sít reprezentovaná grafem. Najdi nejkratší/nejrychlejší cestu z místa A do místa

Více

Jan Březina. 7. března 2017

Jan Březina. 7. března 2017 TGH03 - stromy, ukládání grafů Jan Březina Technical University of Liberec 7. března 2017 Kružnice - C n V = {1, 2,..., n} E = {{1, 2}, {2, 3},..., {i, i + 1},..., {n 1, n}, {n, 1}} Cesta - P n V = {1,

Více

8. Geometrie vrací úder (sepsal Pavel Klavík)

8. Geometrie vrací úder (sepsal Pavel Klavík) 8. Geometrie vrací úder (sepsal Pavel Klavík) Když s geometrickými problémy pořádně nezametete, ony vám to vrátí! Ale když užzametat,takurčitěnepodkoberecamístosmetákupoužijtepřímku.vtéto přednášce nás

Více

Výroková a predikátová logika - IV

Výroková a predikátová logika - IV Výroková a predikátová logika - IV Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IV ZS 2018/2019 1 / 17 Tablo metoda Tablo Tablo - příklady F (((p q)

Více

Rámcový manuál pro práci s programem TopoL pro Windows

Rámcový manuál pro práci s programem TopoL pro Windows Rámcový manuál pro práci s programem TopoL pro Windows Příkazy v nabídce Předmět Volba rastru rychlá klávesa F4 Příkaz otevře vybraný rastr; tj. zobrazí ho v předmětu zájmu. Po vyvolání příkazu se objeví

Více

Plánování úloh na jednom stroji

Plánování úloh na jednom stroji Plánování úloh na jednom stroji 15. dubna 2015 1 Úvod 2 Řídící pravidla 3 Metoda větví a mezí 4 Paprskové prohledávání Jeden stroj a paralelní stroj Dekompoziční problémy pro složité (flexible) job shop

Více

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d KMA/PDB Prostorové spojení Karel Janečka Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d Obsah Prostorové spojení pomocí hnízděných cyklů. Prostorové spojení pomocí R-stromů.

Více

2 Spojité modely rozhodování

2 Spojité modely rozhodování 2 Spojité modely rozhodování Jak již víme z přednášky, diskrétní model rozhodování lze zapsat ve tvaru úlohy hodnocení variant: f(a i ) max, a i A = {a 1, a 2,... a p }, kde f je kriteriální funkce a A

Více

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace 1) Charakterizujte křížový překladač Překlad programu probíhá na jiném procesoru, než exekuce. Hlavním důvodem je náročnost překladače na cílovém stroji by ho nemuselo být možné rozběhnout. 2. Objasněte

Více

Jak pracovat s absolutními hodnotami

Jak pracovat s absolutními hodnotami Jak pracovat s absolutními hodnotami Petr Matyáš 1 Co to je absolutní hodnota Absolutní hodnota čísla a, dále ji budeme označovat výrazem a, je jeho vzdálenost od nuly na ose x, tedy je to vždy číslo kladné.

Více

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

Aproximativní algoritmy UIN009 Efektivní algoritmy 1 Aproximativní algoritmy. 14.4.2005 UIN009 Efektivní algoritmy 1 Jak nakládat s NP-těžkými úlohami? Speciální případy Aproximativní algoritmy Pravděpodobnostní algoritmy Exponenciální algoritmy pro data

Více

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

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 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto Kapitola 1 Rozděl a panuj Rozděl a panuj je programovací metoda. Často se označuje latinsky Divide et Empera nebo anglicky Divide and Conquer. Vychází z toho, že umíme zadaný problém rozložit na menší

Více

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie Několik poznámek na téma lineární algebry pro studenty fyzikální chemie Jiří Kolafa Vektory. Vektorový prostor Vektor je často zaveden jako n-tice čísel, (v,..., v n ), v i R (pro reálný vektorový prostor);

Více

Umělá inteligence I. Roman Barták, KTIML. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak

Umělá inteligence I. Roman Barták, KTIML. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na úvod Agent s reflexy pouze převádí současný vjem na jednu akci. Agent s cílem umí plánovat několik akcí

Více

Vícekriteriální hodnocení variant metody

Vícekriteriální hodnocení variant metody Katedra aplikované matematiky a informatiky Jihočeská Univerzita v Českých Budějovicích, Ekonomická fakulta 2010 Metody vícekriteriální hodnocení variant (VHV) Jak jsme již zmiňovali, VHV obecně neposkytuje

Více

Další NP-úplné problémy

Další NP-úplné problémy Další NP-úplné problémy Známe SAT, CNF, 3CNF, k-klika... a ještě následující easy NP-úplný problém: Existence Certifikátu (CERT ) Instance: M, x, t, kde M je DTS, x je řetězec, t číslo zakódované jako

Více

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

opakování reprezentace grafů, dijkstra, bellman-ford, johnson opakování reprezentace grafů, dijkstra, bellman-ford, johnson Petr Ryšavý 19. září 2016 Katedra počítačů, FEL, ČVUT opakování reprezentace grafů Graf Definice (Graf) Graf G je uspořádaná dvojice G = (V,

Více

Algoritmy na ohodnoceném grafu

Algoritmy na ohodnoceném grafu Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus

Více

TGH06 - Hledání nejkratší cesty

TGH06 - Hledání nejkratší cesty TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 31. března 2015 Motivační problémy Silniční sít reprezentovaná grafem. Ohodnocené hrany - délky silnic. Najdi nejkratší/nejrychlejší

Více

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

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest Obsah prezentace Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest 1 Základní pojmy Vrchol grafu: {množina V} Je to styčná vazba v grafu, nazývá se též uzlem, prvkem

Více

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory K množina reálných nebo komplexních čísel, U vektorový prostor nad K. Lineární kombinace vektorů u 1, u 2,...,u

Více

Lineární algebra : Báze a dimenze

Lineární algebra : Báze a dimenze Lineární algebra : Báze a dimenze (5. přednáška) František Štampach, Karel Klouda LS 2013/2014 vytvořeno: 9. dubna 2014, 13:33 1 2 5.1 Báze lineárního prostoru Definice 1. O množině vektorů M z LP V řekneme,

Více

METODY REPREZENTACE A ZPRACOVÁNÍ ZNALOSTÍ V UMĚLÉ INTELIGENCI

METODY REPREZENTACE A ZPRACOVÁNÍ ZNALOSTÍ V UMĚLÉ INTELIGENCI METODY REPREZENTACE A ZPRACOVÁNÍ ZNALOSTÍ V UMĚLÉ INTELIGENCI Radim Jiroušek 2 Obsah 0 Úvod 7 1 Řešení úloh ve stavových prostorech 9 1.1 Definice stavového prostoru........................ 9 1.2 Příklad....................................

Více

0. Lineární rekurence Martin Mareš, 2010-07-04

0. Lineární rekurence Martin Mareš, 2010-07-04 0 Lineární rekurence Martin Mareš, 2010-07-04 V tomto krátkém textu se budeme zabývat lineárními rekurencemi, tj posloupnostmi definovanými rekurentní rovnicí typu A n+k = c 0 A n + c 1 A n+1 + + c k 1

Více

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný

Pokud nebude na příkazové řádce uveden právě jeden argument, vypište chybové hlášení a stručný KIV/PC ZS 2015/2016 Zadání ZADÁNÍ SEMESTRÁLNÍ PRÁCE ŘEŠENÍ KOLIZÍ FREKVENCÍ SÍTĚ VYSÍLAČŮ VARIANTA 2 (REx) Naprogramujte v ANSI C přenositelnou 1 konzolovou aplikaci, která jako vstup načte z parametru

Více

Uživatelská příručka Evidence příchozí a odchozí pošty a elektronický archiv. V prostředí společnosti. Pražská vodohospodářská společnost a.s.

Uživatelská příručka Evidence příchozí a odchozí pošty a elektronický archiv. V prostředí společnosti. Pražská vodohospodářská společnost a.s. Uživatelská příručka Evidence příchozí a odchozí pošty a elektronický archiv V prostředí společnosti Pražská vodohospodářská společnost a.s. Obsah 1. ÚVOD... 5 2. PROSTŘEDÍ WORKSPACE... 5 2.1 TECHNOLOGIE

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Lineární programování

Lineární programování Lineární programování Petr Tichý 19. prosince 2012 1 Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 2 Lineární programování Lineární program (1) min f(x) za

Více

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní graf má stromovou šířku nejvýše k, a je-li tomu tak, také vrátí příslušný stromový rozklad. Poznamenejme, že je-li k součástí vstupu,

Více

Matematika pro studenty ekonomie

Matematika pro studenty ekonomie w w w g r a d a c z vydání upravené a doplněné vydání Armstrong Grada Publishing as U Průhonu 7 Praha 7 tel: + fax: + e-mail: obchod@gradacz wwwgradacz Matematika pro studenty ekonomie MATEMATIKA PRO STUDENTY

Více

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

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší

Více

NEXIS 32 rel. 3.50. Generátor fází výstavby TDA mikro

NEXIS 32 rel. 3.50. Generátor fází výstavby TDA mikro SCIA CZ, s. r. o. Slavíčkova 1a 638 00 Brno tel. 545 193 526 545 193 535 fax 545 193 533 E-mail info.brno@scia.cz www.scia.cz Systém programů pro projektování prutových a stěnodeskových konstrukcí NEXIS

Více

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU ČVUT V PRAZE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ JAN SCHMIDT A PETR FIŠER MI-PAA DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU EVROPSKÝ SOCIÁLNÍ FOND PRAHA A EU: INVESTUJEME DO VAŠÍ BUDOUCNOSTI Dynamické programování

Více

3. ročník, 2013/ 2014 Mezinárodní korespondenční seminář iks

3. ročník, 2013/ 2014 Mezinárodní korespondenční seminář iks Řešení 3. série Úloha C3. Rovnostranný trojúhelník o straně délky n je vyplněný jednotkovou trojúhelníčkovou mřížkou. Uzavřená lomená čára vede podél této mřížky a každý vrchol mřížky potká právě jednou.

Více

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou 1 SPECIFIKACE ÚLOHY Cílem této úlohy bylo použít vybranou pokročilou iterativní metodou pro řešení problému vážené

Více

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

Hledáme efektivní řešení úloh na grafu Hledáme efektivní řešení úloh na grafu Mějme dán graf následující úlohy: G = ( V, E), chceme algoritmicky vyřešit Je daný vrchol t dosažitelný z vrcholu s? Pokud ano, jaká nejkratší cesta tyto vrcholy

Více

Mária Sadloňová. Fajn MATIKA. 150 řešených příkladů (vzorek)

Mária Sadloňová. Fajn MATIKA. 150 řešených příkladů (vzorek) Mária adloňová Fajn MATIKA (nejen) na přijímačky 50 řešených příkladů (vorek) 0 Mgr. Mária adloňová FajnMATIKA (nejen) na přijímačky 50 řešených příkladů (reklamní vorek) Mgr. Mária adloňová, 0 Vydavatel

Více

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.

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. 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. Poznámka:Slovem okružní myslíme,žecestakončívestejném městě,

Více

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

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly Matice Matice typu (m, n) je uspořádaná m-tice prvků z řádky matice.. Jednotlivé složky této m-tice nazýváme Matice se zapisují Speciální typy matic Nulová matice všechny prvky matice jsou nulové Jednotková

Více

Teorie informace a kódování (KMI/TIK)

Teorie informace a kódování (KMI/TIK) Teorie informace a kódování (KMI/TIK) Bezpečnostní kódy Lukáš Havrlant Univerzita Palackého 13. listopadu 2012 Konzultace V pracovně 5.076. Každý čtvrtek 9.00 11.00. Emaily: lukas@havrlant.cz lukas.havrlant@upol.cz

Více

Interpolace Uvažujme třídu funkcí jedné proměnné ψ(x; a 0,..., a n ), kde a 0,..., a n jsou parametry, které popisují jednotlivé funkce této třídy. Mějme dány body x 0, x 1,..., x n, x i x k, i, k = 0,

Více

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012 Algebra - třetí díl Lenka Zalabová Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita v Českých Budějovicích zima 2012 Obsah 1 Dělitelnost 2 Grupy zbytkových tříd 3 Jedna z

Více

Implementace A* algoritmu na konkrétní problém orientace v prostoru budov

Implementace A* algoritmu na konkrétní problém orientace v prostoru budov Implementace A* algoritmu na konkrétní problém orientace v prostoru budov Popis problému Orientaci ve známém prostředí lze převést na problém nalezení cesty z místa A do místa B. Obecně platí, že robot

Více

PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ. Dominik Fišer, Jiří Schejbal http://www.doser.cz

PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ. Dominik Fišer, Jiří Schejbal http://www.doser.cz PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ (c) Dominik Fišer, Jiří Schejbal 2009 Dominik Fišer, Jiří Schejbal http://www.doser.cz Obsah část 1 přednáší Dominik Fišer Co je to Précis?

Více

Operační systémy Linux, Mac OS X a jejich srovnání

Operační systémy Linux, Mac OS X a jejich srovnání 5 5.1 Operační systémy Linux, Mac OS X a jejich srovnání Popište výhody programů OpenSource, čím se vyznačují OpenSource programy se vyznačují tím, že se dodávají i se zdrojovým kódem. S tímto kódem může

Více

Dijkstrův algoritmus (připomenutí)

Dijkstrův algoritmus (připomenutí) Dijkstrův algoritmus (připomenutí) Základní předpoklad w : H R + (nezáporné délky hran) Upravený algoritmus prohledávání do šířky Dijkstra(G,s,w) 1 InitPaths(G,s) 2 S:= ; InitQueue(Q) 3 for každý uzel

Více

Funkce zadané implicitně

Funkce zadané implicitně Kapitola 8 Funkce zadané implicitně Začneme několika příklady. Prvním je známá rovnice pro jednotkovou kružnici x 2 + y 2 1 = 0. Tato rovnice popisuje křivku, kterou si však nelze představit jako graf

Více

TGH09 - Barvení grafů

TGH09 - Barvení grafů TGH09 - Barvení grafů Jan Březina Technical University of Liberec 15. dubna 2013 Problém: Najít obarvení států na mapě tak, aby žádné sousední státy neměli stejnou barvu. Motivační problém Problém: Najít

Více

Teorie grafů a diskrétní optimalizace 1

Teorie grafů a diskrétní optimalizace 1 KMA/TGD1 Teorie grafů a diskrétní optimalizace 1 Pracovní texty přednášek Obsahem předmětu KMA/TGD1 jsou základy algoritmické teorie grafů a výpočetní složitosti Kapitoly 1 5 rozšiřují a prohlubují předchozí

Více

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

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

Více

Anotace. Dynamické programování, diskrétní simulace.

Anotace. Dynamické programování, diskrétní simulace. Anotace Dynamické programování, diskrétní simulace. Problémy, které byly Přednášející jde tentokrát do M1, počet platných uzávorkování pomocí n párů závorek, počet rozkladů přirozeného čísla na součet

Více

Manuál administrátora FMS...2

Manuál administrátora FMS...2 Manuál administrátora Manuál administrátora FMS...2 Úvod... 2 Schéma aplikace Form Management System... 2 Úvod do správy FMS... 3 Správa uživatelů... 3 Práva uživatelů a skupin... 3 Zástupci... 4 Avíza

Více

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132 Ak. rok 2015/2016 vbp 1. ze 132 Ing. Vladimír Beneš, Ph.D. vedoucí katedry Petrovický K101 katedra informatiky a kvantitativních metod E-mail: vbenes@bivs.cz Telefon: 251 114 534, 731 425 276 Konzultační

Více

UŽIV ATELSKÁ PŘÍRUČKA

UŽIV ATELSKÁ PŘÍRUČKA UŽIVATELSKÁ PŘÍRUČKA Autor: Marek Klimša Úprava: Stanislav Chromý Verze dokumentu: 1.1 Poslední aktualizace: 11. května 2012 Obsah 1. Začínáme 3 1.1 Co je to ADVOKÁTNÍ SPIS 3 1.2 Po prvním spuštění 3 1.3

Více

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. 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?

Více

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R... Kapitola 1 Úvod 1.1 Značení N... přirozená čísla (1, 2, 3,...). Z... celá čísla ( 3, 2, 1, 0, 1, 2,...). Q... racionální čísla ( p, kde p Z a q N) q R... reálná čísla C... komplexní čísla 1.2 Výroky -

Více

Práce s velkými sestavami

Práce s velkými sestavami Práce s velkými sestavami Číslo publikace spse01650 Práce s velkými sestavami Číslo publikace spse01650 Poznámky a omezení vlastnických práv Tento software a související dokumentace je majetkem společnosti

Více

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY

Více

Paměti a jejich organizace

Paměti a jejich organizace Kapitola 5 Paměti a jejich organizace 5.1 Vnitřní a vnější paměti, vlastnosti jednotlivých typů Vnější paměti Jsou umístěny mimo základní jednotku. Lze je zařadit mezi periferní zařízení. Zápis a čtení

Více

= 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

= 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 Síť Síť je čtveřice N = ( G, s, t, c) kde G ( V, A) = je prostý orientovaný graf a každé orientované hraně ( u, v) je přiřazeno nezáporné číslo, které se nazývá kapacita hrany ( u, v), formálně c ( u,

Více

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice. [] Definice determinantu BI-LIN, determinant, 9, P Olšák [2] Determinant je číslo jistým způsobem charakterizující čtvercovou matici det A 0 pro singulární matici, det A 0 pro regulární matici používá

Více