Tomá² H ebejk Obousm rné heuristické vyhledávání BAKALÁ SKÁ PRÁCE. Univerzita Karlova v Praze. Matematicko-fyzikální fakulta

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

Download "Tomá² H ebejk Obousm rné heuristické vyhledávání BAKALÁ SKÁ PRÁCE. Univerzita Karlova v Praze. Matematicko-fyzikální fakulta"

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁ SKÁ PRÁCE Tomá² H ebejk Obousm rné heuristické vyhledávání Katedra aplikované matematiky Vedoucí bakalá ské práce: Studijní program: Studijní obor: Mgr. Tomá² Vysko il Informatika Obecná informatika Praha 2011

2 Rád bych pod koval v²em lidem, kte í se m b hem mého dosavadního studia sna- ºili n co nau it a probudit ve m zájem o dal²í poznání. Zejména d kuji vedoucímu Mgr. Tomá²i Vysko ilovi, který m p i psaní této bakalá ské práce podporoval.

3 Prohla²uji, ºe jsem tuto bakalá skou práci vypracoval samostatn a výhradn s pouºitím citovaných pramen, literatury a dal²ích odborných zdroj. Beru na v domí, ºe se na moji práci vztahují práva a povinnosti vyplývající ze zákona. 121/2000 Sb., autorského zákona v platném zn ní, zejména skute nost, ºe Univerzita Karlova v Praze má právo na uzav ení licen ní smlouvy o uºití této práce jako ²kolního díla podle Ÿ60 odst. 1 autorského zákona. V Praze dne Tomá² H ebejk

4 Název práce: Obousm rné heuristické vyhledávání Autor: Tomá² H ebejk Katedra: Katedra aplikované matematiky Vedoucí bakalá ské práce: Mgr. Tomá² Vysko il, Institut teoretické informatiky Abstrakt: Ú elem této bakalá ské práce je shrnout nejd leºit j²í poznatky ohledn obousm rného heuristického prohledávání a p inést n jaké nové my²lenky. Jsou zde popsány dva algoritmy, které vznikly jako pokus o vylep²ení dosud nejlep²ích algoritm v této oblasti. Tyto algoritmy byly experimentáln porovnány s jednosm rným algoritmem. Na základ výsledk porovnání je moºné íci, ºe obousm rné heuristické algoritmy mohou být výrazn rychlej²í neº jednosm rné. Krom toho je v textu popsáno, jak je moºné p evád t r zné úlohy na problém nalezení nejkrat²í cesty a jak získat dobrou heuristiku. Pro ukázku byl vytvo en program, který pouºívá algoritmy pro hledání nejkrat²í cesty k e²ení zobecn ného hlavolamu. Klí ová slova: prohledávání, graf, heuristika Title: Bidirectional heuristic search Author: Tomá² H ebejk Department: Department of Applied Mathematics Supervisor: Mgr. Tomá² Vysko il, Institute for Theoretical Computer Science Abstract: The purpose of this bachelor thesis is to summarize the most important results on bidirectional heuristic search and to bring some new thoughts. Two algorithms are described which attempt to improve the best algorithms in this eld. The algorithms were experimentally compared with a unidirectional algorithm. According to the result of the comparison, we can state that bidirectional heuristic algorithms can be much faster than unidirectional heuristic algorithms. The text also describes how to solve some problems by shortest-path algorithms and how to make a good heuristic. A program which can solve a generalized puzzle was created as a demonstration. Keywords: search, graph, heuristic

5 Obsah Úvod 1 1 Klasické algoritmy Prohledávání do ²í ky (BFS) Dijkstr v algoritmus Iterativní prohledávání do hloubky (IDS) Obousm rné prohledávání Informované prohledávání - algoritmus A* Algoritmus IDA* Obousm rné heuristické prohledávání P edstavení BS* BIDA* Dynamická heuristická funkce Prohledávání s dynamickou heuristikou Obousm rný A* s vyváºenými heuristikami Obousm rné prohledávání se zkrácenou záv re nou fází Nové metody Skute n dynamická heuristická funkce Prohledávání s dynamickou heuristikou podruhé Moºná vylep²ení algoritmu s vyváºenými heuristikami Koncept druhé fáze Ur ování nových cíl St ídavé prohledávání Aplikace na e²ení úloh Loydova patnáctka Zobecn ní úlohy Výb r heuristiky Problém obchodního cestujícího Implementace algoritm P ehled ablona ASSearch

6 5.3 ablona BHSearch Program SpeedTest Program PuzzleSolver B h ve více vláknech Porovnání algoritm Metody pro porovnávání algoritm Loydova patnáctka PuzzleSolver Cesta v labyrintu Záv r 52 Literatura 53

7 Úvod Hledání nejkrat²í cesty mezi dv ma vrcholy grafu je zdánliv velmi jednoduchá úloha. V praxi je ale asto pot eba hledat nejkrat²í cestu v obrovských grafech, které není ani moºné celé uloºit do pam ti. S takovými úlohami je moºné se setkat nap íklad v oblasti um lé inteligence, kde graf popisuje stavový prostor, ve kterém pot ebujeme najít posloupnost akcí (cestu), která vede z jednoho stavu do druhého. P íkladem m ºe být hledání nejkrat²í cesty mezi dv ma m sty po silni ní síti. To sice není t ºká úloha, ale je názorná. Vrcholy grafu jsou k iºovatky. Hrany grafu odpovídají silnicím. Pokud chceme zohlednit jednosm rné silnice, tak graf bude orientovaný. Kaºdá hrana má nezáporné ohodnocení, které odpovídá délce silnice. Cestu by bylo moºné hledat pomocí klasického Dijkstrova algoritmu. Nebylo by ale moºné n jak vyuºít specické struktury grafu? Pokud známe sou adnice k iºovatek, tak m - ºeme snadno spo ítat dolní odhad na délku cesty mezi nimi, kterým je vzdálenost vzdu²nou arou. Algoritmy, které takovouto informaci dokáºí vyuºít, se ozna ují jako informované. Nejznám j²í z nich je A*. Funkce, která dává odhady na délku cesty, se nazývá heuristika. V t²ina algoritm pracuje tak, ºe prohledává graf v okolí po átku tak dlouho, dokud nenajde cíl. Ukazuje se, ºe asto je výhodn j²í prohledávat graf sou asn z obou sm r, tzn. i zp tn od cíle do po átku. Dlouho ale nebyl znám algoritmus, který by pracoval obousm rn a p itom dokázal efektivn vyuºít heuristiku. Vývoj ale pokro il. V sou asné dob je známo n kolik algoritm, které podávají relativn dobré výsledky. Hlavním cílem této práce bylo sestavit p ehled t chto algoritm a navrhnout moºná vylep²ení. Vybrané algoritmy byly implementovány a byly pouºity p i e²ení úloh. První dv kapitoly shrnují sou asné poznatky. V kapitole 1 jsou stru n popsány klasické algoritmy. Následuje popis nejd leºit j²ích sou asných algoritm z kategorie obousm rného heuristického prohledávání. V kapitole 3 jsou pak navrºeny nové postupy a moºná vylep²ení známých algoritm. Dal²í kapitola je v nována tomu, jak p evád t úlohy na problém nalezení nejkrat²í cesty a jak sestrojit vhodné heuristiky. Poslední dv kapitoly obsahují popis implementace a výsledky experimentálních porovnání algoritm. 1

8 1 Klasické algoritmy 1.1 Prohledávání do ²í ky (BFS) Základním algoritmem pro nalezení nejkrat²í cesty (co do po tu hran) v orientovaném grafu je prohledávání do ²í ky (BFS). Funguje tak, ºe postupn prohledává graf od po áte ního vrcholu tak dlouho, dokud nenalezne cílový vrchol, nebo dokud nejsou prozkoumány v²echny vrcholy grafu. Algoritmus postupn buduje strom prohledávání. Vrcholy stromu prohledávání budou ozna ovány jako uzly. Kaºdý uzel odpovídá n jakému vrcholu grafu, navíc ale m ºe obsahovat dal²í údaje, nap íklad ukazatel na rodi e. Kdyº uzly ztotoºníme s vrcholy, kterým odpovídají, tak strom prohledávání m ºeme chápat jako podgraf p vodního grafu. Obrázek 1: P íklad grafu a p íslu²ného stromu prohledávání do ²í ky. Strom prohledávání vzniká postupným roz²i ováním. Na za átku je tvo en jen jedním uzlem, který odpovídá po áte nímu vrcholu. Roz²í ení probíhá tak, ºe se vybere list stromu a ten se expanduje. Expanze uzlu spo ívá v tom, ºe se najdou v²echny sousední vrcholy uzlu v p vodním grafu a pro kaºdý takový vrchol, který je²t není v prohledávacím strom, se vytvo í nový uzel. Nové uzly se p idají do prohledávacího stromu jako potomci expandovaného uzlu. Uzly, které jiº byly expandovány, se ozna ují jako uzav ené. Ostatní uzly jsou otev ené. Kaºdý otev ený uzel je listem stromu prohledávání. Listem ale m ºe být i uzav ený uzel. To nastane v p ípad, ºe p i jeho expanzi nebyly objeveny ºádné nové vrcholy. P íklad grafu a prohledávacího stromu je na obrázku 1. Hledá se cesta z A do G. Uzly A, B, C a D jsou uzav ené, E a F jsou otev ené. Vrchol G je²t nebyl objeven, a ve strom tak zatím není. Pro správnou funkci algoritmu je zásadní po adí, v jakém jsou otev ené uzly expandovány. Pot ebujeme, aby v okamºiku expanze platilo, ºe cesta z po átku do expandovaného uzlu ve strom prohledávání je nejkrat²í cestou v p vodním grafu. Z toho indukcí podle krok algoritmu 1 dostaneme, ºe v²echny cesty ve strom pro- 1 Krokem je my²lena expanze otev eného uzlu. 2

9 hledávání jsou nejkrat²í. Poºadavek je spln n, pokud pro expanzi vºdy vybereme uzel v nejmen²í vzdálenosti od ko ene. Algoritmus BFS tuto vlastnost zaji² uje tím, ºe ukládá otev ené uzly do fronty. Pro expanzi je tedy vºdy vybírán nejstar²í otev ený uzel. Z pr b hu algoritmu je patrné, ºe musí mít nejmen²í vzdálenost. Kdyº je nalezena cesta do cíle, tak prohledávání m ºe skon it, protoºe je tato cesta zaru en nejkrat²í. 1.2 Dijkstr v algoritmus Dijkstr v algoritmus lze chápat jako zobecn ní BFS pro grafy s ohodnocenými hranami. Nejkrat²í cestou se v tomto p ípad rozumí cesta s nejmen²ím sou tem ohodnocení hran. Ohodnocení je moºné si p edstavit jako délku hrany. Dijkstr v algoritmus neumoº uje pouºít záporné ohodnocení. Jak tedy algoritmus funguje? U kaºdého otev eného uzlu je uloºena délka dosud nejkrat²í nalezené cesty z po átku (vzdálenost). Pro expanzi je vybrán vºdy uzel v nejmen²í vzdálenosti (stejn jako u BFS). Tím je zaji²t no, ºe cesty do uzav ených uzl jsou nejkrat²í. Na rozdíl od BFS se zde m ºe stát, ºe cesta do otev eného uzlu nejkrat²í není. Expanzí jiného otev eného uzlu m ºeme nalézt krat²í cestu. Zaji²t ní správného výb ru uzl je u Dijkstrova algoritmu sloºit j²í. Jednoduchá fronta nesta í, je pot eba pouºít prioritní frontu. Tu je moºné implementovat nap íklad pomocí haldy. Otev ené uzly jsou v hald uspo ádány podle vzdálenosti. Pouºívány jsou následující operace: ˆ Vloºení uzlu do haldy. ˆ Nalezení a odebrání uzlu s nejmen²í vzdáleností. ˆ Sníºení hodnoty vzdálenosti. Poslední operace se provede, pokud je do otev eného uzlu nalezena krat²í cesta. V takovém p ípad je pot eba opravit jednak hodnotu vzdálenosti, ale také ukazatel na rodi e. Rodi em uzlu je vºdy uzel, který leºí na nejkrat²í dosud nalezené cest z po átku. N kdy je lep²í si p edstavit, ºe se starý uzel zahodí a vytvo í se nový. Algoritmus m ºe skon it v okamºiku, kdy je nalezena cesta do cíle a ºádný otev ený uzel nemá men²í vzdálenost, neº je délka této cesty. 1.3 Iterativní prohledávání do hloubky (IDS) Nevýhodou Dijkstrova algoritmu je p edev²ím to, ºe pot ebuje pam úm rnou velikosti grafu. N kdy je ale pot eba hledat cestu v obrovském grafu, který se celý do 3

10 pam ti nevejde. Jak to provést? P edstavme si nap ed, ºe graf, ve kterém hledáme nejkrat²í cesty mezi dv ma vrcholy, je stromem. To znamená, ºe mezi kaºdými dv ma vrcholy existuje jen jedna cesta. Sta í se tedy omezit na hledání libovolné cesty, automaticky bude nejkrat²í. Po áte ní vrchol budeme chápat jako ko en stromu. Cestu je moºné hledat rekurzivním algoritmem: 1. Kdyº je po áte ní a cílový vrchol shodný, vrátíme cestu nulové délky. 2. Pokud po áte ní vrchol nemá ºádné potomky, tak je výsledkem, ºe cesta neexistuje. 3. Jinak rekurzivn zkusíme najít cestu do cíle ze v²ech potomk. Pokud je n jaká nalezena, p idáme k ní po áte ní vrchol a výsledek vrátíme. Rekurzi je moºné odstranit pouºitím zásobníku pro vrcholy. Podobn jako u prohledávání do ²í ky, i zde se vytvá í strom prohledávání. Rozdíl je v tom, ºe nyní roste sm rem do hloubky. Navíc kdyº je prozkoumána celá jedna v tev, tak je ze stromu odstran na. To velmi sniºuje pam ové nároky. Pokud je po et následník ve strom omezen n jakou konstantou, tak je pot ebné mnoºství pam ti p ímo úm rné hloubce, do které se p i prohledávání dostaneme. Jak je to s asovou sloºitostí? V nejhor²ím p ípad je nutné projít celý graf. To je asto nep ijatelné. Zvlá² v situaci, kdy je graf velmi rozsáhlý, ale o ekávaná délka hledané cesty není velká. V takovém p ípad by mohlo velmi pomoci, kdyby byl stanoven n jaký limit na maximální hloubku, do které budeme prohledávat. To ale zase m ºe zp sobit, ºe se nám nepoda í cestu najít. e²ení je ale p ímo aré. Pokud není cesta nalezna, tak se zvý²í limit pro hloubku a prohledávání se spustí znovu. M ºe se to zdát jako plýtvání, ale v situací, kdy se strom hodn v tví, roste asová sloºitost s maximální hloubkou exponenciáln a v sou tu se tak asová sloºitost zhor²í jen konstantn. P esn ji, nech b > 1 je v tvící faktor (tzn. kaºdý vrchol má b následník ) a d je délka cesty do cíle. Pokud za neme s limitem 0 a budeme ho zvy²ovat vºdy o jednotku, tak celkový po et nav²tívení vrchol je: d i b j = i=0 j=0 d i=0 b i+1 1 b 1 = b d i=0 bi d 1 b 1 = b bd+1 1 b 1 d 1 b 1 = bd+2 2b bd + d + 1 (b 1) 2 < bd+2 (b 1) 2 = b 2 (b 1) 2 bd = O(b d ) = 4

11 Jak algoritmus zobecnit, aby fungoval pro libovolný graf? Potíº je v tom, ºe do n kterého vrcholu m ºe vést více cest. To p iná²í n kolik problém : 1. N které vrcholy grafu mohou být procházeny opakovan. 2. Pokud je v grafu cyklus, tak se prohledávání ani nemusí zastavit. 3. První nalezená cesta nemusí být nejkrat²í. Jak tyto problémy vy e²it? M ºeme si pamatovat nav²tívené vrcholy a znovu je neprozkoumávat. Tím se vy e²í první dva problémy, ale t etí z stane. Získáme tak klasické prohledávání grafu do hloubky. Pamatování si nav²tívených vrchol ale m ºe zabírat hodn pam ti, oproti prohledávání do ²í ky bychom si nijak nepomohli. Toto tedy není správná cesta. Nezbývá nic jiného, neº se smí it s tím, ºe n které vrcholy budou nav²tíveny opakovan. Naopak dobrým nápadem je pouºít techniku popsanou d íve - prohledávat vºdy jen do ur ité hloubky a tuto hloubku postupn zvy²ovat. Výsledný algoritmus se nazývá iterativní prohledávání do hloubky (iterative deepening search - IDS). Je²t zbývá vysv tlit, jak se zajistí nalezení nejkrat²í cesty. Existují dv moºnosti: 1. Nezastavit prohledávání p i nalezení první cesty, ale dokon it iteraci. Ze v²ech nalezených cest se vybere ta nejkrat²í. 2. Zvy²ovat limit na hloubku od 0 vºdy o jednotku. Pak je první nalezená cesta nejkrat²í. Pokud jsou hrany grafu ohodnoceny kladnými ísly, tak lze tento algoritmus také pouºít. Jen je obtíºn j²í ur it, o kolik se má limit na hloubku zvý²it. Obvykle se vybere nejniº²í hodnota vzdálenosti vrcholu, ve kterém do²lo k p ekro ení limitu v p ede²lé iteraci. Tím je zaji²t no nalezení nejkrat²í cesty, ale zase se m ºe stát, ºe limit bude zvý²en p íli² málo, a bude tak provedeno mnoho iterací. 1.4 Obousm rné prohledávání Ve v²ech p edchozích algoritmech probíhalo prohledávání sm rem od po átku do cíle. Prohledávání je ale také moºné spustit od cíle do po átku. Jen je pot eba uvaºovat hrany obrácen, tj. následníci vrcholu v jsou vrcholy, ze kterých vede do v hrana. Pokud nejsou hrany orientované, tak je moºné prohledávat z druhého sm ru p ímo. Nabízí se otázka, jestli by nebylo moºné prohledávat zárove z obou stran a jaké by to m lo výhody. Jak prohledávání do ²í ky, tak Dijkstr v algoritmus je moºné provád t sou asn z obou stran. Jen je pot eba p i vytvo ení nového uzlu (tj. p i p idání 5

12 s t s t Obrázek 2: Srovnání jednosm rného a obousm rného prohledávání. vrcholu do stromu prohledávání) kontrolovat, zda není p íslu²ný vrchol i v druhém strom. Pokud ano, tak byla nalezena cesta. Algoritmus skon í bu v okamºiku, kdy v jednom prohledávacím strom nejsou ºádné otev ené uzly, nebo v okamºiku, kdy je sou et nejmen²í vzdálenosti otev eného uzlu z prvního stromu a nejmen²í vzdálenosti otev eného uzlu z druhého stromu v t²í nebo roven délce nalezené cesty. Pak je tato cesta zaru en nejkrat²í. Setkání strom lze celkem efektivn detekovat nap íklad pomocí ha²ování. Kdy se obousm rné prohledávání vyplatí pouºít? Typicky v situaci, kdy po et uzl v prohledávacím strom roste v obou sm rech s hloubkou exponenciáln. Za p edpokladu, ºe po et vrchol ve vzdálenost nejvý²e h je c h (kde c > 1) a délka nejkrat²í cesty je d, jednosm rné prohledávání expanduje aº c d uzl, zatímco obousm rné jen p ibliºn 2c d/2, coº je výrazn lep²í. Obrázek 2 ilustruje situaci, kdy je obousm rné prohledávání výhodn j²í. edá oblast znázor uje ást grafu prozkoumanou p i hledání nejkrat²í cesty z s do t. Vlevo je znázorn no jednosm rné prohledávání a vpravo obousm rné. N kdy ale m ºe být obousm rné prohledávání hor²í, neº jednosm rné. Jedná se p edev²ím o situace, kdy je prohledávání z jednoho sm ru jednozna n výhodn j²í, neº z druhého. 1.5 Informované prohledávání - algoritmus A* V grafech, které popisují n jakou reálnou situaci, asto platí ur ité zákonitosti, které je moºné p i hledání nejkrat²í cesty vyuºít. Nap íklad p i hledání nejkrat²í cesty po silni ní síti mezi dv ma m sty je moºné vyuºít informaci o poloze. Vzdálenost vzdu²nou arou totiº dává dolní odhad na délku nejkrat²í cesty mezi libovolnými dv ma body. První otázka je, jak takovouto informaci popsat formáln. Je zavedena heuristická funkce h taková, ºe h(v) udává odhad vzdálenosti z vrcholu v do cíle. Budeme vyºadovat, aby heuristika h m la následující vlastnosti: 6

13 v V h(v) d(v, t) (1) u, v V h(u) h(v) + d(u, v) (2) Kde V je mnoºina vrchol grafu, t je cílový vrchol a d(u, v) je vzdálenosti z vrcholu u do vrcholu v, neboli délka nejkrat²í cesty mezi t mito vrcholy. Nerovnost (1) zaru uje, ºe heuristika h dává dolní odhady na délku nejkrat²í cesty. Tato vlastnost je ozna ována jako p ípustnost. Pokud heuristika spl uje druhou vlastnost, tak je ozna ována jako konzistentní. Pokud h(t) = 0, tak plyne (1) z (2). Konzistenci je moºné denovat také tak, ºe hodnota heuristiky m ºe p i p echodu po hran klesnout maximáln o délku této hrany. Tato alternativní denice, která je ekvivalentní s (2), bude asto vyuºívána. Je moºné formulovat algoritmy i pro nekonzistentní heuristiky, zde se ale omezíme jen na konzistentní. D vod bude oz ejmen pozd ji. Nejznám j²í algoritmus, který vyuºívá takovouto heuristiku je A*. Tento algoritmus pracuje stejn jako Dijkstr v algoritmus, jen má jiné kritérium pro výb r otev eného uzlu pro expanzi. Pro kaºdý uzel u je denována hodnota f(u) = g(u) + h(u), kde g(u) je délka cesty z ko ene do uzlu u ve strom prohledávání. Hodnota f(u), která bude také ozna ována jako f-hodnota, udává dolní odhad na délku cest z po- átku do cíle p es vrchol u, ov²em jen za p edpokladu, ºe g(u) je délka nejkrat²í cesty z po átku do u. Pro expanzi je vybrán uzel s nejmen²í f-hodnotou. Algoritmus skon í v okamºiku, kdy nejmen²í f-hodnota otev eného uzlu je aspo tak velká, jako délka nejkrat²í dosud nalezené cesty, nebo pokud uº není v prohledávacím strom ºádný otev ený uzel. Pro korektnost algoritmu je klí ová následující vlastnost: Pokud je h konzistentní heuristika, tak pro otev ený uzel u s nejmen²í f-hodnotou platí, ºe délka nejkrat²í cesty z po átku do u je rovna g(u). Pro d kaz tohoto tvrzení se hodí následující pozorování: Expanzí otev eného uzlu w vzniknou uzly, které mají f-hodnotu aspo tak velkou, jako w. To plyne z alternativní denice konzistentní heuristiky - hodnota h m ºe klesnout maximáln o tolik, o kolik stoupne hodnota g. P edchozí tvrzení platí, protoºe kdyby pozd ji byla nalezena krat²í cesta do vrcholu u, tak by pak tento uzel m l men²í f- hodnotu, neº mají nyní v²echny otev ené uzly, coº je spor s pozorováním. 7

14 s t s t Obrázek 3: Srovnání neinformovaného a informovaného prohledávání. Z pozorování také plyne, ºe podmínka pro ukon ení b hu algoritmu je správná. Pokud mají v²echny otev ené uzly f-hodnotu rovnu aspo délce nejkrat²í nalezené cesty, tak není moºné nalézt krat²í cestu. Pokud je uzel cílový, tak je totiº délka nalezené cesty rovna jeho f-hodnot. 2 Je moºné algoritmus upravit tak, aby pracoval i s heuristikou, která není konzistentní. Pak ale neplatí p edchozí tvrzení. M ºe se stát, ºe bude nalezena krat²í cesta do jiº uzav eného vrcholu. To algoritmus komplikuje a sniºuje jeho efektivitu, protoºe je n které uzly nutné zpracovávat opakovan. Proto je dobré pokusit se vºdy najít konzistentní heuristiku. Na obrázku 3 je znázorn no, jak pouºití heuristiky ovlivní prozkoumanou oblast grafu. Vlevo je oblast grafu prozkoumána p i klasickém prohledávání, vpravo je vid t efekt heuristické funkce. 1.6 Algoritmus IDA* Obohacením Dijkstrova algoritmu o heuristickou funkci vznikl algoritmus A*. Pokud místo Dijkstrova algoritmu vezmeme jako základ algoritmus IDS, tak vznikne algoritmus IDA* (iterative deepening A*). Tento algoritmus pracuje stejn jako IDS, ale místo vzdálenosti uvaºuje f-hodnotu. IDA* má oproti A* stejné výhody a nevýhody jako IDS oproti Dijkstrov algoritmu. V praxi se pouºívá velmi asto, protoºe na vy e²ení n kterých úloh pomocí A* nemají dne²ní po íta e dostatek pam ti. Navíc je jednodu²²í, protoºe nemusí udrºovat prioritní frontu otev ených uzl, a tak m ºe být za ur itých okolností dokonce i rychlej²í. Kv li opakovanému zkoumání stejných vrchol m ºe být ale také mnohem pomalej²í neº A*. Existují r zná vylep²ení, která se snaºí opakovanou expanzi stejných vrchol omezit [1]. 2 Pokud heuristika nabývá záporných hodnot, tak délka nalezené cesty m ºe být v t²í neº f-hodnota. Záporné heuristiky ale obvykle nemá smysl pouºívat. 8

15 2 Obousm rné heuristické prohledávání 2.1 P edstavení V p edchozí ásti byly p edvedeny dv rozdílné techniky pro urychlení hledání nejkrat²í cesty v grafu - vyuºití heuristické funkce a obousm rné prohledávání. Nebylo by moºné tyto dva p ístupy zkombinovat tak, aby vznikl je²t efektivn j²í algoritmus? P edpokladem je pochopiteln jednak to, ºe je moºné prohledávat i z opa ného sm ru, a pak také to, ºe je k dispozici heuristika jak pro první, tak pro druhý sm r. Prvním známým algoritmem, který se o toto pokusil, byl algoritmus BHPA, který navrhl Ira Pohl v roce 1971 [2]. Lze si p edstavit, ºe funguje jako dva algoritmy A* sou asn spu²t né z obou sm r. Sm r, ve kterém dochází k expanzi otev ených uzl, se postupn st ídá na základ kritéria kardinality. P ed kaºdou expanzí se zvolí sm r, ve kterém je mén otev ených uzl. Stejn jako u klasického obousm rného prohledávání, i zde je pot eba detekovat setkání strom prohledávání, které znamená nalezení cesty mezi po áte ním a cílovým vrcholem. Problémem je, ºe první nalezená cesta nemusí být nejkrat²í. Pokud má být e²ení optimální, musí algoritmus pokra ovat, dokud není spln na ukon ovací podmínka. Ta je stejná jako u algoritmu A* - aspo v jednom sm ru nesmí mít ºádný otev ený uzel men²í f-hodnotu, neº je délka nalezené cesty. Praktické výsledky tohoto algoritmu byly ale ²patné. Objevily se názory, ºe je to zap í in no tím, ºe se oba prohledávací stromy míjejí. Proto za aly vznikat algoritmy, které se snaºily o to, aby stromy rostly sm rem k sob [3, 4]. Podle nov j²ích výzkum to ale není pravda [5]. V praxi je asto nalezeno e²ení pom rn rychle. Je pak ale pot eba p íli² mnoho asu strávit ov ováním, ºe je skute n optimální. To, ºe BHPA není lep²í neº A* je celkem pochopitelné, kdyº v jednom sm ru musí expandovat p ibliºn stejné mnoºství uzl, jako kdyby byl z tohoto sm ru spu²t n klasický A*. Je tedy obousm rné heuristické prohledávání slepou v tví? B hem ty iceti let, které uplynuly od uvedení algoritmu BHPA, bylo navrºeno mnoho jiných algoritm zaloºených na stejné my²lence. A koliv se zatím ºádný z nich p íli² neprosadil, podávají n které z nich aspo v ur itých úlohách znateln lep²í výsledky, neº klasické algoritmy. Zvlá² v posledních dvaceti letech je znát zna ný posun. Ty nejzajímav j²í algoritmy budou v následujícím textu popsány. V dal²í kapitole budou p edstaveny n které nové my²lenky, které mohou vést k je²t lep²ím algoritm m. 9

16 2.2 BS* První významné vylep²ení p vodního algoritmu p edstavil Kwa [6]. Nový algoritmus byl nazván BS*. Princip z stává stejný, stále se jedná v podstat o paralelní spu²t ní algoritmu A* z obou sm r. Musí být k dispozici konzistentní heuristika pro oba sm ry. BS* je díky vyuºití n kolika chytrých my²lenek efektivn j²í neº BHPA. I p es jistý pokrok není ale obvykle tento algoritmus rychlej²í neº klasický A*. Jeho d le- ºitost spo ívá v tom, ºe ideje, na kterých je zaloºený, mohou být pouºity v dal²ích, pokro ilej²ích algoritmech. P i hledání moºností jak prohledávání zrychlit, si Kwa uv domil, ºe je d leºité najít e²ení co nejd íve. Tím totiº získáme horní odhad na délku nejkrat²í cesty, který je moºné vyuºít p i o ezávání uzl. Pokud je navíc brzy nalezeno optimální e²ení, tak se vyhneme nutnosti expandovat uzly s f-hodnotou rovnou délce nejkrat²í cesty. Proto je lep²í kontrolovat pr nik strom pro kaºdý nový otev ený uzel, ne jen pro uzavírané uzly. Toto zlep²ení je moºné pouºít u v t²iny algoritm, nap íklad i u oby ejného prohledávání do ²í ky. Dal²í idea se týká jen obousm rného prohledávání. P i b hu BHPA se stávalo, ºe oba prohledávací stromy obsahovaly mnoho spole ných vrchol. Pokud existují pro jeden vrchol uzly v obou stromech, budou tyto uzly ozna ovány jako dvoj ata. Jejich p ítomnost vede k plýtvání pam tí a zbyte nému expandování. BS* toto e²í tím, ºe umoº uje v n kterých p ípadech zahodit otev ené uzly. Je moºné rozli²it ty i situace: 1. Pokud má být expandován uzel, který má dvoj e v druhém strom, a toto dvoj e je uzav ený uzel, tak je uzel pouze uzav en a k expanzi nedojde. (nipping) 2. Pokud nastane p edchozí p ípad a dvoj e má n jaké potomky, tak jsou také odstran ni. (pruning) 3. Jestliºe je nalezena cesta z po átku do cíle, tak mohou být zahozeny v²echny uzly, které mají f-hodnotu aspo tak velkou, jako je délka nalezené cesty. (trimming) 4. Kdyº p i expanzi vznikne uzel s f-hodnotou v t²í nebo rovnou délce nejkrat²í dosud nalezené cesty, tak je moºné ho ihned zahodit. (screening) Vºdy je zahozen uzel, o kterém víme, ºe jeho expanzí není moºné nalézt lep²í e²ení. V prvním p ípad je známa nejkrat²í cesta z po átku do uzlu i z uzlu do cíle, takºe 10

17 krat²í cesta p es tento uzel vést nem ºe. Proto je také moºné smazat potomky takovéhoto uzlu (p ípad 2). Ve 3. p ípad to plyne z p ípustnosti heuristiky. Je t eba si uv domit, ºe se zahazuje uzel stromu prohledávání, nikoliv samotný vrchol grafu. Pokud do daného vrcholu nebyla nalezena nejkrat²í cesta, tak m ºe být pozd ji pro tento vrchol vytvo en nový uzel. Poslední situace je jen variací t etí. Je ale pot eba ukázat, ºe kdyº libovolným zp sobem dokáºeme, ºe daný otev ený uzel nem ºe leºet na krat²í cest, neº jaká byla dosud nalezena, tak je moºné tento uzel odstranit. To není zcela samoz ejmé, nebo to, ºe budou n které uzly odstran ny, m ºe vést k tomu, ºe ve strom nevede do n kterého uzav eného uzlu nejkrat²í moºná cesta. Stane se to tehdy, kdyº byl zahozen uzel, který by byl jinak na nejkrat²í cest. To, ºe je uzel potomkem zahozeného uzlu ale znamená, ºe jeho expanzí není moºné nalézt lep²í e²ení. Takovéto uzly jsou ozna ovány jako ²patné. To, ºe cesta do ²patných uzl není nejkrat²í, nevadí, protoºe víme, ºe p es n stejn ºádná krat²í cesta z po átku do cíle nevede. Naopak je to dob e, protoºe to m ºe zabránit jejich zbyte né expanzi. Je²t je ale t eba p ehodnotit první podmínku pro zahození uzlu (nipping). Pokud je dvoj e ²patný uzel, tak není známa nejkrat²í cesta, ale p esto je moºné uzel zahodit, protoºe p es ²patný uzel lep²í cesta vést nem ºe. To, ºe ²patné uzly algoritmu nevadí, je velmi d leºitá vlastnost. Umoº uje to doplnit základní konzistentní heuristiku o libovolnou p ípustnou heuristiku, která jiº konzistentní být nemusí. Jestliºe je tato heuristika schopná zjistit, ºe z daného vrcholu do cíle nevede ºádná cesta, tak je moºné ji pouºívat hned od za átku prohledávání. Pokud dává jen dolní odhady na délku cesty, tak ji lze pouºít aº od okamºiku, kdy byla nalezena n jaká cesta, která nám dá horní odhad délky nejkrat²í cesty. Tím se znovu potvrzuje, ºe je výhodné, kdyº je n jaké e²ení nalezeno co nejd íve. 2.3 BIDA* Zatím jsme vºdy p edpokládali, ºe máme heuristiku, která dokáºe spo ítat jen odhad vzdálenosti do cíle, respektive po átku. ƒasto je ale k dispozici heuristika, která dokáºe odhadnou vzdálenosti mezi libovolnými dv ma vrcholy. Pro tento p ípad lze rovn º zobecnit pojem p ípustnosti a konzistence. ˆ P ípustnost: u, v V h(u, v) d(u, v) (V je mnoºina vrchol, d(u, v) je délka nejkrat²í cesty z u do v a h je heuristika.) ˆ Konzistence: u, v, w V h(u, v) d(u, w) + h(w, v) (Sta í, kdyº to platí pro w, které je následníkem u.) 11

18 Obrázek 4: Srovnání heuristik h a h O. V t²inou platí, ºe heuristika dává p esn j²í výsledky pro vrcholy, které jsou blízko sebe. Proto se zrodila my²lenka nepo ítat heuristiku k cílovému vrcholu, ale k otev eným uzl m druhého stromu (tzv. front-to-front vyhodnocování). Pro uzel u z prvního stromu, který nemá uzav ené dvoj e (viz 2.2), a mnoºinu O otev ených uzl z druhého stromu, platí d(u, t) min v O [h(u, v) + d(v, t)]. Nejkrat²í cesta z u do cíle t musí totiº vést p es n jaký vrchol z O. To je invariant, který platí na za- átku a p i expanzi je zachován. Není poru²en ani kdyº jsou zahozeny uzly, o kterých víme, ºe p es n nejkrat²í cesta vést nem ºe. 3 ºinu O Místo O je moºné vzít mno- = {v O g(v) = d(v, t)}, tedy jen takové otev ené uzly, do kterých jiº známe nejkrat²í cestu z cíle t. 4 Nejkrat²í cesta do t pro uzly z O \ O totiº musí vést p es n jaký uzel z O. Bohuºel nelze snadno ur it, jestli v O. Platí ale d(u, t) min v O [h(u, v) + g(v)] min v O [h(u, v) + g(v)], protoºe pro v O platí g(v) = d(v, t) a O O. Pro vrcholy, které nejsou uzav eným uzlem v cílovém strom, tedy získáváme novou heuristiku h O (u) = min v O [h(u, v) + g(v)]. To, ºe tato heuristika nefunguje pro uzav ené uzly z cílového stromu, nevadí. Formáln pro tyto uzly m ºe být dodenována jako délka nejkrat²í cesty do cíle. V praxi to ale není pot eba. Heuristika h O je nejen p ípustná, ale i konzistentní (za p edpokladu, ºe h je konzistentní). Na obrázku 4 je srovnání p vodní heuristiky h a odvozené heuristiky h O. Heuristika h O sice dává lep²í hodnoty neº h, ale je velmi výpo etn náro ná. Navíc pokud se zm ní mnoºina O, tak se zm ní i funkce h O. To komplikuje výb r uzlu s nejmen²í f-hodnotou. Je moºné se tomu vyhnout tím, ºe je nap ed provedeno prohledávání z jednoho sm ru, které ur í mnoºinu O, a pak se spustí klasické jednosm rné prohledávání (A*, IDA*) z druhého sm ru. P esn tak funguje algoritmus BIDA*, který je postaven nad IDA*. 3 Místo o nejkrat²í cest by bylo p esn j²í mluvit o cest, která je krat²í neº dosud nalezená cesta. Pokud je totiº uº nejkrat²í cesta nalezena, tak mohou být odstran ny i uzly, p es které m ºe nejkrat²í cesta vést, ale víme, ºe p es n nem ºe vést krat²í cesta. 4 Pro p ipomenutí: g(v) je délka cesty z ko ene t do v ve strom prohledávání. 12

19 Volba IDA* místo A* má n kolik d vod. Tím hlavním je, ºe obvykle pot ebuje mít v pam ti uloºeno mnohem mén uzl. To umoº uje ukládat ke kaºdému uzlu hodnoty heuristických odhad vzdáleností k vrchol m z O. Pomocí r zných technik je pak moºné zna n redukovat po et vyhodnocení heuristické funkce h, a tím i dobu b hu. Významná redukce je umoºn na tím, jak funguje IDA*. V kaºdé iteraci je stanoven ur itý limit L na délku hledané cesty (hledá se jen krat²í). Pro rozhodnutí o tom, jestli má být uzel dále expandován, není d leºitá p esná f-hodnota, sta í pouze v d t, jestli je men²í neº L. Dále pro uzel v platí f(v) = min o O f o (v), kde f o (v) = g(v) + h(v, o) + g(o). Díky tomu, ºe je heuristika h konzistentní, platí, ºe jakmile f o (v) L, tak je f o (u) L pro v²echny potomky u uzlu v. Algoritmus pracuje tak, ºe v kaºdém uzlu v má uloºenou mnoºinu P v = {o O f o (v) < L}. Z p edchozího pozorování plyne, ºe pokud u je potomek v, pak P u P v. Dále f(v) < L, práv kdyº je P v /O. P i expanzi se tedy postupn redukuje po et prvk mnoºin P, a kdyº klesne na nulu, tak je uzel zahozen. Heuristika se po ítá je pro prvky P, kterých m ºe být mnohem mén neº prvk O. Dal²í prostor pro redukci výpo t heuristické funkce h nabízí líné vyhodnocování. Není totiº vºdy nutné po ítat v kaºdém uzlu v²echny hodnoty f o znovu. Jestliºe je graf symetrický (hrany nejsou orientované), tak z konzistence h plyne, ºe hodnota této heuristiky m ºe nar st nejvý²e o délku hrany. Hodnota f o se tak m ºe zv t²it maximáln o dvojnásobek délky hrany. Pokud je z toho jasné, ºe je stále men²í neº L, tak je zbyte né po ítat ji znovu. Pro graf s orientovanými hranami by bylo správné brát v úvahu délku opa né hrany. Pokud není moºné zjistit délku opa né hrany, tak je moºné pouºít délku p vodní, ale pak není zaru ené, ºe toto líné vyhodnocování p inese pozitivní efekt, protoºe m ºe dojít ke zbyte né expanzi n kterých uzl. Dal²í moºností je nepo ítat hodnoty f o v situaci, kdy víme, ºe pro n jaké o i O je f oi < L, protoºe uzel bude expandován v kaºdém p ípad. To ale m ºe být asto nevýhodné. Je naopak dobré vy adit prvky z P v hned, jak je to moºné, aby se urychlil výpo et v potomcích. Z experimentálních výsledk plyne, ºe algoritmus BIDA* je v n kterých úlohách (Loydova patnáctka - viz 4.1) mnohem rychlej²í neº IDA* [7]. Otázkou ale je, do jaké míry to platí obecn. Analýza chování algoritmu je p íli² sloºitá, a tak není jasné, za jakých okolností je rychlej²í a jak zvolit nejlépe mnoºinu cílových vrchol O. Mén propracovanou variantou tohoto algoritmu je tzv. Perimeter search [8], který byl zve ejn n o n co d íve. 13

20 Obrázek 5: Pouºité zna ení. 2.4 Dynamická heuristická funkce Ukazuje se, ºe je moºné pouºít informace získané prohledáváním z jednoho sm ru k vylep²ení heuristiky pro druhý sm r. Takto získaná heuristika se ozna uje jako dynamická, protoºe závisí na získaných datech. Tento p ístup detailn popsali Kaindl a Kainz[5]. P edpokladem op t je, ºe jsou k dispozici dv konzistentní heuristiky h 1 (pro odhad vzdálenost do cíle t) a h 2 (pro odhad vzdálenosti z po átku s). Pro zjednodu²ení budou následující úvahy provád ny jen pro jeden sm r prohledávání, pro druhý je to analogické. Pouºité zna ení je znázorn no na obrázku 5, kde jsou zakresleny dva otev ené vrcholy u (z 1. sm ru) a v (z 2. sm ru), heuristiky h 1 a h 2, vzdálenost z po átku g 1 a vzdálenost do cíle g 2 Nejd leºit j²ím pojmem, na kterém je celá my²lenka dynamické heuristiky zalo- ºena, je rozdíl (zna ený diff ). Ten je pro uzel v z prvního stromu denován takto: diff 1 (v) = g 1 (v) h 2 (v). Pro druhý sm r je diff 2 (v) = g 2 (v) h 1 (v). Je to tedy rozdíl mezi skute nou vzdáleností od ko ene stromu prohledávání a heuristickým odhadem této vzdálenosti. Klí ovou vlastností je, ºe sm rem od ko ene nikdy neklesne. Rozdíl následník je vºdy aspo tak velký, jako rozdíl expandovaného uzlu. To p ímo plyne z konzistence heuristiky - hodnota heuristiky, která dává odhad vzdálenosti do ko ene stromu, m ºe být v expandovaném uzlu men²í oproti hodnot v následníku nejvý² o délku hrany do následníka. Zajímavé je, ºe podobné tvrzení platí i pro f-hodnotu (viz 1.5). Dal²í d leºité pozorování je, ºe f 1 (u) + diff 2 (u) = g 1 (u) + h 1 (u) + g 2 (u) h 1 (u) = g 1 (u) + g 2 (u). Sou et f-hodnoty a rozdílu (z druhého sm ru) je tedy roven délce cesty z s do t p es u objevené p i prohledávání. 5 Kombinací t chto pozorování dostáváme pro otev ené uzly u (z 1. sm ru) a v (z 2. sm ru) 5 Nemusí to být délka nejkrat²í cesty, protoºe g 1 (u) a g 2 (u) nemusí být optimální. 14

21 dolní odhady na délku L u,v cesty z s do t, která jde p es tyto uzly 6 : 1. L u,v f 1 (u) + diff 2 (v) 2. L u,v diff 1 (u) + f 2 (v) Ozna me O 1 a O 2 mnoºiny otev ených uzl z prvního a z druhého stromu. Protoºe kaºdé cesta do cíle musí vést p es n jaký otev ený uzel z O 2, tak lze délku nejkrat²í cesty z u O 1 do t odhadnout takto: 1. d(u, t) = min v O2 L u,v g 1 (u) min v O2 [f 1 (u) + diff 2 (v)] g 1 (u) = f 1 (u) g 1 (u) + min v O2 diff 2 (v) = h 1 (u) + min v O2 diff 2 (v) = h 1 (u) + mindi 2 2. d(u, t) = min v O2 L u,v g 1 (u) min v O2 [diff 1 (u)+f 2 (v)] g 1 (u) = min v O2 f 2 (v)+ diff 1 (u) g 1 (u) = min v O2 f 2 (v) h 2 (u) = minf 2 h 2 (u) Minima jsou pro p ehlednost ozna ena jako mindi 2 a minf 2. Dynamická heuristika je funkce h 1(u) = max{h 1 (u) + mindi 2, minf 2 h 2 (u)}. Funkce není denována pro vrcholy, které jsou uzav eným uzlem v druhém strom. Jak bylo práv ukázáno, jedná se o p ípustnou heuristiku. Pro pevné hodnoty mindi 2 a minf 2 je navíc i konzistentní. Symetricky lze vytvo it dynamickou heuristiku pro druhý sm r. 2.5 Prohledávání s dynamickou heuristikou Jak pouºít dynamickou heuristiku v prohledávání? Kaindl a Kainz zvolili tzv. netradi ní p ístup k obousm rnému prohledávání s heuristikou. Ten spo ívá v tom, ºe je nap ed spu²t no prohledávání z jednoho sm ru, a pak z druhého. Zm na sm ru se tedy provede nejvý²e jednou. Do stejné kategorie lze za adit i algoritmus BIDA*. B hem prvního prohledávání se vytvo í strom, který se uloºí do pam ti. Navíc jsou vypo ítány statistiky mindi 2 a minf 2, které budou následn p i prohledávání z druhého sm ru pouºity k výpo tu dynamické heuristické funkce. Pro druhé prohledávání je moºné pouºít n jakou variantu IDA*, nebo A*. Algoritmy je ale pot eba upravit tak, aby místo dosaºení cíle kontrolovaly nalezení uzlu ze stromu prvního prohledávání. Algoritmus s dynamickou heuristikou, který pro druhé prohledávání pouºívá IDA* s transpozi ní tabulkou, pojmenovali Kaindl a Kainz Max-BAI-Trans. To byl tedy netradi ní p ístup. Tradi ní p ístup naopak znamená, ºe se st ídav budují prohledávací stromy z obou sm r. To, ºe se sm r prohledávání zm ní nejvý²e 6 Zde je pojem uzlu chápán tak, ºe pokud je do stejného vrcholu nalezena krat²í cesta, tak se vytvo í nový uzel a p vodní je zahozen. Uzel je tedy ur en vrcholem a cestou z ko ene ve strom prohledávání. Cesta p es uzel musí jít z ko ene do uzlu po hranách stromu prohledávání. 15

22 jednou, usnad uje implementaci. Dal²í výhodou je, ºe je moºné pro druhé prohledávání pouºít n kolik r zných algoritm. P i pouºití IDA* je moºné e²it i takové úlohy, které by tradi ní metody kv li nedostatku pam ti nevy e²ily. A kone n podle provedených experiment podává Max-BAI-Trans dobré výsledky. P i e²ení Loydovy patnáctky p ekonává jak jednosm rný algoritmus IDA*, tak i obousm rný BIDA* Obousm rný A* s vyváºenými heuristikami Následující algoritmus bude pat it do kategorie tzv. tradi ních, vychází op t z my²lenky spustit sou asn A* z obou sm r. Jak jiº bylo d íve zmín no, problémem tohoto p ístupu je, ºe kdyº se oba stromy setkají a je nalezena cesta, tak je²t není zaru ené, ºe je nejkrat²í. Obousm rný A* s vyváºenými heuristikami tento problém úsp ²n e²í. Je známo, ºe A* s konzistentní heuristikou h lze p evést na Dijkstr v algoritmus zm nou ohodnocení hran na redukované ohodnocení l (u, v) = l(u, v) + h(v) h(u). Obousm rná verze Dijkstrova algoritmu (klasické obousm rné prohledávání) skon í brzy po nalezení první cesty, netrpí tedy stejným problémem jako obousm rný A*. Ikeda aj. p i²el s nápadem pokusit se p evést obousm rný A* na obousm rný Dijkstr v algoritmus [9]. K tomu je ale pot eba, aby heuristiky h 1 a h 2 byly vyváºené, to znamená, aby pro n jakou konstantu C a pro v²echny vrcholy v platilo h 1 (v) = C h 2 (v). Pak totiº vzniknou pro oba sm ry stejné redukované ceny hran. První moºností je zvolit pro první sm r heuristiku h 1 (v) a pro druhý sm r h 1 (v). Ob heuristiky jsou p ípustné a konzistentní, i kdyº ta druhá vypadá podivn. V prvním sm ru se uzly expandují v po adí podle standardní f-hodnoty g 1 (v) + h 1 (v), ve druhém sm ru podle hodnoty g 2 (v) h 1 (v) = diff 2 (v). To je ve skute nosti celkem logický postup. Je pot eba si uv domit, v em spo ívá p í ina toho, ºe první objevená cesta m ºe být velmi vzdálena od optima. Pokud A* nalezne cílový vrchol v a h(v) = 0, tak platí, ºe délka nalezené cesty se rovná f(v). Pokud je v uzav ený uzel, tak se jedná o nejkrat²í cestu, pokud se jedná o otev ený uzel, tak nalezená cesta je²t nemusí být optimální, ale je blízko optima, protoºe rodi v m l p i expanzi nejmen²í f-hodnotu, a tak v má pravd podobn také relativn malou f-hodnotu. Naproti tomu kdyº je u obousm rného A* nalezena cesta p es vrchol v, který je v obou stromech, tak je délka této cesty g 1 (v) + g 2 (v) = f 1 (v) + diff 2 (v). Pokud je rozdíl di 2 (v) velký, ale p itom existuje ve druhém strom otev ený uzel s malým rozdí- 7 Porovnání provedli Kaindl a Kainz [5]. Je ale pot eba upozornit, ºe u algoritmu Max-BAI-Trans je pouºita transpozi ní tabulka, kdeºto u BIDA* není, a koliv by ji také bylo moºné pouºít a dosáhnout tak moºná lep²ích výsledk. 16

23 lem, tak m ºe existovat mnohem krat²í cesta. Kdyº je v druhém strom vybírán pro expanzi uzel s nejmen²ím rozdílem, tak se pak jednak ve strom nevyskytují uzly s p íli² velkým rozdílem, které nemohou vést k nalezení nejkrat²í cesty, dále se zvy- ²uje hodnota mindi 2, kterou je moºné p i íst k heuristice ve druhém sm ru. Tento p evod na obousm rný Dijkstr v algoritmus tak lze také chápat jako prohledávání s dynamickou heuristikou. Je ale také moºné zvolit pro první sm r heuristiku h 1(v) = 1(h 2 1(v) h 2 (v)) a pro druhý sm r heuristiku h 2(v) = 1(h 2 2(v) h 1 (v)). Pokud jsou h 1 a h 2 konzistentní a nezáporné, tak jsou h 1 a h 2 konzistentní a p ípustné. Uzly se expandují v po adí podle f'-hodnoty, kde f i(v) = 1(f 2 i(v) + diff i (v)). Tento postup je tedy na rozdíl od p edchozího symetrický. Podle p evodu na obousm rný Dijkstr v algoritmus by m lo platit, ºe je moºné skon it v okamºiku, kdy sou et nejmen²í f'-hodnoty otev eného uzlu v prvním strom a nejmen²í f'-hodnoty otev eného uzlu ve druhém strom je v t²í nebo roven délce nalezené cesty. Skute n, délka cesty p es vrchol v je f 1(v) + f 2(v) = 1f 2 1(v) + 1diff 2 1(v) + 1f 2 2(v) + 1diff 2 2(v) = 1(g 2 1(v) + h 1 (v) + g 1 (v) h 2 (v) + g 2 (v) + h 2 (v) + g 2 (v) h 1 (v)) = g 1 (v) + g 2 (v) a f'-hodnoty nových uzl nemohou být men²í, neº je minimální f'-hodnota aktuálních otev ených uzl. Tento algoritmus podával p i experimentech velmi dobré výsledky. To, ºe m ºe být výhodn j²í neº A*, je vid t v p ípad, ºe nejmen²í f'-hodnota je v obou sm rech stejná. Pak jsou expandovány uzly, které mají f i (v) + diff i (v) men²í neº je délka optimální cesty L, zatímco A* expanduje v²echny uzly s f i (v) < L, kterých m ºe být mnohem víc. Nevýhodou je, ºe je nutné u kaºdého uzlu po ítat jak h 1, tak i h Obousm rné prohledávání se zkrácenou záv re nou fází Pijls a Post rozli²ují ve svém algoritmu hlavní a záv re nou fázi [10]. Hlavní fáze kon í nalezením první cesty. Záv re ná fáze spo ívá v ov ení optimality. Nový algoritmus vychází op t z obousm rné verze klasického A*. Experimenty ukazují, ºe hlavní fáze je asto relativn rychlá a v t²inu asu zabírá záv re ná fáze. Proto se Pijls a Post zam ili pouze na zrychlení záv re né fáze. Op t je pouºita jistá varianta dynamické heuristiky (viz 2.4). Vyuºívá se znalost nejmen²í f-hodnoty ve druhém strom a vy- azují se uzly s p íli² velkým rozdílem. 17

24 3 Nové metody 3.1 Skute n dynamická heuristická funkce V p edchozí kapitole byla popsána dynamická heuristická funkce. Byla ale pouºita tak, ºe se jednou vypo ítala a dále se nem nila, protoºe se p e²lo na prohledávání z druhého sm ru. Tento p ístup vede k jednodu²²ím algoritm m, ale má i své nevýhody. Nap íklad není jasné, jak velký strom má být vytvo en b hem prvního prohledávání, které slouºí k vytvo ení dynamické heuristiky pro druhý sm r. Pokud bude strom p íli² velký, tak m ºe být nalezena nejkrat²í cesta jiº b hem tohoto prohledávání a nijak se nevyuºijí výhody obousm rného prohledávání. Kdyº bude naopak malý, tak dynamická heuristika nep inese znatelné zlep²ení. To je d vod, pro bude nyní rozebírán p ípad, kdy se postupn rozr stají oba stromy a dynamická heuristika se pr b ºn p epo ítává. Bude pouºito stejné zna ení, jako v p edchozí kapitole. Op t se p edpokládá, ºe máme k dispozici konzistentní p ípustné heuristiky h 1 a h 2. N jaký prohledávací algoritmus st ídav buduje stromy z obou sm r. Úkolem je, na základ vzdáleností, f-hodnot a rozdíl otev ených uzl v prohledávacím strom um t spo ítat hodnotu dynamické heuristiky pro druhý sm r. Hodnota dynamické heuristiky (fd-hodnota) pro uzel v a mnoºinu otev ených uzl z druhého stromu O bude zna ena fd O (v), nebo jen fd(v), pokud je mnoºina O z ejmá z kontextu. Vºdy musí platit, ºe neexistuje cesta z po átku do cíle p es uzel v krat²í neº fd(v). Nech O 1 je mnoºina otev ených uzl prvního stromu a O 2 mnoºina otev ených uzl z druhého stromu. Dynamická heuristika pro otev ený uzel v O 1, který není uzav eným uzlem ve druhém strom, m ºe být po ítána jako maximum ze t í funkcí: 1. fd 1 O 2 (v) =g 1 (v) + min u O2 g 2 (u) = g 1 (v) + mindist 2 2. fd 2 O 2 (v) = f 1 (v) + min u O2 diff 2 (u) = f 1 (v) + mindi 2 3. fd 3 O 2 (v) = diff 1 (v) + min u O2 f 2 (u) = diff 1 (v) + minf 2 První funkce dává triviální dolní odhad na délku cesty p es v. Zbylé dv byly popsány v p edchozí kapitole. Pro druhý sm r lze sestrojit dynamickou heuristiku stejn. To, ºe funkce není denována pro uzly, které jsou uzav ené v druhém strom, obvykle nevadí. Pro kaºdou funkce fd i je pot eba udrºovat jistý soubor ísel tak, aby bylo moºné p idávat ísla, odebírat ísla a zjistit minimum. To lze v obecném p ípad ud lat relativn efektivn nap íklad pomocí binárních vyhledávacích strom. Detaily implementace nyní nebudou podrobn rozebírány. Podstatné je, ºe není obtíºné 18

25 udrºovat hodnoty mindist, mindi a minf aktuální. D leºité pozorování je, ºe expanzí uzlu mohou tyto statistiky 8 jen stoupnout, protoºe následníci nemohou mít men²í vzdálenost, rozdíl ani f-hodnotu. Jestliºe má dynamická heuristika dávat dobré výsledky, tak je pot eba, aby nabývaly statistiky co nejv t²ích hodnot. Zv t²it jejich hodnotu je moºné expanzí uzlu, který nabývá n kterého minima. Pokud má ale takový uzel velkou fd-hodnotu, tak je zbyte né ho expandovat, protoºe víme, ºe p es n j nem ºe vést ºádná krátká cesta. Jak to ale ud lat, aby nekazil statistiky? M ºe být stanovena ur itá mez M. Pro výpo et statistik budou brány v úvahu jen uzly s fd-hodnotou men²í neº tato mez. To je korektní postup jen tehdy, kdyº výsledná fd-hodnota je také men²í neº M. Ozna me je²t O M mnoºinu uzl z O 2, které mají fd-hodnotu 9 men²í neº M. Pak pro u O 1 m ºeme denovat fd O2,M (u) = min(fd OM (u), M ). Dokáºeme, ºe je to korektní dynamická heuristika. Ozna me L u délku nejkrat²í cesty z s do t p es u a L u,v délku nejkrat²í cesty z s do t p es u a v. Dynamická heuristika musí spl ovat fd O2,M(u) L u. Díky tomu, ºe je fd OM korektní, platí fd O2,M (u) fd OM (u) min v OM L u,v. Platí také fd O2,M (u) M min v O2 \O M L u,v. Dohromady tedy dostáváme fd O2,M (u) min v O2 L u,v = L u. Funkce tedy dává dolní odhady na délku cesty p es daný vrchol, coº jsme cht li dokázat. Analogicky se denuje dynamická heuristika i pro druhý sm r. Pro pevnou mnoºinu otev ených uzl odpovídá dynamická heuristika konzistentní heuristice. Tím je my²leno, ºe následníci uzlu vytvo ení p i expanzi nemohou mít men²í fd-hodnotu. To znamená, ºe cesta nalezená do uzlu s nejmen²í fd-hodnotou musí být nejkrat²í. Kdyº se ale mnoºiny otev ených uzl m ní, tak se m ní i hodnoty dynamických heuristik. Je t eba vºdy vybrat uzel s nejmen²í fd-hodnotou podle aktuální dynamické heuristiky. Nesta í spo ítat fd-hodnotu p i vytvo ení uzlu. P epo ítání t chto hodnot p i kaºdé zm n heuristiky by bylo ale p íli² asové náro né. Moºným e²ením je p epo ítat hodnotu vºdy pro uzel, který byl vybrán k expanzi. Pokud je nová hodnota stejná, tak m ºe být expandován, protoºe hodnoty dynamické heuristiky mohou jen vzr st, a tak je jisté, ºe má fd-hodnotu skute n nejmen²í. Pokud vzroste, tak se vezme dal²í uzel. Toto m ºe vést k mnohanásobnému drobnému zvý²ení fd-hodnoty, coº by také m lo ²patný vliv na rychlost. e²ením m ºe být t eba to, ºe se dynamická heuristika nebude m nit p íli² asto. Budou pouºívány 8 Statistikami jsou my²leny hodnoty mindist, mindi a minf pro oba stromy. 9 Zde se k denici dynamické heuristiky vyuºívá jiná dynamická heuristika, kterou jsou ohodnoceny uzly z druhého stromu. Je moºné si p edstavit, ºe na za átku je pouºita n jaká základní heuristika (nap íklad f-hodnota). V pr b hu prohledávání se postupn fd-hodnoty, které jsou uloºeny u kaºdého uzlu, p epo ítávají tak, jak je zde denováno. 19

26 stejné statistiky po del²í dobu a za aktuální se vym ní aº v okamºiku, kdy jsou aktuální výrazn lep²í. Tento problém není nutné e²it v situaci, kdy moºných hodnot je velmi málo. Nap íklad p i hledání nejkrat²í cesty v grafu s jednotkovými hranami. 10 Problému je moºné se vyhnout také tak, ºe budou uzly pro expanzi vybírány podle jiného kritéria, neº je fd-hodnota (nap íklad klasicky podle f-hodnoty). 3.2 Prohledávání s dynamickou heuristikou podruhé Nyní bude popsán nový algoritmus, který provádí prohledávání z obou sm r a vyu- ºívá dynamickou heuristiku popsanou v 3.1. Jde o upravený algoritmus BS*. Mírn se li²í zp sob zahazování uzl a výb r uzlu pro expanzi. Z algoritmu BS* je p evzata my²lenka, ºe prohledávací stromy by m li mít co nejmén spole ných uzl. e²ení se ale mírn li²í. Je stanovené jednoduché pravidlo - pokud je n jaký uzel v obou stromech, tak musí být v obou z nich otev ený. Stromy tak mohou mít spole nou jen hranici. To mimo jiné umoº uje bez problému pouºívat dynamickou heuristiku, která pro uzav ené uzly opa ného stromu nefunguje. Uzel je moºné zahodit v t chto p ípadech: 1. Kdyº je nalezena krat²í cesta z po átku do cíle, tak se zahodí v²echny otev ené uzly s fd-hodnotou v t²í nebo rovnou délce této cesty. Pokud se n kdy v budoucnu vygenerují uzly s v t²í fd-hodnotou, tak se zahodí rovnou. (To je stejné jako u BS*, jen je pouºita dynamická heuristika místo f-hodnoty.) 2. Kdyº je uzav en uzel, který má dvoj e 11 ve druhém strom, tak je dvoj e zahozeno. 3. Kdyº má být vytvo en nový otev ený uzel, a uº existuje uzav ený uzel pro stejný vrchol (v libovolném strom ), tak vytvo en není. 4. Pro jeden vrchol je v kaºdém strom nejvý²e jeden uzel. Kdyº je tedy nalezena nová cesta do otev eného uzlu, tak se zkontroluje, jestli není krat²í. Podle toho je zahozen bu p vodní, nebo nový uzel. To, ºe je moºné zahazovat uzly, o kterých víme, ºe p es n nevede cesta krat²í neº dosud nalezená, je zd vodn no u popisu algoritmu BS*. Sta í snad p ipomenout, ºe pak mohou vznikat ²patné uzly, coº jsou uzav ené uzly, do kterých není nalezena nejkrat²í moºná cesta, p es které ale také nem ºe vést lep²í cesta z po átku do cíle. 10 Za p edpokladu, ºe optimální cesta není p íli² dlouhá. 11 Dvoj e je uzel ve druhém strom, který odpovídá stejnému vrcholu. 20

27 Tyto uzly nevadí ani v tomto algoritmu. Dvoj e ve druhém p ípad je moºné zahodit, protoºe jeho expanzí nem ºe být nalezena lep²í cesta. Bu je totiº expandovaný uzel ²patný, a nebo je do n j jiº známa nejkrat²í cesta. Pokud je nalezen uzav ený uzel ze stejného stromu, tak je do n j op t bu známa nejkrat²í cesta, nebo je ²patný. Kdyº je nalezen uzav ený uzel z druhého stromu, tak to znamená, ºe se jedná o pokra ování jiº nalezené cesty. Proto nemá smysl se tímto uzlem dále zabývat. Uzly jsou pro expanzi vybírány následujícím zp sobem: 1. Jsou vybrány uzly s nejmen²í fd-hodnotou. 2. Pokud je jich víc, tak jsou z nich vybrány uzly s nejmen²ím rozdílem. 3. Mezi nimi se m ºe dále rozhodnout na základ vzdálenosti. Uzly, které mají nejmen²í fd-hodnotu, mohou vést k nalezení nejlep²í cesty, proto jsou vybrány p ednostn. Kv li zlep²ení dynamické heuristiky pro druhý sm r jsou dále up ednost ovány uzly s malým rozdílem. Dal²í kritéria výb ru nejsou tak podstatná. Pokud jsou vybírány uzly ve v t²í vzdálenosti, tak m ºe být d ív nalezeno e²ení. Kdyº jsou naopak vybírány uzly v nejmen²í vzdálenosti, tak se tím zlep²uje dynamická heuristika pro druhý sm r. Stejn jako BS*, tak i tento algoritmus kon í v okamºiku, kdy v jednom sm ru nejsou ºádné otev ené uzly. 3.3 Moºná vylep²ení algoritmu s vyváºenými heuristikami Alternativním algoritmem k vý²e popsanému prohledávání s dynamickou heuristikou m ºe být obousm rný A* s vyváºenými heuristikami, p edev²ím varianta, která expanduje uzly v obou sm rech v po adí podle hodnoty f (u) = f(u) + diff (u). Tento algoritmus má, stejn jako prohledávání s dynamickou heuristikou, jednu velkou nevýhodou oproti klasickému A* - v kaºdém uzlu po ítá dv heuristiky. V n kterých úlohách je tento výpo et náro ný a m ºe tak být pot eba dvojnásobný as na zpracování jednoho uzlu. Zlep²ení by mohlo p inést líné vyhodnocování. Hodnoty f ani diff u následník nemohou klesnout (p i pouºití konzistentní heuristiky). Pro nov vytvo ený otev ený uzel tedy sta í nap ed spo ítat jen jednu z t chto hodnot. Místo druhé hodnoty se pouºije hodnota, kterou má rodi. Heuristika je vy íslena aº v okamºiku, kdy je uzel vybrán pro expanzi. Není dokonce nutné hned po ítat ani jednu hodnotu. Cenou za moºnost u²et it n které výpo ty je nutnost ukládat do uzlu informaci o tom, jaké hodnoty byly uº vypo ítány. Dal²ím negativním efektem je v t²í po et operací s prioritní frontou otev ených uzl. Proto se líné vyhodnocování z ejm nevyplatí v situaci, kdy je výpo et heuristiky pom rn rychlý. 21

28 Je také moºné pouºít stejnou techniku, jako u obousm rného prohledávání se zkrácenou záv re nou fází. K tomu je pot eba mít nap ed n jaký horní odhad na délku optimální cesty. Ten získáme v okamºiku, kdy je nalezena n jaká cesta. M ºe být ale znám i p edem, nebo ur en v pr b hu pomocí n jakých heuristik. Pak je moºné zahazovat uzly, o kterých víme, ºe nemohou vést k lep²ímu e²ení. To m ºeme zjistit pouºitím zjednodu²ené verze dynamické heuristiky. Sta ilo by nap íklad spo ítat pot ebné statistiky v okamºiku, kdy je nalezeno první e²ení, a dále je neaktualizovat. U tohoto algoritmu je totiº záv re ná fáze relativn krátká, a tak by se pr b ºná aktualizace statistik nejspí² nevyplatila. Pokud je horní odhad znám od za átku, tak je pot eba pro výpo et heuristik zvolit vhodný okamºik, p ípadn jej provést znovu, kdyº bylo expandováno velké mnoºství uzl. 3.4 Koncept druhé fáze Algoritmy, které fungují tak, ºe postupn budují prohledávací stromy, mají velké nároky na pam. U sloºit j²ích úloh se snadno stane, ºe pam dojde d ív, neº bude e²ení nalezeno. Proto se nap íklad asto místo A* pouºívá IDA*. Na druhou stranu A* m ºe být v n kterých situacích mnohem rychlej²í neº IDA* a zárove nem ºe být nikdy výrazn hor²í. 12 Vznikly proto jakési mezistupn mezi t mito dv ma extrémy. Jednou cestou je snaºit se zrychlit IDA* pomocí transpozi ních tabulek, které obsahují informace o n kterých nav²tívených uzlech, které se pak nemusejí zkoumat zbyte n znovu [1]. Opa nou cestou je snaºit se sníºit pam ové nároky A*. Algoritmy jako SMA* (Simplied Memory-Bounded Algorithm) umí pracovat s omezenou pam tí [11]. Kdyº za ne docházet, tak jsou zahozeny nejmén perspektivní uzly. V p ípad pot eby jsou pak znovu vytvo eny. Takovéto algoritmy jsou ale pom rn komplikované a oproti IDA* mají velkou reºii navíc, p itom ale stejn nedokáºí úpln zabránit opakovanému prohledávání stejných vrchol. Proto zde bude navrºen jiný postup, jak se vypo ádat s nedostatkem pam ti. Tento postup je velmi obecný, není svázán s konkrétním algoritmem. Základní my²lenkou je rozd lit proces hledání nejkrat²í cesty do dvou fází. V první fázi se budují prohledávací stromy. Tato fáze je tedy pam ov náro ná. Pokud je b hem ní nalezena optimální cesta, tak celý algoritmus kon í. Kdyº je ale v pr b hu prohledávání p ekro en limit na pouºitou pam 13, tak první fáze kon í a nastává druhá fáze. Ve druhé fázi je k dispozici omezené mnoºství pam ti a musí tedy být pouºit algoritmus, 12 Hor²í m ºe být jen kv li tomu, ºe má navíc reºii spojenou s pouºíváním prioritní fronty pro otev ené uzly. 13 M ºe se také jednat o limit na po et uzl. 22

29 který tolik pam ti nepot ebuje. Je ale moºné vyuºít prohledávací stromy, které byly vytvo eny b hem první fáze. Tento postup je moºné pouºít jak u jednosm rného, tak i u obousm rného prohledávání. U jednosm rného prohledávání m ºe být pouºit v první fázi A* a ve druhé fázi upravená verze IDA*. Modikace IDA* spo ívá v tom, ºe místo jednoho po áte ního vrcholu má na vstupu mnoºinu po áte ních vrchol, kterými jsou otev ené uzly z první fáze. To v praxi znamená, ºe v kaºdé iteraci je spu²t no prohledávání postupn ze v²ech otev ených uzl. Tato úprava je jednoduchá, ale p itom m ºe p inést velké zlep²ení. Jednak není nutné znovu prohledávat oblast prozkoumanou b hem první fáze. Hlavní výhoda je ale v tom, ºe pokud do n kterého otev eného uzlu existovalo více p ibliºn stejn dlouhých cest, tak je tento uzel prozkoumán jen jednou, zatímco v p ípad pouºití istého IDA* by byl celý podstrom prozkoumán n kolikrát. Opakovanému prozkoumání stejných vrchol se tak sice zcela nezabrání, ale aspo je výrazn omezeno. Tento postup je moºné pouºít i u obousm rného prohledávání. Pro první fázi lze zvolit nap íklad prohledávání s dynamickou heuristikou, nebo algoritmus s vyváºenými heuristikami. Druhá fáze m ºe být zaloºena na algoritmu IDA*, nebo BIDA*. Zdá se, ºe v druhé fázi je nutné zvolit jeden sm r a v tomto sm ru provád t prohledávání. Není totiº moºné ukládat do pam ti dal²í uzly, a kdyº nejsou uzly uloºené v pam ti, tak není moºné detekovat setkání strom. P esto je moºné vytvo it efektivní algoritmus, který i ve druhé fázi prohledává z obou stran. Popsán bude v sekci 3.6. I kdyº bude pouºito jen prohledávání z jednoho sm ru, tak je moºné vyuºít obou strom prohledávání. Uzly z druhého stromu mohou slouºit jako cíle v algoritmu BIDA*. Zárove je pro v²echny algoritmy moºné pouºít dynamickou heuristiku vytvo enou na základ otev ených uzl druhého stromu. V p ípad pouºití BIDA* je ale pot eba hodnoty v uzlech p epo ítat vzhledem k cíli, v jehoº podstrom se nacházejí. 3.5 Ur ování nových cíl Zbytek této kapitoly je zam en na druhou fázi. P edpokládejme, ºe jsou jiº vytvo eny prohledávací stromy pro oba sm ry. Tyto stromy mají spole né maximáln n které otev ené uzly. Dále p edpokládejme, ºe máme konzistentní, p ípustnou heuristiku h, která dokáºe spo ítat odhad vzdálenosti 14 mezi libovolnými dv ma vrcholy. Pokud byl pro druhou fázi zvolen algoritmus BIDA*, tak je pot eba jednak ur it 14 Vzdálenost d(u, v) je délka nejkrat²í cesty z u do v. 23

30 sm r prohledávání (BÚNO p edpokládejme, ºe je vybrán první, dop edný sm r), ale hlavn je t eba vybrat mnoºinu tzv. cílových uzl. To jsou uzly, p es které se bude po ítat vzdálenost do skute ného cíle. Bylo by moºné vzít v²echny uzly v ur ité vzdálenosti tak, jak se to d lá normáln. Je ale moºné pokusit se pro kaºdý otev ený uzel z prvního stromu ur it cíle zvlá² a n jak lépe. Pot ebujeme, aby cíl bylo co nejmén a p itom byly v co nejv t²í vzdálenosti. BIDA* je algoritmus, který pouºívá iterované prohlubování. To znamená, ºe v kaºdé iteraci je stanoven n jaký limit L a hledá se jen cesta krat²í neº L. Toho je moºné vyuºít. Nech je dán uzel u z prvního stromu. Hledáme mnoºinu cílových uzl T (z druhého stromu) takovou, ºe kaºdá nejkrat²í cesta z po átku do cíle, která vede p es u a která je krat²í neº L, musí procházet p es n jaký uzel z T. V úvahu se ov²em berou jen cesty, které jdou nap ed po hranách stromu do n jakého otev eného uzlu, pak pokra ují p es libovolné vrcholy do otev eného uzlu z druhého stromu, odkud jdou po hranách druhého stromu do cíle. Délka nejkrat²í takovéto cesty mezi uzlem u z prvního stromu a uzlem v z druhého stromu bude zna ena d (u, v). Je moºné se omezit jen na tyto cesty, protoºe optimální cesta musí vést p es n jaký otev ený uzel, do kterého je ve strom nalezena nejkrat²í cesta. Platí tedy d(s, t) = d (s, t) a také u, v d(u, v) d (u, v). Za T m ºeme vzít mnoºinu otev ených uzl z druhého stromu. To by ale nejspí² nebylo dobré e²ení, protoºe výpo et heuristiky p es v²echny otev ené uzly by trval p íli² dlouho. Je tedy pot eba po et prvk této mnoºiny n jak zredukovat. To je moºné dv ma zp soby: 1. Uzel v je moºné odstranit z T, pokud délka nejkrat²í cesty z po átku do cíle p es uzly u a v (zna ená L u,v ) nem ºe být men²í neº L. 2. Mnoºinu uzl D T je moºné nahradit uzlem v takovým, ºe v²echny uzly z D jsou v podstrom v. První metoda je jist správná, ale je otázkou, jak odvodit, ºe ºádná taková cesta neexistuje. Podle denice platí L u,v = g 1 (u)+d (u, v)+g 2 (v). Je samoz ejm moºné pou- ºít heuristiku h. Z p ípustnosti této heuristiky plyne, ºe L u,v g 1 (u)+h(u, v)+g 2 (v). Za p edpokladu, ºe pro heuristiku h platí trojúhelníková nerovnost (tedy h(a, b) h(a, c) + h(c, b)), je ale moºné pouºít je²t lep²í odhad vzdálenosti d (u, v). Pot ebujeme k tomu ale znát hodnoty mindi u a mindi v, které jsou rovny nejmen- ²ímu rozdílu otev eného uzlu v podstrom u, respektive v, kde rozdíl se po ítá vzhledem k u, respektive v. Formáln : Nech U je mnoºina otev ených uzl v podstrom uzlu u a V je mnoºinu otev ených uzl v podstrom uzlu v. Pak denujme mindi u = min o U (d 1 (u, o) h(u, o)) a mindi v = min o V (d 2 (o, v) h(o, v)), kde 24

31 d i (x, y) ozna uje vzdálenosti mezi uzly x a y ve strom i. Dokáºeme, ºe d (u, v) h(u, v) + mindi u + mindi v : d (u, v) = min r U,s V (d 1(u, r) + d(r, s) + d 2 (s, v)) min (d 1(u, r) + h(r, s) + d 2 (s, v)) r U,s V min (d 1(u, r) + h(u, v) h(u, r) h(s, v) + d 2 (s, v)) r U,s V h(u, v) + min (d 1(u, r) h(u, r)) + min(d(s, v) h(s, v)) r U s V h(u, v) + mindi u + mindi v První rovnost plyne p ímo z denice d (u, v), poté byla vyuºita p ípustnost h a trojúhelníková nerovnost. Je²t je moºné L u,v triviáln zdola odhadnout pomocí známých vzdáleností: L u,v min r U g 1 (r)+min s V g 2 (s). Podstatné zde je, ºe stromy mohou mít spole né jen otev ené uzly, coº jsou vºdy listy. Druhý zp sob redukce po tu cíl funguje díky tomu, jaké cesty se uvaºují. Kaºdá nejkrat²í cesta musí procházet p es n jaký otev ený uzel w (z druhého stromu), do kterého je ve strom nalezena nejkrat²í cesta, tedy g 2 (w) = d(w, t). Uvaºované jsou jen cesty, které dále z w pokra ují po hranách stromu prohledávání, takºe cesta musí vést i p es libovolného p edka w. Redukci T je moºné provést jednoduchým postupem. Vezme se uzel v T v nejv t²í vzdálenosti a nahradí se rodi em. Tento krok je opakován, dokud je velikost T p íli² velká. Zmín ný algoritmus je moºné je²t vylep²it. M ºe se totiº stát, ºe n která redukce byla provedena zbyte n. To znamená, ºe uzel byl nahrazen rodi em, ale tento rodi v mnoºin T nebyl, a ani nikdy potom nebyl znovu p idáván, ili toto nahrazení nevedlo k zmen²ení mnoºiny T. e²ením je, pamatovat si ke kaºdému klí ovému uzlu je²t jeden asociovaný uzel. Tento asociovaný uzel je na za átku stejný, jako klí ový uzel. P i nahrazení rodi em se asociovaný uzel nastaví také na rodi e, ale jen tehdy, kdyº uº v T byl stejný klí ový uzel (do²lo ke spojení). Asociovaný uzel je tedy posledním potomkem, ve kterém do²lo ke spojení. Na konci je pak moºné vzít mnoºinu t chto asociovaných uzl. Jak tyto dva postupy zkombinovat? P edn, bylo by p íli² náro né po ítat cíle pro kaºdý otev ený uzel z prvního stromu zvlá². Proto se zvolí mnoºina tzv. prost edních uzl, coº jsou uzly n kde uprost ed stromu takové, ºe kaºdý otev ený uzel je v podstrom n jakého prost edního uzlu. Cíle se ur í pro kaºdý prost ední uzel. Lze je pak pouºít pro v²echny otev ené uzly v podstrom prost edního uzlu. Stejn tak i v druhém strom se ur í podobná mnoºina prost edních uzl. Pro jejich ur- 25

32 Obrázek 6: Prost ední uzly a ur ování cíl. ení se pouºije stejný postup, který byl popsán d íve pro redukci po tu cíl. Uzly se postupn nahrazují rodi i, neº klesne jejich po et pod danou mez. Maximální po- et je vhodné zvolit pro oba sm ry kolem N, kde N je po et v²ech uzl. Následn bude totiº pouºita první metoda pro redukci cíl, p i které bude po ítána heuristická vzdálenosti z kaºdého prost edního uzlu v prvním strom do kaºdého prost edního uzlu v druhém strom. Kdyº je po et prost edních uzl p ibliºn roven N, tak pak po et výpo t heuristiky je ádov N, coº je je²t p ijatelné. Moºný výb r prost edních uzl je ukázán na obrázku 6 (prost ední uzly jsou vybarveny ²ed ). Je tam také znázorn n výb r (dvou) cílových uzl (t 1, t 2 ) pro prost ední uzel a z prvního stromu. Pokud pro heuristiku platí trojúhelníková nerovnost, tak je moºné odhady zlep²it pomocí vý²e uvedené techniky. K tomu je ale pot eba spo ítat pro v²echny prost ední uzly u hodnotu mindi u. Po et cíl se nakonec zredukuje na poºadovaný po et druhou metodou. Optimální po et cíl závisí na konkrétní úloze. Pro cílové uzly se pak je²t spo ítají statistiky pot ebné pro výpo et dynamické heuristiky. P i jejich výpo tu je moºné vynechat otev ené uzly v podstromech prost edních uzl, které byly vy azeny na základ první metody (heuristického odhadu vzdálenosti). 3.6 St ídavé prohledávání Zcela jiný algoritmus je zaloºen na my²lence prohledávat i v druhé fázi z obou stran. Tento algoritmus op t vyuºívá dynamickou heuristiku. Základem je IDA*, podobn jako u druhé fáze jednosm rného prohledávání. Rozdíl je v tom, ºe nyní se v kaºdé 26

33 iteraci spustí prohledávání st ídav z obou sm r. Jakou to m ºe mít výhodu? Kdyº je spu²t no prohledávání z n jakého uzlu, a není nalezena cesta krat²í neº aktuální limit L, tak je moºné vylou it tento uzel z výpo tu dynamické heuristiky pro tuto iteraci. Tím m ºe dojít ke zlep²ení dynamické heuristiky pro druhý sm r. Moºností jak toho vyuºít je více, zde bude popsána jedna z nich. Otev ené uzly budou se azeny vzestupn podle hodnoty rozdílu. Na základ tohoto po adí budou vybírány uzly, ze kterých bude spu²t no prohledávání algoritmem IDA*. St ídav jsou zkoumány uzly z prvního a z druhého stromu. Je pouºita dynamická heuristiky s aktuální hodnotou nejmen²ího rozdílu, která je rovna rozdílu uzlu, který je na ad. Tato hodnota postupn roste, a tak se dynamická heuristika zlep²uje. Tím se zrychluje prohledávání. Není nutné spustit prohledávání ze v²ech uzl v obou sm rech, sta í ze v²ech uzl v jednom sm ru. Otázka, kdy má být sm r zm n n, je sloºitá. Jsou moºné dva extrémy. Bu m ºe být sm r zm n n po kaºdém prozkoumaném uzlu, a nebo naopak m ºe být zm n n jen jednou. Ideální je nejspí² kompromis t chto dvou p ístup. Ne vºdy musí být tento algoritmus výhodný. Nejd leºit j²í je, aby rozdíly otev ených uzl byly dostate n velké. Kdyº bude mít v t²ina uzl rozdíl nula, tak nelze ekat ºádné zlep²ení. Nejspí² by naopak do²lo ke zpomalení oproti prohledávání jen z jednoho sm ru. Uzly mohou mít malé rozdíly bu proto, ºe je heuristika velmi p esná, a nebo proto, ºe se v první fázi nedo²lo do dostate né hloubky. Je proto d leºité vytvo it v první fázi co nejv t²í stromy. Pokud mají v²echny uzly podobné rozdíly, tak je moºné pracovat s f-hodnotami. lo by dokonce vybírat za b hu bu uzly s nejmen²ím rozdílem, nebo uzly s nejmen²í f-hodnotou, podle toho, co je výhodn j²í. Takové algoritmy by ale byly uº dost sloºité. 27

34 Obrázek 7: Loydova patnáctka 4 Aplikace na e²ení úloh 4.1 Loydova patnáctka Loydova patnáctka (15 puzzle) je známý hlavolam. Ukázka jednoho zadání je na obrázku 7. ƒtvercová hrací deska je rozd lena na 4 sloupce a 4 ádky, tedy na 16 men²ích tvere k. Jedno místo je volné, v ostatních jsou umíst ny tvere ky o íslované ísly od 1 do 15, nebo n jak jinak unikátn ozna ené. Cílem je p esunout tvere ky na poºadované pozice (se adit podle ísel). Moºným tahem je p esun tvere ku na volné místo. P esouvat lze ale pouze p ímé sousedy volného polí ka. Ne kaºdé zadání má e²ení. Ne e²itelná zadání je ale moºné snadno rozpoznat. Tahy totiº zachovávají invariant, kterým je parita sou tu po tu inverzí permutace o íslovaných tvere k a ísla ádku, ve kterém je volné místo. Tím jsou pozice rozd leny do dvou t íd. Úloha je e²itelná, jen kdyº je po áte ní pozice ve stejné t íd jako cílová. Není t ºké najít e²ení, ale mnohem obtíºn j²í je najít e²ení s nejmen²ím po tem tah. Kdyº si stavy hlavolamu p edstavíme jako vrcholy grafu a tahy jako hrany mezi t mito vrcholy, tak je pak úlohou nalezení nejkrat²í cesty mezi po áte ní a cílovou pozicí. K e²ení úlohy je tedy moºné pouºít jakýkoliv algoritmus na hledání nejkrat²í cesty v grafu. Tato úloha je ukázkovým p íkladem na pouºití informovaného prohledávání. Jednoduchou, a p itom pom rn dobrou heuristikou je sou et manhattanských vzdáleností o íslovaných tvere k. Manhattanská vzdálenost se spo ítá jako sou et absolutních hodnot rozdíl sou adnic tvere ku v aktuální a v cílové pozici. Tato heuristika je konzistentní, protoºe se b hem tahu m ºe zm nit nejvý²e o jedna. Protoºe je pro cílový vrchol nulová, tak je i p ípustná. Je jí moºné spo ítat mezi libovolnými dv ma pozicemi. Platí pro ni dokonce trojúhelníková nerovnost. To proto, ºe trojúhelníková nerovnost platí pro manhattanské vzdálenosti a sou tem se zachovává. 28

35 4.2 Zobecn ní úlohy V p ípad Loydovy patnáctky je heuristika jednoduchá, protoºe kaºdý tvere ek se vyskytuje jen jednou a tahy jsou velmi jednoduché. Bylo by moºné vytvo it podobnou heuristiku i pro sloºit j²í úlohy? Loydovu patnáctka lze zobecnit tak, ºe tvere k se stejným íslem (ozna ením) m ºe být více. Pak je op t moºné pouºít jako základ manhattanskou metriku. K jakému tvere ku z cílové pozice má ale být po ítána vzdálenosti, kdyº je jich víc stejného typu? Bude fungovat, kdyº se vezme vºdy vzdálenost k nejbliº²ímu tvere ku. Je to ur it p ípustná heuristika, protoºe kaºdý tvere ek musí být p esunut aspo tolikrát. Trojúhelníková nerovnost platí také, a proto je tato heuristika i konzistentní. (Konzistence automaticky plyne z p ípustnosti a z trojúhelníkové nerovnosti.) Lep²ím, ale výpo etn náro n j²ím e²ením je spo ítat hodnotu minimálního perfektního párování v úplném bipartitním grafu, kde první partita je tvo ena tvere ky z první pozice, druhá partita je tvo ena tvere ky z druhé pozice a hrany jsou ohodnoceny vzdáleností tvere k v manhattanské metrice. Je to dolní odhad, protoºe kdyby byla nalezena krat²í cesta, tak hrany bipartitního grafu vybrané podle toho, jaký tvere ek se kam p esunul, tvo í perfektní párování, jehoº ohodnocení musí být v t²í neº délka cesty. To znamená, ºe n který tvere ek musel být p esunut b hem mén tah, neº odpovídá manhattanské metrice. To ale nejde, takºe jsme do²li ke sporu. Platí i trojúhelníková nerovnost, protoºe sloºením dvou minimálních perfektních párování vznikne perfektní párování, které nem ºe mít v t²í ohodnocení neº sou et t ch dvou. Sloºením se myslí to, ºe z hran {u, v} a {v, w} vznikne hrana {u, w}. Jelikoº pro manhattanskou vzdálenost platí trojúhelníková nerovnost, tak je ohodnocení hrany {u, w} nejvý² rovno sou tu ohodnocení hran {u, v} a {v, w}, a tedy celkové ohodnocení tohoto párování nem ºe být v t²í neº sou et dvou p vodních. Minimální perfektní párování m ºe mít ohodnocení bu stejné, a nebo je²t men²í. Dal²í zobecn ní úlohy m ºe vzniknout zm nou povolených tah. Tahy v Loydov patnáctce si lze p edstavit jako prohození dvou sousedních tvere k, z nichº jeden musí být prázdné místo. Kdyº bychom cht li popsat pohyb ²achového krále po hrací desce, tak by p ibyl tah, který prohodí krále s volným polí kem po diagonále. V n kterých úlohách se mohou vyskytovat i sloºit j²í pohyby. P íklad je moºné vzít op t z ²achu, kde se jezdec nep esouvá na sousední polí ka, ale ská e o t i polí ka dál (o dv horizontáln a o jedno vertikáln, nebo naopak). Obecn tah vypadá tak, ºe se na desce najde n jaký vzor, a ten se nahradí jiným. Jediný poºadavek je, aby se jednalo o permutaci, tedy aby byl zachován po et tvere k jednotlivých typ. 29

36 Jak vytvo it heuristiku pro úlohu s libovoln denovanými tahy? Je moºné vyjít z vý²e uvedené heuristiky. Rozdíl spo ívá v tom, ºe nyní se b hem jednoho tahu m ºe ohodnocení zm nit o víc neº o jedna. To jde vy e²it jednodu²e tak, ºe se ohodnocení vyd lí (se zaokrouhlením nahoru) koecientem, který udává, o kolik se m ºe maximáln b hem jednoho tahu zm nit p vodní heuristika. Tím vznikne ur- it konzistentní heuristika. Jelikoº je ohodnocení pro cíl nulové, je tato heuristika i p ípustná. Dokonce pro ni platí i trojúhelníková nerovnost, protoºe kdyº platí pro p vodní heuristiku h 0, tak také platí pro libovolnou funkci h (x, y) = h0 (x,y), kde k 1. D kaz: k h (x, z) + h h0 (x, z) h0 (z, y) h0 (x, z) (z, y) = + + h 0(z, y) k k k k h0 (x, y) = h (x, y) k Obecný postup je tedy takový, ºe se nap ed nalezne n jaké ohodnocení h 0, pro které platí trojúhelníková nerovnost, a pro které je h 0 (x, x) = 0. Poté se nalezne k, takové, ºe k h 0 (x, t) h 0 (y, t) pro v²echny stavy x, y a t, kde y vznikne n jakým tahem z x. Výslednou heuristikou je pak h(x, y) = h0 (x,y). Podle p edchozích pozorování je heuristika h p ípustná, konzistentní a platí pro ni trojúhelníková nerovnost. Podstatné tedy je, najít vhodné ohodnocení h 0. Vlastnosti poºadované po h 0 se zachovávají sou tem. Manhattanská vzdálenost dvou polí ek i vzdálenost více stejných polí ek po ítaná pomocí minimálního perfektního párování poºadavky spl ují. Ohodnocení h 0 je tedy moºné získat sou tem vzdáleností vybraných polí ek. Ne vºdy musí být výhodné vzít v úvahu v²echna polí ka. P íkladem je Loydova patnáctka, kde se nevyplatí brát v úvahu prázdné polí ko, protoºe pak by bylo k = 2 a odhady vzdáleností by byly hor²í. Je moºné zvolit i jiné metriky pro ur ení vzdálenosti. Nap íklad pro pohyb ²achového krále by byla výhodn j²í maximová metrika, která spo ítá vzdálenost jako maximum z absolutních hodnot rozdíl sou adnic. Tato vzdálenost je sice vºdy men²í, neº vzdálenost v manhattanské metrice, ale v tomto p ípad je výhodn j²í, protoºe se b hem tahu m ºe zm nit jen o jedna, zatímco manhattanská metrika by se mohla zm nit aº o dv. Pokud jsou moºné pohyby tvere ku velmi sloºité, a pokud deska není p íli² velká, tak je moºné spo ítat minimální moºný po et tah k p esunu z kaºdého polí ka do kaºdého polí ka a uloºit tyto hodnoty do tabulky. Jedná se op t o výpo et nejkrat²ích cest v grafu, tentokrát ale mezi kaºdými dv ma body. K tomu k 30

37 je moºné pouºít nap íklad Floyd vwarshall v algoritmus. Pokud tahy nejsou symetrické, tak se nemusí jednat o metriku (neplatí symetrie), ale poºadované vlastnosti spln ny jsou. V kaºdém grafu totiº platí d(x, y) d(x, z) + d(z, y) a d(x, x) = 0. Poslední v cí je, jak spo ítat koecient k. Sta í se omezit na to, jak k spo ítat pro jeden tah, pro víc tah se poté spo ítá jako maximum. Pro daný tah se zvlá² spo- ítají maximální zm ny ohodnocení pro jednotlivé typy tvere k, které jsou tahem ovlivn ny. Pokud je p esouván od jednoho typu vºdy maximáln jeden tvere ek, tak se zm na ohodnocení spo ítá snadno pomocí metriky pouºité pro výpo et vzdáleností polí ek. Pokud je víc tvere k stejného typu, které zm ní polohu, tak se horní odhad zm ny vypo ítá p es perfektní párování minimální ceny v bipartitním grafu podobn, jako se po ítá samotné ohodnocení. 4.3 Výb r heuristiky V p ípad zobecn né úlohy nebyla heuristika denována jednozna n. V n kolika místech bylo e eno, ºe je moºné si vybrat z r zných variant. Byly popsány t i r zné metriky pro výpo et vzdálenosti polí ek. Ale kterou vybrat? Dále bylo e eno, ºe p i výpo tu heuristiky je n kdy vhodné uvaºovat jen n které tvere ky. Není ale jasné, jak je ur it. Pokud jde o výb r metriky pro výpo et vzdáleností, tak je moºné aspo intuitivn popsat, v jakých situacích je která lep²í. Manhattanská metrika je univerzální. Je jí moºné pouºít vºdy, ale za ur itých okolností nemusí být úpln nejlep²í. Maximová metrika se hodí tehdy, kdyº se tvere ek m ºe pohybovat po diagonále. Ur it je lep²í v situaci, kdy maximální zm na ohodnocení b hem jakéhokoliv tahu u maximové metriky je polovi ní neº u manhattanské. P edpo ítaná tabulka vzdáleností je pouºitelná, jen kdyº jsou rozm ry pozice malé. V pam ti totiº musí být uloºena tabulka o velikosti druhé mocniny po tu polí ek. Výhodná je jednak v situaci, kdy tahy jsou komplikované, ale také v situaci, kdy jsou p ítomné statické tvere ky. To jsou tvere ky, pro které neexistuje tah, který by s nimi mohl pohnout. P es polí ka obsazená takovými tvere ky se ºádný jiný tvere ek nem ºe p esouvat. To je moºné vyuºít p i po ítání tabulky vzdáleností. Výb r tvere k, které mají být zohledn ny, je náro n j²í. ƒím je jich totiº víc, tím m ºe být v t²í základní ohodnocení h 0, ale také d lící koecient k, protoºe se ohodnocení m ºe b hem jednoho tahu víc zm nit. Tyto dva jevy jdou proti sob. V konkrétních p ípadech m ºe být z ejmé, jaké tvere ky zohlednit. Tak je tomu u Loydovy patnáctky. Obecn to ale v bec nemusí být moºné. V n kterých úlohách m ºe dávat pro n jaké stavy lep²í výsledky jedna heuristika, zatímco pro jiné druhá 31

38 heuristika. Na²t stí je moºné spo ítat více heuristik a z nich vzít maximum. To obvykle není nijak asov náro né, protoºe vzdálenosti polí ek sta í spo ítat jen jednou. Tím se trochu usnadní e²ení problému, protoºe není nutné vybírat jedinou heuristiku, ale m ºe jich být víc. Pro jejich výb r je pot eba zavést n jaké kritérium, jak je objektivn hodnotit. Pro daný po áte ní a cílový stav zvolíme jako hodnocení heuristik odhad vzdálenosti mezi t mito stavy, které heuristiky dávají. Pokud je heuristik na výb r málo, tak lze v²echny ozkou²et a vybrat n kolik nejlep²ích. Pokud je jich hodn, tak je nutné pouºít n jakou p ibliºnou metodu. Moºným e²ením je nap íklad pouºít lokální prohledávání. Za neme s n jakou náhodnou mnoºnou tvere k. Tuto mnoºinu se pokusíme zlep²it tak, ºe v²echny tvere ky postupn zkusíme p idat do mnoºiny, nebo naopak odebrat, kdyº uº v ní jsou. Pokud je výsledná heuristika lep²í, tak dále pokra ujeme s novou mnoºinou. Takto pokra ujeme, dokud je moºné najít zlep²ení. Výsledná heuristika nemusí být nejlep²í, ale opakováním tohoto procesu je moºné vybrat relativn dobré heuristiky. Model, kdy heuristika je dynamicky vybrána pro konkrétní úlohu, je jist moºné pouºít i p i e²ení jiných problém. 4.4 Problém obchodního cestujícího Problém obchodního cestujícího spo ívá v nalezení nejkrat²í hamiltonovské kruºnice, tedy kruºnice, která prochází v²emi vrcholy grafu práv jednou. Na vstupu je graf G = (V, E) s ohodnocenými hranami, které obecn mohou být orientované. Je moºné p edpokládat, ºe ohodnocení hran je kladné, protoºe p i tením libovolné konstanty ke v²em hranám se e²ení nezm ní. Výstupem je hamiltonovská kruºnice, která má nejmen²í sou et ohodnocení hran. Pokud je takových e²ení víc, tak m ºe být výsledkem libovolné z nich. Jedná se o jeden z nejznám j²ích p íklad NP-t ºké úlohy. V sou asné dob není znám algoritmus, který by tuto úlohu e²il s polynomiální asovou sloºitostí. Jedna moºnost jak tento problém vy e²it je p evést ho na úlohu nalezení nejkrat²í cesty v jistém grafu 15. Nap ed je pot eba zvolit libovolný vrchol v 0 V. Pak denujeme graf G 2 = (V 2, E 2 ), kde V 2 = {(N, u) N V, u N} {(, v 0 )} a E 2 = {((N 1, u 1 ), (N 2, u 2 )) (N 1, u 1 ) V 2, u 2 V \ N 1, (u 1, u 2 ) E, N 2 = N 1 {u 2 }}. Vrcholy jsou dvojice, kde první hodnotou je mnoºina nav²tívených vrchol a druhou hodnotou je poslední nav²tívený vrchol. Ohodnocení hrany ((N 1, u 1 ), (N 2, u 2 )) v G 2 je stejné jako ohodnocení hrany (u 1, u 2 ) v G. Hamiltonovské kruºnici v G 15 V dne²ní dob se ale obvykle pouºívají jiné metody, nap íklad tzv. metoda v tví a mezí. 32

39 odpovídá cesta z s = (, v 0 ) do t = (V, v 0 ) v grafu G 2 se stejnou délkou. Stejn tak pro kaºdou cestu z s do t je moºné najít odpovídající hamiltonovskou kruºnici v G. Hrany cesty p evádí na hrany kruºnice zobrazení f : E 2 E 1 takové, ºe f(((n 1, u 1 ), (N 2, u 2 ))) = (u 1, u 2 ). Hledání nejkrat²í cesty je sice jednoduchá úloha, ale je nutné si uv domit, ºe po- et vrchol grafu G 2 roste exponenciáln vzhledem k po tu vrchol grafu G. P ímo z denice vrchol dostáváme, ºe 2 V V 2 V 2 V, protoºe pro kaºdou podmnoºinu N V existuje aspo jeden a nejvý²e V vrchol. Je tedy vhodné pouºít n jakou heuristiku, která aspo trochu omezí po et vrchol, které bude nutné p i hledání cesty prozkoumat. Pro následující úvahy je pot eba, aby byl graf G úplný. To ale není problém, protoºe je moºné vºdy p idat hrany s velmi velkým ohodnocením (nekone no). Jedna z nejjednodu²²ích heuristik je zaloºena na minimální kost e grafu. Kostra grafu je podgraf, který je stromem. Minimální kostra má nejmen²í moºný sou et ohodnocení hran. Normáln se kostra uvaºuje jen pro neorientované grafy. Pokud bychom cht li tuto heuristiku pouºít i pro orientované grafy, tak je nutné p i ur ení minimální kostry uvaºovat hrany neorientovan. Pokud by v grafu byly dv opa né hrany s r znou cenou, tak se vezme niº²í cena. Najít minimální kostru je moºné nap íklad pomocí Jarníkova 16, nebo Kruskalova algoritmu. Pro neprázdnou mnoºinu P V ozna me hodnotu minimální kostry na podgrafu grafu G indukovaném mno- ºinou P jako mst(p). Pro libovolné dva vrcholy v 1, v 2 V 2, kde v 1 = (N 1, u 1 ) a v 2 = (N 2, u 2 ) je heuristická funkce h denována takto: 0 pokud v 1 = v 2 h(v 1, v 2 ) = mst((n 2 \ N 1 ) {u 1, u 2 }) pokud N 1 N 2 + jinak Nap ed dokáºeme, ºe heuristika je p ípustná, tedy v 1, v 2 V 2 h(v 1, v 2 ) d(v 1, v 2 ). Rozebereme postupn v²echny t i p ípady z denice heuristiky. 1. Kdyº v 1 = v 2, tak je h(v 1, v 2 ) = 0 = d(v 1, v 2 ), takºe nerovnost platí. 2. Ozna me T = (N 2 \ N 1 ) {u 1, u 2 }. Pokud v 1 s, tak cest z v 1 do v 2 v grafu G 2 odpovídá cesta z u 1 do u 2 v grafu G, která nav²tíví práv jednou kaºdý vrchol z T. To je zaji²t né tím, ºe kdyº se p ejde z vrcholu (N 3, u 3 ) do vrcholu (N 4, u 4 ), tak u 4 / N 3 a u 4 N 4 = N 3 {u 4 }. Na cest v grafu G 2 tedy 16 V zahrani í je Jarník v algoritmus znám spí²e jako Prim v algoritmus. 33

40 nemohou být dva vrcholy se stejnou druhou sloºkou. Jediná výjimka nastane kdyº v 1 = s, k tomu se ale vrátíme pozd ji. Ohodnocení cesty z v 1 do v 2 je stejné, jako ohodnocení odpovídající cesty z u 1 do u 2 v grafu G. Tato cesta v G je kostrou podgrafu indukovaného mnoºinou T. Délka této cesty tedy musí být aspo tak velká, jako hodnota minimální kostry na tomto podgrafu. Proto platí h(u 1, u 2 ) = mst(t ) d(u 1, u 2 ). Zbývá o²et it p ípad, kdy v 1 = s. Nech máme libovolnou cestu z s do v 2. Pokud se na této cest neopakuje uzel s druhou sloºkou v 0, tak je moºné pouºít p edchozí úvahy a nerovnost tedy platí. P edpokládejme tedy, ºe se na cest n jaký vrchol odpovídající v 0 vyskytuje. Ozna me s následníka s na této cest. Uº jsme dokázali, ºe h(s, v 2 ) d(s, v 2 ) d(s, v 2 ). Zárove platí, ºe h(s, v 2 ) = h(s, v 2 ), protoºe p íslu²né mnoºiny vrchol uvaºované p i výpo tu minimální kostry jsou v obou p ípadech stejné. To proto, ºe v 0 N 2 a zárove v 0 nem ºe být v mnoºin nav²tívených vrchol s. 3. Zbývají p ípady, ºe N 1 = N 2, u 1 u 2 a ºe N 1 N 2. V obou p ípadech je jasné, ºe ºádná cesta z v 1 do v 2 nem ºe existovat, protoºe mnoºiny nav²tívených vrchol se v kaºdém kroku zv t²í a nikdy z nich ºádný prvek nem ºe vypadnout. Dále dokáºeme, ºe pro heuristiku h platí trojúhelníková nerovnost: v 1, v 2, v 3 V 2 h(v 1, v 3 ) h(v 1, v 2 ) + h(v 2, v 3 ) Pro i {1, 2, 3} ozna me v i = (N i, u i ). Pokud v 1 = v 2 nebo v 2 = v 3, tak nerovnost platí triviáln. Stejn tak pokud neplatí N 1 N 2 nebo N 2 N 3, protoºe pak je pravá strana rovna +. Dále tedy p edpokládáme, ºe N 1 N 2 N 3. Ozna me je²t : T 1 = (N 2 \ N 1 ) {u 1, u 2 } T 2 = (N 3 \ N 2 ) {u 2, u 3 } T 3 = (N 3 \ N 1 ) {u 1, u 3 } Chceme vlastn dokázat, ºe mst(t 3 ) mst(t 1 ) + mst(t 2 ). Z vlastností mnoºin a z toho, ºe u 2 T 3, lze odvodit T 1 T 2 = T 3 a u 2 T 1 T 2. Vrchol u 2 je v T 3, protoºe musí být v N 3 a nem ºe být v N 1. Spojením minimálních koster pro T 1 a T 2 tak vznikne souvislý podgraf na vrcholech T 3, který musí mít aspo tak velký sou et 34

41 ohodnocení hran, jako minimální kostra pro T 3. Trojúhelníková nerovnost tedy platí. Ve v t²in algoritm není pot eba po ítat heuristickou vzdálenost mezi libovolnými dv ma vrcholy, ale sta í odhad vzdálenosti do cíle a u obousm rného prohledávání je²t odhad vzdálenosti z po átku. M ºeme tedy denovat klasické heuristiky h 1 (v) = h(v, t) a h 2 (v) = h(s, v). Jelikoº je heuristická funkce h p ípustná a platí pro ni trojúhelníková nerovnost, tak jsou heuristiky h 1 a h 2 p ípustné a konzistentní. Pro nalezení nejkrat²í cesty je moºné pouºít jakýkoliv algoritmus pro obousm rné informované prohledávání, který byl v tomto textu popsán. Otázka je, jak dobrá je heuristika zaloºená na minimální kost e. Pouºíváme ji vlastn k dolním odhad m délek hamiltonovských cest v podgrafech G. Dolní odhady dává z toho d vodu, ºe podmínky pro kostru jsou relaxací podmínek pro hamiltonovskou cestu. U kostry se m ºe stát, ºe do n kterého vrcholu vede více neº dv hrany. To je neºádoucí jev, protoºe kdyby k n mu nedo²lo, tak máme hamiltonovskou cestu, a tudíº optimální odhad. Zajímavé je, ºe m ºeme graf upravit tak, aby tato heuristika pracovala lépe. Pokud zvý²íme ohodnocení v²ech hran vedoucích do n jakého vrcholu o stejnou konstantu, tak neovlivníme e²ení. Na za átku tedy m ºeme upravit graf následujícím zp sobem: 1. Nap ed najdeme minimální kostru. 2. Poté ur íme vrcholy, které mají v minimální kost e stupe v t²í neº dva. 3. Nakonec zvý²íme ohodnocení u v²ech hran, které vedou do t chto vrchol. Tím m ºeme dosáhnout toho, ºe po p epo ítání minimální kostry povede do vybraných vrchol mén hran. Tento postup je moºné n kolikrát opakovat. Jedná se samoz ejm jen o heuristiku, není moºné zaru it, ºe ve výsledném grafu bude hledání cesty probíhat rychleji. Zárove není jasné, o kolik se má ohodnocení zvý²it a kolikrát se má postup opakovat. Podrobné rozebrání této metody je ale nad rámec tohoto textu, dob e to popisují nap íklad Held a Karp [12]. Pokud je G symetrický, tedy kdyº hrany nejsou orientované, tak má graf G 2 tu zajímavou vlastnost, ºe p i prohledávání z obou sm r vznikají symetrické stromy. Druhý strom dokonce není nutné v bec explicitn vytvá et. Jen je t eba si uv domit, kterému uzlu z druhého stromu odpovídá daný uzel z prvního stromu a jak se zm ní význam heuristik h 1 a h 2. Tím odpadá základní nevýhoda obousm rného prohledávání. Problém obchodního cestujícího je tedy úloha, ve které m ºe obousm rné heuristické prohledávání podávat výrazn lep²í výsledky neº klasické jednosm rné. 35

42 5 Implementace algoritm 5.1 P ehled Tato bakalá ská práce navazuje na ro níkový projekt, v rámci n hoº byly implementovány n které d íve popsané algoritmy. Základní sou ástí je knihovna algoritm pro hledání nejkrat²í cesty. Obsahuje jak algoritmus pro klasické jednosm rné prohledávání, tak i algoritmy pro obousm rné prohledávání. V²echny algoritmy hledají nejkrat²í cestu co do po tu hran, nepracují tedy s ohodnocením hran. D vod, pro není uvaºováno ohodnocení hran, je ten, ºe to nebylo pot eba v e²ených úlohách a ºe to umoºnilo ud lat jisté optimalizace, které by v obecném p ípad nebyly moºné. Z d vodu efektivity se neukazuje jako praktické mít jeden algoritmus jak pro grafy s ohodnocenými hranami, tak pro grafy s jednotkovými hranami. Kód je napsán v jazyce C++. Algoritmy mají podobu ²ablon t íd a jsou umíst ny v hlavi kových souborech. Pro pouºití tedy sta í vloºit tyto soubory do soubor, ve kterých má knihovna být pouºita. Mezi parametry ²ablony je p edev²ím typ vrchol a typ heuristické funkce. Parametry mají implicitní hodnotu, kterou jsou abstraktní t ídy VertexType a HeuristicType. T ída VertexType obsahuje n kolik ist virtuálních metod: ˆ virtual bool operator ==(VertexType& other) ˆ virtual size_t hash() ˆ virtual void neighbours(direction d, std::vector<vertextype*, my_allocator<vertextype*> > & n, VertexType* prev = NULL) Operátor == sloºí k porovnání dvou vrchol na rovnost. Metoda hash vrací ha²ovací hodnotu vrcholu. Metoda neighbours vrací následníky ve sm ru d. Krom toho má tato t ída je²t virtuální destruktor. HeuristicType má p edev²ím denován virtuální operátor (). Instance této t ídy je moºné pouºívat jako funkce se dv ma argumenty, kterými jsou ukazatelé na vrcholy. Hodnotou funkce je heuristický odhad vzdálenosti t chto vrchol. Uºivatel má dv moºnosti jak s t ídami prohledávacích algoritm pracovat. Bu m ºe pouºít ²ablonu s parametry, které odpovídají skute n pouºitým typ m, nebo m ºe nechat implicitní parametry a t ídy pro vrcholy a heuristiku odvodit od vý²e uvedených abstraktních t íd. Pro jednosm rné prohledávání je ur ena t ída (²ablona) ASSearch. Ta implementuje hledání nejkrat²í cesty pomocí dvoufázového algoritmu, který v první fázi pou- ºívá A* a ve druhé fázi IDA*. Kombinace t chto algoritm m ºe být zna ena jako 36

43 (ID)A*. Pro obousm rné prohledávání je denována t ída (²ablona) BHSearch, která má podobné vn j²í rozhraní jako ASSearch. I zde je pouºit dvoufázový algoritmus. V první fázi se pouºívá obousm rné prohledávání s dynamickou heuristikou. Pro druhou fázi je moºné zvolit jednu ze dvou moºností. Bu je moºné pouºít variantu BIDA* s hledáním nových cíl, nebo st ídavé prohledávání. Pro porovnání algoritm byl vytvo en jednoduchý program nazvaný SpeedTest. e²it zobecn ný hlavolam, který byl popsán v p edchozí kapitole, umí program PuzzleSolver. Oba programy se spou²tí z p íkazové ádky. PuzzleSolver dostane na vstupu soubor s denicí úlohy a pokusí se najít nejkrat²í e²ení. Kdyº je nalezeno, tak je vypsáno na výstup. Pomocí parametr p íkazové ádky je moºné mimo jiné zvolit algoritmus, který má být pouºit. Programy je moºné p eloºit jak na Linuxových opera ních systémech, tak i na Windows XP (32bit). Nem l by být problém zprovoznit je i na jiných platformách. Pro ízení p ekladu je pouºit systém cmake. Pro gracké znázorn ný algoritm byl je²t vytvo en program Labyrinth. Byl vyvíjen v prost edí Qt Creator a pot ebuje ke svému b hu knihovnu Qt. Umí znázornit pr b h algoritm p i hledání cesty v labyrintu, který je zadán jako obrázek. 5.2 ablona ASSearch ASSearch je ²ablona t ídy, která implementuje algoritmus na hledání nejkrat²í cesty. Pouºit je A* pro první fázi a IDA* pro druhou fázi tak, jak bylo popsáno v sekci 3.4. Uzly jsou reprezentovány t emi r znými t ídami. Základem je t ída Node, která je sama o sob pouºita pro uzav ené uzly. Obsahuje jen ukazatel na otce a na vrchol grafu. T ída OpenNode je odvozená od t ídy Node. Navíc obsahuje hodnotu vzdálenosti, f-hodnotu a dva ukazatele na dal²í otev ené uzly. Otev ené uzly je tak moºné uspo ádat do obousm rného spojového seznamu. Pro uzly v algoritmu IDA* je pouºit zvlá²tní typ NodeIDA. A* vyºaduje dv sloºit j²í datové struktury. První je prioritní fronta otev ených uzl, druhou je asociativní tabulka, která vrcholu p i azuje uzel prohledávacího stromu, pokud vrcholu n jaký uzel odpovídá. Prioritní fronta musí umoº ovat vkládat a odebírat otev ené uzly. Dále musí podporovat operaci, která najde a vrátí uzel s nejmen²í f-hodnotou. Vzhledem k tomu, ºe délka cest je rovna po tu hran, tak lze p edpokládat, ºe f-hodnoty budou celá ísla z malého intervalu. Dal²í d leºitou vlastností, která zjednodu²uje návrh fronty, je to, ºe kdyº je z fronty vrácen uzel s nejmen²í f-hodnotou, tak poté nikdy nem ºe být p idán uzel s men²í f-hodnotou. Otev ené uzly jsou rozt íd ny do seznam podle f-hodnoty. Seznamy jsou uloºené v kontejneru tak, ºe indexem je rozdíl f-hodnoty prvk seznamu a nejmen²í f-hodnoty. Seznam 37

44 prvku s nejmen²í f-hodnotou je uloºen zvlá². Kdyº má být vrácen uzel s nejmen²í f-hodnotou, tak se odebere první uzel ze seznamu uzl s nejmen²í f-hodnotou. Pokud je tento seznam prázdný, tak se nap ed zv t²í prom nná, která obsahuje nejmen²í f-hodnotu, a najde se první neprázdný seznam. Kv li jednoduchosti tohoto algoritmu nebyla pro frontu ani vytvá ena zvlá²tní t ída, ale v²e je implementováno v rámci ASSearch. Asociativní tabulka, která p evádí vrcholy na uzly, vyuºívá ha²ování. Byla pou- ºita vlastní, netradi ní implementace ha²ování. Ukládání tém libovolných dvojic skládajících se z klí e a hodnoty umoº uje ²ablona GeneralHashMap. Ta má jako parametry typy obou hodnot, ha²ovací funkci a ekvivalenci. Povinný je pouze první parametr (typ klí e). Bez druhého parametru t ída funguje jako mnoºina 17. Implicitní ha²ovací funkce zavolá na objekt metodu hash(). Implicitní ekvivalence pouºije na porovnávané prvky operátor ==. Uvnit t ída pouºívá dal²í ha²ovací tabulku, která ale umoº uje pouºívat jen celo íselné klí e. To se obchází tak, ºe jako klí vnit ní tabulky se vezme hodnota ha²ovací funkce. Druhou hodnotou je pak ukazatel na seznam prvk s touto ha²ovací hodnotou. P i pouºití dobré ha²ovací funkce by tyto seznamy m ly skoro vºdy obsahovat jen jeden prvek. Zaru it to ov²em obecn nelze. Vnit ní ha²ovací tabulka zaji² uje dobrou asovou sloºitost i v nejhor²ím p ípad, je velmi pam ov efektivní a p itom podává relativn dobré výsledky v praxi. Je ale velmi komplikovaná, proto zde nebude dále rozebírána. Podrobný popis toho, jak funguje, je moºné najít ve vývojové dokumentaci. Pokud je p ekro en daný maximální po et vygenerovaných uzl, nastane druhá fáze. Ve druhé fázi je stanoven limit na maximální délku cesty. Tento limit se v kaºdé iteraci zvý²í o jednu. B hem jedné iterace se spustí prohledávání ve stylu IDA* ze v²ech otev ených uzl. Uzly typu NodeIDA se ukládají na zásobník. Objekt tohoto typu obsahuje ukazatel na vrchol, ukazatel na p edchozí vrchol, vzdálenost a informaci o tom, jestli je uzav ený. Vºdy se vezme uzel z vrcholu zásobníku. Pokud je uzav ený, tak se zahodí. Pokud není uzav ený, tak se ozna í jako uzav ený a na zásobník se p idají jeho následníci. Uzly se také zahazují, kdyº jejich f-hodnota není men²í neº limit pro tuto iteraci. V okamºiku, kdy je nalezen cílový vrchol, tvo í uzav ené uzly na zásobníku cestu z po áte ního otev eného uzlu do cílového vrcholu. 17 T ída ale není navrºena pro to, aby byla pouºívána jako mnoºina, proto se v takovém p ípad nechová zcela optimáln. N které metody pak navíc nemají smysl. 38

45 5.3 ablona BHSearch ablona BHSearch se pouºívá podobn jako ASSearch. Rozdíl je p edev²ím v tom, ºe BHSearch pouºívá pro nalezení nejkrat²í cesty obousm rné prohledávání. Hledání cesty je op t dvoufázové. V první fázi je pouºito obousm rné prohledávání s dynamickou heuristikou. Pro kaºdý sm r je samostatný strom prohledávání, který je reprezentován vno enou t ídou SearchTree. Na tento objekt se st ídav pro oba sm ry volá metoda search, která expanduje n kolik dal²ích uzl. V p íslu²ném objektu BHSearch jsou uloºena data, která jsou sdílena ob ma prohledávacími stromy. Jedná se p edev²ím o ha²ovací tabulku pro p evod vrchol na uzel a o poloºky popisující dosud nejlep²í nalezenou cestu. Algoritmus první fáze funguje tak, jak byl popsán v sekci 3.2. Prohledávací strom je reprezentován podobn jako v p ípad ASSearch. Jen otev ené uzly mají n které poloºky navíc. U kaºdého otev eného uzly je ukládán je²t rozdíl (di) a hodnota dynamické heuristiky (fd-hodnota). Otev ený uzel má také navíc ukazatel na dvoj e. To je otev ený uzel z druhého sm ru pro stejný vrchol. Takový uzel samoz ejm nemusí vºdy existovat. Jeho nalezení znamená sou asn nalezení cesty z po átku do cíle. Ha²ovací tabulka p i azující vrchol m uzly je spole ná. Obsahuje informace o tom, ve kterých stromech se uzel nachází a ukazatel na jeden z nich (pokud je uzel v obou stromech, tak na ten v prvním strom ). V jednom kroku se tak ov í dv v ci najednou - jestli se stromy setkaly (byla nalezena nová cesta) a jestli ve stejném strom uº není uzel pro stejný vrchol. Dále má kaºdý prohledávací strom prioritní frontu otev ených uzl podobnou té u ASSearch. Zde je ale komplikovan j²í, protoºe kritérium výb ru má t i stupn. Výslednou frontu lze chápat jako kombinaci t í jednoduchých, podobných té z ASSearch. Do první se vkládají uzly podle fd-hodnoty. Uzly, které mají nejmen²í fd-hodnotu se pak za adí do druhé fronty, kde jsou rozt íd ny podle hodnoty rozdílu. A stejn tak uzly s nejmen²ím rozdílem jsou p emíst ny do t etí fronty, kde jsou uspo ádány podle vzdálenosti. V²e funguje efektivn, jen kdyº je málo rozdílných hodnot. To jsme ale p edpokládali. I p i implementaci dynamické heuristiky bylo vyuºito toho, ºe se hodnoty pohybují v malém intervalu. Pro pot eby výpo tu heuristické funkce obsahuje kaºdý strom instanci t ídy CompoundHeuristic. Tato heuristika je sloºena ze t í základních heuristik, které jsou implementovány pomocí t ídy DynamicHeuristic. Objekt tohoto typu obsahuje statistiky pro jednu veli inu. Veli inou se rozumí vzdálenost, rozdíl, a nebo f-hodnota. Pro kaºdou tuto veli inu je v objektu typu CompoundHeuristic jedna heuristika typu DynamicHeuristic. Do objektu typu DynamicHeuristic jsou 39

46 ukládány hodnoty dané veli iny v²ech otev ených uzl z jednoho stromu. Ty jsou ale navíc je²t rozd leny podle fd-hodnoty uzlu. To znamená, ºe se vlastn ukládají dvojice sloºené z fd-hodnoty a dané veli iny. Pro kaºdou fd-hodnotu je zvlá²tní instance t ídy IntContainer, kam se ukládají hodnoty uzl s danou fd-hodnotou. Datová struktura IntContainer je navrºena tak, aby bylo moºné hodnoty snadno p idávat, odebírat a zji² ovat minimum. Funguje velmi jednodu²e - pro kaºdou hodnotu je zde íta, který po ítá, kolikrát se daná hodnota vyskytuje. Minimum je uloºeno zvlá² a p i operacích je udrºováno aktuální. Na základ minimálních hodnot veli iny pro jednotlivé fd-hodnoty se udrºuje vektor mins takový, ºe mins[i] je minimum ze v²ech hodnot veli iny z uzl s fd-hodnotou men²í nebo rovnou i. Funkce má na vstupu veli inu, která spolu s ukládanou veli inou dává dohromady dynamickou heuristiku. Pro vzdálenost je to vzdálenost, pro f-hodnotu je to rozdíl a pro rozdíl je to zase f-hodnota. Hodnota dynamické heuristiky je p edpo ítaná v tabulce y. Na za átku je y[i]=i. Pokud je ale y[i] < i + mins[y[i]], tak je moºné y[i] o jedna zv t²it. Pravá strana je totiº dynamická heuristika s mezí y[i], viz 3.1. Hodnota y[i] nikdy neklesne, protoºe neklesají ani hodnoty v mins. Pro druhou fázi je moºné zvolit jeden ze dvou algoritm. Prvním je BIDA* s hledáním nových cíl. Druhým je st ídavé prohledávání. Tyto algoritmy byli popsány v 2.3, 3.5 a 3.6. První varianta je relativn komplikovaná. Je to proto, ºe se mnoºiny prost edních vrchol a p íslu²né cíle v kaºdé iteraci mohou zm nit a je pot eba rychle p epo ítat statistiky pro výpo et dynamické heuristiky. Je moºná nastavit maximální po et cíl a koecient, který ur uje, kolik má být prost edích uzl. Implementace st ídavého prohledávání je naproti tomu pom rn p ímo ará. 5.4 Program SpeedTest Program SpeedTest je velmi jednoduchý. Jeho jediným ú elem je porovnat rychlost r zných algoritm na hledání nejkrat²í cesty. Pouºívají se k tomu náhodn vygenerované e²itelné úlohy Loydovy patnáctky. V²echny volby testu se nastavují pomocí parametr p íkazové ádky. Seznam v²ech t chto voleb se vypí²e, kdyº je program spu²t n bez parametr. P i jednom spu²t ní se testuje vºdy jen jeden zvolený algoritmus. Je pochopiteln pot eba porovnávat algoritmy na stejných datech, takºe je moºné nastavit po áte ní hodnotu pro generátor pseudonáhodných ísel (volba -S). Tato hodnota ur uje vygenerované úlohy. Porovnávat je moºné ASSearch a BH- Search. Jelikoº BHSearch nabízí dv moºnosti pro druhou fázi, tak se jedná v podstat o t i algoritmy. P i spu²t ní je moºné krom výb ru algoritmu nastavit i takové parametry, jako je maximální po et uzl pro první fázi a asový limit na jedno hle- 40

47 dání. N které dal²í parametry se uplatní jen u n kterých algoritm, nap íklad maximální po et cíl u algoritmu s hledáním nových cíl. Popis v²ech moºných voleb lze najít v uºivatelské dokumentaci k tomuto programu. 5.5 Program PuzzleSolver Program PuzzleSolver hledá nejkrat²í e²ení zobecn ného hlavolamu, který byl popsán v sekci 4.2. Na vstupu je zadána n jaká cílová pozice, po áte ní pozice a jsou denovány p ípustné tahy. Pozice je obdélníková tabulka, která se skládá z men- ²ích tvere k. Tahy spo ívají v prohození n jakých tvere k. Popsány jsou pomocí podmínky a výsledku. Podmínka je vzor, který je pot eba v tabulce najít. Výsledek je pak permutací n kterých polí ek ze vzoru podmínky. Podrobný popis vstupního formátu je v uºivatelské dokumentaci. Zde bude pouºití programu p edvedeno na p íkladu hry sokoban. Ve h e sokoban je lov k v roli skladníka, který se pohybuje v uzav eném labyrintu. V n m jsou r zn rozmíst né bedny, které má za úkol p esunout na poºadovaná místa. Bedny jsou obvykle nerozli²itelné. Skladník je m ºe p esouvat jen tak, ºe je tla í. Nem ºe ale tla it víc neº jednu bednu najednou. Aby bylo moºné úlohu zapsat jako instanci zobecn ného hlavolamu, je pot eba je²t ur it místo, kde se má na konci skladník nacházet. Musí totiº být denován jediný cílový stav. Vstupní soubor musí mít na za átku denován seznam objekt, které se v hlavolamu vyskytují. Kaºdý objekt má p i azen jeden znak. V na²em p ípad máme tyto objekty (v závorce je uveden jejich znak): ˆ skladník (S), ˆ ze (#), ˆ volné místo (_), ˆ bedna (B) ƒásti vstupního souboru jsou rozd leny do blok. Blok za íná znakem %, za kterým hned následuje jméno bloku. Na stejném ádku za jménem bloku mohou být r zné parametry. Na dal²ích ádcích jsou pak data, která se vztahují k tomuto bloku. Objekty se denují pomocí bloku tiles takto: %t i l e s _#SB 41

48 Dále je pot eba denovat po áte ní a cílovou pozici. K tomu slouºí bloky start a target. Pozice se popí²e pomocí znakového obrázku. Mohou být pouºity jen znaky, které byly d íve denovány. Pozice musí mít obdélníkový tvar, to ale obvykle nevadí, protoºe je moºné zbývající místa n jak vyplnit (u sokobanu zdí). V ukázkovém p ípad vypadá denice pozic takto: %s t a r t ######### ### #### # B_# #_# #B_# # #S_# ######### %t a r g e t ######### ### #### # # #_# # # #_B_B#S_# ######### Nakonec je pot eba popsat p ípustné tahy. Jsou dv moºnosti. Bu se skladník jen p esune, a nebo sou asn i tla í bednu. Tyto tahy mohou být provedeny ve v²ech ty ech sm rech. Není ale nutné uvád t pravidlo pro kaºdý sm r zvlá². Sta í uvést p ed pravidly p epína %symetry. Ten zp sobí, ºe pro v²echny následující tahy se automaticky uvaºují i v²echna pravidla symetrická. Denice tah tedy vypadá takto: %symetry %move S S %move SB SB Pravidlo je denováno v bloku move. Nap ed se uvede podmínka ve form vzoru a poté je uveden výsledek. Podmínka a výsledek se denují znakovým obrázkem, po- 42

49 dobn jako pozice. Podmínka i výsledek musí mít obdélníkový tvar. Toto omezení lze ale snadno obejít. Je totiº moºné pouºít speciální znak?, který zastupuje tvere ek, na kterém nezáleºí. To nejsou v²echny moºnosti. Lze také denovat skupinu tvere k, coº pak umoºní denovat více pravidel najednou. Nap íklad tahy v Loydov patnáctce mohou být denovány takto: %group x ABCDEF %symetry %move 0x x0 Nap ed byla vytvo ena skupina v²ech tvere k (krom prázdného místa), která byla ozna ena x. Znak skupiny je pak pouºit v denici pravidla. To má ten efekt, ºe se za x dosadí v²echny moºné hodnoty ze skupiny. Zárove je pouºit p epína %symetry, takºe z jednoho pravidla jich nakonec vznikne 60. Je vid t, ºe i v jednoduché úloze m ºe být pravidel pom rn hodn. Kdyby se tahy generovaly tak, ºe se pro kaºdé pravidlo vyzkou²í v²echna moºná umíst ní a porovná se vzor podmínky s hodnotami pozice, tak by to bylo p íli² pomalé. Kv li obecnosti úlohy je t ºké d lat jakékoliv optimalizace. P esto se povedlo navrhnout algoritmus tak, aby v typických situacích fungoval dostate n rychle. Základem je mnoºina tzv. záchytných tvere k. Ta je vybrána tak, aby v kaºdém pravidle byl aspo jeden záchytný tvere ek a p itom aby byl po et záchytných tvere k v pozici co nejmen²í. Nap íklad v Loydov patnáctce sta í vzít jediný záchytný tvere ek - volné místo. Výb r tvere k do mnoºiny je provád n hladov. To znamená, ºe se mnoºina postupn zv t²uje, dokud nejsou pokryta v²echna pravidla. P i výb ru se zohled uje jednak to, v kolika nepokrytých pravidlech tvere ek je, a také to, kolik tvere k daného typu je v pozici. Hledání tahu za íná vºdy od záchytného tvere ku. Není tudíº nutné zkou²et v²echna moºná umíst ní pravidel. Kaºdé pravidlo je p i azeno k n kterém záchytnému tvere ku. Dále jsou pravidla rozt íd na podle tvaru. Pravidla se stejným tvarem jsou uloºena do stromu. Pr chod stromem odpovídá rozhodování, které pravidlo lze pouºít. Uzel odpovídá otestování jednoho polí ka. Kaºdý uzel m ºe mít tolik potomk, kolik je typ tvere ku. Následník se vybere podle hodnoty tvere ku v pozici. V listech jsou umíst ny struktury, které popisují efekt pravidla. Efekt m ºe být více, 43

50 protoºe m ºe být více pravidel se stejnou podmínkou. Pro samotné nalezení nejkrat²ího e²ení jsou pouºity d íve popsané algoritmy informovaného prohledávání. Heuristická funkce je implementována tak, jak bylo popsáno v p edchozí kapitole. Konkrétní algoritmus a jeho parametry je moºné nastavit pomocí parametr p íkazové ádky podobn jako u programu SpeedTest. 5.6 B h ve více vláknech V dne²ní dob mají i b ºné po íta e vícejádrové procesory. Paralelní provád ní tak nabízí cestu, jak zkrátit dobu b hu výpo tu. Na druhou stranu ne vºdy je b h ve více vláknech ºádoucí. Proto jsou t ídy ASSearch i BHSearch navrºeny tak, ºe je moºné pouºívat je s podporou vícevláknového zpracování i bez této podpory. Sta í p i konguraci systémem cmake (ccmake) nastavit volbu USE_TBB. Poté se program p eloºí tak, ºe v n kterých situacích pob ºí ve více vláknech. Alternativn je moºné nastavit p ímo stejnojmenné makro na za átku zdrojových soubor. Pokud je zvolena vícevláknová varianta, tak je pak k p ekladu i k b hu pot eba knihovna Intel Threading Building Blocks (Intel TBB). Filosoe knihovny Intel TBB je taková, ºe se nepracuje p ímo s vlákny, ale pouºívají se funkce, které se o optimální vyuºití vláken postarají samy. Nap íklad funkce tbb::parallel_for rozd lí zpracování pole do blok, které jsou p id lovány vlákn m. Po et vláken pro zpracování je zvolen automaticky podle skute ného po tu procesor (jader). Knihovna také denuje zámky a atomické operace. To jsou dal²í prvky, které jsou pro návrh vícevláknových aplikací d leºité. Dal²í zajímavou v cí, kterou m ºeme v knihovn najít, je alternativní alokátor pam ti tbb::scalable_allocator. Ten je moºné pouºít místo klasického std::allocator. M l by p inést vy²²í výkon u aplikací, které b ºí ve více vláknech a p itom intenzivn pracují s pam tí. Pokud tato knihovna není pouºita (není zvolena volba USE_TBB), tak se místo funkcí z knihovny pouºijí funkce, které d lají to samé, ale jen v jednom vlákn. Jejich denice je v t²inou triviální. Pouºitý typ alokátoru je uloºen v makru my_allocator. U v²ech funkcí, které jsou napojeny na prohledávací algoritmy, by tak m lo být p i pouºívání kontejner ze standardní knihovny pouºito toto makro místo std::allocator Nap íklad takto: std::vector<int, my_allocator<int> > intvector; 44

51 6 Porovnání algoritm 6.1 Metody pro porovnávání algoritm Bylo zde p edstaveno mnoho r zných algoritm. Hlavní d raz byl kladen na algoritmy, které pracují na principu obousm rného heuristického prohledávání. Ty jsou pom rn komplikované, a tak jedním z cíl této práce bylo zjistit, jestli se v bec vyplatí je pouºívat. Jsou rychlej²í neº klasické algoritmy? Odpov d t jednozna n na takovou otázku je velmi t ºké, moºná dokonce nemoºné. To, kolik asu algoritmy pot ebují, totiº závisí na mnoha okolnostech. V prvé ad velmi záleºí na konkrétní úloze. Tedy na tom, jak vypadá graf a jakou máme k dispozici heuristiku. Pro kaºdý algoritmus je snadné vymyslet p íklad, kdy bude fungovat velmi dob e, a jiný p íklad, kdy bude naopak pracovat ²patn. Takové p íklady jsou ale v t²inou um lé. Podstatné je, jak se algoritmy chovají na skute ných úlohách. A to se nejlépe zjistí tak, ºe se provedou experimenty, p i kterých se zm í as, který jednotlivé algoritmy pot ebují na vy e²ení dané úlohy. Tento postup má ale také své nevýhody. Experimentální výsledky jsou závislé na konkrétní implementaci algoritm a jsou ovlivn ny architekturou po íta e, na kterém jsou provád ny. M ºe se stát, ºe na jiném po íta i budou výsledky jiné. Speciáln u prohledávacích algoritm máme ale dal²í moºnosti, jak je porovnávat. ƒastým kritériem, které se u t chto algoritm zkoumá, je po et vygenerovaných uzl. To je d leºité kritérium, protoºe doba b hu algoritm je obvykle p ímo úm rná po tu vygenerovaných uzl. Tato veli ina je navíc nezávislá na konkrétním po íta i. Na p íkladu algoritmu BIDA* je ale vid t, ºe údaj o po tu vygenerovaných uzl m ºe být zavád jící. Jelikoº se v tomto algoritmu po ítá v kaºdém uzlu heuristický odhad vzdálenosti k mnoho vrchol m, tak je as strávený v jednom uzlu mnohem v t²í, neº u jiných algoritm. To nás p ivádí k dal²í veli in, kterou m ºe být zajímavé m it. Tou je po et volání heuristické funkce. Byly porovnávány t i algoritmy: ˆ jednosm rné heuristické prohledávání ( algoritmus (ID)A* ), ˆ obousm rné heuristické prohledávání s dynamickou heuristikou a st ídavým prohledáváním ve druhé fázi ( zna ený dále BHSDH ), ˆ obousm rné heuristické prohledávání s dynamickou heuristikou a s hledáním nových cíl ve druhé fázi 45

52 Druhý a t etí algoritmus mají stejnou první fázi. T etí algoritmus ovliv ují dva parametry: maximální po et cíl (x) a koecient po tu prost edních uzl (y). Algoritmus s parametry x, y pak bude zna en RQyTx (nap. RQ1T10). Pro porovnání byly pouºity programy popsané v p edchozí kapitole. 6.2 Loydova patnáctka Jednozna n nejoblíben j²í úlohou, na které se testují algoritmu pro hledání nejkrat²í cesty, je Loydova patnáctka. Program SpeedTest umí vygenerovat sadu pseudonáhodných úloh a zm it pro daný algoritmus dobu b hu, po et vygenerovaných uzl a po et volání heuristické funkce. Bylo e²eno 100 úloh. (Kaºdý algoritmus m l stejné.) ƒasy byly zm eny dvakrát. Sice se ob m ení mírn li²ila, ale rozdíl nebyl nijak zásadní, takºe bylo moºné hodnoty z jednoho m ení pouºít. Protoºe obousm rné algoritmy mají o n co v t²í pam ové nároky, tak byl limit na po et uzl pro první fázi u obousm rných algoritm o n co niº²í, aby v²echny algoritmy vyuºívaly p ibliºn stejné mnoºství pam ti. Výsledky jsou ukázány na n kolika grafech. První je na obrázku 8. Ukazuje pr - m rnou dobu b hu algoritm. Nejpomalej²í byl jednosm rný (ID)A*. V²echny obousm rné algoritmy byly výrazn rychlej²í. Nejlep²í z tohoto experimentu vychází BHSDH. Algoritmus s hledáním nových cíl byl spou²t n s r znými kombinacemi parametr, aby bylo vid t, jaký mají vliv. Vy²²í hodnota koecientu Q nepomohla, ale zdá se, ºe ím více je cíl, tím je algoritmus rychlej²í. Ke stejnému výsledku dosp li i auto i algoritmu BIDA*, který tvo í základ tohoto algoritmu. Je ale vid t, ºe zatímco rozdíl mezi 3 a 10 cíli je veliký, rozdíl mezi 10 a 50 uº je pom rn malý. Lze o ekávat, ºe dále se k ivka oto í a p i velkém po tu cíl za ne doba b hu stoupat. Algoritmus totiº nebyl na velký po et cíl p izp soben. A navíc podle nových výzkum to samé nastane i u BIDA* [5]. Na obrázku 9 je graf, na kterém jsou zaneseny navíc pr m rné hodnoty po tu vygenerovaných uzl a po tu volání heuristické funkce. Hodnoty jsou vyjád eny v procentech relativn k hodnotám algoritmu (ID)A*. Je moºné si v²imnout n kolika zajímavých v cí. Rozdíl v po tu vygenerovaných uzl mezi (ID)A* a ostatními algoritmy je je²t v t²í, neº rozdíl v dob b hu. To je dáno tím, ºe (ID)A* je jednodu²²í, a tak pot ebuje na zpracování jednoho uzlu mnohem mén asu. V druhé fázi nap íklad v bec nepouºívá ha²ovací tabulku. Pokud by byl algoritmus psán p ímo pro tuto úlohu a ne obecn, tak by ho bylo pravd podobn moºné je²t výrazn zrychlit. Ur it se nap íklad negativn projevuje to, ºe jsou vrcholy dynamicky alokované na hald. U ostatních algoritm to takový problém není, protoºe mají velkou vlastní re- 46

53 Obrázek 8: Pr m rná doba b hu algoritm. Obrázek 9: Srovnání doby b hu, po tu vygenerovaných uzl a po tu volání heuristické funkce. 47

54 četnost BHSDH / (ID)A* Obrázek 10: Histogram pom ru doby b hu BHSDH a (ID)A* ºii. Kombinace algoritm A* a IDA* p inesla sníºení pr m rného po tu nav²tívených uzl a doby b hu asi na 40 % oproti samotnému IDA*. 19 Dále stojí za pov²imnutí, ºe po et volání heuristické funkce u BHSDH se p íli² neli²í od po tu vygenerovaných uzl. V první fázi by m la být heuristika volána dvakrát na kaºdý uzel - jednou pro výpo et f-hodnoty a jednou pro výpo et rozdílu. Dominantní je ale druhá fáze, p i které se pro kaºdý uzel volá heuristika jen jednou, stejn jako u (ID)A*. U algoritmu s hledáním nových cíl se s rostoucím po tem cíl zv t²uje pom r mezi po tem volání heuristické funkce a po tem vygenerovaných uzl. Kupodivu to ale je²t neznamená, ºe roste samotný po et volání heuristiky. Kdyº je cíl 10, tak se volá heuristika mén krát, neº kdyº jsou cíle 3. Toto chování bylo op t pozorováno i u BIDA*. Pr m rné hodnoty, které byly uvaºovány v p edchozích p ípadech, mají jednu vadu - dávají velkou váhu obtíºným úlohám. Mohlo by se stát, ºe n jaký algoritmus, který podle p edchozích výsledk vypadá velmi dob e, je lep²í jen na n kolika málo t ºkých úlohách a na lehkých úlohách je hor²í. Proto byl je²t dále zkoumán pom r mezi asem, který pot eboval BHSDH a (ID)A* na jednotlivých úlohách. Na obrázku 19 IDA* byl simulován tak, ºe se spustil (ID)A* s minimálním limitem po tu uzl pro první fázi. 48

55 10 je zobrazen histogram t chto pom r. Na n m je mimo jiné vid t, ºe pouze na jediné úloze ze sta byl BHSDH pomalej²í neº (ID)A*. Vzhledem k tomu, ºe jsou úlohy voleny náhodn, tak je moºné chápat tento pom r jako náhodou veli inu. Pouºitím statistických metod lze odhadnout st ední hodnotu této náhodné veli iny. Interval spolehlivosti (s parametrem spolehlivosti 95%) vychází p ibliºn 0,2-0,29. Z toho lze usoudit, ºe pro náhodné úlohy Loydovy patnáctky je skute n BHSDH typicky rychlej²í neº (ID)A*. Algoritmus s hledáním nových cíl je jen o n co hor²í. 6.3 PuzzleSolver Loydova patnáctka je sice výborná úloha pro testování, ale jist je vhodné vyzkou²et, jak se algoritmy chovají i na jiných úlohách. K tomu se hodí program PuzzleSolver, který umoº uje r zné úlohy snadno denovat a následn vy e²it. Testovací sada úloh obsahuje dv úlohy Loydovy patnáctky (15p_1.in, 15p_2.in), jednu úlohu z ²achu (ch_2.in), dv úlohy na hledání cesty v bludi²ti (mz_1.in, mz_2.in) a n kolik zadání hry sokoban (sok_1.in, sok_3.in, sok_4.in, sok_6.in, sok_9.in). Program pochopiteln dokáºe vy e²it jen jednodu²²í zadání. Nap íklad n které úlohy sokobanu se vy e²it nepoda ilo. Program PuzzleSolver m í jen dobu b hu s p esností na sekundy. Výsledky pro úlohy, které se poda ilo vy e²it, jsou v tabulce 1. Vzorek úloh je pom rn malý, takºe není moºné d lat n jaké záv ry, ale je vid t, ºe i na t chto úlohách bylo obousm rné heuristické prohledávání výrazn lep²í neº (ID)A*. Jen u hledání cesty v bludi²ti nebyl rozdíl velký. Úloha délka e²ení (ID)A* (s) RQ1T10 (s) BHSDH (s) 15p_1.in p_2.in ch_2.in mz_1.in mz_2.in sok_1.in sok_3.in sok_4.in sok_6.in 154 > sok_9.in 76 > Tabulka 1: Úlohy e²ené pomocí programu PuzzleSolver. 49

56 6.4 Cesta v labyrintu Program Labyrinth umí znázornit, jak probíhá prohledávání bludi²t u r zných algoritm na hledání nejkrat²í cesty. Nav²tívené oblasti jsou obarveny. Zelená je oblast nav²tívená p i dop edném prohledávání a mod e je obarvena oblast nav²tívena p i zp tném prohledávání (je jen u obousm rných algoritm ). Nalezená cesta je vyzna- ena ervenou arou. Po áte ní bod byl blízko levého horního rohu, cílový bod byl asi uprost ed pravé hrany bludi²t. Na obrázku 11 je oby ejné prohledávání do ²í ky. Obrázek 12 ukazuje A*. Práci jednoduché implementace obousm rného prohledávání, která nepouºívá heuristiku, je moºné vid t na obrázku 13. Obrázek 14 pat í k algoritmu BHSDH. Je vid t, ºe A* a obousm rné algoritmy prozkoumají výrazn men²í oblast labyrintu. Obrázek 11: Hledání cesty v labyrintu - prohledávání do ²í ky. Obrázek 12: Hledání cesty v labyrintu - A*. 50

57 Obrázek 13: Hledání cesty v labyrintu - jednoduché obousm rné prohledávání. Obrázek 14: Hledání cesty v labyrintu - BHSDH. 51

Integrování jako opak derivování

Integrování jako opak derivování Integrování jako opak derivování V tomto dokumentu budete seznámeni s derivováním b ºných funkcí a budete mít moºnost vyzkou²et mnoho zp sob derivace. Jedním z nich je proces derivování v opa ném po adí.

Více

Skalární sou in. Úvod. Denice skalárního sou inu

Skalární sou in. Úvod. Denice skalárního sou inu Skalární sou in Jedním ze zp sob, jak m ºeme dva vektory kombinovat, je skalární sou in. Výsledkem skalárního sou inu dvou vektor, jak jiº název napovídá, je skalár. V tomto letáku se nau íte, jak vypo

Více

Limity funkcí v nevlastních bodech. Obsah

Limity funkcí v nevlastních bodech. Obsah Limity funkcí v nevlastních bodech V tomto letáku si vysv tlíme, co znamená, kdyº funkce mí í do nekone na, mínus nekone na nebo se blíºí ke konkrétnímu reálnému íslu, zatímco x jde do nekone na nebo mínus

Více

P íklad 1 (Náhodná veli ina)

P íklad 1 (Náhodná veli ina) P íklad 1 (Náhodná veli ina) Uvaºujeme experiment: házení mincí. Výsledkem pokusu je rub nebo líc, ºe padne hrana neuvaºujeme. Pokud hovo íme o náhodné veli in, musíme p epsat výsledky pokusu do mnoºiny

Více

Vektory. Vektorové veli iny

Vektory. Vektorové veli iny Vektor je veli ina, která má jak velikost tak i sm r. Ob tyto vlastnosti musí být uvedeny, aby byl vektor stanoven úpln. V této ásti je návod, jak vektory zapsat, jak je s ítat a od ítat a jak je pouºívat

Více

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody V praxi se asto setkávame s p ípady, kdy je pot eba e²it více rovnic, takzvaný systém rovnic, obvykle s více jak jednou neznámou.

Více

T i hlavní v ty pravd podobnosti

T i hlavní v ty pravd podobnosti T i hlavní v ty pravd podobnosti 15. kv tna 2015 První p íklad P edstavme si, ºe máme atomy typu A, které se samovolným radioaktivním rozpadem rozpadají na atomy typu B. Pr m rná doba rozpadu je 3 hodiny.

Více

Binární operace. Úvod. Pomocný text

Binární operace. Úvod. Pomocný text Pomocný text Binární operace Úvod Milí e²itelé, binární operace je pom rn abstraktní téma, a tak bude ob as pot eba odprostit se od konkrétních p íklad a podívat se na v c s ur itým nadhledem. Nicmén e²ení

Více

Vektor náhodných veli in - práce s více prom nnými

Vektor náhodných veli in - práce s více prom nnými Vektor náhodných veli in - práce s více prom nnými 12. kv tna 2015 N kdy k popisu n jaké situace pot ebujeme více neº jednu náhodnou veli inu. Nap. v k, hmotnost, vý²ku. Mezi t mito veli inami mohou být

Více

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web: Pravd podobnost a statistika - cvi ení Simona Domesová simona.domesova@vsb.cz místnost: RA310 (budova CPIT) web: http://homel.vsb.cz/~dom0015 Cíle p edm tu vyhodnocování dat pomocí statistických metod

Více

1. (18 bod ) Náhodná veli ina X je po et rub p i 400 nezávislých hodech mincí. a) Pomocí ƒeby²evovy nerovnosti odhadn te pravd podobnost

1. (18 bod ) Náhodná veli ina X je po et rub p i 400 nezávislých hodech mincí. a) Pomocí ƒeby²evovy nerovnosti odhadn te pravd podobnost (8 bod ) Náhodná veli ina X je po et rub p i nezávislých hodech mincí a) Pomocí ƒeby²evovy nerovnosti odhadn te pravd podobnost P ( X EX < ) (9 bod ) b) Formulujte centrální limitní v tu a pomocí ní vypo

Více

Reálná ísla a posloupnosti Jan Malý

Reálná ísla a posloupnosti Jan Malý Reálná ísla a posloupnosti Jan Malý Obsah 1. Reálná ísla 1 2. Posloupnosti 2 3. Hlub²í v ty o itách 4 1. Reálná ísla 1.1. Úmluva (T leso). Pod pojmem t leso budeme v tomto textu rozum t pouze komutativní

Více

Derivování sloºené funkce

Derivování sloºené funkce Derivování sloºené funkce V tomto letáku si p edstavíme speciální pravidlo pro derivování sloºené funkce (te funkci obsahující dal²í funkci). Po p e tení tohoto tetu byste m li být schopni: vysv tlit pojem

Více

ízení Tvorba kritéria 2. prosince 2014

ízení Tvorba kritéria 2. prosince 2014 ízení. prosince 014 Spousta lidí má pocit, ºe by m la n co ídit. A n kdy to bývá pravda. Kdyº uº nás my²lenky na ízení napadají, m li bychom si poloºit následující t i otázky: ídit? Obrovskou zku²eností

Více

BOZP - akcepta ní testy

BOZP - akcepta ní testy BOZP - akcepta ní testy Kristýna Streitová Zadavatel: Ing. Ji í Chludil 13. prosince 2011 Obsah 1 Úvod 2 1.1 Popis test....................................... 2 2 Testy 3 2.1 ID - 1 P ihlá²ení do systému.............................

Více

Pr b h funkce I. Obsah. Maxima a minima funkce

Pr b h funkce I. Obsah. Maxima a minima funkce Pr b h funkce I Maxima a minima funkce V této jednotce ukáºeme jak derivování m ºe být uºite né pro hledání minimálních a maximálních hodnot funkce. Po p e tení tohoto letáku nebo shlédnutí instruktáºního

Více

Kelvin v kapkový generátor

Kelvin v kapkový generátor Kelvin v kapkový generátor Kry²tof Kadlec 1, Luká² Kune² 2, Luká² N me ek 3 1 Gymnázium Franti²ka Palackého, Vala²ské Mezi í í, krystoof.2@seznam.cz 2 Gymnázium, Zlatá stezka 137, Prachatice, kunamars@seznam.cz

Více

Rovnice a nerovnice. Posloupnosti.

Rovnice a nerovnice. Posloupnosti. .. Veronika Sobotíková katedra matematiky, FEL ƒvut v Praze, http://math.feld.cvut.cz/ 30. srpna 2018.. 1/75 (v reálném oboru) Rovnicí resp. nerovnicí v reálném oboru rozumíme zápis L(x) P(x), kde zna

Více

1 Data. 2 Výsledky m ení velikostí. Statistika velikostí výtrus. Roman Ma ák

1 Data. 2 Výsledky m ení velikostí. Statistika velikostí výtrus. Roman Ma ák Statistika velikostí výtrus Roman Ma ák 6.2.216 1 Data Velikost výtrus (udávaná obvykle v µm) pat í u hub k významným ur ovacím znak m, mnohdy se dva druhy makromycet li²í dokonce pouze touto veli inou.

Více

Statistika pro geografy. Rozd lení etností DEPARTMENT OF GEOGRAPHY

Statistika pro geografy. Rozd lení etností DEPARTMENT OF GEOGRAPHY Statistika pro geografy Rozd lení etností DEPARTMENT OF GEOGRAPHY Faculty of Science Palacký University Olomouc t. 17. listopadu 1192/12, 771 46 Olomouc Pojmy etnost = po et prvk se stejnou hodnotou statistického

Více

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4 Pr b h funkce V této jednotce si ukáºeme jak postupovat p i vy²et ování pr b hu funkce. P edpokládáme znalost po ítání derivací a limit, které jsou dob e popsány v p edchozích letácích tohoto bloku. P

Více

( x ) 2 ( ) 2.5.4 Další úlohy s kvadratickými funkcemi. Předpoklady: 2501, 2502

( x ) 2 ( ) 2.5.4 Další úlohy s kvadratickými funkcemi. Předpoklady: 2501, 2502 .5. Další úlohy s kvadratickými funkcemi Předpoklady: 50, 50 Pedagogická poznámka: Tato hodina patří mezi ty méně organizované. Společně řešíme příklad, při dalším počítání se třída rozpadá. Já řeším příklady

Více

Zadání. Založení projektu

Zadání. Založení projektu Zadání Cílem tohoto příkladu je navrhnout symetrický dřevěný střešní vazník délky 13 m, sklon střechy 25. Materiálem je dřevo třídy C24, fošny tloušťky 40 mm. Zatížení krytinou a podhledem 0,2 kn/m, druhá

Více

2C06028-00-Tisk-ePROJEKTY

2C06028-00-Tisk-ePROJEKTY Stránka. 27 z 50 3.2. ASOVÝ POSTUP PRACÍ - rok 2009 3.2.0. P EHLED DÍL ÍCH CÍL PLÁNOVANÉ 2009 íslo podrobn Datum pln ní matematicky formulovat postup výpo t V001 výpo etní postup ve form matematických

Více

TROJFÁZOVÝ OBVOD SE SPOT EBI EM ZAPOJENÝM DO HV ZDY A DO TROJÚHELNÍKU

TROJFÁZOVÝ OBVOD SE SPOT EBI EM ZAPOJENÝM DO HV ZDY A DO TROJÚHELNÍKU TROJFÁZOVÝ OBVOD E POT EBI EM ZAPOJENÝM DO HV ZDY A DO TROJÚHELNÍKU Návod do m ení Ing. Vít zslav týskala, Ing. Václav Kolá Únor 2000 poslední úprava leden 2014 1 M ení v trojázových obvodech Cíl m ení:

Více

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash 4900 - Vibrio

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash 4900 - Vibrio Aplikační list Vyvažování tuhého rotoru v jedné rovině přístrojem Adash 4900 - Vibrio Ref: 15032007 KM Obsah Vyvažování v jedné rovině bez měření fáze signálu...3 Nevýhody vyvažování jednoduchými přístroji...3

Více

Ergodické Markovské et zce

Ergodické Markovské et zce 1. b ezen 2013 Denice 1.1 Markovský et zec nazveme ergodickým, jestliºe z libovolného stavu m ºeme p ejít do jakéhokoliv libovolného stavu (ne nutn v jednom kroku). Denice 1.2 Markovský et zec nazveme

Více

Novinky verzí SKLADNÍK 4.24 a 4.25

Novinky verzí SKLADNÍK 4.24 a 4.25 Novinky verzí SKLADNÍK 4.24 a 4.25 Zakázky standardní přehled 1. Možnosti výběru 2. Zobrazení, funkce Zakázky přehled prací 1. Možnosti výběru 2. Mistři podle skupin 3. Tisk sumářů a skupin Zakázky ostatní

Více

5. Legislativní opatření a jejich vliv na vývoj pracovní neschopnosti pro nemoc a úraz

5. Legislativní opatření a jejich vliv na vývoj pracovní neschopnosti pro nemoc a úraz 5. Legislativní opatření a jejich vliv na vývoj pracovní neschopnosti pro nemoc a úraz Úroveň pracovní neschopnosti pro nemoc a úraz je v zásadě dána dvěma rozdílnými faktory. Prvým z nich je objektivní

Více

na za átku se denuje náhodná veli ina

na za átku se denuje náhodná veli ina P íklad 1 Generujeme data z náhodné veli iny s normálním rozd lením se st ední hodnotou µ = 1 a rozptylem =. Rozptyl povaºujeme za známý, ale z dat chceme odhadnout st ední hodnotu. P íklad se e²í v následujícím

Více

Teorie her. Klasikace. Pomocný text

Teorie her. Klasikace. Pomocný text Pomocný text Teorie her Milí e²itelé, první ty i úlohy kaºdé série spojuje jisté téma a vám bude poskytnut text, který vás tímto tématem mírn provede a pom ºe vám p i e²ení t chto úloh. Teorie her, jiº

Více

e²ení 1. série Úvodní gulá² autor: Kolektiv org

e²ení 1. série Úvodní gulá² autor: Kolektiv org e²ení 1. série Úvodní gulá² autor: Kolektiv org Úloha 1.1. Bubla, Lib nka, Henry a Mat j hráli hru. Protoºe byli ty i, napsali si na tabuli ty i ty ky a jejich úkolem pak bylo vepsat mezi n t i znaménka

Více

Základní praktikum laserové techniky

Základní praktikum laserové techniky Základní praktikum laserové techniky Fakulta jaderná a fyzikáln inºenýrská Úloha 4: Zna kování TEA CO 2 laserem a m ení jeho charakteristik Datum m ení: 1.4.2015 Skupina: G Zpracoval: David Roesel Kruh:

Více

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta 1) Uveďte alespoň dvě řádově různě rostoucí funkce f(n) takové, že n 2 = O(f(n)) a f(n) = O(n 3 ). 2) Platí-li f(n)=o(g 1 (n)) a f(n)=o(g 2 (n)), znamená to, že g 1 (n) a g 2 (n) rostou řádově stejně rychle

Více

A. PODÍL JEDNOTLIVÝCH DRUHŮ DOPRAVY NA DĚLBĚ PŘEPRAVNÍ PRÁCE A VLIV DÉLKY VYKONANÉ CESTY NA POUŽITÍ DOPRAVNÍHO PROSTŘEDKU

A. PODÍL JEDNOTLIVÝCH DRUHŮ DOPRAVY NA DĚLBĚ PŘEPRAVNÍ PRÁCE A VLIV DÉLKY VYKONANÉ CESTY NA POUŽITÍ DOPRAVNÍHO PROSTŘEDKU A. PODÍL JEDNOTLIVÝCH DRUHŮ DOPRAVY NA DĚLBĚ PŘEPRAVNÍ PRÁCE A VLIV DÉLKY VYKONANÉ CESTY NA POUŽITÍ DOPRAVNÍHO PROSTŘEDKU Ing. Jiří Čarský, Ph.D. (Duben 2007) Komplexní přehled o podílu jednotlivých druhů

Více

Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele

Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele Z důvodu ulehčení, snazší orientace, poskytnutí jednoznačných a široce komunikovatelných pravidel v otázkách mateřství

Více

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13 Seminá e Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11, sem.

Více

Text m ºe být postupn upravován a dopl ován. Datum poslední úpravy najdete u odkazu na staºení souboru. Veronika Sobotíková

Text m ºe být postupn upravován a dopl ován. Datum poslední úpravy najdete u odkazu na staºení souboru. Veronika Sobotíková Tento text není samostatným studijním materiálem. Jde jen o prezentaci promítanou na p edná²kách, kde k ní p idávám slovní komentá. N které d leºité ásti látky pí²u pouze na tabuli a nejsou zde obsaºeny.

Více

Fyzikální praktikum 3

Fyzikální praktikum 3 Ústav fyzikální elekotroniky P írodov decká fakulta, Masarykova univerzita, Brno Fyzikální praktikum 3 Úloha 7. Opera ní zesilova Úvod Opera ní zesilova je elektronický obvod hojn vyuºívaný tém ve v²ech

Více

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ Pozemkem se podle 2 písm. a) katastrálního zákona rozumí část zemského povrchu, a to část taková, která je od sousedních částí zemského povrchu (sousedních pozemků)

Více

brmiversity: Um lá inteligence a teoretická informatika

brmiversity: Um lá inteligence a teoretická informatika brmiversity: Um lá inteligence a teoretická informatika P edná²ka. 6 Petr Baudi² pasky@ucw.cz brmlab 2011 Outline 1 Pravd podobnost 2 Um lá inteligence 3 Sloºitost 4 Datové struktury Pravd podobnost Pravd

Více

7. Domy a byty. 7.1. Charakteristika domovního fondu

7. Domy a byty. 7.1. Charakteristika domovního fondu 7. Domy a byty Sčítání lidu, domů a bytů 2011 podléhají všechny domy, které jsou určeny k bydlení (např. rodinné, bytové domy), ubytovací zařízení určená k bydlení (domovy důchodců, penziony pro důchodce,

Více

4. Připoutejte se, začínáme!

4. Připoutejte se, začínáme! 4. Připoutejte se, začínáme! Pojďme si nyní zrekapitulovat základní principy spreadů, které jsme si vysvětlili v předcházejících kapitolách. Řekli jsme si, že klasický spreadový obchod se skládá ze dvou

Více

1.1.11 Poměry a úměrnosti I

1.1.11 Poměry a úměrnosti I 1.1.11 Poměry a úměrnosti I Předpoklady: základní početní operace, 010110 Poznámka: Následující látka bohužel patří mezi ty, kde je nejvíce rozšířené používání samospasitelných postupů, které umožňují

Více

3 D leºitá rozd lení náhodné veli iny

3 D leºitá rozd lení náhodné veli iny 3 D leºitá rozd lení náhodné veli iny Co to znamená, kdyº prohlásíme, ºe jsou n jaká d leºitá rozd lení? Rozd lení náhodné veli iny je její popis. A náhodná veli ina p edstavuje ur itý náhodný pokus (kde

Více

Návrh realizace transformátoru Thane C. Heinse

Návrh realizace transformátoru Thane C. Heinse - 1 - Návrh realizace transformátoru Thane C. Heinse (c) Ing. Ladislav Kopecký, duben 2016 V lánku Bi-toroidní transformátor Thane C. Heinse byl uveden princip vynálezu Thane Heinse, jehož základní myšlenkou

Více

2.2.10 Slovní úlohy vedoucí na lineární rovnice I

2.2.10 Slovní úlohy vedoucí na lineární rovnice I Slovní úlohy vedoucí na lineární rovnice I Předpoklady: 0, 06 Pedagogická poznámka: Řešení slovních úloh představuje pro značnou část studentů nejobtížnější část matematiky Důvod je jednoduchý Po celou

Více

Testy pro více veli in

Testy pro více veli in Kapitola 8 Testy pro více veli in 8.1 Testy parametr s více výb ry s p edpokladem normality dat 8.1.1 Testy s dv ma výb ry. P edpoklady: Pro spojité rozd lení normalita nebo velký výb r. Pro diskrétní

Více

Prezentace. Ing. Petr V elák 6. b ezna 2009

Prezentace. Ing. Petr V elák 6. b ezna 2009 Prezentace Ing. Petr V elák 6. b ezna 2009 1 OBSAH OBSAH Obsah 1 Úvodní slovo 3 2 P íprava prezentace 4 2.1 Jak prezentace ned lat........................ 4 2.1.1 Kontrast písma a pozadí...................

Více

1.2.7 Druhá odmocnina

1.2.7 Druhá odmocnina ..7 Druhá odmocnina Předpoklady: umocňování čísel na druhou Pedagogická poznámka: Probrat obsah této hodiny není možné ve 4 minutách. Já osobně druhou část (usměrňování) probírám v další hodině, jejíž

Více

Vzorové e²ení 4. série

Vzorové e²ení 4. série Vzorové e²ení 4. série Úloha 4.1 Kouma koupil Œoumovi k Vánoc m Rubikovu kostku. Strana kostky m í 10 cm. Kdyº mu ji v²ak cht l zabalit do váno ního papíru, zjistil, ºe má k dispozici pouze tvercový papír

Více

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120 Základní informace o struktu e dat: Komise (nadkomise) obsahují leny schválené VR (po jejich identifikaci v SIS, p íp. dopln ní budou obsahovat všechny schválené leny, po novém za azení se vyplní datum

Více

se nazývá charakter grupy G. Dále budeme uvaºovat pouze kone né grupy G. Charaktery tvo í také grupu, s násobením denovaným

se nazývá charakter grupy G. Dále budeme uvaºovat pouze kone né grupy G. Charaktery tvo í také grupu, s násobením denovaným Charaktery a Diskrétní Fourierova transforace Nejd leºit j²í kvantový algorite je Diskrétní Fourierova transforace (DFT) D vody jsou dva: DFT je pro kvantové po íta e exponenciáln rychlej²í neº pro po

Více

Pokusné ověřování Hodina pohybu navíc. Často kladené otázky

Pokusné ověřování Hodina pohybu navíc. Často kladené otázky MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY ČESKÉ REPUBLIKY Karmelitská 7, 118 12 Praha 1 - Malá Strana Pokusné ověřování Hodina pohybu navíc Často kladené otázky Dotazy k celému PO: Dotaz: Co to přesně

Více

P íklady k prvnímu testu - Pravd podobnost

P íklady k prvnímu testu - Pravd podobnost P íklady k prvnímu testu - Pravd podobnost 28. února 204 Instrukce: Projd te si v²echny p íklady. Kaºdý p íklad se snaºte pochopit. Pak vymyslete a vy- e²te p íklad podobný. Tím se ujistíte, ºe p íkladu

Více

Návrh realizace transformátoru Thane C. Heinse III.

Návrh realizace transformátoru Thane C. Heinse III. 1 Návrh realizace transformátoru Thane C. Heinse III. Ing. Ladislav Kopecký, ervenec 2016 Ve t etí ásti lánku se vrátíme k variant TH transformátoru s jádrem EE a provedeme návrh s konkrétním typem jádra.

Více

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011 Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011 Účelové komunikace jsou důležitou a rozsáhlou částí sítě pozemních komunikací v České republice. Na rozdíl od ostatních kategorií

Více

Interaktivní nástroj pro kreslení schémat logických obvod. Robert korpil. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická

Interaktivní nástroj pro kreslení schémat logických obvod. Robert korpil. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická ČVUT FEL katedra počítačů Bakalá ská práce Interaktivní nástroj pro kreslení schémat logických obvod Robert korpil Vedoucí práce: Ing. Petr

Více

METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ

METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ Regionální rada regionu soudržnosti Moravskoslezsko METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ verze 1.06 Evidence změn Verze Platnost od Předmět změny Strany č. 1.01 22. 10. 2007 Sestavování

Více

Uºivatelská p íru ka Octopus

Uºivatelská p íru ka Octopus Uºivatelská p íru ka Octopus Jan Bojko 11. prosince 2014 Abstrakt Uºivatelská p íru ka k aplikaci Octopus. Obsah 1 Úvod 2 2 P ihlá²ení 2 3 Naviga ní menu 2 4 Práce s tabulkou 3 5 Editace 6 5.1 Nový záznam.............................

Více

1 Spo jité náhodné veli iny

1 Spo jité náhodné veli iny Spo jité náhodné veli in. Základní pojm a e²ené p íklad Hustota pravd podobnosti U spojité náhodné veli in se pravd podobnost, ºe náhodná veli ina X padne do ur itého intervalu (a, b), po ítá jako P (X

Více

VYBRANÉ APLIKACE RIEMANNOVA INTEGRÁLU I. OBSAH A DÉLKA. (f(x) g(x)) dx.

VYBRANÉ APLIKACE RIEMANNOVA INTEGRÁLU I. OBSAH A DÉLKA. (f(x) g(x)) dx. VYBRANÉ APLIKACE RIEMANNOVA INTEGRÁLU I. OBSAH A DÉLKA. Výpo et obsahu rovinných ploch a) Plocha ohrani ená k ivkami zadanými v kartézských sou adnicích. Obsah S rovinné plochy ohrani ené dv ma spojitými

Více

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami PŘEVZATO Z MINISTERSTVA FINANCÍ ČESKÉ REPUBLIKY Ministerstvo financí Odbor 39 Č.j.: 39/116 682/2005-393 Referent: Mgr. Lucie Vojáčková, tel. 257 044 157 Ing. Michal Roháček, tel. 257 044 162 Pokyn D -

Více

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace Franti²ek N mec (xnemec61) xnemec61@stud.t.vutbr.cz 1 Úvod Úkolem tohoto projektu bylo vytvo it aplikaci, která bude demonstrovat

Více

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka INTERNETOVÝ TRH S POHLEDÁVKAMI Uživatelská příručka 1. března 2013 Obsah Registrace... 3 Registrace fyzické osoby... 3 Registrace právnické osoby... 6 Uživatelské role v systému... 8 Přihlášení do systému...

Více

Specifikace systému ESHOP

Specifikace systému ESHOP Nabídka: Specifikace systému ESHOP březen 2009 Obsah 1 Strana zákazníka 1 1.1 Nabídka produkt, strom kategorií..................... 1 1.2 Objednávka a ko²ík.............................. 1 1.3 Registrace

Více

Obsah. Pouºité zna ení 1

Obsah. Pouºité zna ení 1 Obsah Pouºité zna ení 1 1 Úvod 3 1.1 Opera ní výzkum a jeho disciplíny.......................... 3 1.2 Úlohy matematického programování......................... 3 1.3 Standardní maximaliza ní úloha lineárního

Více

Jevy, nezávislost, Bayesova v ta

Jevy, nezávislost, Bayesova v ta Jevy, nezávislost, Bayesova v ta 17. b ezna 2015 Instrukce: Projd te si v²echny p íklady. Kaºdý p íklad se snaºte pochopit. Pak vymyslete a vy- e²te p íklad podobný. Tím se ujistíte, ºe p íkladu rozumíte.

Více

Informace a návod k pouºití ablony pro BP student FZS v Plzni. Ing. Petr V elák 20. únor 2012

Informace a návod k pouºití ablony pro BP student FZS v Plzni. Ing. Petr V elák 20. únor 2012 Informace a návod k pouºití ablony pro BP student FZS v Plzni Ing. Petr V elák 20. únor 2012 1 OBSAH OBSAH Obsah 1 P edmluva 4 2 Formátování a úprava bakalá ské práce 5 2.1 Vzhled stran........................................

Více

7. Stropní chlazení, Sálavé panely a pasy - 1. část

7. Stropní chlazení, Sálavé panely a pasy - 1. část Základy sálavého vytápění (2162063) 7. Stropní chlazení, Sálavé panely a pasy - 1. část 30. 3. 2016 Ing. Jindřich Boháč Obsah přednášek ZSV 1. Obecný úvod o sdílení tepla 2. Tepelná pohoda 3. Velkoplošné

Více

Matematický model kamery v afinním prostoru

Matematický model kamery v afinním prostoru CENTER FOR MACHINE PERCEPTION CZECH TECHNICAL UNIVERSITY Matematický model kamery v afinním prostoru (Verze 1.0.1) Jan Šochman, Tomáš Pajdla sochmj1@cmp.felk.cvut.cz, pajdla@cmp.felk.cvut.cz CTU CMP 2002

Více

PRAVIDLA PRO PŘIDĚLOVÁNÍ BYTŮ V MAJETKU MĚSTA ODOLENA VODA

PRAVIDLA PRO PŘIDĚLOVÁNÍ BYTŮ V MAJETKU MĚSTA ODOLENA VODA PRAVIDLA PRO PŘIDĚLOVÁNÍ BYTŮ V MAJETKU MĚSTA ODOLENA VODA Čl. A Obecná ustanovení 1. Těmito pravidly se stanoví pravidla pro hospodaření s bytovým fondem v majetku města Odolena Voda. Nájemní vztahy se

Více

6. Matice. Algebraické vlastnosti

6. Matice. Algebraické vlastnosti Matematický ústav Slezské univerzity v Opavě Učební texty k přednášce ALGEBRA I, zimní semestr 2000/2001 Michal Marvan 6 Matice Algebraické vlastnosti 1 Algebraické operace s maticemi Definice Bud te A,

Více

ZÁKLADNÍ ŠKOLA a MATE SKÁ ŠKOLA STRUP ICE, okres Chomutov

ZÁKLADNÍ ŠKOLA a MATE SKÁ ŠKOLA STRUP ICE, okres Chomutov ZÁKLADNÍ ŠKOLA a MATE SKÁ ŠKOLA STRUP ICE, okres Chomutov Autor výukového Materiálu Datum (období) vytvo ení materiálu Ro ník, pro který je materiál ur en Vzd lávací obor tématický okruh Název materiálu,

Více

Seriál: Management projektů 7. rámcového programu

Seriál: Management projektů 7. rámcového programu Seriál: Management projektů 7. rámcového programu Část 4 Podpis Konsorciální smlouvy V předchozím čísle seriálu o Managementu projektů 7. rámcového programu pro výzkum, vývoj a demonstrace (7.RP) byl popsán

Více

Uºivatelská p íru ka k programu SlaFoR verze 1.0

Uºivatelská p íru ka k programu SlaFoR verze 1.0 1 Uºivatelská p íru ka k programu SlaFoR verze 1.0 Toto je manuál k programu SlaFoR 1.0 (Slab Forces & Reinforcement), který byl vytvo en v rámci bakalá ské práce na kated e betonových a zd ných konstrukcí

Více

Státnice - Rekurzivní a rekurzivn spo etné mnoºiny

Státnice - Rekurzivní a rekurzivn spo etné mnoºiny Kapitola 1 Státnice - Rekurzivní a rekurzivn spo etné mnoºiny 1.1 Rekurzivn spo etné mnoºiny Denice (Rekurzivní a rekurzivn spo etná mnoºina) Charakteristická funkce mnoºiny M ozna uje charakteristickou

Více

Ovoce do škol Příručka pro žadatele

Ovoce do škol Příručka pro žadatele Ve smečkách 33, 110 00 Praha 1 tel.: 222 871 556 fax: 296 326 111 e-mail: info@szif.cz Ovoce do škol Příručka pro žadatele OBSAH 1. Základní informace 2. Schválení pro dodávání produktů 3. Stanovení limitu

Více

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 Informační systémy 2 Data v počítači EIS MIS TPS strategické řízení taktické řízení operativní řízení a provozu Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 18.3.2014

Více

POSOUZENÍ STAVU HLAVNÍHO OBJEKTU BUDOVY Č. OR. 10 V JEZDECKÉ ULICI V PROSTĚJOVĚ

POSOUZENÍ STAVU HLAVNÍHO OBJEKTU BUDOVY Č. OR. 10 V JEZDECKÉ ULICI V PROSTĚJOVĚ z.č.: 13-1672-81 POSOUZENÍ STAVU HLAVNÍHO OBJEKTU BUDOVY Č. OR. 10 V JEZDECKÉ ULICI V PROSTĚJOVĚ Vypracoval: Ing. Daniel Lemák, Ph.D. Zhotovitel: Zakázkové číslo: 13-1672-81 Objednatel: STATIKA Olomouc,

Více

Relace. Základní pojmy.

Relace. Základní pojmy. Relace. Základní pojmy. I kdyº pojem funkce je v matematice jeden ze základních a nejd leºit j²ích, p esto se n které vztahy mezi objekty pomocí funkce popsat nedají. Jde o situace, kdybychom cht li p

Více

1.7. Mechanické kmitání

1.7. Mechanické kmitání 1.7. Mechanické kmitání. 1. Umět vysvětlit princip netlumeného kmitavého pohybu.. Umět srovnat periodický kmitavý pohyb s periodickým pohybem po kružnici. 3. Znát charakteristické veličiny periodického

Více

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina VÝCHOVNÝ ÚSTAV A ŠKOLNÍ JÍDELNA NOVÁ ROLE Školní 9, Nová Role, PSČ: 362 25, Tel: 353 851 179 Dodavatel: Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina 1. Zadavatel Výchovný

Více

Řešení: Dejme tomu, že pan Alois to vezme popořadě od jara do zimy. Pro výběr fotky z jara má Alois dvanáct možností. Tady není co počítat.

Řešení: Dejme tomu, že pan Alois to vezme popořadě od jara do zimy. Pro výběr fotky z jara má Alois dvanáct možností. Tady není co počítat. KOMBINATORIKA ŘEŠENÉ PŘÍKLADY Příklad 1 Pan Alois dostal od vedení NP Šumava za úkol vytvořit propagační poster se čtyřmi fotografiemi Šumavského národního parku, každou z jiného ročního období (viz obrázek).

Více

Státní maturita 2010 Maturitní generálka 2010 Matematika: didaktický test - základní úrove obtíºnosti MAGZD10C0T01 e²ené p íklady

Státní maturita 2010 Maturitní generálka 2010 Matematika: didaktický test - základní úrove obtíºnosti MAGZD10C0T01 e²ené p íklady Státní maturita 00 Maturitní generálka 00 Matematika: didaktický test - základní úrove obtíºnosti MAGZD0C0T0 e²ené p íklady Autor e²ení: Jitka Vachtová 6. b ezna 0 http://www.vachtova.cz/ Obsah Úloha Úloha.

Více

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK 21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK Pavel Rokos ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra elektrotechnologie Úvod Světelné zdroje jsou jedním

Více

Magnetohydrodynamický pohon

Magnetohydrodynamický pohon aneb pohon bez p evod Jakub Klemsa David Kle ka Jakub Kubi² Fyzikální seminá Fakulta jaderná a fyzikáln inºenýrská 25. listopadu 2010 Obsah 1 P í ina hnací síly Proud v elektrolytu P idruºené jevy 2 Závislost

Více

Preference v u ívání prost edk elektronické komunikace áky a studenty

Preference v u ívání prost edk elektronické komunikace áky a studenty Preference v u ívání prost edk elektronické komunikace áky a studenty (dotazníkový pr zkum) Zuzana Pustinová Dne ní doba nabízí mnohé mo nosti, jak komunikovat, ani by se ú astníci hovoru nacházeli na

Více

pokud A Rat(M), pak také A Rat(M).

pokud A Rat(M), pak také A Rat(M). Kone né automaty Pojem automat je historicky spojen s n jakou konstruktivní, algoritmickou procedurou rozhodující n jaký problém, i abstraktn ji e eno, rozhodující o tom, zda n jaký prvek pat í do dané

Více

Cesta kolem světa za 80 dní. Cesta kolem světa pro 2-6 hráčů od 10 let od Michaela Rienecka, Kosmos 2004

Cesta kolem světa za 80 dní. Cesta kolem světa pro 2-6 hráčů od 10 let od Michaela Rienecka, Kosmos 2004 Cesta kolem světa za 80 dní. Cesta kolem světa pro 2-6 hráčů od 10 let od Michaela Rienecka, Kosmos 2004 Hra je nejlépe hratelná ve 3-5 hráčích, při 6 hráčích se neúměrně prodlužuje. Speciální pravidla

Více

Pokud se vám tyto otázky zdají jednoduché a nemáte problém je správně zodpovědět, budete mít velkou šanci v této hře zvítězit.

Pokud se vám tyto otázky zdají jednoduché a nemáte problém je správně zodpovědět, budete mít velkou šanci v této hře zvítězit. Pro 2 až 6 hráčů od 10 let Určitě víte, kde leží Sněžka, Snad také víte, kde pramení Vltava, kde leží Pravčická brána, Černé jezero nebo Prachovské skály. Ale co třeba Nesyt, jeskyně Šipka, Pokličky nebo

Více

Rychnov nad Kněžnou. Trutnov VÝVOJ BYTOVÉ VÝSTAVBY V KRÁLOVÉHRADECKÉM KRAJI V LETECH 1998 AŽ 2007 29

Rychnov nad Kněžnou. Trutnov VÝVOJ BYTOVÉ VÝSTAVBY V KRÁLOVÉHRADECKÉM KRAJI V LETECH 1998 AŽ 2007 29 3. Bytová výstavba v okresech Královéhradeckého kraje podle fází (bez promítnutí územních změn) Ekonomická transformace zasáhla bytovou výstavbu velmi negativně, v 1. polovině 90. let nastal rapidní pokles

Více

Inteligentní zastávky Ústí nad Labem

Inteligentní zastávky Ústí nad Labem Příloha č. 7 Technická specifikace pro veřejnou zakázku Inteligentní zastávky Ústí nad Labem nadlimitní veřejná zakázka na realizaci inteligentních zastávek zadávaná v otevřeném řízení, dle zákona o veřejných

Více

Obousměrné prohledávání. Tomáš Hřebejk

Obousměrné prohledávání. Tomáš Hřebejk Obousměrné prohledávání Tomáš Hřebejk Motivační úlohy Jak řešit úlohy typu: Nalezení nejkratší trasy (po silnici, po železnici ) z Prahy do Vídně. Najít nejkratší řešení Loydovy patnáctky. Pomocí prohledávání!

Více

DAŇOVÉ AKTULITY 2013. Daň z přidané hodnoty

DAŇOVÉ AKTULITY 2013. Daň z přidané hodnoty DAŇOVÉ AKTULITY 2013 Po dlouhém období daňově lability v oblasti očekávání pro rok 2013 a následující došlo ke schválení kontroverzního daňového balíčku a dalších daňových zákonů a jejich zveřejnění ve

Více

Operace nad celými tabulkami

Operace nad celými tabulkami 10 Operace nad celými tabulkami V předchozích kapitolách jsme se převážně zabývali sloupci tabulek. V této kapitole se naučíme provádět některé operace, které ovlivňují tabulky jako celek. Probereme vlastnosti

Více

STRUKTURA OBCHODŮ BANKY JAKO FAKTOR ÚSPĚŠNOSTI BANKOVNÍ ČINNOSTI

STRUKTURA OBCHODŮ BANKY JAKO FAKTOR ÚSPĚŠNOSTI BANKOVNÍ ČINNOSTI STRUKTURA OBCHODŮ BANKY JAKO FAKTOR ÚSPĚŠNOSTI BANKOVNÍ ČINNOSTI Jan Černohorský Univerzita Pardubice, Fakulta ekonomicko-správní, Ústav ekonomiky a managementu Abstract The aim of this paper is to define

Více

DOBA KAMENNÁ: Styl je cíl

DOBA KAMENNÁ: Styl je cíl DOBA KAMENNÁ: Styl je cíl S herním materiálem pro 5. hráče Rozšíření musí být hráno s hrou Doba kamenná Příprava Obsah: 1 herní plán 1 deska hráče (pro 5. hráče) 10 dřevěných figurek (černé) 3 černé dřevěné

Více

Návrh realizace transformátoru Thane C. Heinse IV.

Návrh realizace transformátoru Thane C. Heinse IV. 1 Návrh realizace transformátoru Thane C. Heinse IV. Ing. Ladislav Kopecký, ervenec 2016 Ve tvrté ásti lánku budeme navrhovat TH transformátor s topologií UUI s konkrétními typy jader UU a I, p emž použijeme

Více

Projekt Odyssea, www.odyssea.cz

Projekt Odyssea, www.odyssea.cz Projekt Odyssea, www.odyssea.cz Příprava na vyučování s cíli osobnostní a sociální výchovy (typ B) Téma oborové Vzdělávací obor Ročník Časový rozsah Definice matematických pojmů Matematika a její aplikace

Více