Teoretická informatika



Podobné dokumenty
Teoretická informatika

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

Matematická analýza 1

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

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

Formální systém výrokové logiky

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

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

Úvod do informatiky. Miroslav Kolařík

Množiny, relace, zobrazení

teorie logických spojek chápaných jako pravdivostní funkce

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 Σ

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Přijímací zkouška - matematika

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

4.2 Syntaxe predikátové logiky

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Cvičení 1. Úvod do teoretické informatiky(2014/2015) cvičení 1 1

0. ÚVOD - matematické symboly, značení,

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Matematická logika. Miroslav Kolařík

Množiny, základní číselné množiny, množinové operace

NAIVNÍ TEORIE MNOŽIN, okruh č. 5

Okruh č.3: Sémantický výklad predikátové logiky

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

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Marie Duží

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

Základy logiky a teorie množin

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

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

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

Úvod do informatiky. Miroslav Kolařík

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Základní pojmy matematické logiky

Úvod do teoretické informatiky

Výroková logika - opakování

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

3 Množiny, Relace a Funkce

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Základy teorie množin

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 jara 2016

B i n á r n í r e l a c e. Patrik Kavecký, Radomír Hamřík

Výroková logika. Teoretická informatika Tomáš Foltýnek

Kapitola 1. Relace. podle definice podmnožinou každé množiny. 1 Neříkáme už ale, co to je objekt. V tom právě spočívá intuitivnost našeho přístupu.

RELACE, OPERACE. Relace

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

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

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce

Lineární algebra Kapitola 1 - Základní matematické pojmy

2. Množiny, funkce. Poznámka: Prvky množiny mohou být opět množiny. Takovou množinu, pak nazýváme systém množin, značí se

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 2016

Matematická logika. Miroslav Kolařík

Cílem kapitoly je opakování a rozšíření středoškolských znalostí v oblasti teorie množin.

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

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

platné nejsou Sokrates je smrtelný. (r) 1/??

4 Pojem grafu, ve zkratce

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

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

Matematická logika. Rostislav Horčík. horcik

AUTOMATY A GRAMATIKY

Vlastnosti regulárních jazyků

Predikátová logika. prvního řádu

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

Třída PTIME a třída NPTIME. NP-úplnost.

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Patří-li do množiny A právě prvky a, b, c, d, budeme zapisovat A = {a, b, c, d}.

Úvod do informatiky. Miroslav Kolařík

/1: Teoretická informatika(ti) přednáška 4

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

Matematická logika. Lekce 1: Motivace a seznámení s klasickou výrokovou logikou. Petr Cintula. Ústav informatiky Akademie věd České republiky

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

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 jara 2017

Třída PTIME a třída NPTIME. NP-úplnost.

Poznámka. Je-li f zobrazení, ve kterém potřebujeme zdůraznit proměnnou, píšeme f(x) (resp. f(y), resp. f(t)) je zobrazení místo f je zobrazení.

1. Matematická logika

Doporučené příklady k Teorii množin, LS 2018/2019

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

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

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO ALGEBRA DAGMAR SKALSKÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

SINGULÁRNÍ VÝROKY: Jednoduchý singulární výrok vznikne spojením singulárního termínu s termínem obecným pomocí spony=slova je.

Modely Herbrandovské interpretace

Kapitola Základní množinové pojmy Princip rovnosti. Dvě množiny S a T jsou si rovny (píšeme S = T ) prvek T je také prvkem S.

Vysoké učení technické v Brně Fakulta informačních technologií. Regulární pologrupy. Semestrální práce do předmětu Algebra, Kombinatorika, Grafy

ALGEBRA. Téma 4: Grupy, okruhy a pole

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

Matematika B101MA1, B101MA2

Teoretická informatika Tomáš Foltýnek Teorie čísel Nekonečno

Složitost Filip Hlásek

Pojem relace patří mezi pojmy, které prostupují všemi částmi matematiky.

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

Transkript:

Vysoká škola báňská Technická univerzita Ostrava Teoretická informatika učební text Doc. RNDr. Petr Jančar, CSc. Ostrava 2007

Recenze: Doc. RNDr. Jaroslav Markl Název: Teoretická informatika učební text Autor: Doc. RNDr Petr Jančar, CSc. Vydání: první, 2007 Počet stran: 330 Náklad: xx Vydavatel a tisk: Ediční středisko VŠB-TUO Studijní materiály pro studijní obor Informatika a výpočetní technika fakulty elektrotechniky a informatiky Jazyková korektura: nebyla provedena Určeno pro projekt: Operační program Rozvoj lidských zdrojů Název: E-learningové prvky pro podporu výuky odborných a technických předmětů Číslo: CZ.04.01.3/3.2.15.2/0326 Realizace: VŠB Technická univerzita Ostrava Projekt je spolufinancován z prostředků ESF a státního rozpočtu ČR c 2007Doc.RNDrPetrJančar,CSc. c 2007 VŠB Technická univerzita Ostrava ISBN 978-80-248-1487-2

Obsah Úvod 1 1 Základní pojmy 7 1.1 Množiny............ 7 1.2 Relace............. 11 1.2.1 Ekvivalence...... 13 1.2.2 Uspořádání...... 13 1.3 Funkce... 15 1.4 Grafy... 17 1.5 Stromy............. 20 1.6 Výrokoválogika... 21 1.7 Dalšíznačení......... 23 1.8 Cvičení............. 24 2 Formální jazyky 29 2.1 Formálníabecedaajazyk............. 29 2.2 Některéoperacesjazyky... 35 2.3 Cvičení............. 40 3 Konečné automaty a regulární jazyky 45 3.1 Motivačnípříklad... 45 iii

iv Obsah 3.2 Konečnéautomatyjakorozpoznávačejazyků..... 53 3.3 Modulárnínávrhkonečnýchautomatů........ 61 3.4 Dosažitelnéstavy,normovanýtvar........... 65 3.5 Cvičení.... 71 3.6 Minimalizacekonečnýchautomatů........... 74 3.7 Ekvivalence konečných automatů; minimální automaty.... 82 3.8 Regulárníaneregulárníjazyky............. 85 3.9 Nedeterministickékonečnéautomaty......... 89 3.10 Uzávěrovévlastnostitřídyregulárníchjazyků.....105 3.11 Cvičení....108 3.12 Regulárnívýrazy.........110 4 Bezkontextové jazyky 119 4.1 Motivačnípříklad...119 4.2 Bezkontextovégramatikyajazyky...........124 4.3 Jednoznačnégramatiky......133 4.4 Cvičení....136 4.5 Zásobníkovéautomaty......138 5 Bezkontextové jazyky rozšiřující část 153 5.1 Speciálníbezkontextovégramatiky..........153 5.2 Varianty zásobníkových automatů, deterministické bezkontextovéjazyky,uzávěrovévlastnostitřídcfladcfl......162 5.3 Nebezkontextovéjazyky.....168 6 Úvod do teorie vyčíslitelnosti 175 6.1 Problémyaalgoritmykjejichřešení..........175 6.2 Turingovystroje.........185 6.3 ModelRAM(RandomAccessMachine)........199

Obsah v 6.4 Simulace mezi výpočetními modely; Churchova-Turingova teze 206 6.5 Rozhodnutelnostanerozhodnutelnost.......210 7 Úvod do teorie vyčíslitelnosti- rozšiřující část 219 8 Úvod do teorie složitosti 227 8.1 Složitostalgoritmů......227 8.2 Asymptotická složitost, odhady řádového růstu funkcí... 239 8.3 Polynomiální algoritmy, třídy složitosti, třída PTIME..... 248 8.4 Nedeterministické polynomiální algoritmy, třída NPTIME... 253 8.5 Polynomiálnípřeveditelnost,NP-úplnéproblémy.......259 9 Úvod do teorie složitosti- rozšiřující část 265 10 Další partie teorie a praxe algoritmů(rozšiř. část) 271 10.1 Ilustracejednoduchéhopřekladu..........271 10.2 Obecnémetodynávrhualgoritmů.........275 10.2.1 Prohledávání.....275 10.2.2 Metoda rozdělapanuj...276 10.2.3 Greedy algoritmy.............279 10.2.4 Dynamicképrogramování..........284 10.3 Aproximačníalgoritmy....288 10.4 Pravděpodobnostníalgoritmy...........292 10.5 Šifrovací systém s veřejným klíčem; RSA-kryptosystém.... 295 10.6 Paralelníalgoritmy......297 10.7 Distribuovanéalgoritmy...303 10.8 Novévýpočetnímodely....305 10.8.1 Kvantovévýpočty(Quantumcomputing)........305 10.8.2 DNA-výpočty(DNA-computing).....305

vi Obsah A Řešení příkladů 307

Úvod Tento učební text má sloužit jako základní studijní materiál pro kursy teoretické informatiky zabývající se teorií jazyků a automatů a teorií algoritmické vyčíslitelnosti a složitosti. Text existuje ve dvou verzích. Základní verze je určenaprokurs Úvoddoteoretickéinformatiky (ÚTI)vbakalářskémstudiu, rozšířenáverzepakprokurs Teoretickáinformatika (TI)vmagisterském studiu. Nepředpokládá se ovšem, že v omezeném čase bakalářského kursu se probere celá základní verze; ta má posloužit vedoucímu kursu k sestavení konkrétního plánu typicky zahrnujícího(jen) podmnožinu látky obsažené ve studijním textu. Rozšířená verze obsahuje verzi základní a navíc je obohacena okapitolyoznačenéjako rozšiřujícíčást.textbylpoužit(adopracován) vbězíchkursůútiativletnímsemestrur.2006/07;prodalšíběhyje plánováno další vylepšování a doplňování. Vtétoúvodnísekcijepodánstručnýnástinobsahutextuajsouuvedeny pokyny ke studiu; sekce je zakončena poznámkami o vzniku textu a poděkováním lidem, kteří k němu významně přispěli. Souhrnný název studijního textu by také mohl být Základy teorie výpočtů (Theory of Computation). Tato teorie patří k základním(a dnes již klasickým) partiím teoretické informatiky, partiím, jejichž vznik a vývoj byl a je úzce svázán s potřebami praxe při vývoji software, hardware a obecně při modelování systémů. Motivovat teorii výpočtů lze přirozenými otázkami typu: jak srovnat kvalitu(rychlost) různých algoritmů řešících tentýž problém (úkol)? jak lze porovnávat(klasifikovat) problémy podle jejich(vnitřní) složitosti? 1

2 Obsah jak charakterizovat problémy, které jsou a které nejsou algoritmicky řešitelné, tj. které lze a které nelze řešit algoritmy(speciálně pak rychlými,nebolipraktickypoužitelnými,algoritmy)? Při zpřesňování těchto a podobných otázek a při hledání příslušných odpovědí nutněpotřebujeme(abstraktní)modelypočítače(tj.toho,kdoprovádí výpočty). Z více důvodů je vhodné při našem zkoumání začít velmi jednoduchým, ale fundamentálním modelem, a sice tzv. konečnými(tj. konečně stavovými) automaty. Konečné automaty lze chápat nejen jako nejzákladnější model v oblasti počítačů, ale ve všech oblastech, kde jde o modelování systémů, procesů, organismů apod., u nichž lze vyčlenit konečně mnoho stavů a popsat způsob, jak se aktuální stav mění prováděním určitých akcí(např. přijímáním vnějších impulsů).(jako jednoduchý ilustrující příklad nám může posloužit model ovladače dveří v supermarketu znázorněný na obr. 3.1, o němž pojednáme později.) Velmiběžná výpočetní aplikace,unížjevpozadíkonečnýautomat,je hledání vzorků v textu. Takové hledání asi nejčastěji používáme v textových editorech a při vyhledávání na Internetu; speciální případ také představuje např. lexikální analýza v překladačích. Při vyhledávání informací v počítačových systémech jste již jistě narazili na nějakou variantu regulárních výrazů, umožňujících specifikovat celé třídy vzorků. Regulárními výrazy a jejich vztahem ke konečným automatům se rovněž budeme zabývat. Po seznámení se s konečnými automaty a regulárními výrazy budeme pokračovat silnějším modelem tzv. zásobníkovými automaty; o ty se opírají algoritmy syntaktické analýzy při překladu(programovacích) jazyků, tedy algoritmy, které např. určí, zda vámi napsaný program v Javě je správně javovsky. Zmínili jsme pojem jazyk obecně budeme mít na mysli tzv. formální jazyk; jazyky přirozené(mluvené) či jazyky programovací jsou speciálními případy. Nanašemodelysevprvéřaděbudemedívatjakonarozpoznávačejazyků, tj. zařízení, která zpracují vstupní posloupnost písmen(symbolů) a rozhodnou, zda tato posloupnost je(správně utvořenou) větou příslušného jazyka. S pojmem jazyk se nám přirozeně pojí pojem gramatika. Speciálně se budeme věnovat tzv. bezkontextovým gramatikám, s nimiž jste se již přinejmenším implicitně setkali u definic syntaxe programovacích jazyků(tj. pravidel konstrukce programů); ukážeme mimo jiné, že bezkontextové gramatiky generují právě ty jazyky, jež jsou rozpoznávány zásobníkovými automaty.

Obsah 3 Seznámíme se také s univerzálními modely počítačů(algoritmů) konkrétně s Turingovými stroji a stroji RAM. Na těchto modelech postavíme vysvětlení pojmů rozhodnutelnosti a nerozhodnutelnosti problémů a podrobněji se budeme zabývat výpočetní složitosti algoritmů a problémů; speciálně pak třídami složitosti PTIME a NPTIME. Rozšířenou verzi zakončíme úvodem do problematiky aproximačních, pravděpodobnostních, paralelních a distribuovaných algoritmů. Poznamenejme, že účelem textu není popis konkrétních větších reálných aplikací studovaných(teoretických) pojmů; cílem je základní seznámení se s těmito pojmy a s příslušnými obecnými výsledky a metodami. Jejich zvládnutí je nezbytným základem pro porozumění i oněm reálným aplikacím. Jako příklad novější aplikace může sloužit použití konečných automatů s vahami pro reprezentaci složitých funkcí(na reálném oboru) a jejich využití při reprezentaci, transformaci a kompresi obrazové informace(viz např. kapitolu v[gru97]). Učební text může sloužit k samostatnému studiu, které nevyžaduje další zdroje. Pro studujícího, který chce získat ucelenější a širší přehled, by ovšem bylo velmi přínosné, kdyby si probírané partie prostudoval také v některé z doporučených(či jiných) monografií. V češtině či slovenštině vyšly např.[chy84],[hu78](což je slovenský překlad angl. originálu z r. 1969), [Kuč83],[MvM87]. Kromě uvedených knih existují jistě i další texty v češtině či slovenštině, které se zabývají podobnou problematikou. Nepoměrně bohatší je ovšem nabídka příslušné literatury v angličtině, což lze snadno zjistitnapř. surfováním nawebu.jakopříkladkvalitníliteraturyuveďme alespoň[sip97]. Pokyny ke studiu Jak jsme již zmínili, tento text existuje ve dvou verzích základní a rozšířené. Základní verze textu je primárně určena pro kurs Úvod do teoretické informatiky vbakalářskémstudiu,rozšířenáverzeprokurs Teoretickáinformatika vmagisterskémstudiu.rozšířenáverzeseodzákladnílišízařazením dalšíchkapitol,označenýchjako rozšiřujícíčást. Text je členěn do kapitol podle jednotlivých témat; kapitola zpravidla obsahuje několik částí(sekcí), jak je také patrné z Obsahu. Každá kapitola

4 Obsah začíná uvedením cílů dané kapitoly. Rovněž každá část(sekce) začíná uvedením cílů, které stručně nastiňují, jaké znalosti a schopnosti by měl čtenář získat po prostudování dané části. Pro zvýraznění jsou cíle vždy uvedeny následujícími ikonkami: Cíle kapitoly: Zde budou uvedeny cíle dané kapitoly. Cíle této části: Zde budou uvedeny cíle dané části. Pro větší přehlednost jsou jednotlivé části také zakončeny stručným shrnutím: Shrnutí: Zde bude uvedeno shrnutí dané části. Ke každé části je rovněž dodán orientační čas v hodinách; např. Orientační čas ke studiu této části: 2 hod. Tato hodnota je samozřejmě velmi individuální. Představuje(spíš dolní) odhad času, který spotřebuje motivovaný student na důkladné prostudování dané části, včetně pochopení a vyřešení příkladů. Řešené příklady jsou uvedeny následující ikonkou a textem: Řešený příklad: Zde je uvedeno zadání příkladu. Řešení: Zde pak následuje ukázkové řešení.? Důležitousoučástítextujsoutzv. kontrolníotázky označenétakto: Kontrolníotázka: Zdebudeuvedentextotázky. Je to jeden z prostředků připomenutí čtenáři, že studovaný text má číst aktivně,tj.tak,abysivesvéhlavěskutečněbudovalsvévlastnípochopení

Obsah 5 auchopenípodstatydanéproblematiky,anikoliv pasivně,kdyjenupadá do čtení cizího textu, jehož smysl mu uniká. Byť odpověď na kontrolní otázku, nebo alespoň její náznak, přichází v textu většinou vzápětí za otázkou, čtenář je vyzýván, ať pokračuje ve čtení až po vlastním promyšlení kontrolní otázky. Další důležitou součástí textu jsou otázky a cvičení, které by měly čtenáři napomoci k ověření nabytých znalostí a schopností. Na otázky by měl čtenář být schopen odpovědět po případném krátkém zamyšlení bez nutnosti něco konstruovat ;vyřešenícvičenívětšinoujižvyžadujepoužitítužkyapapíru. Některé otázky jsou shrnuty do bloku otázek na konci příslušné kapitoly či sekce. Tento blok je označen stejnou ikonkou jako kontrolní otázka:? Otázky: Otázka: Text první otázky. Otázka: Text další otázky. Cvičení jsou označena následujícím způsobem(pokud následuje více cvičení zasebou,jeikonkauvedenajenuprvníhoznich): Cvičení: Zde bude uveden text zadání. Některékapitolyobsahujísamostatnousekcinazvanou Cvičení.Tatosekce obsahuje další příklady k dokonalejšímu procvičení probírané látky. Těžší příklady jsou označeny hvězdičkou( ), ještě těžší dvěma hvězdičkami ( ).Otázkyacvičeníjsoučíslovány.NakoncitextujsoupakvPřílozeA uvedena řešení většiny z nich. V textu čtenář rovněž občas narazí na ikonku α Matematická poznámka: nebonatext(třebadůkaz)označený prohloubavějšíčtenáře.takovýtext je možné bez újmy na porozumění dalšímu textu přeskočit, studenti magisterského studia by to ovšem dělat neměli. Jak již bylo zmíněno, učební text může sloužit k samostudiu bez závislosti na dalších zdrojích. Počítá se ovšem s jeho využíváním ve zmíněných kursech teoretické informatiky, které mají vždy svou webovskou stránku obsahující (a odkazující na) doplňkové podpůrné studijní materiály. Jedním z nich je i

6 Obsah soubor animací; studijní text není s animacemi provázán, ale čtenáři je občas explicitně doporučováno podívat se na konkrétní animaci. Poznamenejmeještě,žeKapitola1jechápánajakojistá pomůcka kvlastnímu studijnímu textu. Shrnuje základní pojmy, o nichž se předpokládá, že jim čtenář již rozumí díky dřívějšímu studiu. Tato kapitola slouží také k upřesnění a shrnutí matematické notace používané v textu. Poznámka autora o vzniku textu a poděkování Jako základ tohoto učebního textu posloužily stručné pracovní materiály, kteréjsemsestavilprodřívějšíkursy Teoriejazykůaautomatů a Vyčíslitelnostasložitost.Tymj.částečněvyužildoc.RNDr.PetrHliněný, Ph.D., který na FEI VŠB-TUO vedl kurs Úvod do teoretické informatiky vletech2004a2005;zpracovalmateriál,vněmžsejižorientovalinastudenty kombinované formy studia(dodával řešené příklady, výsledky cvičení apod.). Nynější text pak vznikl novým přepsáním a významným rozšířením původních pracovních materiálů, nyní již zcela s ohledem na samostatně studujícího čtenáře. Byly přitom využity i podklady doc. Hliněného a do textu byly včleněny mnohé řešené příklady a cvičení z jeho materiálů; děkuji doc. Petru Hliněnému za jeho laskavé svolení. Ing. Zdeňku Sawovi, Ph.D. a Ing. Martinu Kotovi chci poděkovat za velkou technickou pomoc při sestavování tohoto učebního textu, včetně jeho obohacení o e-learningové prvky, kontroly textu a řešení příkladů apod.; Z. Sawa navíc sestavil úvodní kapitolu 1. Oba také vedli kurs Úvod do teoretické informatikyvletech2006a2007avýrazněsepodílelinarealizacianimací(a jejich scénářů), které slouží jako doplňkový materiál studijního textu. V Ostravě, 31.8.2007 Petr Jančar

Kapitola 1 Základní pojmy Cíle kapitoly: Připomenutí základních pojmů(množiny, relace, funkce, grafy, základyvýrokovélogiky,...),kterébymělybýtčtenářiznámy už z předchozího studia. Poznámka: Kapitola si nečiní žádný nárok na úplnost výčtu předpokládaných znalostí čtenáře. Např.(v této verzi) chybí připomenutí elementárních základů predikátové logiky, typů důkazů v matematice(důkaz indukcí, důkaz sporem,...)adalšíchpartií,ikdyžužvecvičeníchvtétokapitolesetytoznalosti občas předpokládají. Kapitola není součástí vlastního studijního textu. Čtenářbysijimělprojít,abysiuvědomil,zdauvedenépojmyjižskutečně zná; zároveň tak získá představu o názvosloví a značení, které je používáno v dalších kapitolách. 1.1 Množiny Množina je kolekce vzájemně odlišitelných objektů, které nazýváme jejími prvky. Jestliže je objekt x prvkem množiny S, píšeme x S. Jestliže x není prvkem S,píšeme x S. Jednou z možností, jak popsat množinu, je explicitně vyjmenovat všechny její prvky mezi složenými závorkami. Pokud například chceme definovat, že 7

8 Kapitola 1. Základní pojmy množina Sobsahuječísla1,2a3(aneobsahuježádnédalšíprvky),můžeme napsat S= {1,2,3}. Množina nemůže prvek obsahovat více než jednou a prvky množiny nejsou nijak seřazeny. Množiny A a B jsou si rovny, jestliže obsahují tytéž prvky. Prooznačenítoho,žemnožiny AaBjsousirovny,používámezápis A=B. Platítedynapříklad {1,2,3}={2,1,3}={3,2,1}. Poznámka: Kromě množin se také někdy používají multimnožiny. Na rozdíl od množiny může multimnožina obsahovat více výskytů jednoho prvku. Množina, která neobsahuje žádné prvky, se nazývá prázdná množina a označuje se symbolem. Pro označení některých často používaných množin budeme v textu používat následující symboly: Nprooznačenímnožinyvšechpřirozenýchčísel,tj. N={0,1,2,...}, N + prooznačenímnožinyvšechkladnýchpřirozenýchčísel,tj. N + = {1,2,3,...}, Z pro označení množiny všech celých čísel, tj. Z = {..., 2, 1,0,1,2,...}, Q pro označení množiny všech racionálních čísel, tj. množiny všech čísel, která jsou vyjádřitelná jako zlomek, kde v čitateli i jmenovateli je celé číslo(ve jmenovateli samozřejmě nesmí být 0), R pro označení množiny všech reálných čísel. Vyjadřujeme-li se obecně o množinách, označujeme je většinou velkými písmeny (A, B,...,X, Y,...); jejich prvky pak označujeme malými písmeny (a, b,...,x, y,...). Jestliže všechny prvky množiny A patří rovněž do množiny B (tj. pokud z x Aplyne x B),pakříkáme,že Ajepodmnožinou B,cožzapisujeme výrazem A B. Množina A je vlastní podmnožinou množiny B, jestliže A B,ale A B,tj.jestližeexistujeprvek xtakový,že x B,ale x A. To,že Ajevlastnípodmnožinou B,zapisujemevýrazem A B.

1.1 Množiny 9 Poznámka: Někteříautořipoužívajízápis A Bprooznačenítoho,že A jepodmnožinou B(tj.připouštíimožnost A=B),aprooznačenítoho,že Ajevlastnípodmnožinou B,pakpoužívajízápis A B. Prolibovolnoumnožinu Aplatí A A.Prolibovolnémnožiny AaBplatí, že A=Bprávěkdyž A Ba B A.Prolibovolnémnožiny A, Ba C platí,žejestliže A Ba B C,pak A C.Prolibovolnoumnožinu A platí A. Prodanoumnožinu Amůžemedefinovatmnožinu B Atvořenoutěmi prvky množiny A, které mají určitou vlastnost(splňují nějakou podmínku). Například můžeme definovat podmnožinu X množiny přirozených čísel N tvořenou těmi čísly, která dávají po dělení pěti zbytek dvě(tj. takovými čísly x N,kterásplňujípodmínku xmod5=2).prodefinicitakovémnožiny používáme následující zápis: X= {x N xmod5=2} Pokudjezkontextuzřejmé,zjakémnožiny Aprvkyvybíráme,jemožné tutoinformacivynechatapsátnapříklad X= {x xmod5=2}. Poznámka: Někteří autoři používají místo symbolu symbol : nebo ;, takžepíšínapř. X= {x N:xmod5=2}. Z již definovaných množin můžeme vytvářet nové množiny pomocí množinových operací: Průnikmnožin AaBjemnožina A B= {x x Aax B} Sjednocenímnožin AaBjemnožina Rozdílmnožin AaBjemnožina A B= {x x Anebo x B} A B= {x x Aax B} Poznámka: Rozdílmnožin AaBsetéžněkdyoznačujejako A \ B.

10 Kapitola 1. Základní pojmy Příklad: Jestliže A = {a, b, c, d} a B = {b, c, e, f}, pak A B = {a, b, c, d, e, f}, A B= {b, c}aa B= {a, d}. Někdy jsou všechny množiny, které uvažujeme, podmnožinami nějaké jedné množiny U nazývané universum. Pokud se například bavíme o množinách přirozených čísel, pak je universem množina N. Pro dané universum U definujemedoplněkmnožiny Ajako A=U A. Pro libovolné množiny A, B U platí de Morganova pravidla: A B= A B A B= A B Množiny A a B jsou disjunktní, jestliže nemají žádný společný prvek, tj.jestliže A B=. Velikostdanémnožiny Ssenazývájejíkardinalitaaoznačujese S.Vpřípadě konečné množiny, tj. množiny mající konečný počet prvků, je její kardinalita přirozené číslo odpovídající počtu prvků. Kardinalita prázdné množiny je tedy = 0. Dvě(obecné) množiny mají stejnou kardinalitu, jestliže existuje bijekce (tj. vzájemně jednoznačné zobrazení) mezi jejich prvky. (Pozn.: Pojem bijekce je podrobněji definován v Sekci 1.3). Nejmenší mezinekonečnýmimnožinamijemnožina N,stejnějakovšechny množiny S,proněžexistujebijekcemezi Sa N(akdetedyjemožnévšechny prvky S seřadit a očíslovat přirozenými čísly). Takové množiny se nazývají spočetné.(mezi spočetné množiny se někdy počítají i konečné množiny; užívá setakétermín nejvýšespočetnámnožina.)nekonečnámnožina,kteránení spočetná, se nazývá nespočetná. Příklad: Množiny N, ZaQjsouspočetné,množina Rjenespočetná. Množina všech podmnožin množiny S se nazývá potenční množina množiny S a označuje se zápisem P(S). Pokudnapříklad S= {a, b, c},pak P(S)={, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}. Pokudjemnožina Skonečná,pak P(S) =2 S. Poznámka: Často se také používá pro označení potenční množiny místo P(S)výraz2 S.

1.2 Relace 11 Uspořádaná dvojice prvků a a b, označovaná(a, b), je formálně definována jakomnožina(a, b) = {a, {a, b}}.všimněmesi,ženarozdílodmnožiny uuspořádanédvojicezáležínapořadíprvků (a, b)jeněcojinéhonež(b, a). Analogicky můžeme definovat uspořádané trojice, čtveřice atd. Kartézskýsoučinmnožin AaB,označovaný A B,jemnožinavšechuspořádanýchdvojic,kdeprvníprvekzdvojicepatřídomnožiny Aadruhýdo množiny B: A B= {(a, b) a A, b B} Příklad: {a, b} {a, b, c}={(a, a),(a, b),(a, c),(b, a),(b, b),(b, c)} Jestliže AaBjsoukonečnémnožiny,pak A B = A B. Kartézskýsoučin nmnožin A 1, A 2,...,A n jemnožina n-tic A 1 A 2 A n = {(a 1, a 2,...,a n ) a i A i, i=1,2,..., n} Jestliževšechna A i jsoukonečnémnožiny,platí A 1 A 2 A n = A 1 A 2 A n Místokartézskéhosoučinu A A A,kdesemnožina Avyskytuje nkrát,píšeme A n.prokonečnoumnožinu Aplatí A n = A n. 1.2 Relace Relace namnožinách A 1, A 2,..., A n jelibovolnápodmnožinakartézského součinu A 1 A 2 A n.relacena nmnožináchsenazývá n-árnírelace. Jestliže n=2,jednáseobinárnírelaci.jestliže n=3,jednáseoternární relaci. Vpřípadě,že A 1 = A 2 = =A n hovořímeohomogennírelaci,vopačném případě o relaci heterogenní. Kdyžříkáme,že Rje n-árnírelacenamnožině A,mámetímnamysli,že R A n.nejčastějiuvažovanérelacejsoubinárnírelace.proto,kdyžřekneme,že Rjerelacena A,mámetímvětšinounamysli,že Rjebinárnírelacena množině A,tj. R A A.Vezbytkutétosekcesezaměřímenabinární relace.

12 Kapitola 1. Základní pojmy Jestliže R A B jebinárnírelace,někdymísto(a, b) Rpoužíváme infixovýzápisapíšeme a R b. Příklad: Relace menšínež namnožiněpřirozenýchčíseljemnožina {(a, b) N N a < b} Binárnírelace R A Aje: reflexivní,jestližeprovšechna a Aplatí(a, a) R, ireflexivní,jestližeprovšechna a Aplatí(a, a) R, symetrická,jestližeprovšechna a, b Aplatí,žepokud(a, b) R,pak (b, a) R, asymetrická,jestližeprovšechna a, b Aplatí,žepokud(a, b) R, pak(b, a) R, antisymetrická,jestližeprovšechna a, b Aplatí,žepokud(a, b) R a(b, a) R,pak a=b, tranzitivní,jestližeprovšechna a, b, c Aplatí,žepokud(a, b) Ra (b, c) R,pak(a, c) R. Příklad: Relace = na N je reflexivní, symetrická, antisymetrická a tranzitivní, ale není ireflexivní ani asymetrická. Relace na N je reflexivní, antisymetrická a tranzitivní, ale není ireflexivní, symetrická ani asymetrická. Relace < na N je ireflexivní, asymetrická, antisymetrická a tranzitivní, ale není reflexivní ani symetrická. Reflexivníuzávěrrelace R A Ajenejmenšíreflexivnírelace R A A taková,že R R.Pojmem nejmenší zdemámenamyslito,ženeexistuje žádnáreflexivnírelace R taková,že R R R.

1.2 Relace 13 Symetrickýuzávěrrelace R A Ajenejmenšísymetrickárelace R A A taková,že R R. Tranzitivníuzávěrrelace R A Ajenejmenšítranzitivnírelace R A A taková,že R R. Reflexivníatranzitivníuzávěrrelace R A Ajenejmenšírelace R A A taková,že R R a R jesoučasněreflexivníitranzitivní. 1.2.1 Ekvivalence Binární relace R na množině A je ekvivalence právě tehdy, když je reflexivní, symetrická a tranzitivní. Jestliže R je ekvivalence na množině A, pak třídou ekvivalence prvku a A jemnožina[a] R = {b A (a, b) R},tj.množinavšechprvkůsním ekvivalentních. Jestliže je ekvivalence R zřejmá z kontextu, píšeme místo [a] R jen[a]. Mějmemnožinu A.Množinajejíchpodmnožin A={A i i I}(pronějakou indexovou množinu I) tvoří rozklad na množině A, jestliže: všechnymnožiny A i jsouvzájemnědisjunktní,tj.jestližeprolibovolné A i, A j Aplatí A i A j = pokud i j,a sjednocenímnožinzajemnožina A,tj. A= A i A A i Ekvivalence R A Adefinujena Arozklad {[a] R a A }. Naopakrozklad A={A i i I}namnožině Adefinujeekvivalenci R={(a, b) A A a, b A i pronějaké A i A}. 1.2.2 Uspořádání Binární relace R na množině A je(částečné a neostré) uspořádání, jestliže je reflexivní, tranzitivní a antisymetrická.

14 Kapitola 1. Základní pojmy Binární relace R na množině A je(částečné) ostré uspořádání, jestliže je asymetrická a tranzitivní.(pozn.: Z toho, že je R asymetrická plyne, že je také ireflexivní a antisymetrická.) Pro neostrá uspořádání se obvykle používají symboly jako a jemu podobné, pro ostrá uspořádání pak symboly jako < a jemu podobné. Ke každému neostrému uspořádání R na množině A existuje odpovídající ostréuspořádání R = R {(a, a) a A}.Naopakkekaždémuostrému uspořádání Snamnožině Aexistujeodpovídajícíneostréuspořádání S = S {(a, a) a A} Uspořádání(aťužneostréčiostré) R A Ajeúplné(nebotakélineární), jestližeprovšechna a, b Aplatíbuď(a, b) R,(b, a) Rnebo a=b (tj. pokud neexistují vzájemně nesrovnatelné prvky). Mějme libovolné neostré uspořádání na množině A. Prvek a Ajeminimálníprvek množiny A,jestliževAneexistuje menšíprveknež a(tj.zx aplyne x=a). Prvek a Ajemaximálníprvek množiny A,jestliževAneexistuje většíprveknež a(tj.za xplyne a=x). Prvek a Ajenejmenšíprvekmnožiny A,jestližejemenšínežvšechny ostatníprvkyva(tj.prokaždé x Aplatí a x). Prvek a Ajenejvětšíprvekmnožiny A,jestližejevětšínežvšechny ostatníprvkyva(tj.prokaždé x Aplatí x a). Prvek a Ajeinfimum množiny B (píšeme a=inf B),jestliže a jenejvětšízevšechprvků,kteréjsoumenšínežvšechnyprvkyzb, tj. platí ( x B)(a x) ( b)(( x B)(b x) b a) Prvek a Ajesupremummnožiny B(píšeme a=sup B),jestliže a jenejmenšízevšechprvků,kteréjsouvětšínežvšechnyprvkyzb, tj. platí ( x B)(x a) ( b)(( x B)(x b) a b)

1.3 Funkce 15 1.3 Funkce Funkce fzmnožiny Adomnožiny Bjebinárnírelace f A Btaková,že prokaždé a Aexistujeprávějedno b Btakové,že(a, b) f.množina Asenazývá definičníobor funkce f,množina B senazývá oborhodnot funkce f. To,že f jefunkcezmnožiny Adomnožiny B obvykle zapisujemejako f: A B.Místo(a, b) fobvyklepíšeme b=f(a),neboťvolbouprvku a jeprvek bjednoznačněurčen.funkce f: A BtedykaždémuprvkuzA přiřazujeprávějedenprvekzb.jestliže b=f(a),říkáme,že ajeargumentem funkce faže bjehodnotoufunkce fvbodě a. Poznámka: Výše uvedená definice se týká tzv. totální funkce, tj. funkce, jejíž hodnota je definovaná pro každou hodnotu argumentu. Někdy má smysl uvažovat také tzv. částečné(parciální) funkce, tj. funkce, jejichž hodnota není pro některé hodnoty argumentu definována. Formálně je částečná funkce f: A Bdefinovánajakorelace f A Btaková,žeprokaždé a A existujenejvýšejedno b Btakové,že(a, b) f.pokudbudemevdalším textumluvitofunkcianeuvedemejinak,budememítvždynamyslifunkci totální. Konečná posloupnost(sekvence) délky n je funkce, jejímž definičním oborem jemnožina {0,1,..., n 1}.Konečnouposloupnostobvyklezapisujemetak, ževypíšemejejíhodnoty: f(0), f(1),..., f(n 1).Nekonečnáposloupnost (sekvence) je funkce, jejímž definičním oborem je N. Nekonečnou posloupnost někdy zapisujeme tak, že uvedeme několik prvních prvků, za kterými následujítřitečky: f(0), f(1),... Jestliže definičním oborem funkce f je kartézský součin, obvykle vynecháváme jeden pár závorek v zápise argumentu funkce f. Pokud například máme funkci f: A 1 A 2 A n B,pakmísto b=f((a 1, a 2,...,a n ))píšeme b=f(a 1, a 2,...,a n ). Místo o funkci někdy též mluvíme o operaci. Speciálně, v případě funkce f typu f: A 1 A 2 A n Bmluvímeon-árníoperaci.Vpřípadě,že n=2,mluvímeobinárníoperaci.jestližeříkáme,že fje n-árníoperacena množině A,rozumímetím,že fjefunkcetypu f: A n A.Jestližeříkáme, že f jeunárníoperacenamnožině A,rozumímetím,že f jefunkcetypu f: A A.Jestližeříkáme,že fjebinárníoperacenamnožině A,rozumíme

16 Kapitola 1. Základní pojmy tím,že fjefunkcetypu f: A A A. Mějmefunkci f: A n A.Množina B Ajeuzavřenánaoperaci f,jestliže z a 1, a 2,...,a n Bplyne,že f(a 1, a 2,...,a n ) B. Jestliže f : A Bjefunkceab=f(a),pakněkdytakéříkáme,že bje obrazem a.obrazemmnožiny A Ajemnožina Funkce f: A Bje: f(a )={b B b=f(a)pronějaké a A }. surjektivní(jesurjekcí,jezobrazenímna),jestliže f(a)=b, injektivní(jeinjekcí,jeprostá),jestližeza a plyne f(a) f(a ), bijektivní(je bijekcí, je vzájemně jednoznačným zobrazením), jestliže je současně surjektivní i injektivní. Jestližefunkce fjebijekcí,pakfunkceinverzníkfunkci f,označovaná f 1, jedefinovánatakto: f 1 (b)=aprávěkdyž f(a)=b. Předpokládejmenynífunkci f: A A A.Funkce fjeasociativní,jestliže prolibovolnéprvky a, b, c Aplatí f(f(a, b), c)=f(a, f(b, c)). Funkce f je komutativní, jestliže pro libovolné prvky a, b A platí f(a, b)=f(b, a). Prvek z Ajenulovýmprvkemvzhledemkfunkci f,jestližeprolibovolné a Aplatí f(z, a) = f(a, z) = z.prvek e Ajejednotkovýmprvkem vzhledemkfunkci f,jestližeprolibovolné a Aplatí f(e, a)=f(a, e)=a. Dáseukázat,žekekaždéfunkciexistujenejvýšejedennulovýanejvýšejeden jednotkový prvek. Jestližekfunkci f existujejednotkovýprvek e,pak b Ajeinverzním prvkemkprvku a Aprávětehdy,když f(a, b)=f(b, a)=e. Poznámka: Profunkcetypu f: A A Aječastovhodnějšípoužívatinfixovou notaci a používat jako název funkce nějaký speciální symbol. Mějme napříkladfunkci :A A A.Pakmísto (a, b)píšeme a b.asociativita pakznamená,žeprolibovolné a, b, c Aplatí(a b) c=a (b c), akomutativita,žeprolibovolné a, b Aplatí a b=b a.

1.4 Grafy 17 1.4 Grafy Rozlišujeme dva základní typy grafů orientované a neorientované. Orientovanýgraf Gjedvojice(V, E),kde V jekonečnámnožinavrcholůa E V V je množina hran. Orientovaný graf můžeme znázornit obrázkem, kde vrcholy znázorníme jako kolečka a hrany jako šipky vedoucí mezi těmito kolečky. Příklad takového grafu je na Obrázku 1.1, kde je znázorněn graf G=(V, E),kde V= {1,2,3,4,5,6}aE= {(1,2),(2,2),(2,4),(2,5),(4,1), (4,5),(5,4),(6,3)}.Všimněmesi,ževorientovanémgrafumohouexistovat smyčky hranyvedoucízvrcholudoněhosamého. 1 2 3 4 5 6 Obrázek 1.1: Příklad orientovaného grafu Neorientovanýgrafjedvojice G=(V, E),kdevýznam Va Ejepodobnýjako u orientovaného grafu, ale na rozdíl od orientovaného grafu je E množinou neuspořádaných dvojic vrcholů, tj. hrana v neorientovaném grafu je množina {u, v},kde u, v V a u v.podobnějakouorientovanéhografusevšak obvyklepřizápisuhranypoužívánotace(u, v)místo {u, v},stím,ževpřípaděneorientovanéhografuse(u, v)a(v, u)považujízajednuatutéžhranu. V některých definicích neorientovaného grafu nejsou povoleny smyčky. Neorientovaný graf se znázorňuje podobně jako orientovaný, na konci čar, které představují hrany však nekreslíme šipky. Příklad neorientovaného grafu je uvedennaobrázku1.2.jednáseograf G=(V, E),kde V= {1,2,3,4,5,6} a E= {(1,2),(1,5),(2,5),(3,6)}. Poznámka: Obecně můžeme uvažovat i nekonečné grafy, kde je množina vrcholůnekonečná.pokudvšakneuvedemejinak,připoužitípojmu graf budeme mít vždy na mysli konečný graf.