(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

Podobné dokumenty
Teoretická informatika průběh výuky v semestru 1

Teoretická informatika průběh výuky v semestru 1

Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

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

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

Složitost. Teoretická informatika Tomáš Foltýnek

Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49

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

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

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

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

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

Fakulta informačních technologií. Teoretická informatika

Teoretická informatika průběh výuky v semestru 1

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

Složitost Filip Hlásek

Formální jazyky a automaty Petr Šimeček

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera

Týden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky.

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

Výpočetní složitost I

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

Třídy složitosti P a NP, NP-úplnost

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera

Základy algoritmizace

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

Popište a na příkladu ilustrujte(rychlý) algoritmus testující, zda dané dva automaty jsou izomorfní.

FEI, VŠB-TUO, Teoretická informatika( /01) zadání referátů 1

Program a životní cyklus programu

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

59. ročník Matematické olympiády 2009/2010

Automaty a gramatiky. Roman Barták, KTIML. Separované gramatiky. Kontextové gramatiky. Chomského hierarchie

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

Univerzální Turingův stroj a Nedeterministický Turingův stroj

Pozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula.

1 Soustavy lineárních rovnic

Programovací jazyk Pascal

Od Turingových strojů k P=NP

Poznámka. Kezkoušcejemožnojítjenposplněnípožadavkůkzápočtu. Kromě čistého papíru a psacích potřeb není povoleno používat žádné další pomůcky.

Složitost problémů. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 25. dubna / 23

H. Dreyfuss: What computers can t do, 1972 What computers still can t do, J. Weizenbaum. Computer power and human reason, 1976

Referáty budou přiděleny v zásadě na prvním cvičení. Studenti, kteří to nestihnou, se musí urychleně přihlásit cvičícímu(třeba em).

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

NP-úplnost problému SAT

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

1. Algoritmy a problémy V matematice se často setkáváme s tvrzeními týkajícími se objektů, které neumíme zkonstruovat. Můžeme např.

5.6.3 Rekursivní indexace složitostních tříd Uniformní diagonalizace Konstrukce rekursivních indexací a aplikace uniformní diagonalizace

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Vyčíslitelnost a složitost 1. Mgr. Viktor PAVLISKA

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Základy algoritmizace a programování

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

ALGORITMIZACE Příklady ze života, větvení, cykly

Úvod. Programovací paradigmata

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Syntaxí řízený překlad

V této kapitole si zobecníme dříve probraný pojem limita posloupnosti pro libovolné funkce.

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. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

AUTOMATY A GRAMATIKY

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

8. Laboratoř: Aritmetika a řídicí struktury programu

NALG 001 Lineární algebra a geometrie 1, zimní semestr MFF UK Doba řešení: 3 hodiny

Turingovy stroje. Turingovy stroje 1 p.1/28

Týden 14. Přednáška. Teoretická informatika průběh výuky v semestru 1. PSPACE, NPSPACE, PSPACE-úplnost

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

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

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

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Architektura počítačů

II. Úlohy na vložené cykly a podprogramy

Aplikovaná numerická matematika - ANM

Architektura počítačů Logické obvody

Variace. Mocniny a odmocniny

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

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

ALGORITMIZACE A PROGRAMOVÁNÍ

Studijnı opora k prˇedmeˇtu m teoreticke informatiky Petr Jancˇar 22. u nora 2005

Základy matematické analýzy

Konečný automat. Jan Kybic.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Poslední nenulová číslice faktoriálu

c/mávnějakémpřípaděvýpočetstroje Mvícekrokůnežtisícinásobekdélkyvstupu?

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

Počítač jako prostředek řízení. Struktura a organizace počítače

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

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

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Makro. PDF vytvořeno zkušební verzí pdffactory Pro

SIMULÁTOR TURINGOVÝCH STROJŮ POPSANÝCH POMOCÍ KOMPOZITNÍCH DIAGRAMŮ

Úvod do problematiky

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

Dynamické programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Agent pracující v částečně pozorovatelném prostředí udržuje na základě senzorického modelu odhaduje, jak se svět může vyvíjet.

Transkript:

Teoretická informatika průběh výuky v semestru 1 Týden 8 Přednáška- první část (viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu. Turingovy stroje,(výpočetní) problémy Dokončení minulé přednášky. Simulace mezi variantami Turingových strojů Zavedli jsme přirozenou definici dvoupáskového Turingova stroje(2p-ts) jako struktury M=(Q,Σ,Γ,δ,q 0,F),kde δ:(q F) Γ Γ Q Γ { 1,0,+1} Γ { 1,0,+1}, azkonstruovalijsmetakovýstroj,kterýřešíproblém Zdvojeníslova.Sestrojilijsme přitom následující množinu instrukcí. (q 0,x, ) (q 0,x,+1,x,+1)pro x {a,b} (q 0,, ) (q 1,, 1,,0) (q 1,x, ) (q 1,x, 1,,0)pro x {a,b} (q 1,, ) (q 2,,+1,,0) (q 2,x, ) (q 2,x,+1,x,+1)pro x {a,b} (q 2,, ) (q halt,,0,,0) Pak jsme si ujasnili, jak lze obecný dvoupáskový Turingův stroj(2p-ts) M simulovat jednopáskovýmdvouhlavýmturingovýmstrojem(1p-2h-ts) M.Stroje M, M majítedy stejné(vstupně/výstupní)chování,tj.realizujítutéž(částečnou)funkci f M = f M. (Ideaspočívávpoužití dvoustopépásky,tedymístoabecedyγstroje Mmá stroj M abeceduγ =Γ (Γ Γ).Prvníhlavaměníjen hornístopu,druhá jen dolnístopu.přitomsemusíošetřitpřípadnýzapisovacíkonflikt,když hlavy stojí na stejném políčku pásky.) Navázalijsmenáčrtemsimulaceobecného1P-2H-TS M standardnímstrojem,tedyjednopáskovým jednohlavým Turingovým strojem. (Ten si na pásce musí označovat místa, kde by stály simulované hlavy, a trochu senaběhá.)

Teoretická informatika průběh výuky v semestru 2 Model RAM Ve studijním textu je detailně popsán model RAM, který je novějším výpočetním modelem než Turingův stroj a vychází z architektury reálných počítačů. Je tam uveden i konkrétní RAM(tedy konkrétní program = posloupnost instrukcí), který řeší následující problém. Vstup: Neprázdná posloupnost kladných celých čísel ukončená nulou. Výstup: Odchylky jednotlivých čísel od aritmetického průměru zadané posloupnosti zaokrouhleného dolů. Činnost zmíněného RAMu je také přiblížena jednou z animací. Každémubyovšemmělobýtjasné,žepodívatsenadefinici,příkladaanimaciRAMuje něcozcelajinéhonežkonkrétníramsestavit.teprve ošahánísi jednotlivýchinstrukcí RAMu při konkrétním programování nás může přivést ke skutečnému porozumění, pasivní pohled na animaci to sotva může nahradit. Byťjsmetonapřednášcespolečněneudělali,jevelmivhodné,aťsikaždýsámzkusísestavení RAMu řešícího výše zmíněný problém.(dále uvažujeme celá nenulová čísla místo kladných.) Nejdříve musíme pochopitelně navrhnout algoritmus, který pak budeme programovat(kódovat). Ten můžeme popsat např. následujícím pseudokódem pascalského typu. (*variables:*) A:array[1..]ofinteger; cislo, pocet, soucet, prumer: integer; pocet:=0; soucet:=0; read(cislo); whilecislo 0do { pocet:=pocet+1; A[pocet]:=cislo; soucet:=soucet+cislo; read(cislo) }; prumer:= soucet div pocet;(* celociselne deleni*) for i:=1 to pocet do { write(a[i]-prumer) }; Tento pseudokód relativně přímočaře postupně přepíšeme pomocí instrukcí RAMu. Pro jednoduché proměnné si vyhradíme paměťové buňky s následujícími adresami cislo...2 pocet...3 soucet...4 prumer...5 PoliApřiřadímezákladníadresu8(prvekA[1]ukládámedobuňky9,prvekA[2]dobuňky 10,atd.). Dospějeme tak(např.) k programu na následujícím obrázku.

Teoretická informatika průběh výuky v semestru 3 1 READ 2 JZERO 13 3 STORE 2 4 LOAD 3 5 ADD =1 6 STORE 3 7 STORE 1 8 LOAD 2 9 STORE *8 10 ADD 4 11 STORE 4 12 JUMP 1 13 LOAD 4 14 DIV 3 15 STORE 5 16 LOAD =1 17 STORE 1 18 SUB 3 19 JGTZ 26 20 LOAD *8 21 SUB 5 22 WRITE 23 LOAD 1 24 ADD =1 25 JUMP 17 26 HALT Obrázek 1: Příklad programu pro stroj RAM Mámepřitomdetailněpromyšlenvýznamvšechinstrukcí(částečnějsmesije animovali na konkrétním příkladu), využití pracovního registru 0 a indexregistru 1 a rozdíly v argumentechtypu = i, i a i (kde ijezápisceléhočísla). Samozřejmě je vhodné si program detailně okomentovat, aby bylo jasné, že se opravdu jedná o(jednu možnost) přepsání uvedeného pseudokódu do instrukcí RAMu. (Znovu zdůrazňuji, že každý by si měl nezávisle udělat sám; pohled na hotovou věc moc nepomůže, jak již bylo zmíněno.) Simulace mezi RAMy a Turingovými stroji Shodli jsme se, že je vcelku jasné, jak lze jakýkoli Turingův stroj s jednostranně nekonečnou páskou přímočaře simulovat RAMem. Naopak je to technicky komplikovanější, ale myšlenkově to pro programátory zase není tak náročné simulaci RAMu vícepáskovým Turingovým strojem ilustruje jedna z animací. Rozhodnutelnost a nerozhodnutelnost problémů Nejprve jsme si důkladně připomněli, co to je(v našem kontextu) problém. Uvědomili jsmesi,žekaždémuproblému Pjejednoznačněpřiřazena(většinounekonečná) tabulka T P sdvěmasloupci:vprvnímsloupcijsouvjednotlivýchřádcíchvyjmenoványvšechny (přípustné) vstupy(neboli instance) problému P (vstupy jsou zadány vhodně zvolenými kódy = slovy v určité abecedě[de facto

Teoretická informatika průběh výuky v semestru 4 stačíabeceda {0,1}]ajsounapř.seřazenypodledélkyavrámcistejnédélky lexikograficky]) a v druhém sloupci jsou uvedeny příslušné výstupy (v i-témřádkujetedyv1.sloupci i-tývstup wav2.sloupcijepříslušný výstup p(w),kde pjezobrazení p:in OUTurčenéproblémem P;tabulka T P jeprostěreprezentacízobrazení p). V případě ANO/NE-problému se v druhém sloupci vyskytují jen výstupy Ano a Ne. Poznámka. S ohledem na budoucí úvahy si speciálně uvědomme, že pro každý vstupvtabulce T P jedefinovánpříslušnývýstup;vdruhémsloupcisetedy nikdeneobjeví nedefinováno (znak ). Např. u problému zdvojení slov v abecedě {0, 1} je možné příslušnou tabulku(zobrazení) znázornit takto: Vstup Příslušnývýstup ε ε 0 00 1 11 00 0000 01 0101 10 1010 11 1111 000 000000...... Analogicky si lze přirozeně představit příslušnou(nekonečnou) tabulku pro problém ekvivalence konečných automatů(eq-fa), problém ekvivalence bezkontextových gramatik(eq- CFG), problém zastavení Turingova stroje(hp, halting problem), diagonální problém zastavení(dhp), atd. Uvědomme si nyní, že každému algoritmu A odpovídá také jistá(vstupně/výstupní) tabulka T A,kterákaždémumožnémuvstupu walgoritmu Apřiřazuje výstupvydanýalgoritmem A vpřípadě,žeběhalgoritmu Aprovstup wjekonečný, nebospeciálníznak (nedefinováno) vpřípadě,žeběhalgoritmu Aprovstup w je nekonečný. Jak víme, můžeme si(díky Churchově-Turingově tezi) pod pojmem algoritmus představit(např.)turingůvstroj.každýturingůvstroj Mtedyurčujepříslušnoutabulku T M. Můžeme jí říkat např.

Teoretická informatika průběh výuky v semestru 5 vstupně/výstupní tabulka, zkráceně I/O-tabulka, stroje M. Je to prostě(nekonečná) reprezentace vstupně/výstupního chování stroje M, tedy reprezentacepříslušnéhoi/ozobrazení f M :Σ Γ { },kdeσjevstupníaγ(celková) pásková abeceda stroje M. Poznámka. Víme, že se bez ztráty obecnosti můžeme omezit na stroje s abecedamiσ = {0,1},Γ={0,1, },jejichži/ozobrazeníjetypu {0,1} {0,1} { }(cožmj.znamená,žestrojejsounavrženytak,abypřiukončení výpočtu zůstal na pásce jediný souvislý úsek nul a jedniček[nepřerušovaný znaky ]). Pomocí uvedených pojmů tabulky problému a I/O-tabulky algoritmu(turingova stroje) jsme vyjádřili, kdy je problém P algoritmicky řešitelný; v případě ANO/NE-problému hovoříme o algoritmické rozhodnutelnosti, či zkráceně jen rozhodnutelnosti. Jen nám tedy naprosto jasné, co je myšleno, když se řekne problém Eq-FA je rozhodnutelný a problémyeq-cfg,hp,dhpjsounerozhodnutelné. Přednáška- druhá část Pokračovali jsme v diskusi dalších problémů. Šlo např. o algoritmus rozhodující příslušnost k bezkontextovému jazyku(zadanému bezkontextovou gramatikou), což byl příklad tzv. metody dynamického programování, a o algoritmickou(tedy turingovskou) nerozhodutelnost problémů. Partie textu k prostudování Problémy a algoritmy(část 6.1.), Turingovy stroje(část 6.2.). Model RAM(část 6.3.), simulace mezi výpočetními modely, Church-Turingova teze(6.4.), rozhodnutelnost a nerozhodnutelnost problémů(6.5.). (Máte si udělat přinejmenším dobrou první představu a zamyslet se nad příklady, speciálně těmi plánovanými na cvičení, ať se můžete na cvičení aktivně účastnit a případné problémy si tam objasnit.) Cvičení Příklad 8.1 Navrhněte(co nejjednodušší) Turingův stroj M řešící problém příslušnosti k jazyku(palindromů) L={w {a,b} w=w R }azadejtejej(přehledným)seznameminstrukcí.

Teoretická informatika průběh výuky v semestru 6 Příklad 8.2 Navrhněte(co nejjednodušší) dvoupáskový Turingův stroj(2p-ts) M řešící problém příslušnostikjazyku(palindromů) L={w {a,b} w=w R }. Porovnejte s řešením předchozího příkladu a později také s řešením následujícího příkladu. Příklad 8.3 K 2P-TS M z předchozího příkladu sestrojte standardní(jednopáskový, jednohlavový) Turingůvstroj M,kterýřešítentýžproblém.Přitomsesnažtepoužívatobecnýpostup, kterýklibovolnému2p-ts MsestrojístandardníTS M simulující M. Příklad 8.4 Navrhněte způsob, jak lze Turingův stroj s obecnou páskovou abecedou Γ simulovat Turingovým strojem s páskovou abecedou {0, 1, }. Příklad 8.5 Zjistěte, co dělají dva níže uvedené fragmenty programů pro stroje RAM. Připomeňme, žepaměťovábuňkasadresou0jepracovníregistrabuňkasadresou1jeindexregistr. Hodnotaoperandu i(ijezápisceléhočísla,např.281)ječíslouloženévbuňcesadresou i + j, kde j je aktuální obsah indexregistru. Oproti základní definici zde užíváme také symbolické názvy paměťových buněk(vyhrazených pro příslušné proměnné) a symbolická návěští. READ STORE N LOAD =2 cykl: STORE temp LOAD N JGTZ body LOAD temp WRITE HALT body: SUB =1 STORE N LOAD temp MUL temp JUMP cykl LOAD N STORE 1 zmena LOAD *A STORE X cykl LOAD 1 SUB =1 JZERO konec STORE 1 LOAD *A SUB X JGTZ zmena JUMP cykl konec HALT