Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Teorie ICT. Úvod Tomáš Vaníček Stavební fakulta ČVUT, Thákurova 7, Praha Dejvice, B407 Na ČZU kancelář 414, stará.

Podobné prezentace


Prezentace na téma: "Teorie ICT. Úvod Tomáš Vaníček Stavební fakulta ČVUT, Thákurova 7, Praha Dejvice, B407 Na ČZU kancelář 414, stará."— Transkript prezentace:

1 Teorie ICT

2 Úvod Tomáš Vaníček Stavební fakulta ČVUT, Thákurova 7, Praha Dejvice, B407 Na ČZU kancelář 414, stará budova PEF

3 Literatura Vaníček,J., Papík,M., Pergl,R., Vaníček,T.: Teoretické základy informatiky, Kernberg Publishing, 2007 Vaníček,J., Papík,M., Pergl,R., Vaníček,T.: Mathematical Foundation of Computer Science, Kernberg Publishing, 2008

4 Teorie množin Množina je dobře definovaný soubor prvků Otázka, zda prvek náleží množině, či ne, musí být jednoznačně zodpověditelná. Prvek x náležímnožině A, x  A. Objekt může být prvkem množiny, nebo ne. Objekt nemůže být prvkem množiny vícekrát.

5 Rovnost množin, podmnožiny Dvě množiny jsou si rovny, pokud mají stejné prvky. Množina bez prvků se nazývá prázdná: ø Množina A je podmnožinou mnoožiny B, pokud každý prvek A je i prvkem B. Množina A je vlastní podmnožinou množiny B, pokud je A podmnožinou B a A není rovno B.

6 Operace s množinami Sjednocení Průnik Doplněk Symetrická diference Potenční množina

7 Uspořádaná dvojice Uspořádaná dvojice (a,b) je množina {{a,b},a}. a je první prvek dvojice. Uspořádaná n-tice (a1,a2,…,an) může být zavedena pomocí indukce: – Pro n=2 je to uspořádaná dvojice (a1,a2) – Pro n>2 it je to uspořádaná dvojice obsahující uspořádanou (n-1)-tici (a2,…,an) a prvek a1.

8 Kartézský součin Kartézský součin A x B je množina všech uspořádaných dvojic (a,b), kde A je z množiny A a b je z množiny B. Kartézský součin konečného systému množin A1xA2x…xAn je množina všech n-tic (a1,…,an) kde ai je z Ai.

9 Zobrazení Zobrazení z množiny A do množiny B: pro některé prvky A existuje přesně jeden obraz v B. Zobrazení (totální) množiny A do množiny B: Pro všechny prvky A existuje přesně jeden obraz v B. Zobrazení z množiny A na množinu B (surjekce): Každý prvek z B má svůj vzor v A, m(a)=b

10 Zobrazení Prosté zobrazení (injektivní)): pro různé vzory a1,a2 dostaneme různé obrazy b1,b2. Bijekce (vzájemně jednoznačné zobrazení) je prosté zobrazení A na B.

11 Mohutnost množin Dvě konečné množiny A,B mají stejnou mohutnost, pokud existuje vzájemně jednoznačné zobrazení A na B. Mohutnost množiny A se značí card(A), |A|, moh(A) Pokud card(A)≤card(B), pak existuje prosté zobrazení A do B. Pokud card(A)≥card(B), pak existuje zobrazení A na B.

12 Mohutnost nekonečných množin Dvě nekonečné množiny A,B mají stejnou mohutnost, pokud existuje vzájemně jednoznačné zobrazení A na B. card(N) = card(Z) = card(Q) = aleph0 Množina všech (nekonečných) posloupností 0,1 (L) má větší mohutnost než aleph0. card(L)=card(R). card(2 M )>card(M)

13 Mlhavost Možné příčiny nejistoty: – Stochastický charakter jevu (zítra bude pršet). – Kvantová nejistota (teplota vody v umyvadle je 10 stupňů) – Mlhavost pojmů (jsem vysoký člověk)

14 Fuzzy množiny Klasická teorie množin : prvek do množiny patří, nebo nepatří. Exisstuje charakteristická funkce množiny A A, M A. – M A = 1, pokud x  A, M A = 0, pokud není x  A. Fuzzy množina je určena svou charakteristickou funkcí μ A z univerza U na interval – μ A (x)= 1, pokud x je určitě v A. – μ A (x)= 0, pokud x určitě není v A. – μ A je mezi 0 a 1, pokud nevíme jistě, zda x je v A, nebo není.

15 Fuzzy množiny Nosič A: supp(A)={x  U|μ A (x) > 0}. Jádro A: core(A)={x  U|μ A (x) = 1}. Výška fuzzy množiny: sup(μ A (x)). Normální fuzzy množina: Výška je rovna 1. α-hladina fuzzy množiny A {x  U|μ A (x) ≥ α}. Α-řez fuzzy množiny A {x  U|μ A (x) = α}.

16 Operace s fuzzy množinami A je podmnožina of B: μ A (x) ≤ μ B (x) B je doplněk of A: μ B (x) = 1 - μ A (x) C je (standardní) sjednocení A a B: μ C (x)=max(μ A (x), μ B (x)) C je (standardní) průnik A a B: μ C (x)=min(μ A (x),μ B (x))

17 Fuzzy čísla Nechť a≤b≤c≤d jsou 4 reálná čísla, která splňují: – μ A (x)=0, pro x d – μ A (x)=1, pro x mezi b a c – μ A (x) je rostoucí mezi a a b. – μ A (x) je klesající mezi c a d. Takovou množinu A nazýváme fuzzy interval. Pokud b=c nazýváme tuto množinu fuzzy číslo.

18 Relace, operace, struktury

19 K čemu slouží relace K evidenci nějaké množiny objektů popsané pomocí jejich vlastností (atributů), viz relační algebra a relační databáze K popisu vztahů mezi objekty jedné množiny

20 Definice relace Relace mezi množinami A1,A2,…,An je jakákoliv podmnožina kartézského součinu A1xA2x…xAn. n-nární relace na množině A je podmnožina kartézského součinu AxAx…xA. – Unární relace – vlastnost prvku – Binární relace – vztah mezi dvěma prvky

21 Vlastnosti relací Reflexivní relace: pro každé x z A platí x R x Symetrická relace: pro každá x,y z A platí: pokud x R y, pak y R x Tranzitivní relace: pro každá tři x,y,z z A platí: pokud x R y a y R z, pak x R z

22 „Negativní“ vlastnosti Nesymetrická relace: existuje alespoň jedna dvojice x,y z A taková, že x R y, ale nikoli y R x (opak symetričnosti) Antisymetrická relace: pro každé x,y z A platí: pokud x R y a y R x, pak x=y Asymetrická relace: pro každé x,y z A platí: pokud x R y, pak není y R x

23 Úplnost relací Úplná relace: pro každá dvě x,y z A je buď x R y, nebo y R x Slabě úplná relace: pro každá dvě různá x,y z A je buď x R y, nebo y R x

24 Ekvivalence Relace – Reflexivní – Symetrická – Tranzitivní Rozkládá nosnou množinu na třídy ekvivalence

25 Uspořádání Kvaziuspořádání (může obsahovat ekvivalentní i neporovnatelné prvky) – Reflexivní – Tranzitivní Částečné uspořádání (mohou existovat neporovnatelné prvky, ale ne ekvivalentní) – Reflexivní – Tranzitivní – antisymetrická

26 Uspořádání Slabé uspořádání (mohou existovat ekvivalentní prvky, ale ne neporovnatelné) – Reflexivní – Tranzitivní – Úplná (úplné) uspořádání – Reflexivní – Tranzitivní – Antisymetrická – Úplná

27 Uspořádání

28 Známka U konečných a spočetných množin lze uspořádání a slabé uspořádání vyjádřit číselnou známkou: – X R y, právě když zn(x) ≤ zn(y) U kvaziuspořádání a částečného uspořádání to nelze, potřebujeme více známek. Některé preferenční relace nelze zařadit do žádné z kategorií uspořádání (například prahová nerozlišitelnost – není tranzitivní)

29 Ostrá uspořádání Ostré částečné uspořádání Ostré slabé uspořádání Ostré (úplné) uspořádání – Není vyžadována reflexivita

30 Operace Předpis, který dvěma, nebo více prvkům dané množiny přiřadí výsledek n-nární operace na množině A je (n+1)-nární relace na množině, pro kterou platí, že pokud (x1,x2,…xn,y) je v relaci a (x1,x2,…,xn,z) je v relaci, pak y=z.

31 Četnost (arita) operací Nulární (konstanta) Unární (funkce) Binární (klasické operace) Ternální a vyšších řádů

32 Vlastnosti binárních operací Úplnost: pro každá x,y existuje x ⊕ y Komutativnost: x ⊕ y = y ⊕ x Asociativita: (x ⊕ y) ⊕ z = x ⊕ (y ⊕ z) Neutrální prvek: existuje prvek ε, pro který x ⊕ ε = ε ⊕ x = x Inverzní prvek: pro každé x existuje y, pro které x ⊕ y = ε

33 Algebra Množina Systém operací Systém vlastností (axiomů), které tyto operace splňují

34 Pologrupa, monoid Libovolná množina Operace ⊕ – Pologrupa Úplná Asociativní – Monoid Úplná Asociativní S neutrálním prvkem

35 Grupa Operace ⊕ – Úplná – Asocoativní – S neutrálním prvkem – S inverzními prvky Abelova grupa – Navíc komutativní

36 Příklady grup Přirozená čísla a sčítání Nenulová reálná čísla a násobení Permutace konečné množiny Matice daného rozměru a sčítání Pohyby Rubikovy kostky

37 Okruh Množina se dvěma operacemi  a  – Vůči operaci  se jedná o Abelovu grupu – Operace  je úplná, komutativní, asociativní, má neutrální prvek Nemusí existovat inverzní prvky vzhledem k  – Platí distributivní zákon: x  (y  z)=(x  y)  ( y  z) Například celá čísla s operacemi násobení a sčítání Zbytkové třídy celých čísel po dělení číslem n.

38 Obor integrity Okruh Navíc neexistují netriviální dělitelé nuly, tedy pokud x,y není rovno ε, pak x  y není rovno ε. Celá čísla jsou obor integrity. Zbytkové třídy po dělení prvočíslem p jsou obor integrity. Zbytkové třídy po dělení neprvočíslem n jsou okruh, ale ne obor integrity – V Z 6 platí 3.2=0

39 Těleso Množina T se dvěma operacemi  a  – T a  tvoří Abelovu grupu s neutrálním prvkem ε – T-{ε} a  tvoří Abelovu grupu Vůči okruhu se navíc požaduje existence inverzních prvků k  (tedy „možnost dělit“) Příklady: zlomky, reálná čísla, komplexní čísla, zbytkové třídy po dělení prvočíslem, logické spojky AND a OR.

40 Svaz Množina S se dvěma operacemi  (spojení) a  (průsek) –  a  jsou komutativní a asociativní – Platí distributivní zákony a  (b  c) = (a  b)  (a  c) a  (b  c) = (a  b)  (a  c) – Absorbce: a  (b  a)=a, a  (b  a)=a – Idenpotencea  a = a, a  a = a Příklady – Výrokové formule a spojky AND a OR – Podmnožiny dané množiny a operace sjednocení a průniku – Prvky částečně uspořádané množiny a operace supremum a infimum.

41 Sémantika výrokové logiky Ohodnocení ≡ zobrazení A do {FALSE, TRUE}. Ohodnocení formule se řídí běžnými pravidly pro logické spojky. Výroková formule s n logickými proměnnými má 2 n možných pravdivostních hodnot v závislosti na ohodnocení proměnných Formule je tautologieprávě tehdy, když je TRUE pro všechna možná ohodnocení proměnných. Formule je kontradikce právě tehdy, když je FALSE pro všechna ohodnocení. Formule je splnitelná právě tehdy, když existuje alespoň jedno ohodnocení, ve kterém je TRUE

42 Syntaxe výrokové logiky Máme neprázdnou nejvýše spočetnou množinu A výrokových proměnných. 1. Každá proměnná je výroková formule 2. Kdyžα, βjsou formule, potom (¬α), (α ∧ β), (α ∨ β), (α ⇒ β), (α ⇔ β), případně i (α ⊕ β), …jsou formule. 3. Nic jiného než to, co vzniklo pomocí konečně mnoha použití bodů 1 a 2, není výroková formule (Konvence: vnější závorky a závorky vyplývající z priorit ¬, ∧, ∨, ⇒, ⇔ lze vynechat) Tak zvaná rekurzivní či induktivní definice

43 Sémantický důsledek Matematická logika se zabývá otázkou, co lze z formulí odvodit bez ohledu na jejich význam, pouze podle struktury. Formule ϕje (sémantickým) důsledkem množiny formulí Ψ={ψ1,ψ2,…,ψn} právě tehdy když ϕ má ohodnocení TRUE pro každéohodnocení proměnných, kde každá z formulív Ψje TRUE. Formule ϕ a ψjsou tautologicky ekvivalentní právětehdy když ψ je důsledkemϕ a ϕ je důsledkemψ.Značíme ϕ≡ψ. Formule jsou pravdivé pro stejná ohodnocení.

44 Úplný systém výrokových spojek Nulárníspojky TRUE (tautologie) a FALSE (kontradikce) Unární spojky Identita a Negace ¬ Pro log. funkce dvou proměnných máme celkem 24možných log. funkcí (máme 22 řádků v tabulce pravdivostního ohodnocení), potřebujeme tedy vyjádřit 14 funkcí (zbylé dvě jsou opět tautologie a kontradikce). Úplný systém log. spojek je množina log. spojek, pomocí které můžeme zapsat všechny logické funkce. Možný úplný systém log. spojek: ¬, ∨, ∧

45 Všechny logické spojky

46 Odvozovací pravidla

47 Sémantické (logické) odvozování Operaci odvození nové formule z množiny formulí S. Touto operacíobdržíme novou množinu formulí, kteráse skládá buď z předpokladůnebo z formulí odvozených pomocí některých odvozovacích pravidel. Říkáme, že odvozenáformule βje log. Důsledkem S a logicky vyplývá z S. Množina formulí S je nekonzistentní (rozporná), právě tehdy když existuje formule α taková, že současně α a ¬α logicky vyplývají z S. Jinak říkáme, že množina Sje konzistentní (bezrozporná, zdravá).

48 Úplnost výrokové logiky Formule ϕje sémantickýmdůsledkem množiny formulí S, pokud platí, že při každém pravdivostním ohodnocení při kterém jsou všechny formule v S pravdivé, je pravdivá také formule ϕ. Formule ϕje logickýmdůsledkem množiny formulí S, pokud platí lze odvodit pomocí odvozovacích pravidel (existuje její důkaz). Pokud je množina S bezrozporná, je vše, co je logickým důsledkem i sémantickým důsledkem. Pro výrokovou logiku to platíto i naopak. Vše co je sémantickým důsledkem je i logickým důsledkem (lze to dokázat. Této vlastnosti se říká úplnost dedukčního systému.

49 Trojhodnotová (Lukasziewiczova) logika Pravdivostní hodnoty T,F,N(nevíme)

50 Mlhavá (fuzzy) logika Pravdivostní hodnota výroku je číslo z intervalu. Výrokové spojky lze zavést anologicky k příslušným množinovým operacím.

51 Intucionistické logiky Za pravdivé považují jen to, co lze sestrojit Neuznávají tedy odvozovací pravidla

52 Predikátová logika Formalizuje výroky o vlastnostech předmětů (entit) a vztazích mezi předměty, které patří do dané předmětné oblasti – univerza. Příklad: Následovník každého lichého přirozeného čísla je sudé číslo. Číslo 7 je liché. ⇒ Číslo 8 je sudé. Predikátové logiky vyšších řádů formalizují vztahy mezi vlastnostmi a vztahy, vztahy mezi vztahy vlastnostmi vztahů a vlastností …. S výrokovou logikou vědecké disciplíny nevystačí. S predikátovou logikou prvého řádu se zpravidla vystačí v matematice i informatice.

53 Jazyk predikátové logiky Logické symboly: – 1. Konečná nebo nekonečná spočetná množina proměnných (značíme x, y, z, u, v, x 1, x 2,... ). – 2. Logické spojky ¬, ∧, ∨, ⇒, ( ⇔ ). – 3. Univerzální kvantifikátor ∀ (čti „pro všechna“). – 4. Existenční kvantifikátor ∃ (čti existuje). Speciální symboly: – 1. Neprázdnou množinu predikátových symbolů P. – Různé arity. Vyjadřují vlastnosti a vztahy. – 2. Množinu funkčních symbolů F. - Různé arity. Konečnou nebo spočetnou. – 3. Množinu konstantních symbolů K. Konečnou nebo spočetnou. Pomocné symboly: závorky „(“, „)“, čárku „,“.

54 Gramatika predikátové logiky Term (rekurzivní definice) – 1. Každý symbol proměnné je term. – 2. Každá konstanta je term. – 3. Jsou-li t 1, …, t m termy a f je funkční symbol arity m, je i f(t 1, …, t m ) term. – 4. Nic jiného než to, co vznikne aplikací pravidel 1., 2. a 3. již term není. Atomická formule – Je predikátový symbol aplikovaný na m termů, kde m je arita predikátového symbolu. p(t 1, …, t m ). Formule (rekurzivní definice) – 1. Každá atomická formule je formule. – 2. Jsou-li ϕ a ψ formule, pak také (¬ϕ), (ϕ ∧ ψ), (ϕ ∨ ψ), (ϕ ⇒ ψ), (ϕ ⇔ ψ) jsou formule. – 3. Je-li ϕ formule a x proměnné, potom i ( ∀ x ϕ) a ( ∃ x ϕ) jsou formule. – 4. Nic jiného již formule není.

55 Volné a vázané proměnné Výskyt proměnné x ve formuli A je vázaný, jestliže je součástí nějaké podformule ∀ x B(x) nebo ∃ x B(x) formule A. Proměnná x je vázaná ve formuli A, má-li v A vázaný výskyt. Výskyt proměnné x ve formuli A, který není vázaný, nazýváme volný. Proměnná x je volná ve formuli A, má-li v A volný výskyt. Formule, v níž každá proměnná má buď všechny výskyty volné nebo všechny výskyty vázané, se nazývá formulí s čistými proměnnými. Formule se nazývá uzavřenou, neobsahuje-li žádnou volnou proměnnou. Formule, která obsahuje aspoň jednu volnou proměnnou se nazývá otevřenou. Uzavřená formule se nazývá větou [sentence].

56 Příklady Univerzum je množina všech lidí. Nikdo, kdo není zapracován (P), nepracuje samostatně (S). ∀ x (¬P(x) ⇒ ¬S(x)). Ne každý talentovaný (T) spisovatel (Sp) je slavný člověk (Sl).¬ ∀ x ((T(x) ∧ Sp(x)) ⇒ Sl(x)). Někdo je spokojen (Sn) a někdo není spokojen. ∃ x Sn(x) ∧ ∃ x ¬Sn(x). Někteří chytří lidé (Ch) jsou líní (L). ∃ x (Ch(x) ∧ L(x)).

57 Interpretace Pro to, abychom rozhodli zda je daná formule pravdivá či ne (má hodnotu TRUE či FALSE), je třeba mít vymezeno univerzum a vědět co znamenají všechny v ní užité predikáty, funkční symboly a konstanty. Takovému přiřazení říkáme interpretace. Formálně je interpretace dvojice (U, I), kde U je neprázdná množina zvaná univerzum, I je zobrazení které: – Každé konstantě přiřazuje prvek univerza. – Každému n-árnímu funkčnímu symbolu přiřazuje funkci n proměnných na univerzu s hodnotami z univerza. – Každému n-árnímu predikátu přiřazuje n-ární relaci na univerzu, tvořenou všemi n-ticemi prvků univerza, pro které je daný predikát pravdivý.

58 Interpretace Pravdivost formule predikátového počtu lze vyhodnotit pouze na základě dané interpretace a daného ohodnocení (valuace) všech volných proměnných. Přitom: Pro stanovení pravdivostních hodnot složených formulí platí stejná pravidla jako u výrokové logiky. Výrok ∀ x ϕ(x) je pravdivý právě když I(ϕ) je celé univerzum U (výrok platí pro všechny prvky univerza). Výrok ∃ x ϕ(x) je pravdivý právě když I(ϕ) je neprázdná podmnožina univerza (výrok platí aspoň pro jeden prvek univerza).

59 Splnitelnost formulí Formule A je splnitelná v interpretaci I, jestliže existuje aspoň jedno ohodnocení e volných proměnných že vznikne pravdivý výrok. Formule A je pravdivá v interpretaci I, jestliže pro všechna možná ohodnocení e volných proměnných vznikne pravdivý výrok. Formule A je splnitelná, jestliže existuje interpretace I, ve které je splnitelná. Formule A je tautologií je-li pravdivá v každé interpretaci. Formule A je kontradikcí, jestliže nemá model, tedy neexistuje interpretace I, v která by formule A byla splnitelná. Model množiny formulí {A 1, …, A n } je taková interpretace I v kterém jsou všechny formule splnitelné, tedy interpretace I a ohodnocení e volných v kterém jsou všechny formule volných proměnných), která splňuje všechny formule A 1, …, A n pravdivé.

60 Sémantická dedukce Uzavřená formule (věta) ϕ je sémantickým důsledkem (též tautologickým důsledkem ) množiny uzavřených formulí S právě tehdy, když každý model S je také modelem ϕ. To však je obvykle obtížné ověřit.

61 Odvozovací pravidla predikátové logiky

62 Úplnost predikátové logiky Pro predikátovou logiku platí rovněž věta o úplnosti. Přirozená dedukce je bezrozporná (vše co se dá logicky odvodit je i sémantickým důsledkem). Přirozená dedukce je úplná. Vše co je sémantickým důsledkem lze odvodit i logicky. Důkaz tohoto tvrzení však není snadný. Platí následující důležitá tvrzení: – Větu lze odvodit bez předpokladů, právě když je tautologií. – Množina vět je bezrozporná, právě když je splnitelná (tedy má nějaký model). – Množina vět je rozporná, právě když z ní vyplývá kontradikce.

63 Rozdíl v logickém odvozování mezi výrokovou a predikátovou logikou Každý jazyk predikátové logiky má nekonečně mnoho možných interpretací (už jenom universum lze stanovit nekonečně mnoha způsoby). Tím se liší od jazyka výrokové logiky, který má vždy jen konečný počet interpretací – ohodnocení TRUE – FALSE výrokových proměnných (jazyk výrokové logiky pracující s n výrokovými symboly má různých 2 n interpretací, je tedy možné, i když časově náročné, ověřit pravdivost všech interpretací ). Tautologičnost formulí predikátové logiky nelze proto sémanticky dokazovat tak, že ukážeme, že každá možná interpretace jazyka je i modelem dané formule. Tímto způsobem jsme postupovali ve výrokové logice, když jsme zjišťovali pravdivostní hodnotu formule pro každou kombinaci pravdivostních hodnot výrokových symbolů. I zde při velkém n narážel tento postup na exponenciální růst výpočetní složitosti. U predikátového počtu nelze tento způsob užít ani teoreticky, bez ohledu na rostoucí časové nároky na výpočet.

64 Princip důkazu v predikátové logice Přímý logický důkaz probíhá takto: – 1. Vyjdeme z množiny S daných předpokladů a prohlásíme ji za množinu dosud dokázaných formulí (tvrzení). – 2. Použijeme libovolné pravidlo logické dedukce a libovolné a libovolnou formuli z množiny dosud dokázaných formulí. Důsledek bude formule, kterou k množině S přidáme. – 3. Opakujeme bod 2. tak dlouho, dokud se nám nepodaří jako důsledek získat dokazovanou formuli ϕ. Problém je, jak vybírat pravidla a předpoklady z množiny již dokázaných, aby tato cesta vedla k důsledku ϕ. – Takový postup je obtížné automatizovat.

65 Abeceda Abeceda  neprázdná konečná množina symbolů. Obvykle aspoň dva prvky. Není již podstatný rozdíl zda 2 nebo více. – Příklady: {A,B, C, …, Z}, { , , , …,  }, {0,1}, {0,1,2,3,4,5,6,7,8,9, +, –, *, / }, – {begin, end, if, then, else, while, repeat, until, for, read, write, … a další klíčová slova nějakého programovacího jazyka} Slovo (někdy též věta) nad danou abecedou (slovníkem)  Řetězec prvků abecedy konečné délky. Řetězec může být i prázdný – prázdné slovo značíme obvykle . Značení: – V … abeceda – V* … množina všech slov – V + … množina všech neprázdných slov = V #  {  }

66 Jazyk Jazyk nad danou abecedou  Jakákoliv podmnožina slov nad touto abecedou. Jazyk může být prázdná, konečná, ale i nekonečná spočetná množina. Příklady: – Množina všech slov zadané délky. Třeba byte (abeceda, délka 8 – jazyk má 256 slov). – Množina slov nad abecedou {0, 1}, kde počet jedniček je prvočíslo. – Množina slov nad abecedou{0, 1}, které mají stejný počet jedniček a nul. – Množina slov nad abecedou {a, b, c, …, y, z}, které obsahují někde řetězec stop. – Množina syntakticky správně vytvořených programů daného programovacího jazyka. Problém (přesněji rozhodovací problém)  Otázka, zda dané slovo patří či nepatří do daného jazyka.

67 Gramatika Neformálně generativní gramatika, zkráceně „gramatika“, je systém jak pomocí daných pravidel vytvářet z abecedy slova daného jazyka.

68 Neformální gramatika českého jazyka

69 Formální definice gramatiky Množina V N neterminálních symbolů. Abecedu proměnných. Množina V T terminálních symbolů. Abecedu generovaného jazyka. Množiny V N a V T musí být disjunktní (V N  V T =  ). Označme dále V N  V T = V. Množina tak zvaných produkčních neboli přepisovacích pravidel P. Každé pravidlo přiřazuje nějakému řetězci   V*, který obsahuje aspoň jeden neterminální symbol (proměnnou) řetězec   V* terminálních a neterminálních symbolů. Počáteční symbol S  V N, který je proměnnou (neterminálním symbolem).

70 Jazyk generovaný gramatikou Jazyk generovaný gramatikou G je množina všech řetězců, které lze odvodit z počátečního symbolu S, které se skládají pouze z terminálních symbolů. Příklady: – 1. V N = {S}, V T = {0, 1}, P = {S  0S1, S  01}. Generovaný jazyk je L(G)= {0 n 1 n, kde n = 1, 2,...}. 2. V N = {S,B,C}, V T = {a, b, c}, P = {S  aSBC, S  aBC, CB  BD, aB  ab, bB  b, bC  bc, cC  cc }. Generovaný jazyk je: L(G) = {a n b n c n, kde n = 1,2,...}.

71 Chomskeho hierarchie gramatik Typ 0 = Všechny gramatiky – generují jazyky typu 0. Typ 1 = Kontextové gramatiky [context sensitive]  Každé produkční pravidlo musí být typu  X   , kde  a  jsou řetězce z V*, X je neterminální symbol a   V + je neprázdný řetězec. Jedinou výjimkou může být pravidlo S  . Při jeho užití však nemůže S být na pravé straně žádného pravidla – Gramatiky typu 1 generují jazyky typu 1 – kontextové jazyky. Typ 2 = Bezkontextové gramatiky [context free]  každé produkční pravidlo je tvaru X  , kde X je neterminál a  je řetězec V* – Gramatiky typu 2 generují jazyky typu 2 – bezkontextové jazyky. Typ 3 = Regulární gramatiky  Každé produkční pravidlo je buď tvaru A  aB nebo tvaru A  a, kde A a B jsou proměnná a a je terminál. – Generují jazyku typu 3 – regulární jazyky.

72 Konečný automat Konečný automat je abstraktní matematický model činností (výpočtu) prováděných počítačem = model algoritmu. Pro specifikaci konečného automatu je třeba zadat: – Konečnou neprázdnou množinu stavů automatu K. – Konečnou neprázdnou vstupní abecedu automatu . – Přechodovou funkci  : K    K, která každému (současnému) stavu automatu a každému (právě zpracovávanému) symbolu vstupní abecedy přiřazuje nový stav automatu. – Počáteční stav automatu q 0  K. V tomto stavu „práce“ automatu začíná. – Neprázdnou množinu koncových stavů F  K. Pokud automat ukončí svoji práci ve stavu, který patří do F, odpovídá kladně na otázku položenou na vstupu (slovo přijímá).

73 Jazyk rozpoznatelný automatem Jazyk se nazývá rozpoznatelný konečným automatem, pokud existuje konečný automat, který rozpoznává tento jazyk, to znamená pro každé slovo je schopen rozhodnout zda do jazyka patří, či nikoliv.

74 Příklad Příklad automatu se vstupní abecedou {0, 1} a čtyřmi stavy: – K= {q 0, q 1, q 2, q 3 }, –  = {0, 1}, –  (q 0,0) = q 2,  (q 1,0) = q 3,  (q 2,0) = q 0,  (q 3,0) = q 1,  (q 0,1) = q 1,  (q 1,1) = q 0,  (q 2,1) = q 3,  (q 3,1) = q 2. – Počáteční stav q 0. – množina koncových stavů {q 0 }. Rozpoznává jazyk tvořený všemi slovy, která obsahují sudý počet nul a současně sudý počet jedniček.

75 Příklad

76 Reprezentace tabulkou a stromem

77 Jazyky rozpoznatelné k.auromaty Mějme dánu konečnou abecedu  a na množině  * všech slov nad touto abecedou relaci R definovanou x R y   *(q 0, x) =  *(q 0, y), kde q 0 je počáteční stav a  přechodová funkce nějakého konečného automatu. Tedy dvě slova jsou ekvivalentní tehdy a jenom tehdy, když se automat po jejich zpracování dostane do téhož stavu. Tato relace je zřejmě invariantní vzhledem k zřetězení zprava, tedy xRy  xzRyz. Ekvivalence generuje rozklad množiny  * na disjunktní třídy navzájem ekvivalentních slov. Tyto třídy odpovídají koncovým stavům automatu po zpracování jednotlivých slov. Platí to i naopak. Pokud se nám podaří slova abecedy  * rozčlenit ekvivalencí, která generuje konečný počet tříd a je invariantní vzhledem k řetězení zprava, a vymezit daný jazyk jako sjednocení některých tříd této ekvivalence, získáme konečný automat, který tento jazyk rozpoznává.

78 Nerodova věta Jazyk L nad abecedou  je rozpoznatelný konečným automatem tehdy a jenom tehdy, pokud existuje na množině slov nad  * ekvivalence, generující konečný počet tříd ekvivalence a invariantní vzhledem k zřetězení zprava, taková, že L je sjednocením některých tříd této ekvivalence.

79 Chomskeho věta Jazyk je rozpoznatelný konečným automatem tehdy a jenom tehdy, je-li regulární (typu 3 podle Chomského hierarchie gramatik a jazyků).

80 Příklad Na základě Nerodovy věty lze přesně dokázat, že jazyk tvořený slovu 0 n 1 n, tvořený slovy, která mají libovolný počet nul následovaných týmž počtem jedniček nelze rozpoznat konečným automatem a není tedy regulární. Pokud by existovala pravá ekvivalence generující rozklad na N tříd, potom aspoň dvě slova z posloupnosti N + 1 slov 0, 00, 000, … 0 N, 0 N+1 musí patřit do stejné třídy ekvivalence. Třída 0 J a 0 K, kde J  K. Doplníme-li zprava obě tato slova J znaky 1, musí také patřit do téže třídy ekvivalence, protože tato ekvivalence je invariantní vůči řetězení zprava. To však možné není, protože jedno z nich však do jazyka patří a druhé nikoliv.

81 Nederministický konečný automat Pro specifikaci nedeterministického konečného automatu je třeba zadat: Konečnou neprázdnou množinu stavů automatu K. Konečnou neprázdnou vstupní abecedu automatu . Přechodovou funkci  : K    2 K, která každému (současnému) stavu automatu a každému (právě zpracovávanému) symbolu vstupní abecedy přiřazuje množinu možných nových stavů automatu (podmnožinu množiny K všech stavů). Tato množina může být i prázdná. Neprázdnou množinu možných počátečních stavů automatu I  K. V některém z těchto stavů může automat svou práci začít.. Neprázdnou množinu koncových stavů F  K. Pokud automat ukončí svoji práci ve stavu, který patří do F, odpovídá kladně na otázku položenou na vstupu (slovo přijímá).

82 Jazyky přijímané NKA Nedeterministický konečný automat přijímá slovo, pokud toto slovo odpovídá nějaké cestě z některého z počátečních stavů do některého koncového stavu. Tedy pokud se nám podaří zvolit počáteční stav a při zpracování každého symbolu vybrat z možných přechodů do nového stavu takový, že po přečtení celého slova automat skončí svoji práci v množině F (v koncovém stavu). Nalézt pomocí nedeterministického postupu kladnou odpověď tedy znamená „mít dobrého rádce“ jak postupovat. Tak jak práce deterministického automatu simuluje „výpočet“, tak práce nedeterministického automatu simuluje prověření známého výsledku „zkouškou“.

83 Příklad Nedeterministický konečný automat, který přijímá všechna slova nad abecedou {0,1}, která obsahují bud dvě bezprostředně za sebou následující nuly nebo dvě bezprostředně za sebou následující jedničky. Specifikace: – M = ({q 0, q 1, q 2, q 3, q 4 }, {0,1}, , {q 0 }, {q 2, q 4 }) –  (q 0, 0) = {q 0, q 3 },  ( q1, 0) = ,  (q 2, 0) = {q 2 },  (q 3, 0) = {q 4 },  (q 4, 0) = {q 4 },  ( q0, 1) = {q 0, q 1 },  (q 1, 1) = {q 2 },  (q 2, 1) = {q 2 },  (q 3, 1) = ,  (q 4, 1) = {q 4 }.

84 Stavový diagram

85 Jazyky rozpoznatelné NKA Reakci deterministického automatu na zadané slovo z  * lze sledovat pomocí posloupnosti stavů, kterými deterministický automat prochází při postupném zpracovávání symbolů slova. Reakci nedeterministického automatu na zadané slovo z  * budeme sledovat tak, že místo jednoznačně určeného stavu budeme uvažovat množinu všech stavů, do kterých se může nedeterministický automat dostat při postupném zpracování symbolů zadaného slova. To je podmnožina množiny K všech stavů tohoto automatu, tedy prvek množiny 2 K. Konečný deterministický automat, jehož stavy tvoří množinu 2 K s množinou koncových stavů tvořenou podmnožinami   2 K, takovými, že   F   zřejmě přijímá dané slovo tehdy a jen tehdy, když toto slovo přijímá daný nedeterministický konečný automat. Platí tedy:

86 Jazyky rozpoznatelné NKA Ke každému nedeterministickému konečnému automatu existuje deterministický konečný automat, rozpoznávající týž jazyk. Nedeterministické konečné automaty rozpoznávají právě regulární jazyky (jazyky typu 3 podle Chomského hierarchie).

87 Zásobníkové automaty Formálně je zásobníkový automat uspořádaná sedmice: P = (Q, , , , q 0, Z 0, F), kde – Q = je neprázdná, konečná množina možných stavů automatu, –  = je neprázdná, konečná vstupní abeceda automatu, –  = je neprázdná konečná zásobníková abeceda automatu, – q 0  Q = je počáteční stav automatu, – Z 0   = je počáteční symbol zásobníku (na počátku práce zásobník obsahuje jako jedinou položku tento symbol), – F  Q = je množina všech koncových stavů automatu, –  = Je zobrazení množiny Q  (   {  })   do množiny všech konečných podmnožin množiny Q   *.

88 Přechodové zoobrazení Zobrazení  tedy provádí akci na základě stavu automatu, vstupního symbolu a vrcholu zásobníku, při čemž připouští, že v daném kroku může i vstupní symbol nezpracovat. Výsledek kroku je nedeterministický výběr nového stavu automatu, doprovázený uložením konečně dlouhého slova (žádného, jednoho nebo více symbolů) zásobníkové abecedy na vrchol zásobníku.

89 Přijímání slov zásobníkovým automatem Existují dva způsoby jak rozhodnout zda zásobníkový automat přijímá či odmítá slovo: – Přijímání podle koncového stavu Slovo je přijato, pokud existuje aspoň jeden možný režim práce zásobníkového automatu, při kterém je přečteno celé slovo a po jeho přečtení se zásobníkový automat dostane do nějakého koncového stavu q  F. – Přijímání podle prázdného zásobníku Slovo je přijato, pokud existuje aspoň jeden možný režim práce zásobníkového automatu, při kterém je přečteno celé slovo a po jeho přečtení je zásobník prázdný. Množina F všech koncových stavů je v tomto případě nepodstatná.

90 Souvisost s gramatikami Pro libovolný jazyk L jsou ekvivalentní následující tvrzení: – L je bezkontextový jazyk (jazyk typu 2 z Chomského hierarchie jazyků). – L je rozpoznatelný nějakým zásobníkovým automatem pomocí prázdného zásobníku. – L je rozpoznatelný nějakým zásobníkovým automatem pomocí koncového stavu.

91 Turingův stroj Formálně je Turingův stroj definován jako uspořádaná šestice T = (K, , , , q 0, F), kde: – K = je neprázdná konečná množina stavů, –  = je neprázdná konečná množina páskových symbolů obsahující speciální prázdný symbol, označovaný zde b, –    = je neprázdná množina vstupních symbolů, která prázdný symbol b neobsahuje, – q 0  K = je počáteční stav stroje, – F  K = je neprázdná množina koncových stavů stroje a –  = je (parciální) funkce z množiny K   do množiny K  (   b})  { ,  }.

92 Přijímání slov Turingovým strojem Přijetí slova Turingovým strojem tedy znamená jeho zastavení v některém z koncových stavů. K nepřijetí slova Turingovým strojem může dojít dvěma způsoby: – Stroj se zastaví ve stavu, který do množiny koncových stavů nepatří. – Stroj se nikdy nezastaví.

93 Ohraničený automat Turingův stroj, který se během své práce na pásce nikdy nedostane mimo oblast zaplněnou vstupním slovem.

94 Rozhodování a přečíslování jazyka Říkáme, že Turingův stroj rozhoduje jazyk L, jestliže se pro každé slovo w   * jeho výpočet vždy v konečném čase zastaví (a podle stavu v kterém se zastaví rozhodneme, zda slovo do jazyka patří, či nikoliv). Jazyky rozhodnutelné Turingovým strojem se nazývají rekurzivní jazyky. Říkáme, že Turingův stroj přečísluje nebo též rozpoznává jazyk L, jestliže přijímá všechna slova tohoto jazyka a nepřijímá slova, která do jazyka nepatří (u těchto slov však nemusí výpočet zastavit). Jazyky rozpoznatelné Turingovým strojem se nazývají rekurzivně přečíslitelné jazyky, někdy též rekurzivně vyčíslitelné jazyky nebo rekurzivně spočetné jazyky.

95 Postova věta Je-li jazyk L rekurzivně přečíslitelný a jeho doplněk   L také rekurzivně přečíslitelný, je jazyk L (i jeho doplněk) rekurzivní.

96 Souvislost s gramatikami Jazyky rozpoznatelné Turingovým strojem (rekurzivně přečíslitelné jazyky) jsou ty a pouze ty jazyky, které lze generovat nějakou generativní gramatikou (gramatikou typu 0 podle Chomského hierarchie). Jazyky rozpoznatelné ohraničeným automatem jsou kontextové jazyky a pouze kontextové jazyky, tedy jazyky typu 1 podle Chomského hierarchie.

97 Churchova (Turingova) teze Každý Turingův stroj reprezentuje nějaký algoritmus a každý algoritmus lze realizovat nějakým Turingovým strojem. Přijetí této teze umožňuje rozlišit dva případy: – Řešení problému algoritmem, kdy Turingův stroj rozhoduje daný jazyk (odpoví ANO i NE v konečném čase). – Řešení problému procedurou, kdy Turingův stroj daný jazyk pouze rozpoznává (v konečném čase dá pouze kladnou odpověď).

98 Univerzální Turingův stroj Každý Turingův stroj lze popsat konečným počtem symbolů nějaké abecedy. Stačí zakódovat vhodně jeho stavy, páskovou abecedu a přechodovou funkci. Množina všech Turingových strojů je tedy nekonečná, spočetná. Uvažujme pro jednoduchost pouze stroje pracující s abecedou {0, 1}. Kódy všech Turingových strojů lze uspořádat do posloupnosti T 1, T 2, …. Lze sestrojit univerzální Turingův stroj, který na základě čísla daného Turingova stroje a jeho vstupních dat bude simulovat práci libovolného Turingova stroje.

99 Algorotmicky nerozhodnutelné problémy Všechna slova nad konečnou neprázdnou abecedou tvoří také nekonečnou spočetnou množinu. Její prvky lze též seřadit do nekonečné posloupnosti. Postupujme nyní diagonální metodou. Sestrojme jazyk L tak, že do něj zařadíme ta a jen ta slova, pro které se Turingův stroj umístěný na témže místě posloupnosti se při své práci nezastaví. Tento jazyk není žádným Turingovým strojem rozpoznatelný. Kdyby byl, musel by být umístěn na nějakém místě posloupnosti a musel by dané slovo přijmout. Existují tedy jazyky, které nelze žádným Turingovým strojem rozpoznat. Ty představují nepřečíslitelné problémy.

100 Problém zastavení Turingova stroje Je dán Turingův stroj v nějaké své konfiguraci. Existuje algoritmus, který rozhoduje zda se tento stroj zastaví či nikoliv? Odpověď na tuto otázku je negativní. Lze to dokázat opět postupem v které se užije diagonální metoda. Tento poznatek je důležitý pro prokázání nemožnosti algoritmicky prověřit v obecném případě úplnou korektnost programů při pokusech rigorózně dokázat jejich správnost.

101 Příklady algoritmicky nerozhodnutelných problémů Je jazyk generovaný kontextovou gramatikou prázdný? Konečný? Nekonečný? Je jazyk generovaný gramatikou typu 0 prázdný? Konečný? Nekonečný? Platí množinová inkluse a tedy i rovnost mezi jazyky, které jsou generovány oba bezkontextovou gramatikou? Kontextovou gramatikou? Gramatikou typu 0? Důsledkem algoritmické neřešitelnosti je nemožnost rozhodnout zda dva různé programy mají vždy tutéž funkci. Je jazyk generovaný kontextovou gramatikou, bezkontextovou gramatikou, gramatikou typu 0 regulární?

102 Postův korespondenční problém Mějme dvě stejně dlouhé posloupnosti neprázdných slov nad danou abecedou  : Řekneme, že tento problém má řešení, pokud „lze z obou těchto posloupností slov sestavit stejné slovo“

103 Postův korespondenční problém

104

105 Výpočetní složitost algoritmů Účinnost informačního systému může býtdegradována řadou aktorů. Uveďme některé nejčastější: – Málo výkonný hardware užitý v systému (nízká rychlost, malá paměť, …). – Nevhodný operační systém výrazně zpomalující práci systému a/nebo s vysokými nároky na zdroje. – Nevhodné předpisy pro využívání systému vedoucí k jeho málo efektivnímu využívání. – Nekvalifikovaná obsluha. Ani vynikající úroveň všech dalších faktorů ovlivňujících účinnost systému však nemůže „dohnat“ nedostatky způsobené nevhodným algoritmem s nepřijatelnou časovou nebo prostorovou složitostí. Jeden z nejvážnějších problémů současné informatiky je však skutečnost, že pro řešení řady důležitých otázeknení algoritmus s přijatelnou výpočetní složitostí k dispozici.

106 Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit počtem kroků, které algoritmus musí provést, než problém rozhodne. Toto hodnocení lze provést na různých úrovních. Krajní přístupy jsou: – Rigorózní přístup: Algoritmus uvažujeme zcela nezávisle na konkrétním počítači jako proces probíhající na Turingově stroji. Hodnotíme počet kroků Turingova stroje, od počátku jeho práce do okamžiku jeho zastavení a rozhodnutí problému. Praktický přístup: Odhadujeme počet operací reálného stroje s tím, že (v rozporu se skutečností) považujeme všechny operace za „stejně časově náročné

107 Průměrná a pesimistická složitost Je zřejmé, že u téhož algoritmu i při stejném rozsahu zpracovávaných dat může výpočet trvat různou dobu v závislosti na konkrétních hodnotách vstupních dat. Bude totiž pro různá data potřeba provést různý počet kroků. Je tedy třeba rozlišovat – Pesimistickou výpočetní složitost – definovanou jako složitost, které je dosaženo v „nejhorším možném případě“ pro daný rozsah zpracovávaných dat. – Průměrnou výpočetní složitost – definovanou jako aritmetický průměr složitostí pro různé vstupy daného rozsahu s přihlédnutím k pravděpodobnostnímu rozložení těchto možných vstupů. Odhad pesimistické výpočetní složitosti bývá jednodušší než odhad složitosti průměrné.

108 Funkce časové složitosti Je zřejmé, že sledovaná doba výpočtu nezávisí pouze na algoritmu, ale velmi výrazně i na rozsahu dat, s kterými algoritmus pracuje. Jde buď o vstupní data úlohy, nebo o rozsah datové základny s kterou program pracuje, případně o oboje. Tomuto údaji budeme říkat rozměr vstupu charakterizován přirozeným číslem. Časovou složitost nelze tedy korektně měřit základní měřením, kde hodnotou míry je číslo. Časovou složitost lze měřit pouze zobecněným měřením, kde mírou složitosti je funkce, která rozměru vstupu přiřazuje čas, respektive počet operací potřebných pro provední výpočtu.

109 Asymptotická složitost U těchto funkcí se zajímáme především o jejich růst v závislosti na růstu rozměru vstupu. Tedy o tak zvané asymptotické chování této funkce při neomezeném růstu rozměru vstupu. Toto chování posuzujeme porovnáním s chováním běžně známých funkcí, o jejichž růstu máme určitou představu.

110 Symboly pro asymptotickou složitost

111 Typické třídy výpočetní složitosti Θ (1) – růst nezáleží na rozměru vstupu Θ (log n) – logaritmický růst (základ logaritmu není podstatný – proč?) Θ (n) – lineární růst (složitost je přímo úměrná rozměru dat) Θ (n × log n) – tento růst dosahují „chytré“ algoritmy řazení („třídění“) Θ (n 2 ) – kvadratický růst, dosahují jednoduché algoritmy řazení Θ (n 3 ) – kubický růst typický pro některé operace s maticemi a algoritmy řešení soustav lineárních rovnic Θ (n k ) pro nějaké přirozené číslo k z N – polynomiální růst Θ (k n ), k > 1 – exponenciální růst k > 1 ( nejčastěji k = 2, tedy O(2 n )) Θ (n!) – faktoriální růst.

112 Srovnání doby výpočtu log 2 nN N  log 2 n n2n2 n3n3 n4n4 2n2n n!n! 2 10  s20  s 40  s80  s160  s40  s20  s 5 23,1  s50  s116  s250  s 1,25ms6,25ms 320  s 1,2ms 10 33,2  s100  s332  s 1ms10ms100ms10,2 ms1,17s 15 39,1  s150  s587  s 2,25ms33,8ms507ms328ms 15,1 days 20 43,2  s200  s864  s 4ms80ms1,6s10,5s years 25 46,4  s250  s 1,16ms6,25ms156ms3,91s5,59min  30 19,1  s300  s 5,73ms9ms270ms37,5s2,98h  50 56,4  s500  s 28,2ms25ms1,25s1,04min357years  ,4  s 1ms6,64ms100ms10s16,7min  ,4  s 2ms15,3ms400ms1,34min4,47h  50089,4  s5ms44,4ms2,5s4,17min13,9h 

113 Srovnání doby výpočtu Původ ní 2-krát5-krát10-krát 100- krát krát (n)(n) (n2)(n2) (n3)(n3)  (2 n )  (n!)

114 Třída deterministické složitosti Časová složitost problému je pak definována takto: Řekneme, že problém patří do třídy složitosti T(f(n)), kde f je funkce N → N pokud může být vyřešen nějakým Turingovým strojem v čase O(f(n)) pro všechny přípustné vstupy o rozměru n.

115 Třídy nedeterministické složitosti Jestliže existuje nějaký nedeterministický Turingův stroj, který řeší rozhodovací problém pro všechny přípustné vstupy o rozměru n za O(f(n)) kroků (při vhodné volbě posloupnosti svých po sobě bezprostředně následujících konfigurací), potom říkáme, že tento rozhodovací problém patří do třídy nedeterministické časové složitosti NT(f(n)).

116 Vztah deterministické a nedeterministické složitosti Třídy deterministické časové složitosti T(f(n)) představují horní odhady složitosti nalezení řešení problémů „bez nápovědi“. Tedy čas a prostor pro nalezení dosud neznámého řešení problémů. Třídy nedeterministické časové složitosti NT(f(n)) představují horní odhady složitosti ověření, zda nalezené řešení skutečně řešením je. Tedy třídy složitosti „zkoušky“ správnosti řešení, které již známe.

117 Klasifikace problémů Je zřejmé, že problémy, které mají neakceptovatelnou NT nejsou pro praxi příliš zajímavé. Nemůžeme-li je v prakticky realizovatelné době zkontrolovat, nebudeme je asi ani v životě k ničemu potřebovat. Z nich nás tedy „hlava bolet nemusí“. U problémů, které mají přijatelnou NT složitost můžeme řešení zkontrolovat. Můžeme je tedy využít. U řady důležitých problémů tohoto typu však neznáme algoritmus řešení, který by patřil do přijatelné třídy časové deterministické složitosti. Řešení tedy neumíme při netriviálním rozměru vstupu nalézt v rozumném čase.

118 P-těžké problémy Polynomiálně časově těžké nebo je časově P-těžké problémy jsou problémy třídy Jedná se tedy o problémy, jejichž řešení jsme schopni v „rozumném čase nalézt“. Problémy, které do této třídy nepatří je třeba považovat za “prakticky neřešitelné” pro netriviální rozměry vstupních dat.

119 NP těžké problémy Podobně lze problémy klasifikovat z hlediska nedeterministické časové složitosti. Třída zahrnuje všechny problémy, které lze nedeterministicky řešit (známé řešení zkontrolovat) pomocí nějakého nedeterministického stroje v konečném čase. Těmto problémům se říká časově NP-těžké problémy.

120 Problém NP vers P Přes velké úsilí lidstva nebyla dosud zodpovězena zásadní otázka, zda

121 NP úplné problémy NP-těžkých problémů Není pro ně znám polynomiální deterministický algoritmus řešení. Mají navíc tu vlastnost, že kdybychom aspoň pro jediný z těchto problémů polynomiální algoritmus objevili, dovedli bychom v polynomiálním čase řešit všechny NP-těžké problémy a dokázali tak rovnost P TIME = NP TIME. Proto jsou problémy této třídy tak zajímavé.

122 Příklady NP úplných problémů Problém splnitelnosti Boolovské formule (SAT problém) Pro formuli zapsanou v konjunktivně disjunktivní normální formě zjistit, zda existuje nějaké pravdivostní ohodnocení TRUE / FALSE všech proměnných ve formuli, tak, aby výsledná pravdivostní hodnota formule byla TRUE, či nikoliv

123 Příklady NP úplných problémů Problém úplného podgrafu: – Je dán neorientovaný graf bez smyček G = (V, E) a přirozené číslo k. – Rozhodovací ANO / NE problém je: Existuje v grafu G úplný podgraf G’ = (V’, E’) o k uzlech či nikoliv? Problém nezávislé množiny vrcholů v grafu: – Je dán neorientovaný graf bez smyček G = (V, E) a přirozené číslo k. – Rozhodovací ANO / NE problém je: Existuje podmnožina množiny uzlů grafu o k uzlech taková, že žádný uzel z této množiny není spojen hranou grafu s žádným jiným?

124 Příklady NP úplných problémů Problém hamiltonovského cyklu v grafu: – Je dán orientovaný graf. Existuje v grafu uzavřená orientovaná cesta, která prochází každým uzlem právě jednou nebo neexistuje? Problém okružní hamiltonovské cesty: – Je dán neorientovaný graf. Existuje v tomto grafu neuzavřená cesta, na které leží každý vrchol právě jednou nebo neexistuje? Problém obchodního cestujícího: – Je dána množina míst. Vzdálenosti mezi libovolnými dvěma místy jsou dány jako celá kladná čísla. Existuje hamiltonovská cesta taková, že součet všech vzdáleností mezi sousedními místy je nejvýše roven zadanému kladnému číslu nebo neexistuje? Problém dvou loupežníků: Je dána množina n přirozených čísel. Je možné tuto množinu rozdělit na dvě disjunktní podmnožiny tak, aby součet čísel v obou těchto podmnožinách byl stejný nebo to možné není?

125 Příklady NP úplných problémů Problém řešení kvadratické diofantické rovnice: – Jsou dána přirozená čísla a, b a c. Existují přirozená čísla x a y tak, že a ⋅ x 2 + b ⋅ y = c nebo neexistují? Problém celočíselného programování: – Je dána matice celých čísel A typu (m, n) a celočíselný sloupcový vektor pravých stran o m složkách b. Existuje celočíselný m-rozměrný vektor x takový že A ⋅ x ≤ b nebo neexistuje? Problém prvočísel: – Pro dané přirozené číslo rozhodnout, zda je prvočíslem, či nikoliv.

126 Příklady NP úplných problémů Problém ruksaku: – Nechť je dána množina dvojic čísel S = {(s 1, v 1 ), …, (s N, v N )}. Proměnné s označují rozměr jednotlivých předmětů, proměnné v jejich cenu. Nechť b je celkový objem, který je k dispozici a k nechť je požadovaná celková cena. Lze vybrat podmnožinu S, tak, aby součet a Σ nebo nelze? Tedy tak, aby se nám do ruksaku vešly předměty aspoň zadané úhrnné hodnoty? bsNjj≤Σ=1 Problém optimalizace programu: – Je možné daný algoritmus realizovat pouze užitím k paměťových registrů nebo nelze, je-li k zadané číslo (rozsah paměti, která je k dispozici)?

127 Příklady NP úplných problémů Problém plánování multiprocesorového zpracování: – Je dána konečná množina T kladných čísel označujících doby které jsou zapotřebí pro realizaci daných úloh, dále je dáno m procesorů a pevný čas d, v kterém mají být všechny úlohy dokončeny. Existuje rozdělení úloh mezi m procesorů tak, aby byl dodržen požadovaný čas nebo takové rozdělení neexistuje? Problém alokace paměti: – Je dán počet datových souborů, každý daného rozsahu a určitý počet paměťových medií, každé dané kapacity. Lze všechny soubory uložit na daná media tak, aby kapacita každého z nich nebyla překročena nebo nelze?

128 Taxonomie problémů, případ NP není P Všechny rozhodovací problémy Nepřečíslitelné problémy Přečíslitelné, ale nerozhodnutelné problémy Doplňkově Nepřečíslitelné problémy Doplňkově přečíslitelné problémy Rozhodnutelné problémy Nikoli NP problémy NP problémy NP, ale ne P problémy NP, ale ne NP úplné NP úplné problémy

129 Taxonomie problémů, případ NP je P Všechny rozhodovací problémy Nepřečíslitelné problémy Přečíslitelné, ale nerozhodnutelné problémy Doplňkově Nepřečíslitelné problémy Doplňkově přečíslitelné problémy Rozhodnutelné problémy Nikoli NP problémy NP problémy NP, ale ne P problémy NP, ale ne NP úplné NP úplné problémy Toto vše je to samé, jako NP

130 Jak obejít nepřijatelnou časovou složitost 1. Nahradit daný problém jiným problémem, který v polynomiálním čase řešit umíme a jehož řešení „není příliš odlišné“ od řešení původního problému, které nás zajímá, nebo se od něj příliš neliší „v převážné většině případů“. 2. Užít algoritmus pro řešení původního problému, jehož pesimistická časová složitost sice není polynomiální, nalézt však takovou jeho modifikaci, při které k časově neúnosně dlouhému výpočtu dochází spíše výjimečně a ve „většině“ případů je potřebná doba přijatelná. 3. Zpochybnit Churchovu tezi, tedy pokusit se o nalezení takového technického prostředku pro výpočet, který bude „umět více“, než Turingův stroj. To ovšem určitě nemůže být současný počítač založený na von Neumannově architektuře.

131 Algoritmy prořezávání stromu Princip spočívá v tom, že v každé situaci, kdy musíme vyšetřit více možností se věnujeme pouze těm, které jsou z nějakého důvodu perspektivní. Ty, které se jeví jako málo nadějné pro nalezení řešení vynecháme (prořežeme některé větve stromu možných postupů). Typická aplikace metody větví a hranic prvého typu (kdy si nemůžeme být jisti zda výsledek získaný v přijatelném čase je blízko hledanému, je tomu však tak „obvykle“) bývá užit v programech pro hru šachy. Zde program nezkoumá všechny možnosti vývoje pozic na šachovnici mnoho tahů dopředu, ale každou pozici hodnotí. Pokud se zdá neperspektivní (například proto, že došlo k velkým ztrátám materiálu), dále ji nerozvíjí a zvažuje jen pozice „nadějné“. Tato strategie je úspěšná většinou. Ne však vždy. Šachisté vědí, že některé „oběti materiálu“ mohou být výhodné a vést třeba k matu soupeře o několik tahů později. Tak se může stát že optimální cesta bude odříznuta předčasně.

132 Gradientní algoritmy V řadě optimalizačních algoritmů je vhodné volit metodu postupného přibližování k optimu tak, že přiblížení volíme „tím směrem“, kde se sledovaná hodnota zlepšuje nejrychleji. Je to jako když horolezec chce dosáhnout vrcholu hory tak, že leze tím směrem, kterým je svah nejpříkřejší. V řadě případů to k cíli vede. Ne však vždy. Může se snadno stát, že horolezec, který si dal za cíl zdolat nejvyšší vrchol pohoří vyleze do sedla mezi dvěma vrcholy a na základě zvoleného principu vyleze na ten nižší z obou.

133 Genetické algoritmy Genetické algoritmy jsou založeny na Darwinově evolučním principu vývoje populace živých organizmů přirozeným výběrem. V něm se genetická informace nové generace vytváří kombinováním (křížením) genetické informace úspěšných jedinců generace předchozí s připuštěním určitých samovolně vznikajících mutací.

134 Neuronové sítě Modelují naše představy o funkci mozku u vyšších živočichů a člověka.

135 Paraelní systémy Tradiční paralelizmus (výpočetní systémy na principu SIMD, MIMD, multicube, … ) pro řešení úloh, kde není znám polynomiálně složitý algoritmus příliš nepomohou. Je-li K procesorů, zvýší se propustnost systému nejvýše K- krát. Třídu složitosti  to neovlivní.

136 Kvantové počítače Foton se může nacházet „současně na více místech“ (s různou pravděpodobností). Nemá deterministicky určenou polohu. To dává šanci elementární částice užít přímo pro modelování nedeterministického Turingova stroje či jiného modelu nedeterministického výpočtu. Ve stádiu předběžných úvah a neurčitých záměrů

137 Chemické počítače Data jsou reprezentována různými koncentracemi chemikálií na vstupu. Výpočet je modelován průběhem chemické reakce. Ve stádiu předběžných úvah a neurčitých záměrů

138 DNA počítače Myšlenka založena se schopnosti řetězců aminokyselin DNA vytvářet masivně vlastní kopie paralelně. Výpočet by byl realizován jako biologický experiment. Pokud se aminokyseliny spojí do vhodného řetězce, lze jej považovat za řešení úlohy. Lepší perspektivu skýtají možná peptidy (12 bází místo 4 bází u DNA). Ve stádiu předběžných experimretnů

139 Analogové počítače Jsou starší než číslicové. Ke škodě věci se na ně poněkud pozapomenulo. Vytvoří se fyzikální, obvykle spojitě pracující model děje (mechanický, hydraulický, elektromagnetický, …), který se řídí stejnými nebo podobnými zákony jako řešený problém. Nechá se proběhnout vývoj na tomto modelu. Výsledek poskytne informaci o řešení původního problému. Dávno známé, dnes možná neprávem poněkud opomíjené


Stáhnout ppt "Teorie ICT. Úvod Tomáš Vaníček Stavební fakulta ČVUT, Thákurova 7, Praha Dejvice, B407 Na ČZU kancelář 414, stará."

Podobné prezentace


Reklamy Google