v praze fakulta elektrotechnická katedra počítačové grafiky a interakce

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

Download "v praze fakulta elektrotechnická katedra počítačové grafiky a interakce"

Transkript

1 ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v praze fakulta elektrotechnická katedra počítačové grafiky a interakce Výukový nástroj k testování stavových automatů DIPLOMOVÁ PRÁCE Obor: Softwarové inženýrství Program: Otevřená informatika Autor: Bc. Zdeňka Severová Vedoucí práce: Ing. Radek Mařík, CSc. Praha, 2011

2

3 Čestné prohlášení Prohlašuji, že jsem svou diplomovou práci vypracovala samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. V Praze dne podpis 1

4 Poděkování Děkuji především vedoucímu diplomové práce Ing. Radku Maříkovi, CSc. za jeho pomoc a podporu. Jeho trpělivost a množství nápadů se výrazně podepsali na výsledku této práce. Také bych ráda poděkovala všem pedagogům, se kterými jsem se v průběhu svého studia setkala. Cením si především toho, že čas strávený se mnou nepovažovali za zbytečný a svojim úsilím a inteligencí mi umožnili poznat více z oboru, který jsem se rozhodla studovat. Nakonec bych ráda poděkovaal svým rodičům a partnerovi, kteří mi umožnili studovat a bez jejichž pomoci by to rozhodně nebylo jednoduché. 2

5 Abstrakt Konečný automat je jedním z nástrojů používaných pro testování aplikací. Ve všeobecném povědomí mezi studenty je konečný automat pouze takový, který má počáteční a cílový stav, či stavy a používá se hlavně jako jazykový automat. Cílem této práce je ukázat, jak lze konečné automaty využít při testování mnoha druhů aplikací a systémů. Každý přechod v automatu totiž může generovat výstupy, ale automat nemusí obsahovat koncový stav. Chování automatu potom lze pozorovat podle toho, jaké generuje výstupy. Kromě konečného přijímacího automatu jsou představeny a nadefinovány pojmy jako Mealyho automat, Moorův automat. Komplexnější rodina automatů jsou potom takzvané X-automaty. V práci jsou vysvětleny principy konstrukce jednotlivých množin testů pro Mealyho automaty, včetně příkladů. Kromě testovacích množin jsou nadefinovány pojmy jako rozlišovací či synchronizační sekvence. Tyto sekvence jsou užitečné při práci s automaty například při rozlišování stavů. Všechny tyto principy, pojmy a popsané algoritmy jsou využity při tvorbě knihovny. Implementace je realizována v programovacím jazyce Python. Abstract Finite state machine is one of the tools used for testing of applications. In the general awareness of students is finite automaton only the one, which has initial and final state or states and is used mainly as language automaton. The aim of this thesis is to show how finite automata can be used for testing many types of applications and systems. Each transition in the machine can generate outputs and there does not have to be any final state. The behaviour of the machine can be observed depending on the generated output. Besides receiving final machine are presented and defined terms such as Mealy machine, Moore machine. More complex family of machines is called X-machines. This thesis explains the main principles of construction of each set of tests for Mealy machines, including examples. In addition to the test sets are defined terms such as distinguishing or synchronizing sequence. These sequences are useful during work with machines such as the differentiation the states. All of these principles, terms and algorithms are used to create the software library. The implementation is realized in the programming language Python. 3

6 Obsah Seznam obrázků 6 Seznam tabulek 7 Úvod 8 1 Konečné automaty Základní terminologie stavových automatů Termíny a definice Vlastnosti stavů konečného automatu Vlastnosti konečného automatu Minimalizace Charakterizační množina Teorie testování konečných stavových automatů Názvosloví testování Kritéria pokrytí stavů Teorie pokrytí přechodů Konstrukce testovací sady Sekvence konečných automatů Přehled sekvencí a jejich definice Rozlišovací sekvence Orientující sekvence Synchronizační sekvence UIO sekvence Generování zkušebních dat Generování konečného automatu Popis algoritmu Příklad Návrh architektury podpůrného softwaru Modul Generator.py Třída State

7 3.1.2 Třída Transit Třída Graph Generator Modul Operations.py Modul Automat.py Modul Sequences.py Výpisy do souboru Pomocné metody Generování souborů Implementační detaily Výstupní symboly Metoda assignoutput Modul Operations Metoda firstgroups Metoda minimal Metoda inicialize Samotná minimalizace Sloučení ekvivalentních stavů Charakterizační množina Metoda characterizingset Metoda backtrack Modul Automat Pokrytí stavů a pokrytí přechodů Konečná množina testů Metoda buildtests Experimenty a jejich hodnocení Generování automatu Výběr počátečního stavu Přiřazování výstupních symbolů Minimalizace automatu Výuka Kontrola testovací sady Závěr 92 Literatura 94 A Výstupní soubory 95 B Obsah přiloženého CD 98 5

8 Seznam obrázků 1.1 Graf konečného automatu Minimální graf a jeho ekvivalent Minimální graf a jeho ekvivalent Úplně specifikovaný automat Minimální graf ke grafu na obrázku Minimální graf z obrázku Pokrytí stavů, zvýrazněno tučně Pokrytí stavů, kostra grafu Strom následníků Minimální automat použitý jako příklad pro generování sekvencí Strom následníků generování rozlišovací sekvence Strom následníků generování orientující sekvence Strom následníků generování synchronizační sekvence Strom následníků generování synchronizační sekvence Úplně specifikovaný konečný automat Graf konečného automatu Základní graf Graf po přidání šesti přechodů Diagram rozvržení tříd Graf konečného automatu s počátečním stavem s Grafy konečného automatu Graf konečného automatu, příklad generování dodatečných výstupů Minimální automaty k automatu 5.3 podle bodu 1, resp Příklad konečného automatu Minimální automaty k automatu 5.5 podle bodu 1, resp Schéma zadání práce studentům Příklady vygenerovaných grafů Vygenerovaný graf Jeden z možných minimálních grafů ke grafu A.1 Graf konečného automatu

9 Seznam tabulek 1.1 Přechodová tabulka automatu z obrázku Přechodová tabulka úplného automatu Tabulka ekvivalentních podmnožin Tabulka s předefinovanými buňkami Znovu rozdělená tabulka Přechodová tabulka minimálního automatu Rozdělená tabulka, přejmenovaná podle skupin Rozdělená tabulka, přejmenovaná podle skupin Aplikace charakterizační množiny na jednotlivé stavy Automat, příklad z [4] Aplikace rozlišovací sekvence na automat Aplikace orientující sekvence na automat Aplikace synchronizační sekvence na automat Aplikace UIO sekvencí na automat Tabulka stavů Tabulka stavů po vygenerování základního grafu Tabulka stavů po přidání šesti přechodů Pomocné tabulky pro přiřazování výstupů

10 Úvod V dnešní době si student pod pojmem stavový automat představí v první řadě konečný přijímací automat, který umí rozeznat, zda daný jazyk přijme nebo nepřijme zadané slovo. Stavový automat, at již konečný nebo nekonečný si ale je možné představit téměř pod vším, s čím se každý setkává dnes a denně. At už jsou to různé uživatelské aplikace, protokoly internetu, ale i domácí spotřebiče. Tato práce se zabývá konečnými stavovými automaty a jeho testováním. Cílem je vytvořit ucelený přehled o konečných automatech, Mealyho automatech a způsobech jejich testování. Vychází se hlavně z [3] a [8]. Práce je logicky rozdělena na tři části. Teoretickou, praktickou a experimentální. Nejprve se nadefinují jednotlivé pojmy. Konečný, přijímací automat, který bude následně rozšířen o výstupy. Takový automat se nazývá Mealyho automat. Dalším zobecněním je Moorův automat a ještě obecnějším typem automatu jsou takzvané X-automaty. Dále se pracuje s konečnými Mealyho automaty. Následně bude ukázáno, jak se sestavují jednotlivé testovací množiny. K tomu, aby bylo možno automat důsledně otestovat, je potřeba, aby byl minimální. Dalším vysvětleným pojmem tedy bude minimalizace. Nejprve se tento pojem nadefinuje, následně bude představen algoritmus konstrukce minimálního grafu z libovolně zadaného. Vše bude presentováno na jednoduchém příkladu. Při testování je užitečné umět od sebe odlišit jednotlivé stavy, proto další definovaný pojem bude charakterizační množina. Bude představen a vysvětlen algoritmus pro její konstrukci včetně jednoduchého příkladu. Po vysvětlení minimalizace a zkonstruování charakterizační množiny lze přistoupit ke generování jednotlivých testovacích množin. Nejprve je nutné pokrýt všechny stavy, nadefinuje se tedy pojem množina pokrytí stavů. S její pomocí se jednoduše pokryjí všechny přechody v automatu, vznikne množina pokrytí přechodů. Z množiny pokrytí přechodů a charakterizační množiny se sestaví konečná množina testů. Vše bude ukázáno na jednoduchém příkladu, aby bylo možné si jednotlivé kroky při sestavování testů představit konkrétně. Poslední část první kapitoly se zabývá generováním sekvencí, které slouží například k rozlišování stavů nebo orientování se v grafu. Zavedou se tedy pojmy rozlišovací sekvence, orientující sekvence, UIO sekvence a synchronizační sekvence. Vždy bude ukázáno na jednoduchém příkladu, jakým způsobem se jednotlivé sekvence 8

11 generují. První kapitola v praktické části se zabývá generováním samotného automatu. K testování totiž jsou použity obecné automaty, vygenerované algoritmem, který je součástí této práce. Je tím zaručena určitá obtížnost, která vyhovuje požadavkům na studenty, zároveň je možno testovat celou implementaci na obecných datech. Použitý algoritmus pro vygenerování konečného Mealyho automatu je opět podrobně vysvětlen na příkladu. Implementace je realizována v programovacím jazyku Python. Jednotlivě implementované soubory se nazývají moduly. Knihovna je navržena tak, aby od sebe oddělovala jednotlivé logické celky. Kromě jednotlivých algoritmů je implementována i kontrola jednotlivých sekvencí. Experimentální část pak má za cíl ukázat, jak lze celou tuto práci využít ve výuce. Bude ukázáno jednoduché schéma a zadání problému studentům. 9

12 Kapitola 1 Konečné automaty Konečný automat je abstraktní stroj, jehož počet stavů a přechodů je konečný a neměnný. Skládá se ze stavů, přechodů, počátečních a koncových stavů, vstupních a výstupních symbolů. [10] V praxi si takový automat lze představit například při testování webových aplikací nebo softwaru řízeného pomocí menu. Vstupními symboly mohou být například pohyb či klik myší, vstup z klávesnice a podobně. Stavem pak mohou být jednotlivá dialogová okna aplikace, stránka prohlížeče nebo výsledek akce (uložení souboru). V tomto případě tedy přechody jsou například klik myší, vstup z klávesnice, zadání hodnoty. Konečný automat je jeden z nejjednodušších nástrojů pro modelování systému, a to nejen v oblasti počítačů. Vše, pod čím si lze představit stavy, které se za určitých okolností mění, lze namodelovat konečným automatem. Například i myčka nádobí nebo televize, či třeba stavba domu se dá tímto způsobem namodelovat. 1.1 Základní terminologie stavových automatů Pro zjednodušení a lepší představu si lze konečný automat představit jako stavový graf, nebo přechodovou tabulku. Možnosti reprezentace konečného automatu: Stavový graf Jednoduchou reprezentací stavového automatu je spojitý orientovaný graf. Uzly grafu jsou stavy konečného automatu a přechody reprezentují hrany grafu. Je zde hned jasně vidět, které stavy jsou dosažitelné, izolované, či zda je automat deterministický. Graf může obsahovat cykly, ale každý stav by měl být dosažitelný z počátečného stavu. Přechodová tabulka: Každý řádek reprezentuje stav systému s 10

13 Každý sloupec reprezentuje přechod systému t Každá buňka obsahuje stav, kam systém přejde ze stavu s přechodem t a výstup pro tento přechod Pokud není daný přechod pro automat definován, je v tabulce místo hodnoty jen pomlčka, značící chybějící přechod. Na obrázku 1.1 je znázorněn příklad konečného automatu, jeho graf. Počáteční stav je označen zdvojeným okrajem uzlu, cílový stav není uvažován, protože se používají výstupní symboly (viz definice 2). Popiskem každého přechodu je vstupní symbol, označený číslem a symbolem t a za lomítkem je výstupní symbol, který je tomuto přechodu a stavu, ze kterého vychází, přiřazen. Tabulka 1.1 je přechodová tabulka pro uvažovaný graf. Počáteční stav je zvýrazněn. Obrázek 1.1: Graf konečného automatu 11

14 Stav Další stav Výstup t64 t80 t86 t64 t80 t86 s3 s24 s s7 s26 s3 s s24 - s s26 s26 s40 s s Tabulka 1.1: Přechodová tabulka automatu z obrázku Termíny a definice Nyní budou nadefinovány základní termíny a vysvětleny důležité pojmy. Nejprve se představí konečný automat a poté budou nadefinovány jeho zobecnění, Mealyho automat, Moorův automat a X-automat. Definice 1 (Konečný automat) dle [8] Necht Input je konečná abeceda. Konečný stavový automat nad abecedou Input se skládá z následujících komponent: Konečná množina Q prvků nazývanými stavy. I podmnožina Q obsahující počáteční stavy. T podmnožina Q obsahující koncové stavy. Konečná množina přechodů, která pro každý stav a každý symbol vstupní abecedy říká, do kterého stavu přechází (pokud takový existuje). Toto může být reprezentováno funkcí, je možná i parciální funkce, F. F : Q Input P Q, kde F (q, input) obsahuje stavy, do kterých může automat přejít ze stavu q, pokud je na něj aplikován přechod input. P Q je množina všech podmnožin množiny Q, obvykle se nazývá potenční množina Q. Toto je definice konečného automatu, který má výstupní stavy. Jsou to takzvané přijímací automaty. Používají se především jako jazykové automaty, kdy je potřeba určit, zda daný jazyk akceptuje dané slovo. Odtud také označení množiny vstupních sekvencí Input jako abeceda. Toto je ale jen velice omezené použití konečných automatů, jimiž se dá modelovat daleko více případů, aplikací, systémů. Toto omezení se odstraní přidáním výstupních symbolů automatu. Definice 2 (Mealyho automat) dle [7] Mealyho automat je uspořádaná šestice M = (S, s 1, Σ, Λ, δ, λ), kde: S je neprázdná konečná množina stavů 12

15 s 1 S je počáteční stav Σ je konečná vstupní abeceda Λ je konečná výstupní abeceda δ : S Σ S je přechodová funkce λ : S Σ S je výstupní funkce. Výstup je generován na základě příchozího vstupu i okamžitého stavu, ve kterém se automat nachází. To znamená, že stavový diagram automatu má ke každému přechodu přiřazenu nejen vstupní hodnotu, kterou je přechod aktivován, ale i výstupní hodnotu, která je při aktivaci přechodu vygenerována. Tímto Mealyho automat připomíná synchronní komunikaci: Nejen že reaguje jen na hranu vstupního signálu, ale jakmile ho zpracuje a dosáhne dalšího stavu, jednou vygeneruje výstupní hodnotu, puls výstupního signálu, a pak už žádný výstup neposkytuje, dokud mu není ke zpracování předložena další vstupní hodnota. Mealyho automat už si je možné představit pod různými aplikacemi, věcmi denní potřeby. Není vždy třeba mít výstupní stav, ale uživatel potřebuje generovat výstup pro různé stavy, kontrolovat, jak automat na ten který vstup reaguje. Definice 3 (Moorův automat) dle [11] Moorův automat je uspořádaná šestice M = (S, s 0, Σ, Λ, T, G), kde: S je neprázdná konečná množina stavů s 0 S je počáteční stav Σ je konečná vstupní abeceda Λ je konečná výstupní abeceda T : S Σ S je přechodová funkce G : S Σ S je výstupní funkce. Na rozdíl od Mealyho automatu je výstupní hodnota Moorova automatu určována pouze okamžitým stavem, není generována na základě vstupního symbolu pro daný přechod. Tedy každý stav konečného Moorova automatu má fixní výstupní hodnotu. Ještě komplexnější reprezentací automatu je takzvaný X-automat. Jeho přechody jsou reprezentovány funkcemi, které operují nad množinou dat X. Pomocí těchto funkcí se generují výstupy a další stavy. Definice 4 (X-automat) dle [8] X-automat je zadán množinou o deseti prvcích: M = (X, Z, Z, α, β, Q, Φ, F, i, T ), kde: 13

16 X je základní množina dat, nad kterým automat pracuje Y, Z jsou vstupní, výstupní množiny α, β jsou vstupní, výstupní funkce, používají se na množin na základní množinu dat a naopak: α : Y X, β : X Z převod vstupních a výstupních Q je konečná množina stavů Φ je typ automatu, množina vztahů k X: Φ : P (X X F : Q Φ P Q I a T jsou podmnožiny množiny stavů, vstupní, resp. výstupní množina stavů. Dále se bude pracovat pouze s konečným Mealyho automatem, pro něj budou vytvořeny všechny testovací sekvence a pomocné sekvence pro učení dat. Definice 5 (Přechod) dle [7] Přechod konečného automatu τ je trojice (s i, s j, x/y), kde: s i je startovní, nebo také výchozí stav s j je koncový stav x je vstup y je výstup Pro daný konečný automat M = (S, s 1, Σ, Λ, δ, λ) je τ = (s i, s j, x/y) přechodem právě tehdy, když δ(s i, x) = s j a zároveň λ(s i, x) = y. Definice 6 (Vstupní sekvence) [7] Rozšíření definice δ a λ, aby se mohlo pracovat se vstupními sekvencemi δ(s i, x) = δ(δ(... δ(δ(s i, x 1 ), x 2 )..., x n 1 ), x n ) λ(s i, x) = λ(s i, x 1 )λ(δ(s i, x 1 ), x 2 )... λ(δ(s i, x 1 x 2... x n 1 ), x n ) Kde x je vstupní sekvence x = x 1 x 2... x n 1 x n. 14

17 Pro vyjasnění budou nyní pojmy vysvětleny podle automatu M na 1.1 a sjednoceno označení obrázku množina všech vstupních symbolů Input = {t64, t80, t86} konečná množina stavů S = {s3, s7, s24, s26, s40} vstupní stav s 1 = s7 konečná množina výstupních symbolů Output = {0, 1} Přechodová, resp. výstupní funkce jsou vnitřní funkce algoritmu, které jsou označeny symboly δ, resp. σ. Množina Input je množina všech sekvencí vstupních symbolů Každý konečný automat je zde reprezentovaný stavovým grafem. Další důležité definice Definice 7 (Sousedství grafu) Pokud jsou dva uzly grafu s a t spojeny hranou, říká se, že spolu sousedí. Všechny uzly, se kterými daný uzel sousedí, jsou v jeho sousedství: N(s). Definice 8 (Stupeň uzlu) Stupeň uzlu s grafu je velikost jeho sousedství deg(s). V případě orientovaných grafů se rozlišuje vstupní stupeň deg + (s), tedy počet hran, které do uzlu vstupují, a výstupní stupeň deg (s), počet hran, které z uzlu vychází. Stupněm uzlu orientovaného grafu je součet těchto dvou hodnot, tedy deg(s) = deg + (s) + deg (s). Ekvivalentně lze mluvit o stupni stavu konečného automatu. Jedná se o součet všech přechodů, které do daného stavu vstupují nebo z něj vychází. Definice 9 (Cyklus) Cyklus v konečném automatu je taková sekvence vstupních symbolů x Input, která začíná a končí ve stejném stavu s, δ(s, x) = s. Pokud cyklus obsahuje pouze jeden vstupní symbol, tedy x = x, jedná se o smyčku. Smyčka konečného automatu je takový přechod x, který začíná i končí ve stejném stavu s, δ(s, x) = s. Definice 10 (Strom) Stromem se nazývá takový konečný automat, který je souvislý a neobsahuje žádný cyklus ani smyčku. Se stromem souvisí následující pojmy: Potomek - stav stromu, do kterého vede přechod Předek - stav stromu, ze kterého vede přechod Stav, který nemá žádné předky, se nazývá kořen 15

18 Stav, který nemá žádné potomky, se nazývá list Definice 11 (Kostra) Kostra grafu je libovolný podgraf souvislého grafu, který neobsahuje žádný cyklus. Tedy je-li počet uzlů v grafu n, pak kostra má n uzlů a n 1 hran Vlastnosti stavů konečného automatu Zde jsou popsány základní vlastnosti stavů konečných automatů, které velice úzce souvisí i s vlastnostmi uzlů v grafu. Více v [10] a [2]. Uzel stavového grafu V reprezentaci konečného automatu jako grafu stavy představují jeho uzly. Jeden stav je vždy počáteční. Kód stavu Pro přehlednost grafu je každý stav pojmenován. V této práci je zvolena kombinace čísel a písmene s. Každý stav je pro daný automat samozřejmě unikátní, nikdy se v jednom grafu nesmí žádný stav opakovat. Okamžitý stav Okamžitým stavem nazýváme stav, ve kterém se v daném okamžiku systém nachází. Tedy například se může jednat o stránku, která je prohlížena, či okno aplikace, ve kterém se právě pracuje. Při zkoumání i testování konečného automatu není vždy jednoduché rozpoznat okamžitý stav. Systém se může nacházet ve stavu, který se pouze tváří jako jiný stav, ale ve skutečnosti se může chovat mírně jinak. Více v části Počáteční stav Každý stavový automat má počáteční stav. Je to speciální stav, ve kterém se systém nachází před přijmutím jakékoli vstupní informace. V praxi si pod počátečním stavem lze představit například otevřené prázdné okno prohlížeče, vypnutý počítač, čerstvě nastartovaný počítač, čerstvě nastartovanou aplikaci. Počáteční stav je ve většině případů jen jeden. Před začátkem testu je potřeba vědět, že se systém nachází v počátečním stavu, což není vždy jisté. K tomu slouží různé sekvence vstupních symbolů, které budou dále přiblíženy v části

19 Dosažitelný stav Definice 12 (Dosažitelný stav) Stav t je dosažitelný ze stavu s, pokud existuje taková sekvence vstupních symbolů x Input, která převede systém ze stavu s do stavu t. Tedy δ(s, x) = t. V názvosloví grafu lze dosažitelnost chápat jako existenci cesty z uzlu s do uzlu t. Pro účely testování je sledována hlavně dosažitelnost ze vstupního stavu systému. Nedosažitelný stav Stav, který není dosažitelný, se nazývá nedosažitelný. V tomto případě se jedná o stav, který nelze dosáhnout z žádného stavu automatu. Většinou indikuje chybu systému. Tyto stavy nemají na funkci automatu žádný vliv, lze je tedy eliminovat, včetně všech přechodů, které vedou z tohoto stavu nebo do něj vstupují. Izolovaný stav Stav, který není dosažitelný z počátečního stavu, ale lze jej dosáhnout z jiného stavu systému, se nazývá izolovaný. V tomto případě již nejde o souvislý graf, viz definice 19, není třeba tedy zde tyto stavy uvažovat. Stejně jako nedosažitelný i izolovaný stav znamená chybu systému. Rozlišitelné stavy Definice 13 Stavy s a t jsou rozlišitelné, pokud lze najít takovou sekvenci vstupních symbolů, která pro každý stav vygeneruje odlišnou výstupní sekvenci. Vstupní sekvence x Input rozliší stavy s a t λ(s, x) λ(t, x). Ekvivalentní stavy Definice 14 Stavy s a t jsou ekvivalentní, pokud neexistuje sekvence vstupních symbolů, která by dané stavy rozlišila. Stavy s a t jsou ekvivalentní, x Input : λ(s, x) = λ(t, x). Dva ekvivalentní stavy lze nahradit jedním a chování automatu se nezmění. Postup slučování ekvivalentních stavů bude vysvětlen v části o minimalizaci v Pokud dva stavy nejsou ekvivalentní, nazývají se rozlišitelné. Pokud se dva stavy dají rozlišit, je snazší zjišt ování, ve kterém stavu se systém v daném okamžiku nachází. V-equivalentní stavy Definice 15 (V-ekvivalence konečných automatů) dle [6] Necht M = (S, s 1, Input, Output, δ, λ) je konečný automat. Necht V je množina vstupních sekvencí, V Input. Necht s 1 S a s 2 S jsou různé stavy automatu M. Potom stavy s 1 a s 2 jsou V-equivalentní, pokud λ(s, x) = λ(t, x), x V. 17

20 Definice 16 (k-ekvivalentní stavy) dle [6] Necht M = (S, s 1, Input, Output, δ, λ je konečný automat. Necht s 1 S a s 2 S jsou různé stavy automatu M. Potom stavy s 1 a s 2 jsou k-equivalentní, pokud nejsou rozlišitelné žádnou vstupní sekvencí délky maximálně k Vlastnosti konečného automatu Většina zde popsaných vlastností přímo souvisí s názvoslovím grafu. Termíny jako úplný či souvislý graf jsou jistě známé. Více v [2]. Zde definované vlastnosti jsou důležité pro testování konečných automatů, pro další práci s nimi. Tyto vlastnosti se musí zkoumat pro každý model, aby se zjistilo, zda je navržen správně, zda je testovatelný, nebo se model musí změnit. Deterministický Definice 17 (Deterministický automat) Konečný automat M je deterministický, pokud každý stav systému má maximálně jeden výchozí přechod pro každý vstupní symbol. Automat je deterministický, pokud se z každého stavu jedním určitým přechodem dostaneme do právě jednoho stavu. Automat může obsahovat cykly, smyčky, ale nutné je, aby z jednoho stavu nevycházelo více přechodů stejného označení. Tímto je zaručena jednoznačnost systému. Každý automat lze převést na deterministický, ovšem pro potřeby výuky, tedy této práce, jsou jako vstupní data rovnou generovány deterministické automaty. Studenti tedy nemusí zkoumat determiničnost. Úplně specifikovaný Definice 18 (Úplně specifikovaný automat) Konečný automat M je úplně specifikovaný, pokud jsou vstupní a výstupní symboly definovány pro jakoukoliv kombinaci vstupního kódu a stavu. Jinými slovy, úplně specifikovaný je takový automat, kde z každého stavu vychází přesně tolik přechodů, kolik je vstupních symbolů. Jelikož automat může obsahovat smyčky, lze z každého grafu udělat úplně specifikovaný, aniž by se změnilo chování systému. Doplnění grafu na úplně specifikovaný bude popsán v sekci zabývajícím se minimalizací. Souvislý Definice 19 (Souvislý automat) Konečný automat je souvislý, pokud pro každé dva stavy s a t existuje alespoň jedna vstupní sekvence x Input, která převede automat ze stavu s do stavu t, tedy δ(s, x) = t. 18

21 Souvislost automatu se zkoumá hlavně vzhledem k počátečnímu stavu. Tedy, zda existuje taková vstupní sekvence x Input, která převede automat z počátečního stavu s 1 do kteréhokoli jiného stavu s {S \ s 1 }. Silně souvislý Definice 20 (Silně souvislý automat) Konečný automat je silně souvislý, pokud pro každé dva stavy s a t existuje vstupní sekvence x Input, která převede automat ze stavu s do stavu t a zároveň vstupní sekvence y Input, která převede automat ze stavu t do stavu s. Jinými slovy, automat je silně souvislý, pokud existuje cesta mezi kterýmikoli dvěma uzly grafu, který daný automat reprezentuje. Tato vlastnost zajistí, že se v žádném bodu aplikace nedostane uživatel do stavu, ze kterého by se nedalo dostat pryč. Ekvivalence automatů Definice 21 (Ekvivalence automatů) Automaty M 1 a M 2 jsou ekvivalentní, pokud Pro každý stav s v M 1 existuje ekvivalentní stav t v M 2 Pro každý stav s v M 2 existuje ekvivalentní stav t v M 1 Automaty, které nejsou ekvivalentní, se nazývají rozlišitelné. To, že jsou dva automaty ekvivalentní, znamená, že jejich chování je totožné. Tedy že při shodné sekvenci vstupních symbolů vygenerují oba automaty totožný výstup Minimalizace Definice 22 (Minimální automat) Konečný automat se nazývá minimální, nebo redukovaný, pokud neexistuje ekvivalentní automat, který by obsahoval méně stavů. Podobná definice minimálního automatu říká, že v minimálním automatu neexistují dva ekvivalentní stavy. Tedy že všechny stavy jsou rozlišitelné. Pro konstrukci testovací sady je nutné, aby automat byl minimální, tedy odstranit všechny ekvivalentní stavy. Každý konečný automat lze převést na minimální. I když má automat jen jeden stav, stále je to konečný automat. Příklady konečného automatu a jeho minimálního ekvivalentu jsou na obrázcích 1.2 a 1.3. Algoritmus minimalizace Zde bude popsán samotný algoritmus dle [6], vše bude ukázáno na podrobném příkladu. Hlavní předpoklad je v definici 17, determinismus. 19

22 Obrázek 1.2: Minimální graf a jeho ekvivalent Nejprve je nutné odstranit všechny izolované stavy, viz definice Získaný automat se poté doplní tak, aby byl úplně specifikovaný, viz definice 18. Nakonec se musí najít a sloučit všechny ekvivalentní stavy. K tomu slouží jednoduchý postup, kdy se vypíšou všechny výstupní symboly pro každý stav v závislosti na vstupu, a zkoumá se, pro které stavy jsou shodné. Jednotlivé kroky algoritmu vypadají takto: 1. Vychází se z deterministického konečného automatu. Každý automat konstruovaný algoritmem, který je popsán v kapitole 2 dále, je deterministický. 2. Odstranění nedosažitelných stavů. Prohledáváním grafu pomocí algoritmu prohledávání do šířky se naleznou všechny stavy, které jsou dosažitelné z počátečního stavu. Ostatní stavy včetně všech jim příslušných přechodů budou z automatu odstraněny. 3. Doplnění automatu na úplně specifikovaný. Definice 18 přesně definuje automat, který reprezentuje úplně specifikovaný systém. Ovšem ne každý automat je takový na počátku. Pro minimalizaci je nutné si úplně specifikovaný automat zkonstruovat. Jinými slovy, je třeba v automatu vytvořit všechny přechody, které neexistují. Toto lze udělat dvěma způsoby: Doplnění smyčky k určitému stavu. Pokud ze stavu s nevychází přechod se vstupním symbolem t, přiřadí se danému stavu tak, že z něj bude vycházet a zároveň do něj vstupovat. Tedy bude tvořit smyčku. Takovéto nahrazení neexistujících přechodů si lze v praxi představit například akci stisk nedefinované klávesy. Nebo například, pokud je v aplikaci otevřeno modální okno a uživatel klikne myší mimo toto okno, nic se nestane. To znamená, že provedená akce neměla vliv na aplikaci. Nezměnil se stav ani se neobjevila chyba. Akce systému takzvaně neublíží. Ovšem také to může být v aplikaci problém, nebot se může dojít například do nekonečného cyklu nebo může indikovat neošetřenou výjimku. 20

23 Obrázek 1.3: Minimální graf a jeho ekvivalent Vytvoření dodatečného stavu. Do grafu se přidá dodatečný stav (může se nazývat třeba chybový), do kterého se všechny neexistující přechody přesměrují. Takto může být indikována jakákoli chyba systému. Například pokud ve webovém prohlížeči uživatel klikne na odkaz na neexistující stránku, objeví se zpráva o chybě. Podobně, pokud aplikace vykoná neočekávanou akci nebo delší dobu nereaguje. Systém přejde do chybového stavu a většinou ukončí činnost. Pod takovýmto stavem si je možno představit takzvanou modrou obrazovku počítače. Dále neošetřené chyby systému, nebo i takzvané skryté stavy, o kterých bude řeč dále. 4. Sloučení ekvivalentních stavů. Postupuje se tak, že množina všech stavů automatu je postupně rozkládána na neekvivalentní podmnožiny. Pokračujeme v jednotlivých krocích tak dlouho, dokud ještě dochází k dalšímu rozložení. (a) Označení přechodů výstupními symboly. Automat je generován tak, že každý přechod má svůj vstupní i výstupní symbol. Konstrukce bude popsána v kapitole 2. 21

24 (b) Konstrukce přechodové tabulky. Přechodová tabulka je popsána v kapitole 1 a zobrazena na obrázku 1.1. (c) Rozdělení tabulky na skupiny podle přiřazení výstupních sekvencí vstupním. Do stejné skupiny patří ty stavy, které pro každý vstupní symbol generují totožný výstup. (d) Předefinování tabulky podle nového rozdělení stavů Místo konkrétního stavu s se do buňky tabulky dosadí číslo skupiny, do které automat přejde ze stavu s přechodem t. (e) Další dělení stavů na skupiny. v každé skupině jsou pouze ty stavy, kdy je pro každý přechod automat převeden do stejné množiny stavů. (f) Pokud je tabulka dále nedělitelná, algoritmus končí, jinak pokračuje bodem 4c (g) Sloučení ekvivalentních stavů Z každé skupiny tabulky se vybere jeden reprezentant. Stavy, které jsou ekvivalentní s reprezentanty, se zruší včetně všech přechodů z nich vystupujících. Všechny přechody, které vedly do zrušených stavů, se musí přesměrovat do jejich ekvivalentních reprezentantů. Pokud je nějaký z odstraněných stavů počáteční, označí se jako počáteční stav jeho ekvivalentní reprezentant. (h) Pokud je v každé skupině tabulky pouze jeden stav, znamená to, že automat již je minimální. Příklad minimalizace Následující konečný automat byl vygenerován algoritmem, který bude popsán v kapitole 2. Jako příklad bude uvedena minimalizace automatu uvedeného na obrázku 1.1. Počáteční stav je s7. Cílový stav není uvažován. 1. Odstranění nedosažitelných stavů. Z obrázku je vidět, že všechny stavy jsou dosažitelné z počátečního stavu. Neexistuje tedy žádný nedosažitelný stav, není je třeba odstraňovat. 2. Doplnění na úplně specifikovaný automat. Z tabulky 1.1 je vidět, že pro stav s3 chybí přechod s označením t86, bude tedy doplněn jako cyklus do uzlu s3. Stejně budou doplněny přechody t64 a t86 pro stav s24 a všechny tři přechody stavu s40, protože z tohoto uzlu nevede žádná hrana. Výsledkem je tabulka 1.2. Jen pro ukázku, na obrázku 1.4 je graf úplně specifikovaného automatu. 3. Sloučení ekvivalentních stavů. (a) Dělení na ekvivalentní podmnožiny. Nyní přichází na řadu dělení na ekvivalentní podmnožiny. V tabulce 1.2 jsou 22

25 Stav Další stav Výstup t64 t80 t86 t64 t80 t86 s3 s24 s3 s s7 s26 s3 s s24 s24 s40 s s26 s26 s40 s s40 s40 s40 s Tabulka 1.2: Přechodová tabulka úplného automatu zobrazeny i výstupní symboly pro jednotlivé přechody. Nyní se stavy rozdělí podle výstupů. Do stejné skupiny budou patřit ty stavy, které pro každý přechod vygenerují totožný výstup. Zde tedy například stavy s3 a s24 jsou ekvivalentní, protože pro vstupy t64 a t86 oba vygenerují výstup 0 a pro vstup t80 mají oba výstupní symbol 1. Budou tedy patřit do stejné skupiny, stejně jako stav s26, protože se chová naprosto stejně. Skupina Stav Výstup t64 t80 t86 I s s II s s III s Tabulka 1.3: Tabulka ekvivalentních podmnožin (b) Přepsání tabulky podle skupin. Nyní se jednotlivé buňky tabulky přejmenují podle toho, do které skupiny stavů se daný přechod vede. Tedy stav s7 pro přechod t60 směřuje do stavu s26, který je ve skupině II. Podobně pro ostatní dvojice stavů a přechodů. Výsledek ukazuje tabulka 1.4: (c) Kontrola skupin, znovurozdělení. Nyní se musí zkontrolovat, zda se dá tabulka znovu rozdělit. V tomto případě lze uvažovat pouze skupinu II, jelikož ta má víc členů než jeden a je tedy dále dělitelná. Stav s3 je odlišný od stavů s24 a s26, protože pro přechod t80 přejde do stavu ze skupiny II a ne do skupiny III, jako ostatní dva stavy. Tato skupina se tedy bude opět dělit. Po rozdělení se musí znovu přepsat buňky tabulky, jako v kroku 3b. Výsledkem je tabulka 1.5 (d) Sloučení ekvivalentních stavů. 23

26 Obrázek 1.4: Úplně specifikovaný automat Je vidět, že tato tabulka už je dále nedělitelná. Ve skupině II jsou stavy, které se chovají stejně, pro každý přechod vedou do stejného stavu. Jsou tedy ekvivalentní a jeden libovolný z nich je možné z automatu odstranit. Postup je popsán v bodě 4g algoritmu. Zde bude odstraněn stav s26. Ovšem do tohoto stavu směřují přechody, které se musí přesměrovat do ekvivalentního stavu s24. Jediný přechod, který se nebude přesměrovávat, je t64, jelikož má vstupní i výstupní stav totožný s26, který se maže. Výsledek je znázorněn na obrázku Charakterizační množina Charakterizační množina slouží k rozlišení dvou stavů od sebe. Rozlišitelnost stavů je definována v definici 13. Definice 23 (Charakterizační množina) dle [8] Množina sekvencí vstupních symbolů, W se nazývá charakterizační množina, pokud rozliší jakékoli dva stavy systému. 24

27 Skupina Stav Výstup t64 t80 t86 I s7 II II II s24 II III II II s26 II III II s3 II II II III s40 III III III Tabulka 1.4: Tabulka s předefinovanými buňkami Výstup Stav t64 t80 t86 I s40 I I I Skupina II s24 II I II s26 II I II III s3 II III III IV s7 II III II Tabulka 1.5: Znovu rozdělená tabulka Jednou možností využití charakterizační množiny je odhalení, nebo pokrytí, takzvaných skrytých stavů systému. Skryté stavy se navenek prezentují jako stavy, které jsou v modelu, ale vnitřně v nich existuje určitý rozdíl, který se projeví až po nějaké době (až po mnoha přechodech na tento skrytý stav) například přetečením celočíselné proměnné, která by byla v případě korektního stavu vždy resetována. Skryté stavy je velmi obtížné odhalit, protože k chybě může skutečně dojít například až po přetečení proměnné typu Integer (typicky hodnoty ) a do té doby se stav může chovat zcela korektně. Kdybychom měli automat testovat až do této hloubky, tak by byl test neproveditelný. [1] Algoritmus pro generování charakterizační množiny Charakterizační množina se generuje podobným postupem, jakým probíhá minimalizace automatu. Výsledek se ovšem čte odlišným způsobem. Hlavním předpokladem pro generování charakteristických sekvencí je konečný automat s následujícími vlastnostmi: Deterministický, viz definice 17 Již bylo řečeno, že každý graf vygenerovaný podle algoritmu v kapitole 2 je deterministický. Není tedy třeba determiničnost zkoumat. Minimální Charakterizační množiny lze hledat pouze pro minimální grafy, jelikož pouze takový 25

28 Obrázek 1.5: Minimální graf ke grafu na obrázku 1.1 graf neobsahuje ekvivalentní stavy. Z definice 1.1.2, je vidět, že pokud jsou v automatu dva ekvivalentní stavy, nelze je rozlišit žádnou vstupní sekvencí. Tedy necht M je konečný automat, který obsahuje ekvivalentní stavy s a t. Potom x Input : λ(s, x) = λ(t, x). Nemůže tedy existovat sekvence x Input taková, že λ(s, x) λ(t, x). Z toho tedy vyplývá, že charakterizační množinu lze hledat pouze pro minimální automaty. Úplně specifikovaný Úplná specifikace automatu přímo souvisí s minimalitou. V kroku 3 algoritmu minimalizace se graf doplňuje na úplně specifikovaný. Každý minimální automat je tedy úplně specifikovaný. Souvislý Každý minimální automat je souvislý, existuje v něm cesta z počátečního stavu do každého dalšího. V kroku 2 algoritmu minimalizace se z automatu odstraňují stavy, které nejsou dosažitelné z počátečního stavu. Tedy pro konečný automat M, který má počáteční stav s 1 platí: s {S \ s 1 } x Input : δ(s 1, x) = s. Má fixní počáteční stav. 26

29 Při hledání charakterizační množiny se nejprve stavy dělí na skupiny stejným způsobem jako v případě minimalizace při hledání ekvivalentních stavů. Dělení na skupiny skončí, jakmile má každý stav svou vlastní skupinu. Je třeba si pamatovat postupně všechny tabulky, protože se z nich pro každé dva stavy konstruuje sekvence, která je rozliší. Tato sekvence začíná přechodem, který se vyčte z poslední tabulky, ve které jsou oba stavy ještě ve stejné skupině. Jednotlivé body algoritmu pak vypadají takto: 1. Vychází se z přechodové tabulky konečného automatu. Tato tabulka bude dělena stejně jako v případě minimalizace. Tedy v prvním kroku se rozdělí dle výstupních symbolů pro jednotlivé přechody do vzájemně neekvivalentních skupin. 2. Nyní se zjistí, které stavy přechází ve všech přechodech do stejné skupiny a znovu se rozdělí tabulka na další skupiny. 3. Pokud je stále v nějaké skupině více než dva členy, pokračuje se krokem 2, jinak se pokračuje dále. 4. Dělení končí až ve chvíli, kdy se každý stav nachází samostatně v jedné skupině. Pokud je automat opravdu minimální, nemůže nastat situace, že by některá vícečlenná skupina byla dále nedělitelná. 5. Nyní se přikročí ke čtení jednotlivých sekvencí: (a) Pro každé dva stavy se zpětně hledá tabulka, ve které se tyto dva stavy rozlišily. Tedy je nutné najít první tabulku, kde je každý z této dvojice stavů v jiné skupině. (b) Pak se musí z předchozí tabulky přečíst přechod, který dané dva stavy s 1 a s 2 rozlišil. Tento přechod t se uloží. (c) Nyní se pro stavy s 1 a s 2 naleznou stavy s 3 a s 4, pro které platí: s 3 = δ(s 1, t) a s 4 = δ(s 2, t). (d) Stavy s 3 a s 4 jsou rozlišeny tabulkou, která předchází tabulce, ve které se rozlišily stav s 3 a s 4. (e) Body 5b - 5d se opakují, dokud není dosažena původní přechodová tabulka automatu. (f) Následně se pokračuje bodem 5a. (g) Algoritmus končí, jakmile jsou vytvořeny sekvence pro každou dvojici stavů. (h) Jelikož je automat minimální, je zaručena konvergence algoritmu. Tím se také minimalita ověří. 27

30 Příklad konstrukce charakterizační množiny Pro příklad je použit minimální automat z obrázku 1.5. Pokračuje se tedy minimálním grafem zkonstruovaným dle Zde bude ukázáno, jak konkrétně získat charakterizační množinu. Vychází se z tabulky 1.6. Stav Další stav Výstup t64 t80 t86 t64 t80 t86 s3 s24 s3 s s7 s24 s3 s s24 s24 s40 s s40 s40 s40 s Tabulka 1.6: Přechodová tabulka minimálního automatu 1. Nejdříve se tabulka podobně jako v případě minimalizace rozdělí na skupiny. Každá skupina obsahuje stavy, které pro každý vstup generují totožný výstup. Tedy v tomto případě do jedné skupiny patří stavy s24 a s3. Ostatní dva stavy jsou odlišné, bude tedy každý v jiné skupině. 2. Dalším krokem je přejmenování buněk tabulky podle toho, do které skupiny stavů každý přechod přejde. Jedná se o stejnou akci, jako v případě minimalizace, bodu 3b. Tedy například stavy s7 pro přechod t64 přejde do stavu s24, který je ve skupině II. A podobně pro ostatní dvojice stavů a přechodů. Výsledek prvního dělení a přepsání pak vypadá dle tabulky 1.7. Někdo by mohla Výstup Skupina Stav t64 t80 t86 I s7 II II II s24 II III II II s3 II II II III s40 III III III Tabulka 1.7: Rozdělená tabulka, přejmenovaná podle skupin namítat, že stavy s3 a s7 jsou podle tabulky 1.7 stejné, protože mají totožný výstup. Ovšem jsou od sebe rozlišené v tabulce 1.6 přechodem t86. Již vytvořené skupiny nelze znovu slučovat. 3. Až do tohoto bodu se postupuje stejně jako v případě minimalizace. Tabulka se musí rozdělit postupně na ekvivalentní podmnožiny. Rozdíl je v bodě zastavení algoritmu. Tady se nezkoumá, zda je tabulka nedělitelná, ale to, jestli má každý stav 28

31 svou skupinu. Proto je důležité, aby byl automat minimální. V tomto příkladu se musí tabulka rozdělit ještě jednou, protože jak je vidět v tabulce 1.7, stavy s3 a s24 jsou ve stejné skupině, tedy nejsou rozlišené. Dalším dělením v tabulce přibude ještě jedna skupina. Výsledkem je tabulka 1.8. Skupina Stav Výstup t64 t80 t86 I s40 I II I II s24 II II II III s3 I IV IV IV s7 I IV I Tabulka 1.8: Rozdělená tabulka, přejmenovaná podle skupin 4. Nyní dělení končí. Každý stav má svou vlastní skupinu. Tedy všechny stavy jsou rozlišeny. Nyní se musí z tabulek zpětně vyčíst všechny sekvence, které rozliší jednotlivé stavy od sebe. 5. Pro každou dvojici stavů je nutné najít poslední tabulku, ve které jsou oba stavy ve stejné skupině. Například stavy s24 a s3. Tyto stavy byly od sebe odlišeny až v tabulce 1.7, je tedy třeba vzít si tabulku 1.6 a zjistit, kterým přechodem jsou tyto dva stavy odlišené v této tabulce. Je vidět, že jsou odlišeny přechodem t80. Pro všechny ostatní vstupy jsou v tabulce stejné výstupy. Necht množina W je množina všech charakteristických sekvencí a sekvence z je jednotlivá sekvence. Přičemž z W. V tomto případě po první přečtené tabulce je z = t80. Nyní je třeba z tabulky 1.6 zjistit, do kterých stavů se systém dostane ze stavů s3 a s24 přechodem t80. Jsou to stavy s3 a s40. Tyto dva stavy jsou rozlišené v tabulce 1.6 a to přechody t80 a t86. Opět je možné vzít libovolný přechod, tedy například opět t86. Nyní tedy z = t80 :: t86. Další symbol se do sekvence připojuje vždy na konec. 6. Jelikož byla nalezena dvojice stavů, která je rozlišena již v počáteční tabulce, není třeba dále ve stavění sekvence pokračovat. Sekvence, která rozliší stavy s3 a s24 je tedy z = t80 :: t Stejně se pokračuje pro ostatní dvojice stavů. V tomto jednoduchém příkladě jsou všechny zbylé dvojice rozlišeny již v prvním kroku, tedy sekvence budou pouze jednočlenné. Samozřejmě záleží, na který přechod padne volba, pokud jsou stavy rozlišené více přechody. Jednou možností charakterizační množiny pro tento příklad je tedy W = {t80, t86, t80 :: t86}. Je zbytečné, aby tato množina měla více totožných členů. 8. Nyní je tedy algoritmus hledání charakterizační množiny u konce. 29

32 Kontrola správnosti algoritmu Správnost algoritmu se ověří jednoduše aplikací jednotlivých sekvencí postupně na všechny stavy. Výsledek je v tabulce 1.9. V tabulce není žádný řádek naprosto totožný. Tedy pro Stav Sekvence t80 Sekvence t86 Sekvence t80 :: t86 s , 0 s , 0 s , 1 s , 1 Tabulka 1.9: Aplikace charakterizační množiny na jednotlivé stavy každé dva stavy se najde taková vstupní sekvence, která je rozliší. Je tedy splněna definice 23 a nalezená množina sekvencí je opravdu charakterizační množinou. 1.2 Teorie testování konečných stavových automatů Při testování obecně je nutné projít všechny případy, které mohou nastat. To vede k velkému množství testovacích případů. Teorie testování konečných stavových automatů pomůže toto číslo snížit na přiměřený počet, při pokrytí všech stavů i přechodů. Principy testování konečných automatů se zabývá článek [3] Názvosloví testování Pro úplnost zde bude nyní uvedeno několik pojmů, se kterými se lze setkat při testování softwaru, viz [9]. Testování černé skříňky - funkcionální testování Strategie testování chování založené na požadavcích, program se chápe jako černá skříňka. Testování funkcí: funkce jsou testovány předložením vstupů a prověřováním jejich výstupů. Interní struktura se uvažuje pouze zřídka. Testování černé skříňky je vlastně testování systému, do kterého není vidět. Jedná se o testování hlavně ze strany profesionálního testovacího týmu. Jemu není znám, ve většině případů, zdrojový kód. Jsou dány pouze požadavky na chování, vstupy a s nimi spojené očekávané výstupy. Opakem černé skříňky je bílá skříňka. Testování bílé skříňky - testování skleněné skříňky Strategie testování struktur odvozených ze struktur testovaných objektů. Programátor používá znalosti a přístup ke zdrojovému kódu. Strukturální testování: Hlavní důraz je kladen na vhodný výběr cest skrze program 30

33 nebo podprogram, které se procházejí při provádění sady testů. Bílou skříňku většinou testují sami programátoři při vývoji softwaru. Požadavek - podmínka nebo schopnost, kterou uživatel potřebuje k řešení problému nebo vyřešení úlohy. Podmínky zadává zákazník, vlastník programu tak, aby pokud možno splňoval nároky na kvalitu, rychlost, konzistenci a podobně. Požadavky se během vývoje i testování programu mohou libovolně měnit. Specifikace - vyjádření množiny požadavků, kterým by měl produkt vyhovět. Obsahuje komplexní požadavky na systém, seřazené do jednotlivých kategorií chování a nároků na systém. Testovací plán - dokument popisující zvolený přístup k zamýšleným testovacím aktivitám. Tento plán popisuje jednotlivé kroky k otestování nějakého požadavku. Testovací případ - specifická množina testovacích dat společně s očekávanými výsledky vztažené k vybranému cíli testu. Návrh testu - výběr a specifikace množiny testovacích případů, které splňují úlohu testu nebo kritéria pokrytí. Dobrý test - test, který má nezanedbatelnou pravděpodobnost detekce dosud neobjevené chyby Úspěšný test - test, který detekuje dosud neobjevenou chybu. Při návrhu testů se vychází ze specifikace, podle které se aplikace dělí na jednotlivé skupiny testovacích případů. Pro jednotlivé testovací případy se musí vytvořit testovací plány. Pak se musí testovací případy sestavit do testů, které se testují bud manuálně, nebo pomocí rozličných automatických pomocníků. Výsledkem testování je statistika, do které se zahrnují proběhlé testy, nalezené chyby a podobně. V případě testování konečných automatů, se jedná o testování černé skříňky. K dispozici je pouze graf konečného automatu, jeho vstupní stav a vstupní a výstupní symboly. Cílem je sestavit sadu testů tak, aby byly pokryty všechny stavy a přechody a byl brán důraz i na možné skryté stavy systému. Je třeba ověřit dosažitelnost jednotlivých stavů. Projít všechny přechody a ověřit, že se systém chová dle specifikací. Tedy že pro každý vstupní symbol existuje výstup, a tento výstup odpovídá požadavkům. Test samozřejmě nelze zahájit, pokud není systém v počátečním stavu. Je tedy třeba provést test, který to ověří, případně systém do počátečního stavu převede. Dalším, co je třeba ověřit, je existence skrytých stavů. O skrytých stavech už byla zmínka v souvislosti s charakterizační množinou v sekci Díky skrytým stavům může stavový prostor několikanásobně narůst. 31

34 1.2.2 Kritéria pokrytí stavů Vstupními daty pro testování konečného automatu je stavový graf. Dále jsou k němu známy vstupní a výstupní symboly a počáteční stav. Není zaručená ani jeho úplná specifikace ani minimalita. Pro potřeby výuky je zaručen pouze determinismus automatu. Při návrhu testů se vychází z počátečního stavu. Definice 24 (Pokrytí stavů) dle [10] Pokrytí stavů je množina vstupních sekvencí L taková, že lze nalézt prvek množiny L, kterým se lze dostat do jakéhokoli žádaného stavu z počátečního stavu q 0. Jinak řečeno, pokrytí stavů je množina sekvencí, které jsou složené ze vstupních symbolů. Každá sekvence začíná v počátečním stavu a vede do alespoň jednoho z ostatních stavů s tím, že každý stav je nějakou sekvencí dosažitelný. Je to tedy množina cest z počátečního stavu do ostatních. Celá množina pokrytí stavů tvoří kostru grafu. Pro hledání pokrytí stavů lze použít jakýkoli algoritmus pro prohledávání grafu. Prohledávání do šířky, prohledávání do hloubky nebo jakoukoli heuristiku. Zde je použit algoritmus prohledávání do šířky, jelikož grafy obsahují maximálně šest stavů. Definice 25 (Prohledávání do šířky) dle [12] Prohledávání do šířky (anglicky Breadth-first search, zkráceně BFS) je grafový algoritmus, který postupně prochází všechny vrcholy v dané komponentě souvislosti. Algoritmus nejprve projde všechny sousedy startovního vrcholu, poté sousedy sousedů atd. až projde celou komponentu souvislosti. Komponentou souvislosti je v tomto případě konečný stavový automat. Popis algoritmu Vychází se z počátečního stavu. 1. Nejdříve se do fronty uloží všechny stavy, do kterých lze přímo přejít z počátečního stavu. Jelikož se jedná o prohledávání do šířky, používá se fronta. Fronta funguje tak, že první prvek, který se do ní uloží, se také jako první použije. Tím je zaručeno, že se nejdříve projdou prvky v jedné hloubce grafu a potom se postupuje do nižších vrstev. 2. Označení stavu Každý stav, do kterého se během algoritmu systém přes hranu dostane, musí být označen jako otevřený, aby bylo vidět, že je již pokryt. Jakmile se prohledávání stavu ukončí, tedy projdou se i všechny jeho potomci, musí se označit jako uzavřený. Tím se zaručí konvergence algoritmu a také se zkrátí časová náročnost. Může se totiž stát, že se do stejného stavu systém při prohledávání dostane vícekrát. Pokud uvidí, že je označený jako zavřený, nebude dále prohledávat jeho potomky, protože bude vědět, že toto prohledávání již jednou proběhlo. 32

CA CZ, s.r.o. May 21, Radek Mařík Testování konečných automatů May 21, / 36

CA CZ, s.r.o. May 21, Radek Mařík Testování konečných automatů May 21, / 36 Testování konečných automatů Radek Mařík CA CZ, s.r.o. May 21, 2010 Radek Mařík (radek.marik@ca.com) Testování konečných automatů May 21, 2010 1 / 36 Obsah 1 Konečný automat - základy 2 Neformální přístup

Více

Minimalizace KA - Úvod

Minimalizace KA - Úvod Minimalizace KA - Úvod Tyto dva KA A,A2 jsou jazykově ekvivalentní, tzn. že rozpoznávají tentýž jazyk. L(A) = L(A2) Názorně lze vidět, že automat A2 má menší počet stavů než A, tudíž našim cílem bude ukázat

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

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, [161014-1204 ] 11 2.1.35 Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, kde i = 0, 1,..., takto: p 0 q právě tehdy, když bud p, q F nebo p, q F. Dokud i+1 i konstruujeme p

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

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

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA BAKALÁŘSKÁ PRÁCE 2002 SEDLÁK MARIAN - 1 - OSTRAVSKÁ UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA KATEDRA INFORMATIKY A POČÍTAČŮ Vizualizace principů výpočtu konečného

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

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

Ú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

Ú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

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: IB102 Automaty, gramatiky a složitost, 6. 10. 2014 1/29 Regulární výrazy Definice 2.58. Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: 1 ε, a a pro každé a

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

Ú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

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

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

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

5. Sekvenční logické obvody

5. Sekvenční logické obvody 5. Sekvenční logické obvody 3. Sekvenční logické obvody - úvod Sledujme chování jednoduchého logického obvodu se zpětnou vazbou 3. Sekvenční logické obvody - příklad asynchronního sekvenčního obvodu 3.

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

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

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

3. Sekvenční logické obvody

3. Sekvenční logické obvody 3. Sekvenční logické obvody 3. Sekvenční logické obvody - úvod Sledujme chování jednoduchého logického obvodu se zpětnou vazbou 3. Sekvenční logické obvody příklad sekv.o. Příklad sledování polohy vozíku

Více

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je 28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci

Více

Operační výzkum. Síťová analýza. Metoda CPM.

Operační výzkum. Síťová analýza. Metoda CPM. Operační výzkum Síťová analýza. Metoda CPM. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační číslo

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

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

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ Abecedou se rozumí libovolná konečná množina Σ. Prvky abecedy nazýváme znaky (symboly) Slovo (řetězec) v nad abecedou Σ je libovolná konečná posloupnost znaků této abecedy. Prázdné posloupnosti znaků odpovídá

Více

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

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

Více

45 Plánovací kalendář

45 Plánovací kalendář 45 Plánovací kalendář Modul Správa majetku slouží ke tvorbě obecných ročních plánů činností organizace. V rámci plánu je třeba definovat oblasti činností, tj. oblasti, ve kterých je možné plánovat. Každá

Více

Teorie systémů TES 1. Úvod

Teorie systémů TES 1. Úvod Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti. Teorie systémů TES 1. Úvod ZS 2011/2012 prof. Ing. Petr Moos, CSc. Ústav informatiky a telekomunikací Fakulta dopravní ČVUT v Praze

Více

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

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

Testování a spolehlivost. 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů

Testování a spolehlivost. 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů Testování a spolehlivost ZS 2011/2012 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Příprava studijního programu

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

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

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

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014 Teorie grafů Radim Farana Podklady pro výuku pro akademický rok 013/014 Obsah Kostra grafu. Tahy,. Úloha čínského pošťáka. Zdroj: Vítečková, M., Přidal, P. & Koudela, T. Výukový modul k předmětu Systémová

Více

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 2/22 Pumping lemma - podstata problému BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 4/22 Automaty a gramatiky(bi-aag)

Více

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Konečně-automatový model křižovatky Slovanská x nájezd na Most Milénia (Plzeň) Samostatná práce z předmětu

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

Formální jazyky a gramatiky Teorie programovacích jazyků

Formální jazyky a gramatiky Teorie programovacích jazyků Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina

Více

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta. 6 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info množina vrcholů a množina hran hrana vždy spojuje

Více

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 28. února 2017 Metainformace materiály: jan.brezina.matfyz.cz/vyuka/tgh (./materialy/crls8.pdf - Introduction to algorithms)

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

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31 Vztah teorie vyčíslitelnosti a teorie složitosti IB102 Automaty, gramatiky a složitost, 2. 12. 2013 1/31 IB102 Automaty, gramatiky a složitost, 2. 12. 2013 2/31 Časová složitost algoritmu počet kroků výpočtu

Více

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

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

Více

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

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

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné

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

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

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

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39 Algoritmy Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna 2018 1/ 39 Algoritmy Příklad: Popis algoritmu pomocí pseudokódu: Algoritmus 1: Algoritmus pro nalezení největšího prvku v poli 1 Find-Max(A,n):

Více

ČVUT FEL, K Radek Mařík Testování konečných automatů 27. října / 52

ČVUT FEL, K Radek Mařík Testování konečných automatů 27. října / 52 Testování konečných automatů Radek Mařík ČVUT FEL, K13132 27. října 2016 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 1 / 52 Obsah 1 Konečný automat - základy Definice

Více

Dijkstrův algoritmus

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

Více

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice I. Funkce dvou a více reálných proměnných 1. Úvod Značení: V textu budeme používat označení: N pro množinu všech přirozených čísel; R pro množinu všech reálných čísel; R n pro množinu všech uspořádaných

Více

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový

Více

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické

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

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

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

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

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

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2014/2015 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2014/2015 1 / 21 Výroková logika Horn-SAT Horn-SAT Jednotková

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

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 5. března 2013 Počátek teorie grafů Leonard Euler (1707 1783) 1735 pobyt v Královci (Prusko), dnes Kaliningrad (Rusko) Úloha:

Více

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

Více

Elegantní algoritmus pro konstrukci sufixových polí

Elegantní algoritmus pro konstrukci sufixových polí Elegantní algoritmus pro konstrukci sufixových polí 22.10.2014 Zadání Obsah Zadání... 3 Definice... 3 Analýza problému... 4 Jednotlivé algoritmy... 4 Algoritmus SA1... 4 Algoritmus SA2... 5 Algoritmus

Více

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014 Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 204 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia

Více

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění

Více

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Zobrazte si svazy a uspořádané množiny! Jan Outrata LatVis Zobrazte si svazy a uspořádané množiny! Jan Outrata Motivace potřeba visualizovat matematické (algebraické) struktury rychle, přehledně a automaticky počítačovými prostředky ruční kreslení je zdlouhavé

Více

Jan Březina. 7. března 2017

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

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2013/2014 1 / 20 Základní syntax Jazyk Výroková logika je logikou

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

Sekvenční logické obvody

Sekvenční logické obvody Sekvenční logické obvody Sekvenční logické obvody - úvod Sledujme chování jednoduchého logického obvodu se zpětnou vazbou Sekvenční obvody - paměťové členy, klopné obvody flip-flop Asynchronní klopné obvody

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

Testování a spolehlivost. 1. Laboratoř Poruchy v číslicových obvodech

Testování a spolehlivost. 1. Laboratoř Poruchy v číslicových obvodech Testování a spolehlivost ZS 2011/2012 1. Laboratoř Poruchy v číslicových obvodech Martin Daňhel Katedra číslicového návrhu Fakulta informačních technologií ČVUT v PRaze Příprava studijního programu Informatika

Více

Zjednodušení generativního systému redukcí rozlišení

Zjednodušení generativního systému redukcí rozlišení Zjednodušení generativního systému redukcí rozlišení Ze studie zahrnující dotaz na vzdělání. Obor hodnot v i : e základní vzdělání h střední vzdělání c bakalář g magistr Možné redukce rozlišení cg vysoké

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování. 3 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Business modelling, základní nástroje a metody business modelování.

Více

Vztah jazyků Chomskeho hierarchie a jazyků TS

Vztah jazyků Chomskeho hierarchie a jazyků TS Vztah jazyků Chomskeho hierarchie a jazyků TS Jan Konečný; (přednáší Lukáš Havrlant) 15. října 2013 Jan Konečný; (přednáší Lukáš Havrlant) Chomskeho hierarchie a jazyky TS 15. října 2013 1 / 23 Rychlé

Více

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015 Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 05 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia

Více

GRAFY A GRAFOVÉ ALGORITMY

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

Více

10 Přednáška ze

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

Více

Výuka programování v jazyce Python

Výuka programování v jazyce Python Výuka programování v jazyce Python Tomáš Fortelka RNDr. Jaroslav Icha Školní rok: 2009-10 Abstrakt Bakalářská práce se týká výuky programování v jazyce Python. Na trhu je velké množství knih a různých

Více

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 31. března 2015 Počátek teorie grafů Leonard Euler (1707 1783) 1735 pobyt v Královci (Prusko), dnes Kaliningrad (Rusko)

Více

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

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

Úvod do teorie her

Úvod do teorie her Úvod do teorie her 2. Garanční řešení, hry s nulovým součtem a smíšené strategie Tomáš Kroupa http://staff.utia.cas.cz/kroupa/ 2017 ÚTIA AV ČR Program 1. Zavedeme řešení, které zabezpečuje minimální výplatu

Více

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet. 4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a

Více

SIGNÁLY A LINEÁRNÍ SYSTÉMY

SIGNÁLY A LINEÁRNÍ SYSTÉMY SIGNÁLY A LINEÁRNÍ SYSTÉMY prof. Ing. Jiří Holčík, CSc. INVESTICE Institut DO biostatistiky ROZVOJE VZDĚLÁVÁNÍ a analýz VII. SYSTÉMY ZÁKLADNÍ POJMY SYSTÉM - DEFINICE SYSTÉM (řec.) složené, seskupené (v

Více

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez Síť Síť je čtveřice N = ( G, s, t, c) kde G ( V, A) = je prostý orientovaný graf a každé orientované hraně ( u, v) je přiřazeno nezáporné číslo, které se nazývá kapacita hrany ( u, v), formálně c ( u,

Více

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

1. Statistická analýza dat Jak vznikají informace Rozložení dat

1. Statistická analýza dat Jak vznikají informace Rozložení dat 1. Statistická analýza dat Jak vznikají informace Rozložení dat J. Jarkovský, L. Dušek, S. Littnerová, J. Kalina Význam statistické analýzy dat Sběr a vyhodnocování dat je způsobem k uchopení a pochopení

Více

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

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

Více

Použití UART a radia na platformě micro:bit

Použití UART a radia na platformě micro:bit Použití UART a radia na platformě micro:bit Jakub Vodsed álek Katedra měření Fakulta elektrotechnická České vysoké učení v Praze 25. června 2017 Obsah 1 Úvod 2 UART UART - úvod UART - výstup Prostý výpis

Více

Vlastnosti regulárních jazyků

Vlastnosti regulárních jazyků Vlastnosti regulárních jazyků Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti regulárních jazyků: vlastnosti strukturální, vlastnosti uzávěrové a rozhodnutelné problémy pro

Více

ALGORITMY A DATOVÉ STRUKTURY

ALGORITMY A DATOVÉ STRUKTURY Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu

Více

VLASTNOSTI GRAFŮ. Vlastnosti grafů - kap. 3 TI 5 / 1

VLASTNOSTI GRAFŮ. Vlastnosti grafů - kap. 3 TI 5 / 1 VLASTNOSTI GRAFŮ Vlastnosti grafů - kap. 3 TI 5 / 1 Pokrytí a vzdálenost Každý graf je sjednocením svých hran (jak je to přesně?).?lze nalézt složitější struktury stejného typu, ze kterých lze nějaký graf

Více

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou

Více

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění Jan Klíma Obsah Motivace & cíle práce Evoluční algoritmy Náhradní modelování Stromové regresní metody Implementace a výsledky

Více

Posloupnosti a jejich konvergence

Posloupnosti a jejich konvergence a jejich konvergence Pojem konvergence je velmi důležitý pro nediskrétní matematiku. Je nezbytný všude, kde je potřeba aproximovat nějaké hodnoty, řešit rovnice přibližně, používat derivace, integrály.

Více

Konečný automat. Jan Kybic.

Konečný automat. Jan Kybic. Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s

Více

U Úvod do modelování a simulace systémů

U Úvod do modelování a simulace systémů U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení

Více