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

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

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

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

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

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).

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

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

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

Složitost Filip Hlásek

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

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

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.

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

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

Základy algoritmizace

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

Úvod. Programovací paradigmata

Od Turingových strojů k P=NP

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

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í.

PŘEDNÁŠKA 2 POSLOUPNOSTI

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

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

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

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

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

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

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

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

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

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

Úvod do informatiky. Miroslav Kolařík

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

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

Výpočetní složitost I

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

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

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

Programovací jazyk Pascal

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

Program a životní cyklus programu

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

NP-úplnost problému SAT

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

Metody výpočtu limit funkcí a posloupností

Naproti tomu gramatika je vlastně soupis pravidel, jak

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

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

Poslední nenulová číslice faktoriálu

Matematická analýza pro informatiky I. Limita funkce

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

Cvičení ke kursu Vyčíslitelnost

Matematická logika. Miroslav Kolařík

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

1 Linearní prostory nad komplexními čísly

Diskrétní matematika 1. týden

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.

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

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

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

Pozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula.

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

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

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

Matematická analýza pro informatiky I. Limita posloupnosti (I)

Pravděpodobnostní algoritmy

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

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})

Úvod do problematiky

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

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

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

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.

Aplikovaná numerická matematika

I. ZÁVĚREČNÁ ZPRÁVA PROJEKTU

Automaty a gramatiky. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

KYBERNETIKA A UMĚLÁ INTELIGENCE

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

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

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

Konečný automat. Jan Kybic.

Úvod do informatiky. Miroslav Kolařík

Matematika B101MA1, B101MA2

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Některé základní úlohy algoritmizace

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

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

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

1 Nejkratší cesta grafem

Architektura počítačů

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

ALGORITMIZACE A PROGRAMOVÁNÍ

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

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

Základy matematické analýzy

Transkript:

Teoretická informatika průběh výuky v semestru 1 Týden 8 Přednáška 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. (*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

Teoretická informatika průběh výuky v semestru 2 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 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. 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í. (Zmínili jsme přitom pojem jednotkové a logaritmické míry[času pro provádění instrukcí], k němuž se vrátíme u složitosti algoritmů a problémů.) Připomněli jsme si pojmy rozhodnutelnosti a nerozhodnutelnosti problémů a nezávislost těchto pojmů na zvoleném rozumném univerzálním výpočetním modelu(což je např. model Turingovy stroje, model RAM, programovací jazyk C, Python apod.).

Teoretická informatika průběh výuky v semestru 3 Důkaz nerozhodnutelnosti problému zastavení TS Připomeňmesi,cotoznamenározhodnutelnostproblému,vřeči tabulek :problém P (typu Ano/Ne) je rozhodnutelný, jestliže existuje algoritmus[turingův stroj] M takový, že vstupně-výstupnítabulka T M jekonzistentnístabulkou T P (stejnýmvstupůmodpovídají stejné výstupy). Pro zajímavost si všimněme, že o konkrétním problému můžeme zjistit, že je rozhodnutelný, aniž jsme schopni určit konkrétní algoritmus, který jej řeší. Podívejme se např. na následující problém. Název: 7vPi(Sedmičky v Ludolfově čísle π) Vstup: Přirozené číslo k. Otázka: Existuje v desetinném rozvoji čísla π úsek sedmiček délky k? Je jasné, že problému 7vPi odpovídá jedna z následujících tabulek. 1 Ano 2 Ano 3 Ano 4 Ano 5 Ano 1 Ne 2 Ne 3 Ne 4 Ne 5 Ne 1 Ano 2 Ne 3 Ne 4 Ne 5 Ne 1 Ano 2 Ano 3 Ne 4 Ne 5 Ne Ke každé tabulce umíme snadno navrhnout příslušný algoritmus, takže problém 7vPi je jistě rozhodnutelný. Nevíme ovšem, která tabulka je ta pravá, takže nejsme schopni předložit konkrétní algoritmus a prokázat, že řeší problém 7vPi. Základemkprokazovánínerozhodnutelnostiproblémůjekrátký,byťtrochu zapeklitý, důkaz nerozhodnutelnosti tzv. diagonálního problému zastavení: Název: DHP(Diagonal Halting Problem) Vstup: Turingův stroj M(resp. jeho přirozený kód třeba v binární abecedě). Otázka: Zastaví se(výpočet stroje) M, když začne pracovat na(vstupním) slově, které jekódemjehosamého? Důkaz nerozhodnutelnosti DHP(sporem). Předpokládejme, že tento problém je rozhodován Turingovým strojem D. Pak můžeme využít D jako proceduru a sestrojit Turingův stroj X, který se chová takto: pro zadané slovo w nejdříve zkontroluje, zda w je kódem Turingova stroje,akdyžano,takpomocí Dzjistí,zdaonenzadanýstrojsenasvůjkódzastaví či nezastaví; v případě kladné odpovědi od procedury D se X nezastaví(provádí např. nekonečný cyklus), v případě záporné odpovědi se zastaví. Zkusme teď zodpovědět otázku,

Teoretická informatika průběh výuky v semestru 4 zdase Xzastaví,kdyžjemunavstupupředloženjehovlastníkód.Jelikožnutnědojdeme k logickému sporu, stroj D nemůže existovat. Převeditelnost mezi problémy Ujasnili jsme si(i využitím tabulek problémů), co to znamená, když se řekne, že problém P 1 jealgoritmickypřeveditelný(stručnějipřeveditelný)naproblém P 2 ; označujeme P 1 P 2 :existujealgoritmus,kterýkinstanci I 1 problému P 1 sestrojíinstanci I 2 problému P 2 tak,žeodpověďnaotázkupro I 1 v P 1 jestejná jakoodpověďnaotázkupro I 2 v P 2. IlustrovalijsmesinapřípaduDHP HP,kdeHPjedefinovánníže.Vyvodilijsme,žeHP je také nerozhodnutelný(využitím tvrzení 6.11. v části 6.5.). Název: HP(Halting Problem) Vstup: Turingův stroj M a(vstupní) slovo w. Otázka:Zastavíse Mna w?(jetedyvýpočet Mprovstup wkonečný?) Poznámka.Obecnějepřirozenédefinovat,že P 1 jepřeveditelnýna P 2,jestližeexistuje algoritmusrozhodující P 1,pokudmůževyužívat(hypotetickou)procedururozhodující P 2 ; to je tzv. turingovská převeditelnost. Často ale stačí speciální případ, který je uveden výše; ten bereme jako základní. Částečná rozhodnutelnost, Postova věta Připomněli jsme částečnou rozhodnutelnost problémů. Přitom byla podstatná následující definice,kterouzdeformulujemevřeči tabulek (problému Podpovídátabulka T P,stroj Mpřirozenědefinujetabulku T M ): Turingův stroj M částečně rozhoduje problém P (typu Ano/Ne), jestliže u každéhovstupu,pronějžjevt P Ano,jevtabulceT M výstupanoaprokaždý vstup,pronějžjevt P Ne,jevT M výstupneneboznak (nedefinováno). (Pro vstupy, kterým problém P přiřazuje odpověď Ne, nemusí stroj M svůj výpočet skončit.) Jak se dá očekávat, o problému řekneme. že je částečně rozhodnutelný, jestliže existuje algoritmus(turingův stroj), který jej částečně rozhoduje. Speciálně jsme si uvědomili Postovu větu(věta 7.2.) Uvědomili jsme si také, že problém HP je částečně rozhodnutelný(viz Univerzální TS), a že tedy HP(doplňkový problém k problému HP) není(ani) částečně rozhodnutelný.

Teoretická informatika průběh výuky v semestru 5 Univerzální Turingův stroj Algoritmus, kterým jsme prokazovali částečnou rozhodnutelnost problému zastavení(hp) byltento:nazadanýstroj(program) Mavstup wspusť interpret,kterýprovádíčinnost (výpočet) M na vstupu w. Takový interpret je ovšem také program, tedy algoritmus, a šlo by jej proto realizovat(naprogramovat) ve formě konkrétního Turingova stroje U(viz Věta7.3.). Partie textu k prostudování Model RAM(část 6.3.), simulace mezi výpočetními modely, Church-Turingova teze(6.4.), rozhodnutelnost a nerozhodnutelnost problémů(6.5.). Univerzální Turingův stroj(v části 7.). Cvičení Příklad 8.1 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 Příklad 8.2 Vysvětlete, co to je doplňkový problém k problému P(typu ANO/NE). Pak konkrétně definujte doplňkový problém Non-Eq-CFG k problému Eq-CFG(ekvivalence bezkontextových gramatik).

Teoretická informatika průběh výuky v semestru 6 Příklad 8.3 Vysvětletepodrobně,cotoznamená,kdyžřekneme,žeHP Non-Eq-CFG(tj.žeHalting ProblemjepřeveditelnýnaproblémNon-Eq-CFG).(PřeveditelnostHP Non-Eq-CFGzde nedokazujeme, ale dále ji bereme jako fakt.) Příklad 8.4 Je možné, že oba problémy Eq-CFG a Non-Eq-CFG jsou částečně rozhodnutelné? Umíte prokázat částečnou rozhodnutelnost alespoň jednoho z nich? Příklad 8.5 Vysvětlete, co dělá univerzální Turingův stroj U, když dostane jako vstup slovo tvaru uv, kdeslovo ujekódemstroje U. Příklad 8.6 (Nepovinně.) Navrhněte Turingův stroj M s jednostranně nekonečnou páskou, který pro dané vstupní slovo w {a,b} sestrojí (výstupní slovo) w(w) R. Stroj M tedy realizuje příslušné (vstupně/výstupní)zobrazení f M : {a,b} {a,b} (např. f M (abb)=abbbba). Pak zvolte vhodné kódování slov v abecedě {a, b} tak, aby analogické vstupně/výstupní zobrazenímohlrealizovatram.navrhnětekonkrétníram M,kterýtotozobrazenírealizuje;přitompostupujtetak,žeRAM M přímočařesimulujeturingůvstroj M.(Nejdeo co nejjednodušší RAM pro daný úkol, ale o to, abyste aplikovali obecný postup prokazující, že každý TS je možné simulovat RAMem.)