Sem vložte zadání Vaší práce.

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

Download "Sem vložte zadání Vaší práce."

Transkript

1 Sem vložte zadání Vaší práce.

2

3 České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Bakalářská práce Herní server strategické tahové hry Sepulcher Václav Starý Vedoucí práce: Ing. Jiří Daněček 16. května 2012

4

5 Poděkování Na tomto místě bych rád poděkoval Ing. Jiřímu Daněčkovi za vedení mé bakalářské práce, jeho čas, ochotu a cenné rady.

6

7 Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů, zejména skutečnost, že České vysoké učení technické v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona. V Praze dne 16. května

8 České vysoké učení technické v Praze Fakulta informačních technologií c 2012 Václav Starý. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Václav Starý. Herní server strategické tahové hry Sepulcher: Bakalářská práce. Praha: ČVUT v Praze, Fakulta informačních technologií, 2012.

9 Abstract This thesis focuses on creating a multiplayer server application, used in the turn-based strategy game Sepulcher. Its major part deals with artificial intelligence algorithms for pathfinding in graphs. In order to maintain a smooth flow of the game, the thesis elaborates on the client-server communication. A design of the game logic, which allows to customize and extend the game easily, is also discussed. Keywords C# Sepulcher, Artificial intelligence, Server application, Pathfinding, Abstrakt Práce je zaměřena na tvorbu serverové aplikace umožňující hru více hráčů, pro tahovou strategickou hru Sepulcher. Její velká část je věnována algoritmům umělé inteligence zabývajících se hledáním cest v grafech. Z důvodu plynulosti hry řeší způsob komunikace mezi klientem a serverem. Není opomenut návrh herní logiky, který umožňuje hru jednoduše upravovat a rozšiřovat. Klíčová slova cest, C# Sepulcher, Umělá inteligence, Serverová aplikace, Hledání 9

10

11 Obsah Úvod 17 1 Teoretická část NP problém Terminologie AI Základní strategie hledání cest A* a heuristická funkce Využití A* v PC hrách Genetický algoritmus Analytická část Požadavky na serverovou aplikaci Technologie C#,.NET Framework Analýza herního prostředí Analýza A* Heuristiky - odhad vzdálenosti Jump Point Search Lightning-Fast A* Výběr algoritmu pro hledání cest Vzhled cesty Komunikační protokol návrh a analýza Návrh komunikace Domain model - herní logika Domain model - serverová aplikace Implementační část Konvence úpravy kódu Implementace protokolu Synchroní komunikace Problém zvýraznění dlaždic

12 3.5 Testování Základní testování Testy vstupních hodnot Zátěžový test Závěr 59 Literatura 61 A Seznam použitých zkratek 63 B Obsah přiloženého CD 65 12

13 Seznam obrázků 1.1 Schéma agent(7) Procházení grafu - základní strategie Prohledávání iterative deeping search Procházení grafu - A* algoritmus Prohledaný prostor v závislosti na algoritmu Hledání cesty v hrách Ukázka převodu mapy do grafové repreazentace Křivka rotoucí náročnosti při expanzi jednoho uzlu Prohledaný prostor v závislosti na algoritmu Roustoucí časová náročnost grafu v závisloti na počtu uzlů Vzhled optimální cesty Kanály mezi klientem a serverem Asynchronní kanál a fronta Domain model herní logiky Domain model serverové logiky

14

15 Seznam tabulek 2.1 Složitosti datových struktur Algoritmy pro hledání cest a jejich optimálnost Naměřená rychlost testovaných algoritmů Velikost nejjednoduššího příkazu Porovnání velikost objektů v závislosti na formátu

16

17 Úvod Práce byla vytvořena v návaznosti na předmět Počítačové hry a animace. V tomto předmětu nebyl dostatečný prostor pro téma umělé inteligence. Je to rozsáhlá vědecká disciplína, proto bude většina mé práce zaměřena na hledání cest v grafech, To je základní prvek umělé inteligence počítačových her. Práce se bude opírat o design dokument hry Sepulcher, který byl vytvořen i s hrou na předmětu Počítačové hry a animace. Návrh Sepulcher hry počítá s hrou pro více hráčů, která byla v původní verzi umožněna pouze v módu horkého křesla. Tedy v módu, kde se více hráčů střídá u jednoho počítače. Možnost hry více hráčů z různých míst na světě by měla zajistit právě serverová aplikace vytvořená v této práci. Původní hra Sepulcher, pro kterou jsem implementoval herní logiku a umělou inteligenci byla pro hraní na osobním počítači přijatelná. Serverová aplikace bude však vyhodnocovat více příchozích požadavků ve stejném okamžiku. Proto bude muset být většina kódů přepsána, jak z důvodu špatného odstínění herní logiky od prezentační vrstvy, tak špatně napsanými algoritmy pro hledání cest. Práce je rozdělena na tři hlavní úseky. V prvním části je úvod do problematiky související s umělou inteligencí a hledáním cest v grafech. Na konci této části je také uveden vše řešící genetický algoritmus, jako univerzální způsob řešení problémů za pomoci umělé inteligence. Analytická část není klasickou analýzou softwarového inženýrství. Z velké části je zaměřena na prohledávací algoritmy uvedené v části první. Je zde rozebíráno jejich uplatnění při implementaci, měří se jejich kvality a diskutuje se nad možnostmi zlepšení. V poslední části se zabývám několika zajímavými problémy, které bylo nutno řešit při implementaci a nebylo též opomenuto testování. Cílem mé práce je vytvořit serverovou aplikaci, které bude umožňovat hru více hráčů. Rád bych ukázal, jakým způsobem se přistupuje k hledání cest v grafech a hrách. Jaké algoritmy zvolit a jak je optimalizovat v prostředí, ve kterém se hra odehrává. 17

18

19 Kapitola 1 Teoretická část 1.1 NP problém NP problémy jsou takové problémy, u kterých není doposud znám algoritmus řešení s polynomiální složitostí. Problematika NP úplných problémů je celkem novou záležitostí, přicházející s moderním věkem výpočetní techniky. Poprvé byl NP úplný problém zmíněn v práci Stephna Cooka roku 1971, kterou následně ukázal na splnitelnosti logických formulích. Jedním z problémů tisíciletí (problém, za jehož vyřešení je vypsána odměna 1 mil. dolarů), je problém P=NP, tedy zda jde NP problém vyřešit na deterministickém turingově stroji v polynomiálním čase. Pokud by se tato rovnost prokázala, znamenalo by to převratné změny především v moderní kryptografii, která své šifrování staví tak, aby nalezení klíče k šifře bylo NP úplným problémem. V dnešní době můžeme pro řešení NP úplných problémů použít heuristiky. Heuristiky neprocházejí celý stavový prostor (neprocházejí všechny možnosti), ale pouze jeho části. To značně urychluje hledání přípustného řešení. Výsledkem heuristiky je pak často řešení sub-optimální. Optimální řešení je takové řešení, které dosahuje nejlepších možných výsledků. Nemusí existovat pouze jedno. Sub-optimální řešení je řešení s hodnotami, které se velice blíží řešení optimálnímu. Občas je dobré přijmou tuto variantu v případech (mimo jiné) kdy: Nalezení optimálního řešení je časově velice náročné. Je obtížné nalézt nějaké řešení (například u tvorby rozdělovníků). Nelze rozhodnou, zda řešení je optimální. 19

20 1. Teoretická část 1.2 Terminologie AI Intelligent Agent Intelligent Agent je v umělé inteligenci nazývaná autonomní entita se schopností pozorovat a manipulovat s prostředím(1). Obrázek 1.1: Schéma agent(7). S pomocí vstupních senzorů monitoruje stav prostředí a díky aktuátoru pak tento stav může ovlivňovat. Hlavní otázkou, kterou řeší umělá inteligence, je zpracování vstupů a výstupů tak, aby agent dosáhl určitého cíle Agentí prostředí Prostředí, které agent prozkoumává, může mít různé vlastnosti, podle kterých se dělí. 20 Plně nebo částečně prozkoumatelné prostředí Plně prozkoumatelné prostředí ukazuje všechny stavy. V tomto prostředím se hrají například šachy, kde vidíme celou hrací plochu a všechny figurky. Částečně prozkoumatelné prostředí poskytuje pouze informace o některých stavech. Příkladem mohou být karetní hry, kde hráč zná pouze své karty a karty vyložené na stole. O hracích kartách jiných hráčů nemá informace. Deterministické nebo nedeterministické prostředí Deterministické prostředí má jasně daná pravidla pro přechod mezi stavy. Figurky na šachovnici mají jasně daná pravidla pohybů, kterými se můžou pohybovat. Nedeterministické prostředí obsahuje prvky náhody. Nelze tedy jednoznačně rozhodnout, do jakého stavu prostředí se přejde. Jsou to například hry s kostkami.

21 1.3. Základní strategie hledání cest Diskrétní nebo spojité prostředí Diskrétní prostředí se může nacházet pouze v konečném množství stavů. Spojité prostředí se může nacházet v nekonečném množství stavů. Neutrální nebo cílené prostředí Neutrální prostředí změnou svého stavu nesleduje žádný konkrétní cíl. Cílené prostředí změnou stavu nějaký cíl sleduje. Toto prostředí obsahuje většina her. Statické nebo dynamické prostředí Statické prostředí mění svůj stav pouze v závislosti na akci agenta. Dynamické prostředí může změnit svůj stav bez agentova zásahu. 1.3 Základní strategie hledání cest Definice problému hledání cest Problém hledání nejkratší cesty v grafu je jeden ze základních problémů teorie grafů. S problémem hledání (nejkratší) cesty v grafu se setkáváme v mnoha různých oborech. Nemalé úsilí je mu věnováno i v počítačových hrách. Umělá inteligence, která tento problém řeší, se pohybuje v agentním prostředí, které je plně prozkoumatelné, diskrétní, deterministické a statické. Všechny dále uvedené algoritmy, které zohledňují ohodnocení hran požadují, aby cena všech hran byla větší nebo rovna 0. Problém se záporným ohodnocením hran řeší například Johnsonův algoritmus, jehož popis je v knize (2). Algoritmy rozdělují uzly prohledávaného grafu do třech tří množin. Fresh uzly, o kterých algoritmus ještě neví. Open uzly, které má algoritmus právě k dispozici. Close uzly, které algoritmus již zpracoval. Tato množina uzlů je zde proto, aby algoritmus nenavštěvoval uzly víc než jedenkrát a tak nedocházelo k redundanci cest. Pokud algoritmus expanduje uzel, pak uzel přesouvá z Open do Close množiny a do Open množiny umisťuje všechny následovníky expandovaného uzlu. 21

22 1. Teoretická část Obrázek 1.2: Procházení grafu - základní strategie. Čísla v uzlech udávají pořadí, v jakém jsou uzly expandovány pro: A prohledávání do hloubky B prohledávání do šířky C uniform-cost search Prohledávání do šířky Základní jednoduchý přístup k nalezení cesty spočívá v procházení grafu po jednotlivých úrovních. Algoritmus se dá jednoduše implementovat pomocí FIFO fronty, která reprezentuje množinu Open uzlů. Prohledáváním grafu do šířky se nalezne optimální cesta, pokud hrany nemají ohodnocení, nebo ohodnocení hran je rostoucí funkce závislá na hloubce uzlu(1). Má však vysokou výpočetní a paměťovou náročnost. Proto je tento algoritmus použitelný pouze na problémy s malým počtem uzlů Uniform-cost search (Cheapest first) Uniform-cost search nalezne optimální řešení vždy. Bez ohledu na ohodnocení hran (které je 0 nebo kladné). Pokud je ohodnocení na všech hranách stejné nebo žádné, pak se algoritmus chová stejně jako prohledávání do šířky. Uniform-cost při hledání cesty vždy expanduje uzel s nejnižším ohodnocení cesty, která k němu vede z počátečního uzlu. Variantou Uniform-cost je Dijskrův algoritmus(17) Prohledávání do hloubky Prohledávání do hloubky vždy expanduje nejhlubší uzel. Jednoduchá implementace je pomocí LIFO fronty reprezentující Open množinu. Algoritmus má menší paměťovou náročnost než prohledávání do šířky. V rozsáhlém, téměř nekonečném prostoru, je pro tento algoritmus velice obtížné najít cestu z důvodu stálého sestupování do hloubky. Také toto prohledávání grafu nezaručuje nalezení optimální cesty. Malá paměťová náročnost je 22

23 1.4. A* a heuristická funkce Obrázek 1.3: Prohledávání iterative deeping search velice atraktivní a proto prohledávání grafu do hloubky je často použito jako stavební kámen složitějších algoritmů Iterative deeping search U tohoto algoritmu je postup stejný jako u prohledávání grafu do hloubky s tím, že je nastaven limit na maximální hloubku, do které lze sestoupit. Pokud nebude nalezeno řešení, limit hloubky se navýší a graf je znovu prohledán. Algoritmus má malou paměťovou náročnost stejně jako prohledávání do hloubky a cesta, kterou nalezne, je optimální. 1.4 A* a heuristická funkce Heuristika Heuristika se využívá v situacích, kdy je stavový prostor pro úplné procházení příliš velký nebo pro daný problém není znám algoritmus řešení. Heuristika nemusí nalézt nejlepší řešení. Často nalezené řešení je pouze přibližné, ale lze je nalézt v rozumném čase. Proto jsou heuristiky zpravidla používané při řešení NP-úplných problémů A* algoritmus Spojením Uniform-cost search s vhodnou heuristikou, která do algoritmu vnáší hlubší znalost problému, vzniká velice silný nástroj A*. A* vybírá pro expanzi takový uzel, který má nejmenší hodnotu f(x) = g(x) + h(x), kde g(x) je ohodnocení hrany, h(x) předpokládaná vzdálenost z uzlu k cíli. Funkce f(x) je tedy předpokládaná cena řešení. Na heuristiku h(x) jsou kladeny dva požadavky - přípustnost a konzistenčnost. 23

24 1. Teoretická část Obrázek 1.4: Procházení grafu - A* algoritmus. Černé číslice udávají cenu hrany. dé číslice udávají hodnotu heuristiky. Při procházení grafu by se po dosažení cíle šedivé uzly neexpandovaly. Heruristika h(x) je přípustná, pokud předpokládaná cena řešení je menší nebo rovna reálné ceně. Tehdy se jedná o optimistickou heuristiku. Konzistence vyžaduje, aby pro každý uzel platilo, že h(x) d(x, y) + h(y), kde d(x, y) je ohodnocení hrany mezi uzly x a y. Platí, že pokud je heuristika konzistentní, je i přípustná(1). Cesta nalezena A* je optimální, pokud jsou tyto dvě podmínky splněny. Při prohledávání stromového grafu je pro nalezení optimální cesty postačující podmínka přípustnosti Weighted A* Úpravou funkce f(x) na tvar f(x) = g(x) + εh(x), kde ε > 1 získáváme weighted A* algoritmus. Parametr ε udává jak velkou váhu má heuristika při výběru, jaký uzel bude expandován. Při této úpravě již heuristická funkce není optimistická a nalezená cesta tudíž nemusí být optimální. Za tuto cenu weighted A* nabízí v mnoha případech větší rychlost a menší paměťovou náročnost než klasický A* algoritmus. 1.5 Využití A* v PC hrách Hledání cest je základní a velice důležitý problém v PC hrách. atná realizace hledání cest je velice snadno odhalitelná. Buď nesmyslnou cestou, kterou se pohybující objekt vidá, nebo snížením výkonu z důvodu špatně zvolené strategie hledání, popřípadě špatné implementace. Velice často pro problém hledání cest je využíván A* algoritmus a jeho různé mutace. Hry kladou na hledání cest vysoké nároky na rychlost nalezení cesty a kvalitu cesty, která v některých případech může být i sub-optimální. Prohledávaný prostor je konečný, jeho velikost může být značně velká. Tomu je úměrná i časová náročnost na nalezení cesty. Hledaní cesty tedy musí 24

25 1.5. Využití A* v PC hrách Obrázek 1.5: Prohledaný prostor v závislosti na algoritmu. A prohledávání do šířky, které nalezne nejkratší cestu B A* algoritmus nalezne nejkratší cestu, prohledá při tom méně prostoru C weighted A*, nalezne sub-optimální cestu s nejmenším nárokem na prostor být rozděleno tak, aby proces nadměrně nezatěžoval výpočetní prostředky procesoru (tím nebrzdil průběh hry) a cesta působila přirozeným dojmem tak, že byla nalezena v jednom okamžiku. Problém můžeme rozdělit na hledání tří cest: rychlé cesty, úplné cesty a spojovací cesty. Rychlá cesta V okamžiku, kdy je po objektu vyžadováno aby se přemístil, není čas na hledání úplné cesty k cíli. Proto se nalezne pouze neúplná krátká cesta tak, aby se objekt vydal přibližným směrem k požadovanému bodu. Rychlá cesta je zde tedy proto, aby nám dala čas k nalezení cesty úplné. Úplná cesta Úplná cesta je cesta, která vede k cíli objektu. Hledání začíná tam, kde končí cesta rychlá. Její hledání je rozděleno do více průchodů herní smyčkou. Rozpracované cesty jsou ukládány do fronty, která může mít různé strategie rozdělování výpočetních prostředků. Ty se mohou rozdělovat rovnoměrně mezi všechna rozpracovaná hledání nebo podle priorit. Priorita je pak často určena dobou strávenou ve frontě. Spojovací cesta Poslední hledanou cestou je cesta spojovací. S jejím hledáním se začíná v okamžiku nalezení úplné cesty. Její počátek je aktuální pozice objektu a cílovým bodem je bod na cestě úplné. Není jasně dáno o který bod se jedná, protože nalezení spojovací cesty musí být co nejrychlejší a zároveň tato cesta musí vypadat co nejpřirozeněji. 25

26 1. Teoretická část Obrázek 1.6: Hledání cesty v hrách Optimalizace Pro rychlejší nalezení cesty je třeba zmenšit prohledávaný prostor. V A* algoritmu využijeme vlastnost iterative deep search. Tedy omezíme hloubku do které se A* může vnořit. Pokud nebude cesta nalezena, omezení zmírníme posunem hranice maximální hloubky a prohledávání opakujeme. Omezení hloubky může být závislé na délce cesty, ceně nebo na využité paměti. Volba správných datových struktur pro open a close množiny výrazně ovlivňuje A* algoritmus. Je důležité zaměřit se na složitost vkládání a odebírání prvků ze seznamů. Pokaždé, když se expanduje uzel, dochází k jeho odebrání prvku z open listu a je přesunut do close listu. Následovníci expandovaného uzlu jsou vloženi do open listu, proto je vhodné mít datovou strukturu se složitostí vkládání O(1). Problém je komplikován faktem, že A* expanduje uzel s nejnižší hodnotou f(n), proto by se mělo jednat o upořádanou strukturu. Řešení toho problému nabízí v knize (6), kdy před open listem je list o velikosti patnácti prvků s řazením vkládáním a obsahuje uzly s nejnižší hodnotou f(n). 1.6 Genetický algoritmus Genetický algoritmus je inspirován Darwinovou teorií evoluce. Byl vymyšlen Johnem Hollandem a kolektivem. Publikován byl roku 1975 v knize Adaption in Natural and Artificial Systems. Algoritmus je velice jednoduchý. Začíná s počáteční množinou řešení, která může být jak náhodně vybraná, tak nalezena pomocí jiných heuristik. Tato množina řešení se nazývá počáteční populace. Pro snažší aplikaci genetických operátorů se jedinci kódují. Takto zakódovaný jedinec se nazývá chromozom. Algoritmus musí být schopen jednotlivá řešení ohodnotit. K tomu účelu definujeme fitness funkci, která pro lepší řešení vrací vyšší hodnoty. Následuje selekce řešení pro křížení s pravidlem: Čím větší fitness hodnota, tím větší pravděpodobnost výběru. 26

27 1.6. Genetický algoritmus Nad vybranými jedinci začíná proces křížení, tedy proces, který z vybraných jedinců vytváří nová řešení. Následuje mutace, která s malou pravděpodobností pozmění nepatrně chromozom. Mutace brání příliš rychlému zjednotvárnění vlastností v populaci, ztrátě potencionálně užitečného genetického materiálu a předčasné konvergenci populace(4). Poslední krok algoritmu je vytvoření nové počáteční populace. V nové populaci buď budou pouze potomci populace stávající nebo se všechny chromozomy seřadí a do nové populace se zařadí prvních N s nejvyšší hodnotou fitness funkce. V tomto okamžiku se algoritmus vrací na začátek a postup opakuje. Algoritmus je ukončen pokud najde řešení s odpovídající fitness funkcí nebo bylo vytvořeno požadované množství generací. Algoritmus 1 Genetický algoritmus Vytvoř počáteční populaci. Ohodnoť jedince populace. while ukončující podmínka do Vytvoř novou populaci tak, že: { while Populace není kompletní do Vyber 2 jedince z Populace. Zkřiž tyto jedince - zisk minimálně jednoho potomka. Nad potomkem proveď mutaci. Ulož potomka do nové populace. end while } Nahraď starou populaci populací novou. end while Příklad Najděte maximum funkce f(x) = x 2, x 0, 255. Náhodně vybraná počáteční populace: 5, 23, 71, 96. Zakódování do binárního kódu. N Binární zakódování Fitness hodnota Prav. křížení [%] , , Fintess se stanoví stejným předpisem jako funkce pro níž hledáme maximum, tedy x 2. Tento předpis má vypovídající hodnotu o kvalitě jedince. V případě hledání minima by byla nevyhovující a zvolila by se například 27

28 1. Teoretická část f(x) = 10 5 x 2. Algoritmus nyní vypočítá pravděpodobnost křížení pomocí kola štěstí. Provede se křížení mezi hodnotou 96 a 71. Bod křížení je náhodně zvolen za čtvrtým bitem. Předek Potomek N Fitness hodnota Druhé křížení bude mezi hodnotou 96 a 23, bod křížení za třetím bitem. Předek Potomek N Fitness hodnota Předposledním krokem algoritmu je mutace. Tedy s velice malou pravděpodobností si jedinec sám sobě neguje jeden bit. Zde je velice dobře vidět její nutnost. Pouhé křížení nám samo o sobě nikdy nevytvoří jedince, který by měl jedničku na prvním nebo čtvrtém bitu. V posledním kroku se vytvoří z potomků nová počáteční populace a algoritmus se opakuje. Uvedený příklad je pouze ilustrativní a mnohem lépe by se na řešení tohoto problému hodil například horolezecký algoritmus popsaný v (1). Ten by na rozdíl od genetického algoritmu s jistotou našel nejlepší řešení a to s výrazně menším nárokem na výpočetní prostředky. Pro účel seznámení s postupy používané v genetických algoritmech je však velice užitečný Kódování Prvním zásadním rozhodnutím při používání genetického algoritmu je volba kódování. Při špatné volbě kódování můžou vznikat redundance, které zvětšují mohutnost prohledávaného prostoru a tím snižují efektivitu algoritmu (4). Tradičně je používáno binární kódování, na které se snadno aplikují klasické genetické operátory. Pro binární reprezentaci čísel je preferován Grayův kód, v kterém se sousedící čísla liší pouze v jednom bitu. Tato vlastnost je pozitivní při mutaci, kdy malá změna chromozomu znamená malou změnu řešení. Mezi další často používané typy kódování patří permutační kódování, maticové kódování, stromové kódování nebo kódování nad abecedou znaků. Kódování je silně závislé na problému. Proto nelze jednoznačně říci, které je nejlepší nebo uvést univerzální kódování Fitness funkce Fitness funkce přiřazuje chromozomům takovou hodnotu, která reprezentuje jeho sílu v populaci. V mnoha případech se jako fitness funkce dá použít užitková funkce. Je dobré si uvědomit, že při ohodnocení populace může platit A > B > C > A (například při volbě vhodné herní strategie). Takovou situaci 28

29 1.6. Genetický algoritmus řeší mimo jiné turnajová fitness funkce, kde ohodnocení chromozomu je počet vyhraných turnajů (porovnání) Selekce Pro selekci platí podobná pravidla jako pro volbu fitness funkce. Při špatné volbě selekce může docházet k pomalé konvergenci populace a k úpadku do lokálního extrému. Často se používá pro selekci kolo štěstí. nce na výběr pak odpovídá procentnímu zastoupení fitness hodnoty v populaci. Pokud se ale v populaci nachází pár silných jedinců (ti mohou být v lokálním extrému), ostatní jedinci nemají příliš možností pro křížení a algoritmus nalezne pouze lokální extrém. Takové situace lze řešit například ranked selection(4). Ta šanci na křížení přiděluje podle pořadí. Mnoho pravidel platících pro selekci se dá aplikovat na fitness funkci a obráceně Křížení Díky křížení se genetický algoritmus posouvá v prohledávání stavového prostoru kupředu. Jeho efektivnost velice záleží na správně zvolené fitness funkci a selekci. Části informací z dvou chromozomů vybraných selekcí jsou spojené a vytvářejí nového jedince. Časté je použití jednobodového křížení (obecně n-bodové křížení). Na křížení je kladen požadavek, aby jedinec takto vzniklý byl přípustným řešením. To v mnoha úlohách není samo o sobě splněno (úlohy plánování, obchodní cestující) a proto se na nepřípustné jedince musí aplikovat opravné algoritmy. Druhou možností je použití codeků (zobrazení), které převádějí chromozomy na přípustného jedince Mutace Mutace slouží k udržování genetické variace v populaci a tím brání, aby proces hledání sklouznul do oblasti nějakého lokálního optima. Také přináší do populace nové prvky, které by nemusely být pomocí genetického operátoru křížení v populaci přítomné (viz příklad). Podle (4) by mutace jedince měla nastat s pravděpodobností 0,001 až 0,05. Stejně jako u křížení je u některých problémů potřeba oprava zmutovaného jedince na přípustné řešení Elitismus Při vygenerování všech potomků stávající populace umírá a potomci vzniklí křížením vytvoří novou počáteční populaci. Pokud se do této populace dostanou i nejsilnější jedinci z rodičovské populace, je do genetického algoritmu zahrnut elitismus. Ten zaručuje, že doposud nejlepší řešení nebude ztraceno, zároveň však zvyšuje pravděpodobnost uváznutí v lokálním extrému. 29

30

31 Kapitola 2 Analytická část 2.1 Požadavky na serverovou aplikaci Požadavky na serverovou aplikaci Sepulcher vycházejí z design documentu (v příloze) a nároky na klientskou aplikaci. Klientská aplikace Na klientskou aplikaci jsou kladeny minimální požadavky. Nepředpokládá se, že by poskytovala jinou než prezentační funkcionalitu. To na server klade větší zatížení jak na přenos dat, tak na výpočetní prostředky. Příkladem toho může být zvýraznění dlaždic zasažené efektem. Přestože klientská aplikace by tuto operaci mohla sama vypočítat, není to po ní vyžadováno a server tuto funkcionalitu musí poskytnout. Tento fakt však brání tomu, aby různí klienti viděli různé, často nesmyslné věci (out-of-syn). Klientská aplikace bude implementována v technologii C# a frameworkem XNA a neklade žádné požadavky na komunikační protokol. Ten se tedy musí v rámci této práce navrhnout s ohledem na technologie používané klientem. Generování map Jedním ze selling-pointů uvedeným v design documentu je náhodná generace map. Mapa musí být generována tak, aby (bez modelů) byla každá místnost a dlaždice dostupná. Některé mapy nemusí být od začátku hry hned zobrazeny a jsou odhaleny až během hry. Mapa je generována pomocí semínka, které, pokud není určeno, je vygenerováno náhodně. Toto náhodné semínko je hráčům nabídnuto, aby v budoucnu mohli vygenerovat stejnou mapu. Softwarové požadavky Pro běh aplikace nejsou definovány žádné softwarové požadavky. Lze je tedy specifikovat v závislosti na použité technologii. 31

32 2. Analytická část Hardwarové požadavky Stejně jako u softwarových požadavků nejsou definovány. Minimální hardwarové požadavky budou stanoveny na sestavu, na které bude aplikace testována. Jednoduché spuštění hry Hráč by měl mít možnost spustit hru jedním kliknutím. Není vyžadována po hráči žádná registrace, ani logování do systému. Free-To-Play Hra má splňovat model Free-To-Play. Hraní bude zcela zdarma. Také bude mít otevřený zdrojový kód, nebude tedy možné využít žádné placené technologie. Bezpečnost Aplikace nemusí obsahovat žádné bezpečnostní prvky, protože neobsahuje žádná citlivá data o uživatelích. Zatížení Server by měl zvládnout alespoň 100 uživatelů v jednom okamžiku. 2.2 Technologie C#,.NET Framework 4 Volba programovacího jazyka je důležitou součástí analýzy. atná volba může vést k prodloužení práce nebo dokonce úplnou nemožností implementace některých částí programu. Pro tuto serverovou aplikaci byl zvolen jazyk C# veze 4.0, s.net Framework 4.0. Tento jazyk byl zvolen, protože původní Sepulcher hra je v tomto jazyce napsána a bude tedy možno využít při implementaci některé již hotové části kódu. To by ale pro volbu technologie nestačilo. Serverová aplikace bude potřebovat především dobře umět pracovat s vlákny a s komunikačními kanály. C# tyto požadavky velice dobře zvládá, navíc je okolo C# velká komunita a kvalitně zpracovaná dokumentace na Microsoft Developer Network. Pro čtenáře, který se se C# ještě nesetkal, je zde výčet základních vlastností tohoto programovacího jazyka. 32 C# je objektově orientovaný jazyk, ve kterém je vše objektem (potomkem třídy object) a to včetně primitivních datových typů. Jazyk je inspirován jazykem Java a přebírá (stejně jako Java) syntaxi jazyka C. Automatická správa paměti v podobě garbage collector. Detekce hranic polí a neinicializovaných proměnných.

33 2.3. Analýza herního prostředí Neexistuje zde vícenásobné dědění, které používá jazyk C++. Náhradou jsou zde interface, který předepisuje rozhraní třídy. Jednou ze zásad softwarového inženýrství je zapouzdření. Zde C# nabízí property, které se chovají jako klasický datový atribut, vně se jedná o funkce get a set. C#, stejně jako C++, má ukazatele na funkce. Jistou nevýhodou je závislost.net Frameworku 4 na platformě systému Windows. Podporované verze Windows jsou Windows XP a novější. Protože však z požadavků na aplikaci nevyplývá požadavek na platformní nezávislost nebo na konkrétné operační systém, není použití této technologie problém. Z této volby plyne požadavek na softwarové vybavení počítače, na kterém serverová aplikace poběží. 2.3 Analýza herního prostředí Pro správnou implementaci a volbu algoritmů je nutné nejprve analyzovat prostor, ve kterém se hra odehrává. Podkladem této analýzy je design document. Herní plocha se skládá ze čtvercových místností. Těch může být v jedné hře maximálně = Herní plocha je takto záměrně omezena, aby byla umožněna jednoduchá reprezentace dvourozměrným polem s fixní velikostí. Počet místností je tak dostatečně velký a nebude proto omezovat hráče. Tento závěr je odvozen ze stolní hry Castle Ravenfoft (touto hrou je Sepulcher inspirován), která má stejné herní prostředí. Zde se většina her odehrává na prostoru menším než 25 místností. Na každou místnost je dále kladen požadavek, aby měla alespoň jeden vstup. Také nesmí být rozdělena tak, aby se vytvořilo více místností. Je tedy jednoznačně dané z jakého směru se do místnosti dá vstoupit a také odejít. Každou místnost tvoří 4 4 = 16 čtvercových dlaždic. Každá dlaždice se může nacházet ve třech stavech. Prvním je dlaždice prázdná - tedy taková, která neobsahuje žádný model a na kterou lze vstoupit a zůstat na ní stát. Druhý typ je dlaždice s modelem. Je neprůchozí, nelze na ni vstoupit, ani umístit další jiný model. Model na této dlaždici má ale možnost z dlaždice odejít. Poslední typ je dlaždice obsahující zeď - na takovou dlaždici nelze umístit model ani dlaždicí projít. Po dlaždicích se mohou modely pohybovat do 8 směrů a to za cenu jednoho kroku. Za tuto cenu je tedy možný i pohyb po úhlopříčce, který je v reálném světě delší ( 2). Pohyb po úhlopříčce je stanoven pravidlem: Pohyb po úhlopříčce o jednu dlaždici je umožněn, pouze pokud této dlaždice lze dosáhnout dvěma kroky bez cesty po úhlopříčce. 33

34 2. Analytická část Obrázek 2.1: Ukázka převodu mapy do grafové repreazentace. Operace Hash tabulka Strom Priority queue φ volání 1 Insert Θ(1) O(log 2 n) O(log 2 n) 3,5 Remove Θ(1) O(log 2 n) O(log 2 n) 1 IsElement Θ(1) O(log 2 n) O(log 2 n) 3,5 FindMinimum O(n) O(log 2 n) O(1) 1 Tabulka 2.1: Složitosti datových struktur. Z uvedeného vyplývá, že herní mapa je graf, kde z nebo do každého uzlu vede maximálně 8 hran. Do uzlu reprezentující zeď nevede žádná hrana. 2.4 Analýza A* Jak už bylo popsáno v teoretické části je A* jedením ze základních algoritmů pro hledání cest v počítačových hrách. V pseudokódu jsou používány dvě datové struktury pro fresh uzly (open list) a pro již prohledané uzly (close list). Výběr struktur je velice důležitý, protože má dopad jak na rychlost hledání, tak na využité paměti. Pro tyto dvě struktury připadají v úvahu tyto možnosti uvedené v tabulce 2.1. První hledanou strukturou bude struktura pro open list. Hash tabulka má pro Inser, Remove a IsElement konstantní časovou složitost (záleží ale také na vnitřní implementaci tabulky), pro nalezení minima má však složitost O(n). Protože pro strom a priority queue budou platit stejná pravidla, budeme nadále uvažovat pouze priority queue, která má konstantní náročnost 1 Aritmetický průměr počtu volání při expanzi jednoho uzlu. 34

35 2.4. Analýza A* Algoritmus 2 A* algoritmus P = počáteční uzel. Výpočet ceny heuristiky a F pro P. Přidání P do open listu. while Open list není prázdný do B = uzel s nejmenší hodnotou F z open listu. if B == cíl then return B end if Přesunutí uzlu B z open listu do close listu. for all C z potomků B do Výpočet F = G + H pro uzel C. if C je v close listu then continue end if if C je v open listu s hodnotou F je větší než právě vypočítanou then Aktualizuj rodiče a cenu F. else Přidej C do open listu. end if end for end while return Cesta neexistuje. na nalezení minima. Porovnáme tedy pro jaké N je výhodnější použít hash tabulku, před prioritní frontou. Při expanzi jednoho uzlu se provede v průměrném množství uvedeném v tabulce 2.1. Tedy při expanzi hash tabulka provede 8 + n operací, zatímco priority queue 8 log 2 n + 1. Na grafu 2.4 jsou tyto funkce znázorněny. Ani jedna ze složitostí není větší než složitost lineární, což je přijatelné. Prioritní fronta dokonce dosahuje logaritmické složitosti, to z ní dělá velice silného kandidáta pro využití. Pokud se však na aplikaci prioritní fronty podíváme důkladněji zjistíme, že složitost u operace IsElement v tomto případně nebude log n ale bude lineární, tedy n. To je způsobeno faktem, že fronta je řazena pomocí hodnoty funkce F. Pokud je hledán konkrétní prvek, musíme množinu procházet až do okamžiku nalezení. Též nastává problém v okamžiku, kdy upravujeme cenu uzlu, který je již v open listu zařazen. Nejen že tento prvek musí být nalezen a upraven, ale také musí být přesunut na správné pořadí ve frontě. Snížením ceny klesne hodnota F a tím stoupne priorita tohoto uzlu. Z těchto důvodů bude pro open list vybrána hash tabulka. U close listu je situace výrazně jednodušší. Používají se zde pouze funkce IsElement a Insert. Proto i zde bude použita hash tabulka, nabízející konstantní složitost pro tyto operace. 35

36 2. Analytická část Obrázek 2.2: Křivka rotoucí náročnosti při expanzi jednoho uzlu. 2.5 Heuristiky - odhad vzdálenosti Dalším důležitým faktorem u A* je použitá heuristika. Ta musí být konzistentní a optimistická. Nejčastěji se v odborné literatuře lze setkat s heuristikou Manhattan distance, která je definována H = X uzel X cíl + Y uzel Y cíl. Ten ale v případě Sepulcheru nelze použít pro nalezení optimální cesty, protože se nejedná o optimistickou heuristiku. Na rozdíl od reálného světa v prostředí Sepulcher má pohyb po úhlopříčce stejnou hodnotu jako pohyb po hraně (přestože úhlopříčka má délku 2). Další používanou heuristikou je eklidovská metrika definována vzorcem H = (X uzel X cíl ) 2 + (Y uzel Y cíl ) 2. I přestože se v reálném světě jedná o heuristiku optimistickou, v našem prostředí pro ni platí stejný závěr jako u Manhattan distance. Navíc heuristika nevrací celá čísla, což by se mohlo jevit jako další nedostatek. Optimistickou a konzistentní heuristikou v prostředí Sepulcher je diagonal distance, H = max( X uzel X cíl, Y uzel Y cíl ). Zde platí stejné pravidlo a to takové, že pohyb po diagonále je stejně drahý jako pohyb do ostatních směrů. Protože je vyžadováno, aby bylo vždy nalezeno optimální řešení, bude A* používat právě tuto techniku. Díky faktu, že heuristika je optimistická, je možné některá prohledávání omezená hloubkou rovnou prohlásit za neřešitelná. Tato kontrola bude použita v okamžiku, kdy od hráče přijde požadavek na pohyb, který je omezen počtem zbývajících kroků (tedy je omezen hloubkou). V případě, že heuristika bude 36

37 2.6. Jump Point Search mít větší hodnotu než je počet kroků, požadavek bude zamítnut a nebude se zbytečně plýtvat prostředky serveru Více informovaná heuristika Vytvořit a navrhnout vlastní více informovanou heuristiku není triviální úkol. Heuristika, jak už několikrát bylo zmíněno, musí být optimistická a konzistentní. Navíc její výpočet musí být rychlý, aby nezatěžoval výpočetní prostředky. V úvaze nad více informovanou heuristikou byla využita skutečnost prostředí Sepulcher, že jednotlivé dlaždice jsou součástí místností (viz analýza prostředí). Místnosti tedy tvoří graf o maximální velikosti = uzlů (dlaždic v tomto grafu je = ). Tento graf by se na začátku algoritmu prohledal do šířky a posléze by hodnota heuristiky odpovídala vzdálenosti dané místnosti od místnosti s cílovou dlaždicí. Při testovací implementaci se ukázalo, že heuristika je optimistická i konzistentní, ale hodnoty, které vrací, jsou příliš malé a A* expanduje více uzlů než s použitím diagonal distance. Výsledkem analýzy A* a heuristik je rozhodnutí, že pro datové kontejnery budou použity hashovací tabulky a zvolenou heuristikou bude diagonal distance. 2.6 Jump Point Search V prostředí, ve kterém se Sepulcher odehrává a které je popsáno v předešlé části, je prostředí známé a často ve hrách používané. Jedinou jeho odchylkou je nižší cena při pohybu po úhlopříčce. Je známo, že v mnoha hrách se používá prostředí známé jako mřížka a vyhledávací algoritmus A*. Optimalizací tohoto vyhledávajícího algoritmu v prostředí mřížky se zabývá Daniel Harabor. V práci (19) využívá vlastnosti Manhattanské metriky, tedy, že cesta mezi dvěma body v mřížce je vždy stejně dlouhá, ať se vybere jakákoliv posloupnost hran mířících k bodu B. Mapa je poté rozdělena na čtverce (v případě Sepulcheru by šlo využít místnosti) a hledání vně čtverců se v problému nezabýváme. Tento způsob však lze použít pouze pokud je pohyb omezen na čtyři základní směry a proto je toto řešení pro Sepulcher nevhodné. Druhou variantou a pro Sepulcher mnohem zajímavější, je práce (20) zabývající se prořezáváním sousedních uzlů a nazvaná Jump Point Search, který upravuje A*. Prvním krokem v algoritmu Jump Point Search (JPS) je ořezávání. Z uzlu vyloučíme všechny následovníky, do kterých se lze dostat z rodiče za stejnou nebo levnější cenu. U diagonálního pohybu se jedná pouze o levnější cestu. Sousedi, kteří po tomto kroku zbudou, však ještě nejsou finální. Následuje krok nazvaný Jump (odtud jump point), při kterém ve směru potomka přeskočíme všechny uzly, které by po ořezání měly maximálně jednoho souseda. 37

38 2. Analytická část Obrázek 2.3: Prohledaný prostor v závislosti na algoritmu. Délka optimální cesty je 16 kroků. A JPS, expanduje 7 uzlů, což je méně než délka optimální cesty. B A*, expanduje 73 uzlů. První uzel, který nelze přeskočit, je zařazen do finální množiny potomků právě zkoumaného uzlu. V práci (20) jsou dobře popsané používané algoritmy a podmínky pro JSP a je zde uveden důkaz, že cesta nalezená JPS při optimistické heuristice, bude optimální. Na začátku práce o JPS je dán požadavek na prostředí. Vyžaduje prostředí mřížky s pohybem do 8 směrů s cenou jednoho kroku do základních směrů a 2 kroku při posunu po úhlopříčce. Fakt, že délka úhlopříčky v Sepulcheru je menší, JPS v nalezení optimální cesty neovlivní. Pouze bude expandováno více uzlů (s délkou úhlopříčky 1 lze prořezat více sousedů). Při implementaci však bude použit nezměněný algoritmus. Nalezená cesta vypadá mnohem přirozeněji a to díky tomuto lehkému znevýhodnění pohybu po úhlopříčce. 2.7 Lightning-Fast A* Jedním z algoritmů, který bude zvažován pro použití v aplikaci, bude kombinace doposud nabytých znalostí. Pro implementaci A* a použitých struktur budou využity rady z knihy (6) uvedené také v teoretické části. Bude zvolena optimistická heuristika a práce se sousedy bude podle pravidel Jump Point Search uvedené v předchozí kapitole. Tento algoritmus bude označen 38

Úloha ve stavovém prostoru SP je , 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

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

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod

Více

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

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

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

Řízení toku v přístupových bodech

Řízení toku v přístupových bodech Řízení toku v přístupových bodech Lukáš Turek 13.6.2009 8an@praha12.net O čem to bude Co způsobuje velkou latenci na Wi-Fi? Proč na Wi-Fi nefunguje běžný traffic shaping? Je možné traffic shaping vyřešit

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

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

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ 10. 5. 2011 Tým: Simplesoft Členové: Zdeněk Malík Jan Rada Ladislav Račák Václav Král Marta Pechová malikz@students.zcu.cz jrada1@students.zcu.cz

Více

Úvod do počítačových sítí

Úvod do počítačových sítí Úvod do počítačových sítí Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: středa, 3 4 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 19.12.06 Základní charakteristika Jednoduchá

Více

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011 Automatická detekce anomálií při geofyzikálním průzkumu Lenka Kosková Třísková NTI TUL Doktorandský seminář, 8. 6. 2011 Cíle doktorandské práce Seminář 10. 11. 2010 Najít, implementovat, ověřit a do praxe

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu Jméno: Marek Handl Datum: 4. 2. 2009 Cvičení: Pondělí 9:00 Zadání Zvolte si heuristiku,

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

2. Řešení úloh hraní her Hraní her (Teorie a algoritmy hraní her)

2. Řešení úloh hraní her Hraní her (Teorie a algoritmy hraní her) Hraní her (Teorie a algoritmy hraní her) 4. 3. 2015 2-1 Hraní her pro dva a více hráčů Počítač je při hraní jakékoli hry: silný v komplikovaných situacích s množstvím kombinací, má obrovskou znalost zahájení

Více

Složitost her. Herní algoritmy. Otakar Trunda

Složitost her. Herní algoritmy. Otakar Trunda Složitost her Herní algoritmy Otakar Trunda Úvod měření složitosti Formální výpočetní model Turingův stroj Složitost algoritmu = závislost spotřebovaných prostředků na velikosti vstupu Časová složitost

Více

PŘÍLOHA C Požadavky na Dokumentaci

PŘÍLOHA C Požadavky na Dokumentaci PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé

Více

Reranking založený na metadatech

Reranking založený na metadatech České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1

Více

Emergence chování robotických agentů: neuroevoluce

Emergence chování robotických agentů: neuroevoluce Emergence chování robotických agentů: neuroevoluce Petra Vidnerová, Stanislav Slušný, Roman Neruda Ústav Informatiky, AV ČR Kognice a umělý život VIII Praha 28. 5. 2008 Evoluční robotika: EA & neuronové

Více

Stromy, haldy, prioritní fronty

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

Více

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

Optimalizaci aplikací. Ing. Martin Pavlica

Optimalizaci aplikací. Ing. Martin Pavlica Optimalizaci aplikací Ing. Martin Pavlica Vize: Aplikace v dnešním světě IT Ze všech částí IT jsou aplikace nejblíže businessu V elektronizovaném světě významným způsobem podporují business, ten se na

Více

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

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

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ Michal Brožek, Dominik Svěch, Jaroslav Štefaník MEDIUM SOFT a.s., Cihelní 14, 702 00 Ostrava, ČR Abstrakt Neustále rostoucí význam sběru dat, možnost

Více

Business Intelligence

Business Intelligence Business Intelligence Josef Mlnařík ISSS Hradec Králové 7.4.2008 Obsah Co je Oracle Business Intelligence? Definice, Od dat k informacím, Nástroj pro operativní řízení, Integrace informací, Jednotná platforma

Více

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 DOLOVÁNÍ V DATECH (DATA MINING) OBJEVUJE SE JIŽ OD 60. LET 20. ST. S ROZVOJEM POČÍTAČOVÉ TECHNIKY DEFINICE PROCES VÝBĚRU, PROHLEDÁVÁNÍ A MODELOVÁNÍ

Více

Varianty Monte Carlo Tree Search

Varianty Monte Carlo Tree Search Varianty Monte Carlo Tree Search tomas.kuca@matfyz.cz Herní algoritmy MFF UK Praha 2011 Témata O čem bude přednáška? Monte Carlo Tree Search od her podobných Go (bez Go) k vzdálenějším rozdíly a rozšíření

Více

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan Principy OOP při tvorbě aplikací v JEE Michal Čejchan Témata přednášky Principy OOP - připomenutí Úvod - co nás vede k používání OOP Reálný svět - jak (ne)používáme OOP Nedostatky na úrovni programovacích

Více

12 Metody snižování barevného prostoru

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

MASSIV. Middleware pro tvorbu online her

MASSIV. Middleware pro tvorbu online her MASSIV Middleware pro tvorbu online her Obsah prezentace Úvod Prostředky poskytované Massivem Využití jádra Massivu v Demu Zhodnocení projektu Prezentace Dema Úvod Část 1. Tým projektu Massiv Zahájení

Více

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming Průběžná písemná práce Průběžná písemná práce Obsah: Průběžná písemná práce Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ délka pro vypracování: 25 minut nejsou povoleny žádné materiály

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

Vnější směrovací protokoly

Vnější směrovací protokoly Vnější směrovací protokoly 1 Předmět: Téma hodiny: Třída: Počítačové sítě a systémy Vnější směrovací protokoly _ 3. a 4. ročník SŠ technické Autor: Ing. Fales Alexandr Software: SMART Notebook 11.0.583.0

Více

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/ Genetické algoritmy Jiří Vomlel Laboratoř inteligentních systémů Vysoká škola ekonomická Praha Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/ Motivace z Darwinovy teorie evoluce Přírodní

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován

Více

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů

Více

Moderní systémy pro získávání znalostí z informací a dat

Moderní systémy pro získávání znalostí z informací a dat Moderní systémy pro získávání znalostí z informací a dat Jan Žižka IBA Institut biostatistiky a analýz PřF & LF, Masarykova universita Kamenice 126/3, 625 00 Brno Email: zizka@iba.muni.cz Bioinformatika:

Více

Disková pole (RAID) 1

Disková pole (RAID) 1 Disková pole (RAID) 1 Architektury RAID Základní myšlenka: snaha o zpracování dat paralelně. Pozice diskové paměti v klasickém personálním počítači vyhovuje pro aplikace s jedním uživatelem. Řešení: data

Více

Testování operačního systému Windows Phone 8

Testování operačního systému Windows Phone 8 Testování operačního systému Windows Phone 8 Semestrální práce A2 v rámci předmětu A4B39TUR Muška Adam ČVUT FEL STM 0 Obsah 1. Popis přístroje... 2 2. Popis cílové skupiny... 2 3. Přehled případů užití...

Více

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

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

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

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Porovnání rychlosti mapového serveru GeoServer při přístupu k různým datovým skladům

Porovnání rychlosti mapového serveru GeoServer při přístupu k různým datovým skladům Porovnání rychlosti mapového serveru GeoServer při přístupu k různým datovým skladům Bakalářská práce 2014 Autor: Adam Schreier Garant práce: Jan Růžička Obsah prezentace 1.Seznámení s řešeným problémem

Více

Pravděpodobnost, náhoda, kostky

Pravděpodobnost, náhoda, kostky Pravděpodobnost, náhoda, kostky Radek Pelánek IV122, jaro 2015 Výhled pravděpodobnost náhodná čísla lineární regrese detekce shluků Dnes lehce nesourodá směs úloh souvisejících s pravděpodobností krátké

Více

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1 Projektový seminář 1 Základní pojmy Tah = přemístění figury hráče na tahu odpovídající pravidlům dané hry. Při tahu může být manipulováno i s figurami soupeře, pokud to odpovídá pravidlům hry (např. odstranění

Více

Mezi jednotlivými rozhraními resp. na nosníkových prvcích lze definovat kontakty

Mezi jednotlivými rozhraními resp. na nosníkových prvcích lze definovat kontakty Kontaktní prvky Mezi jednotlivými rozhraními resp. na nosníkových prvcích lze definovat kontakty Základní myšlenka Modelování posunu po smykové ploše, diskontinuitě či na rozhraní konstrukce a okolního

Více

IntraVUE 2.0.3 Co je nového

IntraVUE 2.0.3 Co je nového IntraVUE 2.0.3 Co je nového Michal Tauchman Pantek (CS) s.r.o. Červen 2008 Strana 2/8 Úvod IntraVUE je diagnostický a podpůrný softwarový nástroj pro řešení komunikačních problémů, vizualizaci a dokumentaci

Více

Zadání soutěžních úloh

Zadání soutěžních úloh 16. až 18. dubna 2015 Krajské kolo 2014/2015 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou úlohu můžete dostat maximálně 10 bodů, z nichž je většinou 9 bodů

Více

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Trochu teorie Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací. Každá spuštěná aplikace má alespoň jeden proces

Více

StatSoft Jak vyzrát na datum

StatSoft Jak vyzrát na datum StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Optimizing Limousine Service with AI. David Marek

Optimizing Limousine Service with AI. David Marek Optimizing Limousine Service with AI David Marek Airport Limousine Services Ltd. (ALS) Jedna z největších firem zajišťujících dopravu v Hong Kongu Luxusní limuzíny a kyvadlová doprava 24 hodin denně 2

Více

Algoritmy pro hraní tahových her

Algoritmy pro hraní tahových her Algoritmy pro hraní tahových her Klasické deskové hry pro dva hráče: Šachy Dáma Go Piškvorky Reversi Oba hráči mají úplnou znalost pozice (na rozdíl např. od Pokeru). 1 Základní princip Hraní tahových

Více

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Obsah přednášky Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Analýza algoritmu Proč vůbec dělat analýzu? pro většinu problémů existuje několik různých přístupů aby

Více

1 Strukturované programování

1 Strukturované programování Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,

Více

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování 12. Virtuální sítě (VLAN) Studijní cíl Základní seznámení se sítěmi VLAN. Doba nutná k nastudování 1 hodina VLAN Virtuální síť bývá definována jako logický segment LAN, který spojuje koncové uzly, které

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Vrstvy periferních rozhraní

Vrstvy periferních rozhraní Vrstvy periferních rozhraní Cíl přednášky Prezentovat, jak postupovat při analýze konkrétního rozhraní. Vysvětlit pojem vrstvy periferních rozhraní. Ukázat způsob využití tohoto pojmu na rozhraní RS 232.

Více

V kompletním grafu nenastává problém. Každý uzel je soused se zbytkem vrcholů a může s nimi kdykoliv komunikovat.

V kompletním grafu nenastává problém. Každý uzel je soused se zbytkem vrcholů a může s nimi kdykoliv komunikovat. 1 SMĚROVÁNÍ (ROUTING) V kompletním grafu nenastává problém. Každý uzel je soused se zbytkem vrcholů a může s nimi kdykoliv komunikovat. Problém nastává u ostatních grafů: Kritéria dobrého směrování: a)

Více

TEORIE ZPRACOVÁNÍ DAT

TEORIE ZPRACOVÁNÍ DAT Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky TEORIE ZPRACOVÁNÍ DAT pro kombinované a distanční studium Jana Šarmanová Ostrava 2003 Jana Šarmanová, 2003 Fakulta

Více

JAK ČÍST TUTO PREZENTACI

JAK ČÍST TUTO PREZENTACI PŘENOSOVÉ METODY V IP SÍTÍCH, S DŮRAZEM NA BEZPEČNOSTNÍ TECHNOLOGIE David Prachař, ABBAS a.s. JAK ČÍST TUTO PREZENTACI UŽIVATEL TECHNIK SPECIALISTA VÝZNAM POUŽÍVANÝCH TERMÍNŮ TERMÍN SWITCH ROUTER OSI

Více

UNIVERZITA PARDUBICE

UNIVERZITA PARDUBICE UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Programová realizace jednoduché strategické hry Květoslav Čáp Bakalářská práce 2010 Prohlášení autora Prohlašuji, že jsem tuto práci vypracoval

Více

Geneticky vyvíjené strategie Egyptská hra SENET

Geneticky vyvíjené strategie Egyptská hra SENET Geneticky vyvíjené strategie Egyptská hra SENET Lukáš Rypáček, lukor@atrey.karlin.mff.cuni.cz Abstrakt V tomto dokumentu popíši jeden příklad použití genetických algoritmů pro počítačové hraní her. V tomto

Více

Neuronové časové řady (ANN-TS)

Neuronové časové řady (ANN-TS) Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci

Více

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE 2011 Technická univerzita v Liberci Ing. Přemysl Svoboda ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE V Liberci dne 16. 12. 2011 Obsah Obsah... 1 Úvod... 2 Funkce zařízení... 3 Režim sběru dat s jejich

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

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

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

VZDĚLÁVACÍ OBLAST INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE VYUČOVACÍ PŘEDMĚT: INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE. Charakteristika vyučovacího předmětu:

VZDĚLÁVACÍ OBLAST INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE VYUČOVACÍ PŘEDMĚT: INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE. Charakteristika vyučovacího předmětu: VZDĚLÁVACÍ OBLAST VYUČOVACÍ PŘEDMĚT: Charakteristika vyučovacího předmětu: Vyučovací předmět I/IKTje zařazen samostatně v 6. - 9. ročníku v hodinové dotaci 1 hod. týdně. Svým obsahem navazuje na výuku

Více

Digitální mapa veřejné správy Plzeňského kraje - část II.

Digitální mapa veřejné správy Plzeňského kraje - část II. Příloha č. 1 Zadávací dokumentace Dodávka základního SW pro projekt DMVS PK Digitální mapa veřejné správy Plzeňského kraje - část II. Zadávací dokumentace výběrového řízení: "Dodávka základního SW pro

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

Rozhraní pro práci s XML dokumenty. Roman Malo

Rozhraní pro práci s XML dokumenty. Roman Malo Rozhraní pro práci s XML dokumenty Roman Malo Práce s XML dokumenty Datově a dokumentově orientované XML dokumenty Problém preference elementů a atributů Strom elementů Strom uzlů Základní zpracování dokumentů

Více

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika

Více

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

Více

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra mikroelektroniky Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce Zadání Stávající

Více

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem Jakub Holý holyjak1@fit.cvut.cz MI-PAA úkol č.3 Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem Zadání Naprogramujte řešení problému batohu: 1. metodou

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

Specifikace rozhraní. Oznamovací povinnost podle zákona č. 307/2013 Sb., ve znění pozdějších předpisů. Martin Falc, SW architekt.

Specifikace rozhraní. Oznamovací povinnost podle zákona č. 307/2013 Sb., ve znění pozdějších předpisů. Martin Falc, SW architekt. C E R T I C O N www.certicon.cz V Á C L A V S K Á 1 2 1 2 0 0 0 P R A H A 2 Specifikace rozhraní Oznamovací povinnost podle zákona č. 307/2013 Sb., ve znění pozdějších předpisů Martin Falc, SW architekt

Více

5. Směrování v počítačových sítích a směrovací protokoly

5. Směrování v počítačových sítích a směrovací protokoly 5. Směrování v počítačových sítích a směrovací protokoly Studijní cíl V této kapitole si představíme proces směrování IP.. Seznámení s procesem směrování na IP vrstvě a s protokoly RIP, RIPv2, EIGRP a

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

Metodická pomůcka pro specifikaci dočasných opatření. doc. Ing. Pavel Šenovský, Ph.D. Ing. Pavlína Ježková

Metodická pomůcka pro specifikaci dočasných opatření. doc. Ing. Pavel Šenovský, Ph.D. Ing. Pavlína Ježková Metodická pomůcka pro specifikaci dočasných opatření doc. Ing. Pavel Šenovský, Ph.D. Ing. Pavlína Ježková Vysoká škola báňská Technická univerzita Ostrava, Fakulta bezpečnostního inženýrství Ostrava 2013

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

Naproti tomu gramatika je vlastně soupis pravidel, jak

Naproti tomu gramatika je vlastně soupis pravidel, jak 1 Kapitola 1 Úvod V přednášce se zaměříme hlavně na konečný popis obecně nekonečných množin řetězců symbolů dané množiny A. Prvkům množiny A budeme říkat písmena, řetězcům (konečným posloupnostem) písmen

Více

Dominik Vymětal. Informační technologie pro praxi 2009, Ostrava 1.-2.10.2009 1

Dominik Vymětal. Informační technologie pro praxi 2009, Ostrava 1.-2.10.2009 1 Dominik Vymětal 2009, Ostrava 1.-2.10.2009 1 Procesní model Výhody Orientace na konkrétní činnosti a možnost reengineeringu Nevýhody Malá orientace na průřezové nebo opakované činnosti Modely na základě

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Konfigurace sítě SDH propojení a ochrany

Konfigurace sítě SDH propojení a ochrany ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická ÚLOHA Č. 2 Konfigurace sítě SDH propojení a ochrany Vypracoval: V rámci předmětu: Jan HLÍDEK Přenosové systémy (X32PSY) Měřeno: 28. 4. 2008

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

Paralelní výpočty ve finančnictví

Paralelní výpočty ve finančnictví Paralelní výpočty ve finančnictví Jan Houška HUMUSOFT s.r.o. houska@humusoft.cz Výpočetně náročné úlohy distribuované úlohy mnoho relativně nezávislých úloh snížení zatížení klientské pracovní stanice

Více

Ukázka knihy z internetového knihkupectví www.kosmas.cz

Ukázka knihy z internetového knihkupectví www.kosmas.cz Ukázka knihy z internetového knihkupectví www.kosmas.cz U k á z k a k n i h y z i n t e r n e t o v é h o k n i h k u p e c t v í w w w. k o s m a s. c z, U I D : K O S 1 8 0 5 8 4 U k á z k a k n i h

Více