Lokace zařízení a hledání cest v prostoru

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

Download "Lokace zařízení a hledání cest v prostoru"

Transkript

1 Mendelova univerzita v Brně Provozně ekonomická fakulta Lokace zařízení a hledání cest v prostoru Bakalářská práce Vedoucí práce: Ing. Oldřich Trenz, Ph.D. Petr Meluzín Brno 2011

2

3 Zde bych rád poděkoval vedoucímu mé závěrečné práce Ing. Oldřichu Trenzovi Ph.D. za věcné připomínky při tvorbě bakalářské práce. Dále bych chtěl poděkovat Bc. Janu Kolomazníkovi, který svými rady a ochotou při problémech s instalací potřebného softwaru k programovaní mi byl nápomocný. Poděkování také patří celému týmu pracujícímu na soutěži Eurobot 2010.

4 Prohlašuji, že jsem tuto bakalářkou práci vypracoval samostatně a v seznamu literatury uvedl veškeré informační zdroje, které jsem použil pro její tvorbu. V Brně dne 3. ledna 2011

5 Abstract The bachelor s thesis is focused on methods of stace space searching. In the teoretical part, stace space, uniformed and informed methods of stace space passing through, their characteristics, advantages and disadvantages are defined. New information about the developmental environment, about the competition of Eurobot 2010 and a lego set called Mindstorms, from which the robot is built, is introduced. In the practical part the description of section of programme for passing through the space with defined starting conditions and its possible development in the future, is introduced. The thesis was developed for using aim the programme in the European competition Eurobot 2010, and with this target the thesis was ordered. Keywords Stace space, informed and uninformed methods for stace space searching, lego Mindstorms, Eurobot Abstrakt Bakalářská práce se zaobírá metodami hledání cest v prostoru. V teoretické části je definován pojem stavový prostor, jednotlivé neinformované i informované metody procházení stavového prostoru, jejich vlastnosti, výhody a nevýhody. Jsou uvedeny základní informace o vývojovém prostředí, soutěži Eurobot 2010 a stavebnici lego Mindstorms, ze které je sestaven robot procházející prostor. V praktické části je uveden popis programu, pro procházení prostorem s definovanými počátečními podmínkami a jeho možný vývoj do budoucna. Práce byla koncipována pro využití programu v celoevropské soutěži Eurobot 2010 a s tímto cílem byla bakalářská práce zadávána. Klíčová slova Stavový prostor, informované a neinformované metody procházení stavového prostoru, lego Mindstorms, Eurobot 2010.

6 Obsah 6 Obsah 1 Úvod a cíl práce Úvod Cíl práce 9 2 Teoretická východiska práce Historie umělé inteligence Stavový prostor Reprezentace stavového prostoru pomocí orientovaného grafu Reprezentace stavového prostoru pomocí mapy Metody procházení stavového prostoru Neinformované metody procházení stavového prostoru Prohledávání do šířky (Breadth-first search) Prohledávání do hloubky (Depth-first search) Iterativní prohledávání do hloubky (Depth-first iterative deeping) Obousměrné prohledávání (bidirectional breadth-first search) Prohledávání do hloubky s omezením (Depth-limited search) Prohledávání podle cen (Uniform-cost search) Srovnání vlastností neinformovaných algoritmů Informované metody procházení stavového prostoru Gradientní algoritmus (Hill-climbing algorithm) Algoritmus uspořádaného prohledávání (best-first algorithm) Algoritmus A* (A* algorithm) Simulované žíhání (Simulated annealing) Hladové vyhledávání (Greedy search) Paprskové vyhledávání (Beam search) Soutěž Eurobot Lego Mindstorms NXT Obnovitelná baterie Síťový adaptér Inteligentní NXT kostka Interaktivní servomotor Tlakový senzor Světelný senzor Senzor barvy Zvukový senzor Ultrazvukový senzor 23

7 Obsah Vývojové prostředí Java Eclipse LeJOS 24 3 Metodika řešení 26 4 Vlastní řešení Popis konstrukce robota Hrací plocha Popis hrací plochy Reprezentace hrací plochy mapou Algoritmus hledání cesty Implementace fronty Metoda HledejCestu Metoda VyhladCestu Metoda VykresliCestu Aplikace algoritmu pro jednotku NXT Metoda VypocitejVzdalenost Metoda UjedVzdalenost Metoda VypocitejUhel Metoda ZmenUhel Metoda JedCestu 38 5 Diskuse 39 6 Závěr 40 7 Literatura 41 A Konstrukce robota 43 B Seznam obrázků 44 C Seznam tabulek 45

8 Úvod a cíl práce 8 1 Úvod a cíl práce 1.1 Úvod S rozvíjejícími se počítačovými technologiemi a vědními disciplínami roste i vývoj v minulosti poměrně krátce známého oboru umělé inteligence. Člověk je schopen efektivně zpracovávat ne zcela přesné informace, které jsou nazývány neurčitými neboli vágními. Tato schopnost lidského organismu projevit uvažování a lidský intelekt se v posledních desetiletích stává předmětem zájmů vědního oboru nazývaného umělá inteligence. Dílčí oblasti umělé inteligence se zabývají řešením složitých problémů a v budoucnosti se zdají být velmi nadějné. Mezi dílčí oblasti, které spadají do oboru umělé inteligence řadíme fuzzy modely, které jsou v dnešní době již poměrně dobře prozkoumány a v praxi hojně využívány, neuronové sítě napodobující procesy probíhající v lidském mozku a nervové soustavě. Tyto sítě obsahují schopnost vlastního učení. Další oblast představují genetické algoritmy, označované také jako evoluční algoritmy, využívající poznatky z oboru biologie. Uplatňují se při řešení složitějších problému, kde neexistuje exaktní algoritmus. Principy umělé inteligence se využívají i u metod procházení stavového prostoru o němž tato práce pojednává. Procházení stavovým prostorem v dnešní době používá řada počítačových her, kdy pomocí kliknutí myší na pozici se objekt přesune s vyhnutím všech překážek na požadované místo. Určité stavy na cestě si lze představit jako vrcholy grafu a akce potřebné k přechodu z jednoho stavu do druhého jako hrany. Poté je možné problém popsat s využitím orientovaného grafu. Aby se objekt přesunul z počátečního do cílového stavu je třeba pomocí metod prohledávání grafu nalézt pro daný problém co nejoptimálnější trasu. Existují algoritmy, které následující problémy řeší. Algoritmus je obecně návod či postup, kterým lze vyřešit daný problém. Graf neboli stavový prostor může být značně velký a prohledávání celého prostoru může trvat dlouhou dobu a je velmi neefektivní. Prohledávání prostoru lze omezit díky určitým znalostem o řešeném problému. Znalosti jsou často užitečné při hledání řešení, často jej však nezaručují. Tyto znalosti nazýváme heuristickými. Heuristiky využijeme tam, kde neexistuje přesný postup řešení. Algoritmy s lepší heuristickou funkcí obecně postupují k cíly přímočařeji, neprohledávají zbytečné části prostoru a k cíli dospějí dříve. Tyto algoritmy obsahují určitou dávku inteligence. Umělá inteligence je jakýmsi napodobením chování člověka, jehož definice je těžko popsatelná. Metody procházení stavového prostoru (grafu), které mají určitou inteligenci dosáhnou cíle rychleji než metody bez inteligence. Podle toho zda algoritmy využijí heuristiku nebo ne se dělí na informované a neinformované.

9 Úvod a cíl práce Cíl práce Cílem této práce je návrh algoritmu pro hledání cest v prostoru v souladu s nadefinovanými počátečními podmínkami a tvorba obslužného programu realizující algoritmus pro jednotku Mindstorms NXT a soutěž Eurobot 2010.

10 Teoretická východiska práce 10 2 Teoretická východiska práce 2.1 Historie umělé inteligence Začátek historie umělé inteligence se datuje rokem 1956, nicméně už v roce 1950 A. Touring formuloval proslavený test a vyvrátil argumenty pro inteligentní stroje. Ve stejném roce J. V. Neumann vyjádřil tvrzení, že počítače v krátké době dosáhnou či dokonce překonají intelektuální schopnosti člověka. Obě tvrzení přispěly k tomu, že veřejnost začala pohlížet na počítače nejen jako na stroje a kalkulačky pracující mechanicky, ale začali v nich spatřovat určitou dávku inteligentního chování. (Mařík V., 1993) Roku 1956 byla uspořádána Johnem McCarthym konference, na kterou byly pozváni významní odborníci z oborů matematiky, biologie, elektrotechniky, lingvistiky, neurologie, psychologie a fyziologie. Cílem významné konference bylo prodiskutovat myšlenku tvrdící, že jakýkoli příznak inteligence lze popsat do podoby srozumitelné pro počítač. Byl definován společný zájem nesoucí název umělá inteligence. Na konferenci byl představen první program využívající technik umělé inteligence Logic Theorist, další vývoj týmu v blízké době vytvořil program napodobující lidské myšlení GPS. Bylo předpovězeno, že v roce 1970 bude počítač velmistrem v šachu, odhalí nové matematické teorémy, porozumí přirozenému jazyku a bude schopen komponovat hudbu. (Mařík V., 1993) V 50. letech F. Rosenblatt vynalezl perceptron, model napodobující lidskou buňku neuron. Model položil základ rozpoznávání a zařazování objektů do tříd. V letech odstartovala díky pracím J. J. Hopfielda, D. E. Rumelharta a T. Kohonena éra neuronových sítí. Odstranili počáteční problémy a začíná boom v oblasti neuronových sítí. J. McCarthy vyvinul první jazyk určený pro umělou inteligenci LISP. (Mařík V., 1993) S přibývajícím léty začínalo být zřetelné, že dosažení cílů předpovídaných na konferenci nebude dosaženo. Přesto docházelo k vývoji, roku 1967 navrhl Colmerauer jazyk PROLOG, který se dodnes používá. Mezi roky 1971 a 1972 byly prezentovány systémy myšlenkově navazující na GPS, a to STRIPS a PLANNER, přesto že nenalezly široké uplatnění jsou považovány za významné z hlediska vývoje. (Mařík V., 1993) Ukázalo se, že rozhodující pro vysokou efektivitu systémů umělé inteligence jsou použité znalosti. Je kladen důraz na získávání znalostí o systému a jejich využívání. Vznikají tak systémy obsahující určité expertní znalosti, označovány jako expertní systémy. Expertní systémy simulují rozhodování znalostních expertů, díky zakódovaným expertním znalostem o systému bázi dat. Kvalita expertního systému je dána kvalitou bázových dat. Prvními používanými expertními systémy byli MYCIN a PROSPECTOR. V 80. letech dochází k prudkému rozšíření expertních systémů, díky kterým dochází k ušetření značných finančních částek v oblasti průmyslu. (Mařík V., 1993)

11 Teoretická východiska práce Stavový prostor Pokud řešený problém rozdělíme do několika stavů, kde jeden stav označíme za počáteční a některé stavy za cílové s možností mezi jednotlivými stavy procházet, hovoříme o stavovém prostoru. Stavový prostor může nabývat různých velikostí, v určitých případech lze dosáhnout nekonečného počtu stavů. Navíc cílové stavy nemusí být vždy známy, existuje pouze představa jak by měli vypadat. Pro procházení a nalezení optimální cesty prostorem se používají různé algoritmy, jejímž úkolem je nalézt nejkratší cestu v grafu. Ne vždy je vhodné aplikovat stejný algoritmus. Průchod stavovým prostorem lze výrazně zkrátit, definujeme-li tzv. metaznalosti. Metaznalosti jsou pravidla, které pomáhají řešit úlohu, tvoří řídící strategii. Zavedením těchto pravidel dosáhneme výrazného zrychlení nalezení řešení. Algoritmus je třeba zvolit podle konkrétního problému, hardwarových a časových možností. Stavový prostor může být reprezentován dvěma způsoby a to buď orientovaným grafem nebo mapou. (Mařík V., 1993) Reprezentace stavového prostoru pomocí orientovaného grafu Podle Ryjáčka Z. lze orientovaný graf definovat jako dvojici (V,E), kde V je množina vrcholů a E (V V) je množina hran. V orientovaném grafu se nacházejí pouze jednosměrné hrany, každá hrana má počáteční a cílový uzel. Je možné, že počáteční a koncový uzel je shodný, v grafu se tedy mohou vyskytovat smyčky. Stavový prostor si lze představit jako orientovaný graf, kde uzly jsou tvořeny stavy a hrany tvoří akce pro přechod mezi stavy. Průchod grafem řešíme pomocí metod procházení grafu jež jsou popsány níže. Nalezením optimální cesty v grafu tedy nalezneme zároveň i optimální cestu pro průchod stavového prostoru. Terminologie používaná v teorii grafů: Uzel A je nazýván uzlem kořenovým Uzly S, T, M, N, O, U, Q, R, které nemají svého následníka (syna) se označují listy Uzel F je bezprostředním následníkem uzlu B Uzel A je bezprostředním předchůdcem uzlu C Uzly A, D, I, P jsou předchůdci uzlu U Uzel N je následníkem uzlů A, C, G Uzel A se nachází v hloubce 0, uzly B, C, D v hloubce 1 atd.

12 Teoretická východiska práce 12 Obr. 1 Graf stavového prostoru (Pěchouček M., 2007) Reprezentace stavového prostoru pomocí mapy Stavový prostor lze také znázornit mapou. Mapa je dvourozměrné pole M N, kde každé políčko v mapě má svoje souřadnice vzhledem k počátku a toto políčko reprezentuje určitý stav. Aby bylo možné nalézt cestu v poli, je třeba určit souřadnice počátečního a cílového bodu. Cestou pak je posloupnost bodů od počátečního k cílovému bodu, bez toho aniž by byly souřadnice jakéhokoli bodu použity v cestě dvakrát. Úkolem algoritmů pro hledání cesty v mapě, je nalézt nejkratší cestu z počátku do cíle s přihlédnutím na body jež mohou reprezentovat překážku. 2.3 Metody procházení stavového prostoru Metody procházení stavového prostoru se dělí na metody neinformované a informované. Neinformované metody nemají k dispozici žádné informace o stavovém prostoru, které by zajistily rychlejší průchod. Tyto metody jsou odkázány na procházení všech stavů dokud není nalezeno cílové řešení. Kdežto informované metody mají určitou znalost stavového prostoru, která umožní odhadnout jak daleko se nacházíme od cílového stavu. Tento odhad je tvořen heuristickou funkcí h(x), kterou do systému vloží člověk. Rychlost nalezení cílového řešení potom záleží na kvalitě heuristické funkce. Čím je heuristická funkce kvalitnější, tím dříve je možné dosáhnout cílového stavu. Konkrétní metody se od sebe liší časovou složitostí, kvalitou dosaženého řešení a paměťovými nároky. Časová složitost je čas potřebný k dosažení cílového řešení, někdy též udávaný v počtu dosažených stavů. Dalším kritériem hodnocení je množství využití operační paměti při běhu programu. Zde můžeme být limitování hardwarovými prostředky a využitím operační paměti jinými aplikacemi. Kvalitou řešení se myslí schopnost nalézt řešení, pokud řešení existuje, pokud je možných řešení více, zda je nalezené řešení nejlepší ze všech možných.

13 Teoretická východiska práce Neinformované metody procházení stavového prostoru Neinformované metody jak bylo výše uvedeno nemají žádnou znalost stavového prostředí, což spočívá v procházení velkého množství stavů, a s tím spojená stoupající časová i prostorová složitost. Proto neinformované algoritmy nenaleznou uplatnění při složitějších řešeních a využívají se pouze u jednoduchých úloh Prohledávání do šířky (Breadth-first search) U prohledávání do šířky, se od uzlu, označeného za počáteční prohledávají všichni jeho sousedé, kteří jsou následně uloženi do fronty. Z fronty se vybere první uzel, u kterého se opět prohledají sousedé jako u počátečního, mimo ty, kteří již byli prozkoumáni. Tento postup se opakuje dokud fronta není prázdná. (Algoritmy.net, 2008) U popisů algoritmů se vyskytují pojmy OPEN a CLOSED. Pojmem OPEN se rozumí seznam neexpandovaných uzlů, pojmem CLOSED seznam expandovaných uzlů. Algoritmus lze popsat následujícím způsobem: 1. Zapiš počáteční stav do seznamu OPEN, seznam CLOSED je prázdný. Jeli počáteční stav současně stavem cílovým, ukonči vyhledávání. 2. Pokud je seznam OPEN prázdný, řešení neexistuje, ukonči vyhledávání. 3. Vymaž první stav (označíme jej i) v seznamu OPEN a zapiš tento stav do seznamu CLOSED. 4. Expanduj stav i. Pokud tento stav nemá následovníky nebo všichni následovníci byli již expandováni (tj. jsou v seznamu CLOSED), pokračuj krokem č Zapiš všechny následovníky stavu i, kteří nejsou v seznamu CLOSED, na konec seznamu OPEN. 6. Pokud některý z následovníků stavu i je cílovým stavem, řešení bylo nalezeno, ukonči vyhledávání. Jinak pokračuj krokem č. 2. (Mařík V., 1993) Jestliže existuje cesta k cíly, musí být algoritmem nalezena a to vždy ta nejkratší. Nevýhodou je však expandování neúměrného množství uzlů, než dosáhneme cíle a s tím je spojená vysoká paměťová náročnost. Algoritmus prohledávání do šířky má asymptotickou časovou složitost O( U + H ), kde U je počet uzlů a H počet hran.

14 Teoretická východiska práce 14 Obr. 2 Prohledávání do šířky (Pěchouček M., 2007) Prohledávání do hloubky (Depth-first search) Během prohledávání se mění stavy uzlů. Na začátku jsou všechny uzly označeny jako nové, jestliže do uzlu vstoupíme, změní se označení na otevřený. Jestliže přes uzel provede návrat je označen za zavřený. Algoritmus se vždy nachází v nějakém vrcholu, který nazveme aktuální. Algoritmus vybere hranu vedoucí z aktuálního vrcholu a je-li následný vrchol označen za nový, prohledávání pokračuje do hloubky k dalšímu uzlu, který se stane aktuálním. Do starého aktuálního uzlu se algoritmus vrátí až po prohledání nového aktuálního uzlu. Pokud hrana vede k jinému vrcholu než novému, tato hrana se přeskočí. Nevyskytují-li se již v grafu žádné nové vrcholy, je aktuální uzel označen za zavřený a algoritmus provede návrat do uzlu ze, kterého přišel. Algoritmus lze popsat následujícím způsobem: 1. Zapiš počáteční stav do seznamu OPEN, seznam CLOSED je prázdný. Je-li počáteční stav současně stavem cílovým, ukonči vyhledávání. 2. Pokud je seznam OPEN prázdný, řešení neexistuje, ukonči vyhledávání. 3. Vymaž první stav (označíme jej i) v seznamu OPEN a zapiš tento stav do seznamu CLOSED. 4. Expanduj stav i. Pokud tento stav nemá následovníky nebo všichni následovníci byli již expandováni (tj. jsou v seznamu CLOSED), pokračuj krokem č Zapiš všechny následovníky stavu i, kteří nejsou v seznamu CLOSED, na začátek seznamu OPEN. ukonči vyhledávání. Jinak pokračuj krokem č. 2. (Mařík V., 1993)

15 Teoretická východiska práce 15 Výhodou algoritmu prohledávání do hloubky je menší paměťová složitost, oproti prohledávání do šířky. Výhoda spočívá v uchovávání pouze uzlů od expandovaného k počátečnímu. Časová složitost je rovna O( U + H ), kde U je počet uzlů a H počet hran. Za nevýhody jsou považovány neoptimalita řešení, to znamená, že nemusí být nalezena vždy nejkratší cesta. Při existenci nekončené větve nedojde k nalezení cíle. Obr. 3 Prohledávání do hloubky (Pěchouček M., 2007) Iterativní prohledávání do hloubky (Depth-first iterative deeping) Algoritmus iterativního vyhledávání kombinuje výhody vyhledávání do hloubky a do šířky. Je nejvýhodnější variantou mezi neinformovanými algoritmy pro vyhledávání ve velkých stavových prostorech s neznámou hloubkou. Algoritmus začíná vyhledávat stejně jako algoritmus vyhledávání do hloubky s tím, že v každé iteraci roste hloubka prohledávání o jedničku a první nalezené řešení je automaticky označeno za optimální. Výhodami tohoto algoritmu je optimálnost, úplnost a nízké paměťové nároky. Za nevýhodu lze označit neznalost jak určit limit prohledávání, při zadání příliš malé hloubky, do které má algoritmus vyhledávat, nedospějeme k cíly. Naopak, jestliže je zadána moc velká hloubka, bude docházet i k prohledávání slepých listů, což povede ke zpomalování chodu algoritmu Obousměrné prohledávání (bidirectional breadth-first search) Obousměrné prohledávání je prohledávání do šířky, které začíná jak z počátečního tak i z cílové uzlu. Jestliže dojde k situaci, kdy v obou směrech je

16 Teoretická východiska práce 16 nalezen totožný stav, je nalezena cesta. Dojde-li ke stavu, že v jednom ze směrů se nenacházejí žádná políčka pro prohledávání, cesta neexistuje. Obousměrné prohledávání je vylepšený algoritmus prohledávání do šířky. Doba nalezení řešení je výrazně zkrácena, roste však nárok na operační paměť Prohledávání do hloubky s omezením (Depth-limited search) Je algoritmus hledání do hloubky s omezenou hloubkou zanoření. Při dosažení maximální hloubky se algoritmus vrací o úroveň výš a pokračuje ve vyhledávání, dokud opět nenarazí na maximální možné zanoření. U každého uzlu se evidují vyzkoušené a nevyzkoušené stavy. Narazí-li algoritmus na cestu, která nevede k cíly, vrací se zpět do uzlu vyšší úrovně a zkouší nalézt jinou cestu. Při špatně zvolené cestě, se může až po dlouhé době ukázat, že nevede k cíly. Další nevýhodou je, že algoritmus si nepamatuje již prošlé cesty. Může dojít k situaci, kdy algoritmus vstoupí podruhé do slepé větve z jiného uzlu. Problémem je, že předem nevíme, jakou maximální hloubku nastavit. Řešení je však nalezeno vždy, pokud se nachází v dané hloubce zanoření. Algoritmus lze popsat následujícím způsobem: 1. Zapiš počáteční stav do seznamu OPEN, seznam CLOSED je prázdný. Jeli počáteční stav současně stavem cílovým, ukonči vyhledávání. 2. Pokud je seznam OPEN prázdný, řešení neexistuje, ukonči vyhledávání. 3. Vymaž první stav (označíme jej i) v seznamu OPEN a zapiš tento stav do seznamu CLOSED. 4. Pokud se hloubka uzlu i rovná maximální přípustné hloubce, pokračuj krokem č Expanduj stav i. Pokud tento stav nemá následovníky nebo všichni následovníci byli již expandováni (tj. jsou v seznamu CLOSED), pokračuj krokem č Zapiš všechny následovníky stavu i, kteří nejsou v seznamu CLOSED, na začátek seznamu OPEN. 7. Pokud některý z následovníků stavu i je cílovým stavem, řešení bylo nalezeno, ukonči vyhledávání. Jinak pokračuj krokem č. 2. (Mařík V., 1993) Prohledávání podle cen (Uniform-cost search) Jednotlivé uzly jsou ohodnoceny cenami. Cena c(m,n) vyjadřuje náklady na přechod z uzlu n do m. Nákladová funkce má potom tvar g(m)=g(n)+c(n,m), kde m je následníkem n. Expanduje se vždy ten uzel, do kterého vede nejlevnější cesta (nejméně ohodnocená hrana). Při jednotkově ohodnocených hranách, algoritmus degraduje na pouhé vyhledávání do šířky. Algoritmus vždy nalezne optimální řešení, existuje-li. Je vhodné jej využít při řešení problému obchodního cestujícího.

17 Teoretická východiska práce Srovnání vlastností neinformovaných algoritmů Algoritmy jsou porovnávány podle čtyř kritérií. Prvním kritériem je časová složitost, neboli čas potřebný k vyřešení úlohy. Druhým kritériem je množství využívání operační paměti při chodu programu. Úplnost nebo neúplnost je dalším kritériem. Jestliže je algoritmus úplný, znamená to, že nalezne řešení. Posledním kritériem je optimalita. Daný algoritmus je optimální, nalezne-li nejkratší cestu grafem. b faktor větvení d hloubka cíle m maximální hloubka větve/délka cesty l použití maximální přípustné hloubky C cena optimálního řešení Tab. 1 Srovnání vlastností neinformovaných algoritmů (Horák A., 2006) Algoritmus / Kritérium Hledání do šířky Hledání do hloubky Iterativní hledání Obousměrné hledání Hledání podle ceny Hledání s omezenou hloubkou Čas b d+1 b m b d b d/2 b 1+(C/ε) b l Paměť b d+1 bm bd b d/2 b 1+(C/ε) bl Optimalita ano ne ano ano ano ne Úplnost ano ne ano ano ano ne 2.6 Informované metody procházení stavového prostoru Informované metody používají pro prohledávání stavového prostoru často výběr nejvhodnějšího vrcholu pomocí heuristiky. Heuristika je způsob jak postupovat při řešení konkrétní situace. Tento postup není hromadný, platí jen pro konkrétní problémy. K rozhodnutí, který uzel expandovat se používá hodnotící funkce, přitom platí že čím jsou heuristické vlastnosti kvalitnější, tím efektnější bude prohledávání Gradientní algoritmus (Hill-climbing algorithm) Gradientní algoritmus je nejjednodušší z informovaných metod procházení stavového prostoru. Algoritmus může začít prohledávání ze jakéhokoli uzlu v grafu. Nejprve vygeneruje všechny sousedy aktuálního uzlu a ohodnotí je, poté pomocí hodnotící funkce rozhodne, který sousední uzel má nejlepší ohodnocení a ten expanduje. Tento postup se neustále opakuje, dochází tak k přechodu na uzly se stále lepším ohodnocením. Existují-li dva uzly se stejným ohodnocením, dojde k výběru pomocí náhodné funkce. Algoritmus se ukončí, narazí-li na uzel s horší hodnotící funkcí, cíl nebo nemá-li žádné následníky. Výhodou gradientních algoritmů je jejich rychlost, nevýhodou je však možnost uvíznutí v lokálním ex-

18 Teoretická východiska práce 18 trému a nenalezení globálního maxima, tedy cílového řešení. Může se vyskytnout i stav zacyklení. U gradientního algoritmu nedochází k uchovávání informací o dříve navštívených uzlech, uchovává se pouze informace o rozvíjeném uzlu. Jsou tedy vhodné u úloh, kde nás zajímá pouze výsledek Algoritmus uspořádaného prohledávání (best-first search algorithm) Je gradientní algoritmus rozšířený o paměť. V paměti se neuchovávají pouze jména uzlů, ale i hodnotící funkce a jméno rodičovského uzlu. Expandují se uzly s nejlepší hodnotící funkcí. Zápis v paměti je následující: <jméno uzlu, hodnota f, rodičovský uzel>. Algoritmus lze popsat následujícím způsobem: 1. Počáteční stav zapiš do seznamu OPEN, seznam CLOSED je prázdný. 2. Pokud je seznam OPEN prázdný, řešení neexistuje, ukonči prohledávání. 3. Ze seznamu OPEN vyber stav i s nejmenší hodnotou f(i). V případě většího počtu stavů se stejnou minimální hodnotou f(i) prověř, zda některý z těchto stavů není stavem cílovým, v takovém případě jej vyber; jinak vyber mezi stavy se stejnou minimální hodnotou f(i) libovolně. 4. Vymaž stav i ze seznamu OPEN a zařaď jej do seznamu CLOSED. 5. Je-li stav i cílovým stavem, řešení je nalezeno, ukonči prohledávání. 6. Expanduj stav i; pro každého následovníka j stavu i vypočítej hodnotu f(j). Pokud stav j není ani v seznamu OPEN ani v seznamu CLOSED, zařaď jej do seznamu OPEN. Pokud je stav j již v seznamu OPEN nebo CLOSED, avšak s ohodnocením větším než právě vypočtené f(j) změň jeho ohodnocení na f(j), změň jméno rodičovského uzlu v zápisu uzlu a zařaď ho do seznamu OPEN. 7. Pokračuj krokem č. 2. (Mařík V., 1993) Výsledek prohledávání značně závisí na kvalitě heuristické funkce, která je rovna hodnotící funkci. Nalezení cíle není zaručeno, může se stát, že se ocitneme mimo řešení. Výhodou algoritmu uspořádaného prohledávání je rychlost u jednodušších úloh Algoritmus A* (A* algorithm) Hledání funguje podobně jako hledání do šířky, jsou však doplněny dva významné faktory. Prvním faktorem jsou náklady, které musíme vynaložit na cestu mezi dvěma uzly označované g(i). Druhým faktorem je heuristika h(i), odhadující vzdálenost z libovolného uzlu do cíle. Funkci lze potom znázornit jako f(i)=g(i)+h(i) a je možné ji chápat jako cenu přechodu z počátečního stavu do stavu cílového. Náklady na přechod mezi jednotlivými uzly nemusí být vyjádřeny jenom vzdáleností, náklady mohou tvořit čas potřebný na přepravu pokud hledáme nejrychlejší trasu, terén, po dálnici se určitě dostaneme do cíle dříve,

19 Teoretická východiska práce 19 než po okresních cestách atd. Skutečné hodnoty h(i) a g(i) však v praxi často neznáme, jsou proto nahrazovány jejími odhady h*(i) a g*(i). Tento odhad je jakousi heuristickou znalostí, jaká je šance nalézt řešení. Hodnotící funkce má potom tvar f*(i)=g*(i)+h*(i). Čím lepší je hodnotící funkce, tím dosáhneme rychleji výsledku. Algoritmus nejprve prověřuje uzly s nejnižšími náklady. Začíná se tedy prohledávání uzlů, které jsou pravděpodobně ve směru k cíly. Podmínkou funkčnosti algoritmu A* je, že odhadované náklady nesmějí přesáhnout skutečné náklady, jinak by nalezená cesta nebyla tou nejkratší. Výhody A* algoritmu představují v možnosti libovolně ohodnocovat pole a získávat tak různá zvýhodnění a znevýhodnění, cesta je vždy nalezena a to ta nejkratší. Pokud řešení neexistuje, dojde k prohledání celého grafu, což může trvat značně dlouho. Změní-li se prostředí musí dojít k přeplánování trasy Simulované žíhání (Simulated annealing) Algoritmus simulovaného žíhání, řeší problém gradientního algoritmu a to uvíznutí v lokálním extrému. V metodě se tomu snažíme zabránit tím, že na začátku provádíme velké změny a díky tomu se dostaneme z lokálního extrému. Algoritmus je simulací žíhání oceli. Čím větší je teplota, tím větší je třeba provádět změny a naopak Hladové vyhledávání (Greedy search) Hladový algoritmus pracuje na principu vyhledávání lokálního maxima či minima, podle toho zda se jedná o úlohu maximalizační nebo minimalizační z uspořádané množiny prvků. Bere v potaz pouze heuristickou funkci, která určuje odhadované náklady na cestu do cíle. Algoritmus není ani optimální, ani úplný Paprskové vyhledávání (Beam search) U paprskového vyhledávání je omezeno množství uzlů v seznamu OPEN, do seznamu se zapisují pouze ty expandované uzly, které mají lepší hodnotící funkci než aktuální uzly v seznam, ty jsou poté vymazány. V seznamu OPEN jsou tedy obsaženy pouze uzly s nejlepší hodnotící funkcí, tím dojde k značné redukci uchovávaných uzlů. 2.7 Soutěž Eurobot 2010 Eurobot je amatérská celosvětová soutěž, pro studentské a nezávislé týmy, zájmové skupiny a všechny nadšence robotiky. Hlavním mottem soutěže je hra v přátelském a sportovním duchu, snaha o výměnu myšlenek, technických zkušeností, nápadů a znalostí. V soutěži spolu soupeří vždy dva týmy. Každý tým musí být složen minimálně ze dvou účastníků, jejichž věk nesmí přesáhnout 30let. Týmy mohou mít své poradce a konzultanty, kteří se do počtu nepočítají.

20 Teoretická východiska práce 20 Soutěž Eurobot se koná v celé Evropě, země ve kterých se do soutěže přihlásilo více než tři týmy musí uspořádat národní kolo. Z národní soutěže postupují do celosvětového finále tři týmy. (Eurobot, 2009) Tématem soutěže Eurobot 2010 je sbírání ovoce, zeleniny a obilovin. Cílem robota je posbírat co největší množství herních prvků a zavést je do cílového koše. V zápase proti sobě soupeří vždy dva roboti, na sesbírání a dovezení prvků do koše je stanoven limit 90 vteřin. Herní prvky jsou rozmístěny různě na hrací ploše, přitom platí, že prvky, které jsou nejobtížněji dosažitelné jsou ohodnoceny nejvíce body. Herní prvky tvoří rajčata, kukuřice a pomeranče. Body herních prvků umístěných v cílových koších se sčítají a tým, který dosáhl největšího součtu prvků se stává vítězem. (Eurobot, 2009) Obr. 4 Herní plocha pro soutěž Eurobot 2010 (Eurobot, 2009) 2.8 Lego Mindstorms NXT Mindstorms NXT je robotická stavebnice vyvinutá společností Lego. Je vhodná pro školní a výukové účely a nováčky, kteří se o robotiku začínají zajímat. Stavebnice obsahuje servomotory, senzory, sadu vodičů, síťový adaptér, obnovitelnou baterii, soupravu technických a doplňkových dílů. Hlavní součástí stavebnice je však inteligentní programovatelná NXT kostka. Níže uvedu krátký popis jednotlivých součástí stavebnice.

21 Teoretická východiska práce 21 Obr. 5 Stavebnice lego Mindstorms NXT (Eduxe, 2009) Obnovitelná baterie Lithiová baterie s možností opakovaného nabíjení, slouží jako zdroj energie pro inteligentní NXT kostku. Je-li baterie plně nabita rozsvítí se zelená LED dioda, baterii lze nabíjet i umístěnou v kostce. Obr. 6 Obnovitelná baterie (Eduxe, 2009) Síťový adaptér Síťový adaptér slouží k dobíjení lithiové baterie. Obr. 7 Síťový adaptér (Eduxe, 2009) Inteligentní NXT kostka Programovatelnou NXT kostku je možné propojit s počítačem pomocí bluetooth nebo USB portu. Jádrem kostky jsou 32 bitový a 8 bitový mikroprocesor. Dále

22 Teoretická východiska práce 22 obsahuje 4 vstupní a 3 výstupní porty, maticový displej a tlačítka pro ovládání a testování programů. Zdrojem mohou být obnovitelná baterie nebo 6 AA tužkových baterií. Obr. 8 Inteligentní NXT kostka (Eduxe, 2009) Interaktivní servomotor Servomotor s vestavěný rotačním senzorem pro měření rychlosti a vzdálenosti. Lze řídit s přesností 1 stupeň. Motory je možné synchronizovat. Obr. 9 Interaktivní servomotor (Eduxe, 2009) Tlakový senzor Indikuje stlačení, případně stlačení a následné uvolnění. Obr. 10 Tlakový senzor (Eduxe, 2009) Světelný senzor Zaznamenává světlo, tmu a úroveň světla. Lze pomoci něj snímat i odrazivost.

23 Teoretická východiska práce 23 Obr. 11 Světelný senzor (Eduxe, 2009) Senzor barvy Barevný senzor umí rozpoznat šest druhů barev, obsahuje všechny funkce světelného senzoru a vyzařuje světlo červené, modré a zelené barvy. Obr. 12 Senzor barvy (Eduxe, 2009) Zvukový senzor Měří úroveň hladiny zvuku v db a dba. Obr. 13 Zvukový senzor (Eduxe, 2009) Ultrazvukový senzor Detekuje objekty a měří jejich vzdálenost v centimetrech nebo palcích.

24 Teoretická východiska práce 24 Obr. 14 Ultrazvukový senzor (Eduxe, 2009) Všechny výše uvedené senzory a servomotory je nutné s inteligentní NXT kostkou spojit pomocí sady vodičů, které jsou také součástí stavebnice. Kabely slouží pro přenos řídících signálů mezi kostkou a periferiemi. Bez propojení nemohou periferie vykonávat svoji funkci. 2.9 Vývojové prostředí Java Java je objektově orientovaný programovací jazyk, vyvinutý firmou Sun Microsystems v roce Je jedním z nejrozšířenějších programovacích jazyků na celém světe a díky své přenositelnosti je používán jak na desktopových počítačích, tak i na čipových kartách, mobilních telefonech a rozsáhlých distribuovaných systémech pracujících na řadě počítačů na celém světě. Java vychází z programovacího jazyku C++, ke kterému má syntakticky nejblíže. Java má dva druhy platform neboli prostředí pro běh programu. První platformou je JRE (Java Runtime Environment), která obsahuje interpret Javy a standardní knihovny. Druhým prostředím je JDK (Java Development Kit), který rozšiřuje JRE platformu o překladač a další vývojové nástroje pro zjednodušenou práci programátora. (Studentský informační server, 2000) Eclipse Eclipse je vývojové prostředí(ide) pro programování v jazyce Java. Návrh této platformy umožňuje rozšíření seznamu podporovaných programovacích jazyků pomocí tzv. pluginů. V základním Eclipse jsou obsaženy pouze prostředky pro vývoj standardní Javy. Nainstalováním pluginů lze Eclipse rozšířit i o podporu programovacích jazyků C++, XML, HTML, PHP nebo UML. Výhodou Eclipse je možnost nainstalování pluginů až v případě potřeby, čímž se značně zrychluje chod aplikace LeJOS Firmware LeJOS vyvinul v roce 1999 Španěl José Solorzano. Název byl odvozen ze zkratky JOS (java operating system) a z operačního systému pro RCX kostky legos, vznikl název lejos. Aby bylo možné programovat inteligentní kostky, které jsou součástí stavebnic lego Mindstorms, v jazyce Java, je nutné nainstalo-

25 Teoretická východiska práce 25 vat firmware lejos. LeJOS zahrnuje virtuální stroj Java, který umožňuje psát zdrojový kód pro NXT kostky jazykem Java. Obsahuje speciální knihovny s třídy jejichž názvy odpovídají určitým možnostem, které mohou být u robota využity. LeJOS nabízí možnost programovat objektovým jazykem(java), vytvářet vícerozměrná pole, vyjímky, rekurze, synchronizaci a další prostředky usnadňující práci programátora. V současné době podporuje lego RCX cihly a lejos NXJ cihly NXT. (NXJ technology, 1997)

26 Metodika řešení 26 3 Metodika řešení Prvním krokem při řešení zadané úlohy je vybrat vývojový nástroj, ve kterém bude daná úloha implementována. Na výběr je několik možností z nichž jsem zvolil vývojové prostředí Eclipse. Výběrem nástroje Eclipse je dán i programovací jazyk pro tvorbu algoritmů, tímto jazykem je Java. Další fází je zhotovení konstrukce robota, na kterém se uskuteční veškeré testování a pro kterého bude algoritmus určen. Jelikož je robot konstruován pro celoevropskou soutěž Eurobot 2010, musí konstrukce splňovat přísná kritéria zadaná organizátory soutěže. Nedodržení těchto pravidel znamená vyloučení ze soutěže. Algoritmus pro hledání cesty v prostředí s definovanými počátečními podmínkami, vytvořím tak, aby využíval znalostí naprogramované rastrové mapy představující herní plochu. Tato mapa bude představovat znalost (heuristiku) poskytnutou algoritmu člověkem. Tvorba algoritmu je ovlivněna pravidly soutěže Eurobot 2010, je tedy nutné počítat s mnoha omezeními jako např. časový limit pro průjezd herní plochou, umístění startovacích ploch na hřišti atd. Navržený algoritmus bude aplikován na jednotku NXT stavebnice lego Mindstorms, ze které je rovněž sestavena konstrukce robota. Čtenář bude v práci seznámen s principy, výhodami a nevýhodami známých algoritmů, které je možné využít pro hledání cesty ve stavovém prostoru, pojmy stavový prostor a s tím související nalezení nejkratší cesty v grafu, základními komponenty stavebnice lego Mindstorms, soutěží Eurobot 2010 a vývojovými prostředími použité pro tvorbu. Dosažené výsledky budou zhodnoceny a naznačeny budoucí možné směry vývoje.

27 Vlastní řešení 27 4 Vlastní řešení 4.1 Popis konstrukce robota Robot je sestaven ze stavebnice lego Mindstorms, kterou škola zakoupila pro výukové účely a byla zapůjčena našemu týmu pro vývoj robota. V krátkosti popíšu konstrukci robota, ale lepší představu o tom, jak robot vypadá si uděláte z přiloženého obrázku. Robot se po hrací ploše pohybuje pomocí pásu poháněných servomotory. V přední části je umístěna radlice a dvě ramena, jedno zabezpečuje vyjetí sebraného rajčete při otočném manévru a druhé sbírá pomeranče umístěné na stromech. V horní části umístěný zásobník na pomeranče lze pomocí servomotoru vyklopit nasbírané ovoce do kontejneru, určeného jako cílový bod. Základnu a těžiště robota tvoří dvě NXT kostky zpevňující podvozek umístěné vedle sebe těsně nad pásy. Aby mohlo docházet k reakcím na okolní události je robot osazen ultrazvukovými senzory umístěnými vepředu a na bocích a barevným senzorem zabudovaným v podvozku snímajícím podkladovou barvu plochy. Dále robot obsahuje dotykový senzor, jímž je řešeno startovací a vypínací tlačítko, zásobník na baterky, které jsou zdrojem energie pro výklopný servomotor. Obr. 15 Konstrukce robota 4.2 Hrací plocha Popis hrací plochy Hrací plocha navržená pro soutěž Eurobot 2010 obsahuje dvě startovní pole, modré a žluté barvy. Tyto pole umístěné v rozích hřiště přestavují startovní po-

28 Vlastní řešení 28 zice dvou robotů vzájemně spolu soupeřících. Mezi startovními poli se nachází vyvýšená plocha, na které jsou umístěny nejhůře dosažitelné a zároveň nejvíce obodované hrací prvky(pomeranče). Ve zbytku hrací plochy jsou rozmístěny ostatní herní prvky a to kukuřice, rajčata a překážky omezující pohyb robota. Pozice rajčat, kukuřic i překážek na hrací ploše je pevně stanovena. Umístění kukuřičných klasů a překážek na jednotlivých pozicích však není předem dáno, ale náhodně se losuje před začátkem zápasu. Důvodem je nemožnost připravit si průjezd hrací plochou dopředu, neboť překážky na rozdíl od klasů jsou k hrací ploše přišroubovány a nelze je sbírat. Pro lepší představu hrací plochy přikládám obrázek.

29 Vlastní řešení 29 Obr. 16 Pohled na hrací plochu shora (Eurobot, 2009) Obr. 17 Rozměry hrací plochy (Eurobot, 2009) Reprezentace hrací plochy mapou K napodobení hrací plochy jsem vytvořil rastrovou mapu. Je to vlastně matice M N prvků, kde pozice jednotlivých hracích prvků na ploše je v mapě dáno souřadnicemi. Mapa je naprogramována v měřítku 1:3, to znamená, že jeden bod

30 Vlastní řešení 30 mapy odpovídá třem centimetrům skutečného rozměru hřiště. Jelikož rozměry herního pole nejsou přesnými násobky či děliteli třemi, museli být rozměry zaokrouhlovány, což způsobí mírné odchylky Metoda VytvorMapu Metoda VytvorMapu nejprve vytvoří matici odpovídající rozměrům herního pole v měřítku 1:3, tedy bodů a naplní ji nulami. Dalším krokem je zanesení bodů do pole, představující středy překážek. Zde je nutné dodat, že tým podílející se na vývoji robota pro soutěž Eurobot se shodl na tom, že i kukuřičné klasy(herní prvky) budou pro našeho robota tvořit překážky, neboť konstrukce robota nebyla přizpůsobena sběru těchto klasů. Do mapy bylo tedy zapotřebí zadat 18 středů překážek. Aby nebylo nutné zadávat všechny středy překážek ručně zadáváním souřadnic, rozdělil jsem si překážky na ploše do dvou obdélníků. První obdélník vložil do mapy pomocí for cyklu 6 středů překážek a druhý 8 středů překážek. Nyní zbývaly ke vložení pouze 4 středy, dva umístěné u modré startovní plochy a dva u žluté startovní plochy, které byly zadány ručně příslušnými souřadnicemi. Jako překážku je nutné také považovat boční stěnu vyvýšené plochy a vyvýšenou plochu, na které se nacházejí přišroubované válce představující stromy s pomeranči. Přes tyto prostory na mapě také nelze přejíždět, proto je nutné je vnést do mapy jako překážky. To je učiněno opět dvěma for cykly. Tělo metody VytvorMapu obsahuje i metody UpravPrekazky, OcislujMapu, UpravNaPolomer a HledejCestu jež budou popsány níže Metoda UpravPrekazky Hlavním úkolem metody je zobrazit v mapě velikost překážky, tak aby odpovídala skutečným rozměrům. Toho docílíme tak, že kolem středů překážek, zaneseme do mapy dalších 8 bodů střed překážky obklopujících. Protože průměr překážky je 5 cm, bude těchto 8 bodů dostačujících. Proměnná prekokol je globální proměnná, ve které je uloženo číslo označující překážku, neboť matice je integerového typu. static void UpravPrekazky(int [][] mapa){ for (int x=1;x<=100;x++){ for (int y=1;y<=70;y++){ if (mapa[x][y] == prekstrd){ mapa[x-1][y+1]=prekokol; mapa[x][y+1]=prekokol; mapa[x+1][y+1]=prekokol; mapa[x-1][y]=prekokol; mapa[x+1][y]=prekokol; mapa[x-1][y-1]=prekokol; mapa[x][y-1]=prekokol;

31 Vlastní řešení 31 mapa[x+1][y-1]=prekokol; Metoda UpravNaPolomer Metoda UpravNaPolomer se stará o to, aby roboti o různých rozměrech nenaráželi do překážky při průjezdu kolem ní. Vstupními argumenty metody jsou jednak mapa, která má být metodou upravena a poloměr robota. Poloměr robota musí být zadán v centimetrech. Skutečný poloměr je upraven tak, aby odpovídal měřítku mapy. Metoda kolem všech překážek vytvoří zónu, která je podle zadaného poloměru robota různě veliká a to, protože při hledání cesty je cesta označena jedním bodem na mapě. Jinak řečeno jeden bod představuje celého robota, proto je nutné vytvořit tuto zónu, která umožní bezpečný průjezd robota kolem překážky podle jeho rozměrů. Zónu je potřeba vytvořit jak kolem překážek na hrací ploše a vyvýšené plochy, tak i kolem bočních stěn hracího pole. Čím větší bude poloměr robota, tím větší bude i velikost zóny. Níže uvedu ukázku kódu, který vytvoří zónu kolem překážek na hrací ploše. static void UpravNaPolomer(int [][] mapa,int polomer){ polomer=math.round(polomer/3); for (int x=1; x<=100; x++){ for (int y=1; y<=70; y++){ if (mapa[x][y] == prekokol mapa[x][y] == stena) { for (int a=x+polomer;a>=x-polomer && a<=100;a--){ for (int b=y+polomer;b>=y-polomer && b<=70;b--){ if (mapa[a][b]!=prekstrd && mapa[a][b]!=prekokol && mapa[a][b]!=stena)mapa[a][b] = strdrob; Metoda OcislujMapu Metoda očísluje dosud všechna neobsazená pole, tedy body které nezabírají ani překážky ani zóny zabraňující nárazu. Parametry jsou funkci předány mapa, souřadnice x a y. Tyto souřadnice zároveň určují cílový bod pro hledání cesty v mapě, neboť mapa je číslována od tohoto bodu vzestupně a při hledání cesty se

32 Vlastní řešení 32 snažíme dojít na bod s minimální hodnotou. To znamená, že čím vzdálenější bude bod od tohoto cílového bodu, tím bude mít větší hodnotu. Bod zadaný parametry obsahuje tedy hodnotu nula. Cílový bod rozdělí obdélníkové pole na čtyři kvadranty. Nejprve jsou očíslovány jednotlivé osy, směřující z cílového bodu a rozdělující obdélník do kvadrantů. Číslování je provedeno tak, že každý vzdálenější bod od bodu cílového o jeden bod na mapě obsahuje hodnotu o jednotku větší, než bod předcházející. Okolní body jsou tedy číslovány od jedničky až po určitou hodnotu dokud nenarazí na konec pole. Máme tedy očíslovány čtyři osy, dále pomocí čtyř for cyklů jsou očíslovány zbylé čtyři kvadranty. Jednotlivé kvadranty se číslují tak, že hodnota každého bodu v kvadrantu je dána prostým součtem hodnot os x a y. Tímto způsobem očíslovaná mapa představuje heuristiku, neboli znalost hrací plochy vytvořenou člověkem a prohledávacímu algoritmu dodanou z vnějšího prostředí. Hodnoty jednotlivých bodů označují vzdálenost od cíle, při použití vyhledávacího algoritmu s touto znalostí dosáhneme výrazného zrychlení vyhledávání cesty v mapě. Uvedu zde příklad očíslování jedné osy a jednoho kvadrantu. //dolní osa for (int a=y-1;a>0;a--){ mapa[x][a]=y-a; //pravá horní část for (int a=0;x+a<=100;a++){ for (int b=0;y+b<=70;b++){ if (mapa[x+a][y+b]<prekstrd) { mapa[x+a][y+b]=mapa[x+a][y]+mapa[x][y+b]; 4.3 Algoritmus hledání cesty Algoritmus pro hledání cesty, bylo zapotřebí naprogramovat, tak aby bylo možné využít znalostí očíslované mapy. Mapu si lze také představit jako neorientovaný graf, kde body v mapě představují uzly a hranou spojené uzly jsou pouze tehdy jsou-li v mapě sousedy. V neorientovaném grafu lze nalézt nejkratší cestu metodami prohledávání grafu. Pro lepší pochopení problému a aplikovatelnost očíslované mapy jsem vytvořil vlastní algoritmus pro hledání nejkratší cesty v grafu. Tento algoritmus se však podobá gradientímu algoritmu a vychází z jeho principů. Navržený algoritmus pro hledání cesty:

33 Vlastní řešení Vlož počáteční uzel do seznamu OPEN. 2. Jestliže hodnota počátečního uzlu je rovna nule tzn. cílovému bodu, ukonči prohledávání, počáteční i cílový uzel jsou totožné. 3. Dokud hodnota počátečního uzlu je větší jak nula, odeber prvky ze seznamu OPEN přidej počáteční uzel do seznamu CLOSED, expanduj počáteční uzel a pokračuj dalšími body. Jestliže hodnota počátečního uzlu je rovna nule cesta je nalezena. 4. Expandované uzly přidej do seznamu OPEN. 5. Nalezni z expandovaných uzlů uzel s minimální hodnotou. 6. Jestliže nalezená minimální hodnota je menší než hodnota počátečního uzlu, zapiš souřadnice tohoto uzlu do pole souřadnic udávajících cestu. 7. Zapiš do počátečního uzlu minimální hodnotu. Pokračuj bodem č Jestli není splněn bod č. 6, zvyš hodnotu aktuálního uzlu (zamezení uvíznutí v lokálním minimu). Pokračuj bodem č. 3. Očíslovaná mapa představuje jakousi znalost daného hřiště tzv. heuristiku, dodanou algoritmu člověkem. Díky heuristice se algoritmu výrazně zkrátí doba a náročnost prohledávání. Hodnota libovolného bodu v mapě představuje vzdálenost od cíle, s touto znalostí se značně omezí prohledávaný prostor. Algoritmus vždy přechází na bod v mapě (uzel), jehož hodnota (vzdálenost od cíle) je minimální. Zamezí se tak prohledávání slepých větví stromu, které nevedou k cíly. Přecházíme tedy vždy na uzel, který je pravděpodobně ve směru k cílovému uzlu a postupujeme tak k cíly přímočařeji. Navržený algoritmus hledání cesty implementuje metoda HledejCestu Implementace fronty Implementace fronty je rozdělena do tříd Fronta a Prvek. Třída Prvek definuje základní operace pro manipulaci s daty. Obsahuje metody zmenhodnotu, která zajistí změnu proměnné hodnota objektu prvek, vrathodnotu díky níž lze získávat číslo proměnné hodnota. Dalšími metodami jsou metody vratdalsi a posunnadalsi, zajišťující vrácení následujícího prvku a přesun na další prvek. Ve třídě Fronta existují vždy dva ukazatele na první a poslední prvek fronty, je-li fronta prázdná neukazují na žádný prvek, obsahují hodnotu null. Základní operace pro práci s frontou tvoří metody pridej a odeber, zajišťující přidání a odebrání prvku z fronty. Poslední metodou třídy Fronta je metoda testující prázdnost fronty, vrací hodnotu true při prázdném seznamu Metoda HledejCestu Jako parametry metody HledejCestu je nutné zadat mapu, ve které má být nejkratší cesta hledána a souřadnice počátečního uzlu. Na začátku jsou deklarovány lokální proměnné, včetně pole do, kterého se ukládají souřadnice cesty. Dále jsou vytvořeny fronty OPEN a CLOSED, do nichž se zapisují uzly. Nyní může

34 Vlastní řešení 34 začít samotné vyhledávání. Do proměnné min uložíme hodnotu počátečního uzlu. Počáteční uzel metodou pridej vložíme do seznamu OPEN. Testujeme jestli hodnota počátečního uzlu je rovna nule. Jestli ano, nemá význam dále pokračovat ve vyhledávání neboť počáteční uzel se shoduje s uzlem cílovým, je tedy prohledávání ukončeno. Nerovná-li se hodnota počátečního uzlu hodnotě nula můžeme dále pokračovat ve vyhledávání. Dokud hodnota počátečního uzlu je větší než hodnota cílového uzlu, tedy hodnotě nula, odebereme metodou odeber prvky ze seznamu OPEN a počáteční uzel přidáme do seznamu CLOSED. Vytvoříme 8 prvků seznamu, do nichž přiřadíme hodnoty sousedů počátečního uzlu, neboli expandujeme počáteční uzel. Všechny expandované prvky vložíme do seznamu OPEN. Ze všech expandovaných uzlů hledáme ten uzel, který nabývá minimální hodnoty. Jestliže tato minimální hodnota je menší než hodnota počátečního uzlu, zapíšeme souřadnice bodu s minimální hodnotou do pole se souřadnicemi a minimální hodnotu přiřadíme do počátečního uzlu. Dále pokračujeme další expanzí a dalším vyhledáváním minima atd. Jestliže však hodnota počátečního uzlu je menší než hodnota v proměnné min, vyskytl se nepříjemný moment a to uvíznutí v lokálním minimu. Uvíznutí v lokálním minimu znamená, že hodnoty všech sousedů počátečního uzlu mají větší hodnotu než uzel počáteční. Vyskytl se tedy moment, kdy není možné přejít na uzel s hodnotou menší než je hodnota počátečního uzlu, v cestě tedy nelze výše uvedeným způsobem pokračovat. Program skončí běhovou chybou neboť dojde k vyčerpání kapacity pole kam zapisujeme souřadnice, protože dochází k neustálému přeskakování z jednoho bodu na druhý a program se zacyklý. Nastane-li výše zmíněná situace, zvýšíme hodnotu aktuálního uzlu a to provádíme tak dlouho, dokud nedojde k objetí překážky u níž se lokální minimum vyskytlo. Tento jev způsobí zápis nepotřebných souřadnic do pole se souřadnicemi cesty. Řešením je použití metody VyhladCestu, která bude popsána níže. Celý algoritmus hledání cesty končí nalezením hodnoty cílového uzlu, tedy hodnoty nula Metoda VyhladCestu Jak už bylo dříve zmíněno metoda VyhladCestu řeší nepříjemné ukládání souřadnic, které nepotřebujeme k vyhledání cesty a zacyklovává tak cestu v okolí lokálního minima. V těle metody je vytvořeno nové pole, kam již nejsou ukládány souřadnice v oblasti zacyklení, ale pouze body na cestě, kterými je nutno projet. Parametrem metody je předáno pole souřadnic a mapa. Do nového pole jsou z parametrem předaného pole zkopírovány počáteční souřadnice. Poté se postupně prochází parametrem předané pole, jsou čteny souřadnice x a y a testuje se pomocí metody TestujPrekazku, zda-li mezi právě přečtenými souřadnicemi a počátečními souřadnici se nenachází překážka. Nachází-li se mezi testovanými body překážka, zapíší se souřadnice bodu do nového pole. Vyhledávání pokračuje stejným způsobem dále, ale už pouze od posledního bodu zapsaného do nového pole. Takto pokračujeme dokud neprojdeme celé pole. Na konci jsou v novém

35 Vlastní řešení 35 poli zapsány pouze záchytné body, kterým má robot projet místo souřadnic celé cesty. Metoda VyhladCestu používá také metody VykresliCestu a TestujPrekazku. static void VyhladCestu(int[] souradnice, int[][] mapa) { int[] SourCesty = new int[700]; int x = souradnice[1]; int y = souradnice[2]; int j=1; SourCesty[j] = x;j++; SourCesty[j] = y;j++; for (int i = 3; souradnice[i]!= 0; i = i + 2) { if (TestujPrekazku(mapa, x, y, souradnice[i], souradnice[i + 1])) { SourCesty[j] = souradnice[i - 2]; SourCesty[j + 1] = souradnice[i - 1]; j = j + 2; x = souradnice[i - 2]; y = souradnice[i - 1]; for (int p=1;p<=100;p++){ for (int q=1;q<=70;q++){ if (mapa[p][q]==0){ SourCesty[j]=p;j++;SourCesty[j]=q;j++; VykresliCestu(mapa,SourCesty); JedCestu(SourCesty,270); Metoda VykresliCestu Postupně prochází pole se souřadnicemi cesty a vypisuje body do mapy. static void VykresliCestu(int [][] mapa,int []souradnice){ int i=1; int x=souradnice[i];i++; int y=souradnice[i];i++;; while (x!=0 && y!=0){ mapa[x][y]=55555; x=souradnice[i];i++;

36 Vlastní řešení 36 y=souradnice[i];i++; 4.4 Aplikace algoritmu pro jednotku NXT Navržený algoritmus hledání cesty bylo nutné aplikovat na sestaveného robota, tak, aby plnil úlohu na hrací ploše. S využitím programovacího jazyku LeJOS jsem naprogramoval metody VypocitejVzdalenost, UjedVzdalenost, Vypocitej- Uhel, ZmenUhel a JedCestu. Tyto metody zabezpečují přesun robota z počátečního do cílového bodu. Při programování výše uvedených metod bylo často využíváno matematických znalostí s oboru analytické geometrie, neboť mapa představuje rovinu, kde každý bod je dán souřadnicemi x a y. V metodách jsou využívány vzorce pro výpočet proměnných z této předmětné oblasti Metoda VypocitejVzdalenost Vstupními parametry metody jsou souřadnice dvou bodů. Podle vzorce z analytické geometrie pro výpočet vzdálenosti dvou bodů v rovině metoda vrátí vzdálenost mezi těmito body. static long VypocitejVzdalenost(int x1,int y1, int x2, int y2){ long vzdalenost; int rozdil1; int rozdil2; if (x1>x2){ rozdil1=x1-x2; rozdil2=y1-y2; else{ rozdil1=x2-x1; rozdil2=y2-y1; vzdálenost= (int) Math.round(Math.sqrt((rozdil1*rozdil1)+ (rozdil2*rozdil2))); return(vzdalenost); Metoda UjedVzdalenost Metoda UjedVzdalenost zajistí popojetí robota o vzdálenost předanou v parametru metody. Vzdálenost je však zadána v měřítku mapy, je proto nutné vzdálenost upravit tak, aby odpovídala skutečným rozměrům na hrací ploše. Úkolem třídy TachoPilot je posun robota o zadanou vzdálenost. Parametry třídy

37 Vlastní řešení 37 TachoPilot jsou průměr kol, vzdálenost mezi středy kol a motory vykonávající pohyb. static void UjedVzdalenost(long vzdal){ vzdal=vzdal*30; TachoPilot tacho = new TachoPilot (33,160,Motor.A,Motor.C); tacho.travel(vzdal); Metoda VypocitejUhel Metoda vypočítá absolutní úhel vzhledem k počátku souřadnic z předaných parametrů. Cílový bod se nachází vzhledem k počátečnímu bodu v jednom ze čtyř kvadrantů. Jelikož cíl může ležet ve kterémkoli kvadrantu, úhly musí být vypočítány pro všechny možnosti. Velikost úhlu je počítána podle Pythagorovi věty v pravoúhlém trojúhelníku. Jelikož jde o pravoúhlý trojúhelník a dva vrcholy jsou předány parametry, třetí vrchol lze automaticky dopočítat. Známe-li velikost přepony a odvěsen lze snadno vypočítat goniometrickými funkcemi úhly v trojúhelníku Metoda ZmenUhel Parametry jsou metodě předány aktuální úhel natočení robota, souřadnice počátečního a cílového bodu. Metodou VypocitejUhel vypočítá úhel natočení vzhledem k počátku, od kterého následně odečte aktuální úhel natočení a získá relativní úhel. Aby docházelo vždy k otáčení o co nejmenší úhel, je testováno zda-li úhel o který se má robot natočit není větší než 180. Je-li podmínka splněna relativní úhel se přepočítá tak, aby se robot otáčel v záporném směru o menší úhel. Třída Tachopilot zajistí pootočení robota o požadovaný úhel. Metoda vrací hodnotu aktuálního úhlu natočení. static long ZmenUhel(long uhel, int x1, int y1, int x2, int y2){ long u=vypocitejuhel(x1,y1,x2,y2); long relativuhel=u-uhel; TachoPilot tacho = new TachoPilot (33,160,Motor.A,Motor.C); if (Math.abs(relativUhel)>180){ if (relativuhel<0){ relativuhel=relativuhel+360; else{ relativuhel=relativuhel-360;

38 Vlastní řešení 38 tacho.rotate((float)relativuhel); return(u); Metoda JedCestu Zajistí průjezd celé trasy od počátečního až k cílovému bodu. Postupně jsou čteny souřadnice z pole vyhlazené cesty a volány metody změny úhlu natočení robota a ujetí vzdálenosti. Na začátku je nastaven úhel natočení robota ve startovní pozici. static void JedCestu(int [] souradnice,int startuhel){ //aktualni uhel natoceni long uhel=startuhel; int i=1; int a,b; long ujetavzdalenost; int x=souradnice[i];i++; int y=souradnice[i]; for (i=3;souradnice[i]!=0;i=i+2){ a=souradnice[i]; b=souradnice[i+1]; uhel=zmensmer(uhel,x,y,a,b); ujetavzdalenost = VypocitejVzdalenost (x,y,a,b); UjedVzdalenost(ujetaVzdalenost); x=a; y=b;

39 Diskuse 39 5 Diskuse Hned v úvodu praktické části práce se vyskytl problém v podobě instalace vývojového softwaru, jehož instalace nebyla tak snadná jak jsem očekával. Využil jsem proto odborných rad pana Kolomazníka, který mi poskytl návod jak při instalaci postupovat. Po pár nezdařených pokusech se mi nakonec podařilo software úspěšně nainstalovat. Při vývoji konstrukce robota bylo testováno mnoho verzí. První verzí byl podvozek se čtyřmi koly. Ten byl, ale hned po otestování jednoduchého programu zavrhnut kvůli smykování a třepání se robota při otáčení, navíc díky smyku otáčení ztrácelo přesnost. Druhou verzí podvozku byly dvě poháněná přední kola s jedním otočným zadním kolem. Tento podvozek byl však znatelně nestabilní s nevydržel by vetší zátěž robota. Třetím a zároveň i posledním konceptem podvozku byl podvozek s pásy. Vykazoval ze všech konceptů největší pevnost, což bylo pro cíl zásadní i když přesnost otáčení také nebyla úplně přesná. I přes četné změny v konstrukcích robota a mnoha verzích, jimiž prošel bylo nakonec dosáhnuto uspokojující konstrukce. Na vývoji konstrukce robota se podílel celý vývojový tým pro soutěž Eurobot Chování robota nebylo vždy takové jaké jsem očekával. Největší problémy způsobovala nepřesnost otáčení, kdy se robot neotočil o požadovaný úhel. Tudíž došlo buď k přetáčení nebo podtáčení. Tento problém by snadno vyřešilo použití kompasu při navigaci. Ten jsem však nemohl použít z důvodů rušení, které způsobovala železná konstrukce učebny. Následným pokusem o zpřesnění otáčení bylo použití gyroskopu, u něhož se však taky vyskytl problém a to díky mírnému třepání se robota za jízdy a rozlaďování úhlu gyroskopu. Výsledným řešením a jako jediným řešení se ukázalo zpevnění konstrukce, hlavně podvozku robota tak, abych odchylky při otáčení minimalizoval.

40 Závěr 40 6 Závěr Dospěl jsem k názoru, že stavebnice lego Mindstorms není příliš vhodná pro sestavování robota pro soutěže jako je Eurobot. Stavebnice totiž není dostatečně robustní a často dochází k uvolňování spojů mezi součástkami a tím následné vzniklé nepřesnosti v ovládání. Ať už je to vybočování z přímého směru nebo výše zmíněnými nepřesnostmi při otáčení. Chyba se přitom při zvyšující se rychlostí motorů akumuluje a dochází k nepřesnostem ještě větším. Pro výukové účely je naopak stavebnice vhodná svojí jednoduchostí a nemožnostem vzniku rozsáhlých škod. Všem programátorům a konstruktérům pracujícím se stavebnicí lego Mindstorms bych doporučil dbát na sestavení pevné konstrukce podvozku robota. Jelikož je stavebnice vyrobena z plastu, dochází k netěsnostem mezi spoji a tím ke ztrátě přesnosti robotem vykonávaných činností. K nepřesnému chování robota dochází i při vysokém těžišti a špatně zvolené konstrukci robota. Inteligentní NXT kostku je vhodné umístit na dostupné místo, které nebude bránit ve výhledu na LCD displej, či manipulaci s ovládacími tlačítky. Kostka musí být i snadno vyjímatelná, vzhledem k nutnosti nabíjení baterií, nebo připojení USB kabelu. Jako vylepšení úlohy do budoucna bych doporučil použití ať už kompasu, který jsem s výše uvedených důvodů nemohl použít, nebo gyroskopu. Použitím těchto komponent odpadnou problémy s nepřesnostmi v jízdě a otáčení, jelikož robot si bude neustále kontrolovat úhel natočení. Vybočí-li robot ze směru dojde k automatickému vyrovnání na požadovaný směr. Vhodné je i postavení podvozku robota z kovových částí, které nejsou součástí stavebnice lego Mindstorms. Myslím, že i přesto, že pro mě byla stavebnice a způsob programování novinkou, výsledný model robota a jeho vlastnosti nebyly špatné, což dokazuje i umístění na devátém místě na soutěži Eurobot 2010.

41 Literatura 41 7 Literatura Algoritmy.net [online] [cit ]. Prohledávání do šířky. Dostupné z WWW: < BRACKEEN, D.; BARKER, B.; VALHESUWÉ, LAURENCE. Vývoj her v jazyku Java. Přeložil: Voráček Karel, Praha: Grada Publishing, a. s., s. ISBN Eduxe [online] [cit ]. LEGO mindstorms education. Dostupné z WWW: < Eurobot [online] [cit ]. Dostupné z WWW:< HORÁK, A., Prohledávání stavového prostoru [PDF dokument]. Brno: Masarykova univerzita, 2006 [cit ]. Dostupné z WWW: < MAŘÍK, V.; ŠTĚPÁNKOVÁ, O; LAŽANSKÝ, J., a kolektiv. Umělá inteligence 1. Praha: Academia, s. ISBN MIKULECKÝ, P; PONCE, D. Základy umělé inteligence. Studijní text na KAI FŘIT VŠP Hradec Králové, s. NOVÁK, P. Mobilní roboty: pohony, senzory, řízení. 1. vyd. Praha: BEN - technická literatura, s. ISBN NXJ technology [online] [cit ]. LEJOS Java for Lego Mindstorms. Dostupné z WWW: < PAVLIŠ, M. Algoritmy pro hledání cesty. Brno, s. Bakalářská práce. Vysoké učení technické v Brně. PĚCHOUČEK, M. Neinformované metody prohledávání stavového prostoru. [PDF dokument] [cit ]. Dostupný z: < Prohledávání stavového prostoru. In Wikipedia: the free encyclopedia [online]. St. Petersburg (Florida): Wikipedia Foundation, , last modified on [cit ]. Dostupné z WWW: < Purkynka.tk [online] [cit ]. Fronta, zásobník. Dostupné z WWW: < RYJÁČEK, Z. Orientované grafy [PDF dokument]. Plzeň: Západočeská univerzita v Plzni, [cit ]. Dostupné z WWW: < Studentský informační server [online] [cit ]. Dostupné z WWW: < WINKLER, Z.; DLOUHÝ, M. Robotika.cz. [online] Dostupné z WWW: <

42 Přílohy 42 Přílohy

43 Konstrukce robota 43 A Konstrukce robota Obr. 18 Konstrukce robota a herní prvky Obr. 19 Konstrukce robota a herní prvky

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů Stavový prostor a jeho prohledávání SP = formalismus k obecnějšímu uchopení a vymezení problému, který spočívá v nalezení posloupnosti akcí vedoucích od počátečního stavu úlohy (zadání) k požadovanému

Více

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node State Space Search Po spuštění appletu se na pracovní ploše zobrazí stavový prostor první předpřipravené úlohy: - Zeleným kroužkem je označen počáteční stav úlohy, který nemůže být změněn. - Červeným kroužkem

Více

Algoritmizace prostorových úloh

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

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více

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

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

Více

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

METODICKÝ LIST K TECHNICKÉMU KROUŽKU: METODICKÝ LIST K TECHNICKÉMU KROUŽKU: Název kroužku: Sestav si svého robota Jméno autora kroužku: Ing. Roman Stark, CSc. Anotace: Ze stavebnice LEGO Mindstorms NXT si postav svého robota nebo nějaké zařízení

Více

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

METODICKÝ LIST K TECHNICKÉMU KROUŽKU: METODICKÝ LIST K TECHNICKÉMU KROUŽKU: Název kroužku: Sestav si svého robota Jméno autora kroužku: Ing. Roman Stark, CSc. Anotace: Ze stavebnice LEGO Mindstorms NXT si postav svého robota nebo nějaké zařízení

Více

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

METODICKÝ LIST K TECHNICKÉMU KROUŽKU: METODICKÝ LIST K TECHNICKÉMU KROUŽKU: Název kroužku: Naprogramuj si svého robota Jméno autora kroužku: Ing. Roman Stark, CSc. Anotace: Ze stavebnice LEGO Mindstorms NXT si postav svého robota nebo nějaké

Více

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ MEIV 3.1.1. Souborná činnost na složitých elektronických zařízeních zaměřená na servisní a profesní působení studenta

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ MEIV 3.1.1. Souborná činnost na složitých elektronických zařízeních zaměřená na servisní a profesní působení studenta Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEIV 3.1.1 Souborná činnost na složitých elektronických zařízeních zaměřená na servisní a profesní působení studenta Obor: Mechanik Elektronik Ročník: 4.

Více

"Agent Hledač" (3. přednáška)

Agent Hledač (3. přednáška) "Agent Hledač" (3. přednáška) Přehled 3. přednášky v této přednášce se budeme zabývat "goal-based" agenty Přehled 3. přednášky v této přednášce se budeme zabývat "goal-based" agenty připomeňme, že "goal-based"

Více

METODICKÝ LIST 1. Název výukové aktivity (tématu): 2. Jméno autora: Ing. Petr Hořejší, Ph.D., Ing. Jana Hořejší 3. Anotace:

METODICKÝ LIST 1. Název výukové aktivity (tématu): 2. Jméno autora: Ing. Petr Hořejší, Ph.D., Ing. Jana Hořejší 3. Anotace: METODICKÝ LIST 1. Název výukové aktivity (tématu): Stavba LEGO MINDSTORMS NXT robota pro třídění barevných LEGO kostek (představujících různé druhy produktů ve výrobě) 2. Jméno autora: Ing. Petr Hořejší,

Více

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

METODICKÝ LIST K TECHNICKÉMU KROUŽKU: METODICKÝ LIST K TECHNICKÉMU KROUŽKU: Název kroužku: Naprogramuj si svého robota Jméno autora kroužku: Ing. Roman Stark, CSc. Anotace: Ze stavebnice LEGO Mindstorms NXT si postav svého robota nebo nějaké

Více

Grafové algoritmy. Programovací techniky

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

Více

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

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

Více

METODICKÝ LIST. Výklad: Seznámení se se stavebnicí, ukázky jiných projektů a možností stavebnice

METODICKÝ LIST. Výklad: Seznámení se se stavebnicí, ukázky jiných projektů a možností stavebnice METODICKÝ LIST 1. Název výukové aktivity (tématu): Stavba LEGO MINDSTORMS NXT robota pro zavážení barevných LEGO kostek (představujících různé druhy produktů ve výrobě) dále jen nakladač. Tento model navazuje

Více

Úvod do teorie grafů

Úvod do teorie grafů Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí

Více

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný

Více

Robotický LEGO seminář 11.10-12.10.2013 na FEL ČVUT v Praze

Robotický LEGO seminář 11.10-12.10.2013 na FEL ČVUT v Praze Robotický LEGO seminář 11.10-12.10.2013 na FEL ČVUT v Praze Ing. Martin Hlinovský, Ph.D Bc. Lenka Caletková Filip Kirschner www.robosoutez.cz Organizace Robotického LEGO semináře Na začátku se rozdělíte

Více

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

Více

Grafové algoritmy. Programovací techniky

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

Více

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod

Více

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

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je

Více

Vzdálenost uzlů v neorientovaném grafu

Vzdálenost uzlů v neorientovaném grafu Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující

Více

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague Neinformované metody prohledávání stavového prostoru Michal Pěchouček Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague http://labe.felk.cvut.cz/~ tkrajnik/kui2/data/k333/1.pdf

Více

Studentská tvůrčí a odborná činnost STOČ 2015

Studentská tvůrčí a odborná činnost STOČ 2015 Studentská tvůrčí a odborná činnost STOČ 2015 POUŽITÍ FUZZY LOGIKY PRO ŘÍZENÍ AUTONOMNÍHO ROBOTA - 2D MAPOVÁNÍ PROSTORU Michal JALŮVKA Ostravská univerzita v Ostravě Dvořákova 7 701 03 Ostrava 23. dubna

Více

PROGRAMOVÁNÍ ROBOTŮ LEGO MINDSTORM S VYUŽITÍM MATLABU

PROGRAMOVÁNÍ ROBOTŮ LEGO MINDSTORM S VYUŽITÍM MATLABU PROGRAMOVÁNÍ ROBOTŮ LEGO MINDSTORM S VYUŽITÍM MATLABU J. Mareš*, A. Procházka*, P. Doležel** * Ústav počítačové a řídicí techniky, Fakulta chemicko-inženýrská, Vysoká škola chemicko-technologická, Technická

Více

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

Více

Metody síťové analýzy

Metody síťové analýzy Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

Více

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

Více

Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota. Další možnosti programování robota.

Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota. Další možnosti programování robota. Název: Anotace: Úvod do robotického programování Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota. Další možnosti programování robota. Klíčová slova: Řídící jednotka, servomotor,

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní

Více

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

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

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

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy

Více

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] Hanojská věž zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah je lepší? (co je lepší tah?) P. Berka, 2012 1/21 Stavový prostor 1. množina stavů S = {s} 2. množina přechodů

Více

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme

Více

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

4EK311 Operační výzkum. 5. Teorie grafů 4EK311 Operační výzkum 5. Teorie grafů 5. Teorie grafů definice grafu Graf G = uspořádaná dvojice (V, E), kde V označuje množinu n uzlů u 1, u 2,, u n (u i, i = 1, 2,, n) a E označuje množinu hran h ij,

Více

Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota.

Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota. Název: Anotace: Úvod do robotického programování Charakteristika základních konstruktů robota. Popis ovládacího prostředí robota. Klíčová slova: Řídící jednotka, servomotor, senzor, programovací blok.

Více

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Algoritmus Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Klíčové pojmy: Algoritmus, vlastnosti algoritmu, tvorba algoritmu, vývojový diagram, strukturogram Algoritmus

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

07 Základní pojmy teorie grafů

07 Základní pojmy teorie grafů 07 Základní pojmy teorie grafů (definice grafu, vlastnosti grafu, charakteristiky uzlů, ohodnocené grafy) Definice grafu množina objektů, mezi kterými existují určité vazby spojující tyto objekty. Uspořádaná

Více

Algoritmizace prostorových úloh

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

Více

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste

Více

SEMINÁŘ ROBOTIKA. LEGO Roboti a jejich programování (teoretická a praktická část) Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond

SEMINÁŘ ROBOTIKA. LEGO Roboti a jejich programování (teoretická a praktická část) Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY SEMINÁŘ ROBOTIKA LEGO Roboti a jejich programování (teoretická a praktická část) Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Organizace

Více

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

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

Více

Usuzování za neurčitosti

Usuzování za neurčitosti Usuzování za neurčitosti 25.11.2014 8-1 Usuzování za neurčitosti Hypotetické usuzování a zpětná indukce Míry postačitelnosti a nezbytnosti Kombinace důkazů Šíření pravděpodobnosti v inferenčních sítích

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Výukový materiál zpracován v rámci projektu EU peníze školám

Výukový materiál zpracován v rámci projektu EU peníze školám Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ. 1.07/1.5.00/34.0637 Šablona III/2 Název VY_32_INOVACE_39_Algoritmizace_teorie Název školy Základní škola a Střední

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

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

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

Více

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

Základní pojmy teorie grafů [Graph theory] Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme

Více

ROBOTICKÝ POPELÁŘ. Jan Dimitrov, Tomáš Kestřánek. VOŠ a SPŠE Františka Křižíka Na Příkopě 16, Praha 1

ROBOTICKÝ POPELÁŘ. Jan Dimitrov, Tomáš Kestřánek. VOŠ a SPŠE Františka Křižíka Na Příkopě 16, Praha 1 Středoškolská technika 2014 Setkání a prezentace prací středoškolských studentů na ČVUT ROBOTICKÝ POPELÁŘ Jan Dimitrov, Tomáš Kestřánek VOŠ a SPŠE Františka Křižíka Na Příkopě 16, Praha 1 Anotace Cílem

Více

Algoritmizace řazení Bubble Sort

Algoritmizace řazení Bubble Sort Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,

Více

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

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

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Hraní her (pro 2 hráče) Základy umělé inteligence - hraní her. Vlasta Radová, ZČU, katedra kybernetiky 1 Hraní her (pro dva hráče) Hraní her je přirozeně spjato s metodami prohledávání

Více

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího: OPTIMALIZAČNÍ ÚLOHY Problém optimalizace v různých oblastech: - minimalizace času, materiálu, - maximalizace výkonu, zisku, - optimalizace umístění komponent, propojení,... Modelový příklad problém obchodního

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

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

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

Více

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

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT PEF ČZU Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT Okruhy SZB č. 5 Zdroje: Demel, J., Operační výzkum Jablonský J., Operační výzkum Šubrt, T., Langrová, P., Projektové řízení I. a různá internetová

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017

1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017 Znalostní systémy úvodní úvahy a předpoklady 26. září 2017 1-1 Znalostní systém Definice ZS (Feigenbaum): Znalostní (původně expertní) systémy jsou počítačové programy simulující rozhodovací činnost experta

Více

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

Umělá inteligence a rozpoznávání Václav Matoušek KIV e-mail: matousek@kiv.zcu.cz 0-1 Sylabus předmětu: Datum Náplň přednášky 11. 2. Úvod, historie a vývoj UI, základní problémové oblasti a typy úloh, aplikace UI, příklady inteligentních

Více

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

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

Více

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

Více

Algoritmy výpočetní geometrie

Algoritmy výpočetní geometrie Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Každá úloha je hodnocena maximálně 25 body. Všechny své odpovědi zdůvodněte! 1. Postavte na stůl do řady vedle

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB 62 REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB BEZOUŠKA VLADISLAV Abstrakt: Text se zabývá jednoduchým řešením metody nejmenších čtverců v prostředí Matlab pro obecné víceparametrové aproximační funkce. Celý postup

Více

FAQ časté otázky a odpovědi

FAQ časté otázky a odpovědi FAQ časté otázky a odpovědi EDUXE s.r.o., Velké Pavlovice, distributor LEGO Education pro Českou republiku Překlad originálu LEGO Education EDUXE 2013 Software 1. Terminologie 1.1 Co znamená EV3? EV3 je

Více

ADT STROM Lukáš Foldýna

ADT STROM Lukáš Foldýna ADT STROM Lukáš Foldýna 26. 05. 2006 Stromy mají široké uplatnění jako datové struktury pro různé algoritmy. Jsou to matematické abstrakce množin, kterou v běžném životě používáme velice často. Příkladem

Více

Dokumentace programu piskvorek

Dokumentace programu piskvorek Dokumentace programu piskvorek Zápočtového programu z Programování II PRM045 Ondřej Vostal 20. září 2011, Letní semestr, 2010/2011 1 Stručné zadání Napsat textovou hru piškvorky se soupeřem s umělou inteligencí.

Více

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do

Více

Merkur perfekt Challenge Studijní materiály

Merkur perfekt Challenge Studijní materiály Merkur perfekt Challenge Studijní materiály T: 541 146 120 IČ: 00216305, DIČ: CZ00216305 / www.feec.vutbr.cz/merkur / steffan@feec.vutbr.cz 1 / 10 Název úlohy: Autonomní dopravní prostředek Anotace: Úkolem

Více

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

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

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel 2007. Výpočet budeme demonstrovat

Více

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

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28. Zdokonalování gramotnosti v oblasti ICT Kurz MS Excel kurz 6 1 Obsah Kontingenční tabulky... 3 Zdroj dat... 3 Příprava dat... 3 Vytvoření kontingenční tabulky... 3 Možnosti v poli Hodnoty... 7 Aktualizace

Více

popel, glum & nepil 16/28

popel, glum & nepil 16/28 Lineární rezoluce další způsob zjemnění rezoluce; místo stromu směřujeme k lineární struktuře důkazu Lineární rezoluční odvození (důkaz) z Ë je posloupnost dvojic ¼ ¼ Ò Ò taková, že Ò ½ a 1. ¼ a všechna

Více

Záznam dat Úvod Záznam dat zahrnuje tři základní funkce: Záznam dat v prostředí třídy Záznam dat s MINDSTORMS NXT

Záznam dat Úvod Záznam dat zahrnuje tři základní funkce: Záznam dat v prostředí třídy Záznam dat s MINDSTORMS NXT Úvod Záznam dat umožňuje sběr, ukládání a analýzu údajů ze senzorů. Záznamem dat monitorujeme události a procesy po dobu práce se senzory připojenými k počítači prostřednictvím zařízení jakým je NXT kostka.

Více

Obsah: Problém osmi dam

Obsah: Problém osmi dam Prohledávání stavového prostoru leš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Problém osmi dam Prohledávání stavového prostoru Neinformované prohledávání Úvod do umělé inteligence

Více

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb. Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb. 1. Informace o přijímacích zkouškách Studijní program: Informatika navazující magisterský

Více

DUM č. 13 v sadě. 29. Inf-5 RoboLab a Lego Mindstorms

DUM č. 13 v sadě. 29. Inf-5 RoboLab a Lego Mindstorms projekt GML Brno Docens DUM č. 13 v sadě 29. Inf-5 RoboLab a Lego Mindstorms Autor: Hana Křetínská Datum: 25.06.2014 Ročník: 1AV, 2AV, 3AV, 4AV, 5AV Anotace DUMu: Výuka robotiky a programování pomocí stavebnice

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

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

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

Více

10. Složitost a výkon

10. Složitost a výkon Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 10 1 Základy algoritmizace 10. Složitost a výkon doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří

Více

Implementace LL(1) překladů

Implementace LL(1) překladů Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

Obr. P1.1 Zadání úlohy v MS Excel

Obr. P1.1 Zadání úlohy v MS Excel Přílohy Příloha 1 Řešení úlohy lineárního programování v MS Excel V této příloze si ukážeme, jak lze řešit úlohy lineárního programování pomocí tabulkového procesoru MS Excel. Výpočet budeme demonstrovat

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,

Více

63. ročník Matematické olympiády 2013/2014

63. ročník Matematické olympiády 2013/2014 63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3 Obsah Obsah 1 Program přednášek 1 2 Podmínky zápočtu 2 3 Co je algoritmus? 2 3.1 Trocha historie............................ 2 3.2 Definice algoritmu.......................... 3 3.3 Vlastnosti algoritmu.........................

Více

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah

Více