Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Relevanta dokument
Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Algoritmer, datastrukturer och komplexitet

Föreläsning 9: NP-fullständighet

Komplexitetsklasser och repetition

Algoritmer, datastrukturer och komplexitet

Föreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Föreläsning 8: Intro till Komplexitetsteori

Föreläsning 8+9: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Grundläggande logik och modellteori

Datastrukturer och algoritmer

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Algoritmer, datastrukturer och komplexitet

DAB760: Språk och logik

Algoritmer, datastrukturer och komplexitet

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

Föreläsning 5. Deduktion

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Automater. Matematik för språkteknologer. Mattias Nilsson

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

PROV I MATEMATIK Automatateori och formella språk DV1 4p

Grundläggande logik och modellteori

Formella metoder. Loop-program som statetransformers. Betrakta följande problem. specifikationen.

Föreläsning 12+13: Approximationsalgoritmer

13. CHURCH S OCH GÖDELS SATSER. KORT ORIENTERING OM BERÄKNINGSBARHET, EFFEKTIV UPPRÄKNELIGHET OCH AVGÖRBARHET.

Föreläsning 1. Introduktion. Vad är en algoritm?

Turingmaskinen - en abstrakt datormodell

PCP-satsen på kombinatoriskt manér

Primitivt rekursiva funktioner och den aritmetiska hierarkin

Klassdeklaration. Metoddeklaration. Parameteröverföring

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

MÖNSTER OCH TALFÖLJDER

Datastrukturer och algoritmer

b) S Ø aa, A Ø aa» bb, B Ø aa» bc, C Ø ac» bc» 2. Låt L vara språket över 8a< som nedanstående NFA accepterar.

9 Funktioner. Exempel. f(x) = x + 1 sqr(y) = y 2. x, om x < 0. abs(x) =

Innehåll. Föreläsning 7. Satslogiken är för grov. Samma sak i predikatlogik: Första ordningens predikatlogik. Logik med tillämpningar

Övningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet

Grundläggande logik och modellteori (5DV102)

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

K2 Något om modeller, kompakthetssatsen

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

Grundläggande logik och modellteori

Grundläggande textanalys, VT2012

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

Datorprogram, algoritmer och Turing-maskiner

7, Diskreta strukturer

DD1350 Logik för dataloger

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

7, Diskreta strukturer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Om semantisk följd och bevis

Grundläggande logik och modellteori (5DV102)

Kompletteringsmaterial. K2 Något om modeller, kompakthetssatsen

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

Grundläggande datalogi - Övning 9

Föreläsning 7: Syntaxanalys

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

Föreläsning 8. Innehåll. Satisfierbarhet hos en formel. Logik med tillämpningar

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Programmering för språkteknologer II. OH-serie: Ändliga automater. reguljära uttryck i Java. Deterministiska ändliga automater

JavaScript del 3 If, Operatorer och Confirm

10. Mängder och språk

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

D. x 2 + y 2 ; E. Stockholm ligger i Sverige; F. Månen är en gul ost; G. 3 2 = 6; H. x 2 + y 2 = r 2.

Parameteröverföring. Exempel. Exempel. Metodkropp

samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV

Varför är logik viktig för datavetare?

En introduktion till predikatlogik

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

i LabVIEW. Några programmeringstekniska grundbegrepp

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

TATM79: Föreläsning 1 Notation, ekvationer, polynom och olikheter

MMA132: Laboration 2 Matriser i MATLAB

Algebra I, 1MA004. Lektionsplanering

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

de var svåra att implementera och var väldigt ineffektiva.

Tommy Färnqvist, IDA, Linköpings universitet. 2 Strukturer Domäner Tolkningar... 3

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Teoretisk del. Facit Tentamen TDDC (6)

Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grundläggande logik och modellteori

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

DEL I. Matematiska Institutionen KTH

Föreläsning 3. Iteration while-satsen

AGENTBASERAD MODELLERING

Iteration while-satsen

Logik: sanning, konsekvens, bevis

Transkript:

Föreläsning 9: Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står skrivna: Oändligt band Läs- och skrivhuvud Styrlogik Läsning och skrivning kan bara ske en siffra i taget där huvudet står och huvudet kan bara flytta sig en position i taget. Logiken för hur huvudet flyttas och vad det skriver består av ett ändligt antal tillstånd och övergångar (en automat). Exempel på turingmaskin Följande turingmaskin läser talet x på binär form från bandet och ändrar det till max(x 1, 0). 0/0, R 1/1, R 0/1, L 1/0, R #/#, R #/#, L q 1 q 2 q 4 q 3 1/0, R #/#, L Notation: - Cirklar svarar mot tillstånd - Dubbla cirklar är accepterande tillstånd - Pilar betecknar övergångar: - a/b, L ska tolkas om läshuvudet läser a, följ övergången, skriv b och flytta läshuvudet ett steg åt vänster (a/b, R analogt fast förflyttning åt höger) Pilen som inte utgår från något tillstånd markerar vilket tillstånd turingmaskinen startar i.

Regler för turingmaskinen Automaten börjar i starttillståndet. Då står läshuvudet på första symbolen i indatasträngen. Indata omges av blanka positioner (betecknas #). Det får inte finnas flera övergångar med samma lässymbol från samma tillstånd. Om en TM hamnar i ett accepterande tillstånd avslutas beräkningen och Ja returneras. Om en TM hamnar i ett läge där det inte finns någon matchande övergång avbryts beräkningen och Nej returneras. Formalisering av turingmaskinen En turingmaskin beskrivs fullständigt av Alfabetet Σ (måste vara ändligt) Mängden Q av tillstånd (måste vara ändlig) Starttillståndet q 0 Q Mängden F Q av accepterande tillstånd Övergångsrelationen Q Σ Q Σ {L, R, S} Denna beskrivning motsvarar programkoden i ett program skrivet i ett vanligt programmeringsspråk. Churchs tes Churchs tes: Varje algoritmiskt problem som kan lösas med något program skrivet i något språk kört på någon dator kan också lösas med en turingmaskin. Stopp-problemet är oavgörbart även för turingmaskiner. Turingmaskinen kan användas som beräkningsmodell vid resonemang om oavgörbarhet. Stopp-problemet är oavgörbart för varje beräkningsmodell som är kraftfull nog att simulera en turingmaskin. (D.v.s. är turingekvivalent.) Beräkningsmodellen RAM är turingekvivalent liksom alla moderna programspråk. Lika kraftfulla varianter av turingmaskinen Annat (ändligt) alfabet.

Separat utmatningsband. Flera arbetsband. Flera läshuvuden. Halvoändligt arbetsband. Alla dessa varianter är ekvivalenta med den vanliga turingmaskinen i följande mening: Körtiden skiljer sig bara åt med högst en polynomisk faktor. Icke-deterministiska turingmaskiner Det kan finnas flera övergångar med samma lässymbol. Då får turingmaskinen göra ett icke-deterministiskt val. Om någon följd av val leder till ett accepterande tillstånd säger vi att maskinen accepterar. Om det inte finns någon följd av val som leder fram till ett accepterande tillstånd säger vi att maskinen inte accepterar. Icke-determinism, forts. Icke-deterministiska turingmaskiner kan användas för att definiera NP: Denna klass innehåller precis de problem där det finns någon accepterande beräkning som tar polynomisk tid. NP = Non-deterministic Polynomial time Man tror att icke-deterministiska turingmaskiner är kraftfullare än deterministiska, d.v.s. att P NP. Cooks sats Cooks sats säger att problemet SAT är NP-fullständigt. Indata är en logisk formel Φ med booleska variabler och problemet är att avgöra om formeln är satisfierba eller inte. Bevis av Cooks sats: SAT NP eftersom det givet en variabeltilldelning är lätt att kolla om formeln är satisfierad. Vi måste visa att SAT är NP-svårt, d.v.s. att om Q NP så Q P SAT. Då Q NP finns det en icke-det. turingmaskin M som accepterar språket Q i tid högst kn c där n är indatas längd (k och c är konstanter). Bevisidé: Konstruera en logisk formel som är satisfierbar precis då M accepterar indatasträngen. Vi antar att M har ett halvoändligt band och alfabetet {0, 1, #}. Numrera M:s tidssteg från 1 till kn c. Vid varje tidpunkt t beskrivs beräkningen av - läshuvudets position - aktuellt tillstånd q - bandets innehåll på positionerna 1 kn c

I den logiska formeln inför vi variabler med följande betydelse: x qt q Q, 1 t kn c y ijt i {0, 1, #}, 1 j kn c, 1 t kn c 1 j kn c, 1 t kn c z jt Tolkning: x qt =1 omm då M är i tillstånd q vid tid t y ijt =1 omm tecken i står i ruta j vid tid t z jt =1 omm huvudet står på ruta j vid tid t Att det existerar någon beräkning i tid kn c som gör så att M(a 1,...,a n ) accepterar svarar mot att 1. Beräkningen börjar med a 1,...,a n 2. x, y, z beskriver en giltig beräkning 3. Beräkningen accepterar, d.v.s. den slutar i ett accepterande tillstånd Alla dessa villkor kan man beskriva som en enda SAT-formel vars storlek är polynomisk i n. Detta visar att det finns en reduktion Q P SAT för varje NP-fullständigt problem Q. Ur detta följer att SAT är NP-fullständigt. Oavgörbarhet Ett ja/nej-problem är avgörbart om det finns någon algoritm som korrekt löser det i ändlig tid för varje instans. Motsatsen är om problemet är oavgörbart. Då kan det av logiska skäl inte finnas någon algoritm som alltid löser det. Vanligen finns det algoritmer som löser problemet för en del indata, men det finns alltid indata som de inte klarar av. Om utdata är något annat än ja/nej pratar man on beräkningsbara och inte beräkningsbara problem. Ex. 1: Ordbildningsproblemet Givet en mängd med ordpar {(x i,y i )}. Finns det någon talföljd a 1,a 2,...,a k så att x a1 x a2 x ak = y a1 y a2 y ak? Exempel: {(abb, bbab), (a, aa), (bab, ab), (baba, aa), (aba, a) } 1 2 3 4 5 har lösningen a =[2, 1, 1, 4, 1, 5]: a x 2 abb x 1 abb baba abb x 1 x 4 x 1 aba = aa x 5 y 2 bbab bbab y 1 y 1 aa y 4 medan {(bb, bab), (a, aa), (bab, ab), (baba, aa), (aba, a)} saknar lösning. bbab y 1 Ex. 2: Stopp-problemet a y 5

Givet ett program P och indata X till P. Stannar programmet P när det körs på indata X? Vilket programspråk P är skrivet i spelar ingen roll; problemet är oavgörbart för alla tillräckligt kraftfulla språk. Ex. 3: Problem från tillämpningar Programverifikation Givet ett program P och en specifikation S för vad programmet ska göra på olika indata, uppfyller programmet specifikationen? Minimering av program Kan en viss rad i programmet P nås för något indata? Alla dessa problem är oavgörbara p.g.a. nära släktskap med stopp-problemet. I tillämpningar får man nöja sig med att lösa förenklade versioner av problemen ovan. Tekniker för bevis av oavgörbarhet: Bevis för avgörbarhet / oavgörbarhet Direkt bevis Ge ett direkt logiskt bevis för varför ditt problem är oavgörbart. Reduktion Reducera ett känt oavgörbart problem till ditt problem. Om reduktionen är beräkningsbar måste ditt problem vara oavgörbart. Bevis för avgörbarhet: Ge en algoritm som avgör problemet, visa att den är korrekt och att körtiden är ändlig. Stopp-problemet är oavgörbart Antag att det finns en algoritm Stopp(P, X) som avgör stopp-problemet. Betrakta följande program: M(P ) (1) if Stopp(P, P) (2) gå in i oändlig loop (3) else (4) return VarhändernärM(M) körs? M(M) stannar: Då måste Stopp(M,M) vara falsk för att return ska nås orimligt. M(M) stannar inte: Då är Stopp(M,M) sann och programmet kommer aldrig lämna den oändliga loopen orimligt. Motsägelse; algoritmen Stopp(P, X) kan alltså inte finnas stopp-problemet är oavgörbart.

Exempel på reduktion Nästan alla varianter av stopp-problemet är oavgörbara, t.ex. följande: Stannar programmet P på alla indata? Att det inte kan finnas en algoritm StoppAlla(P ) som avgör detta problem visar följande reduktion: Stopp(P, X) (1) Konstruera programmet Q enligt Q(Y ) if X = Y P (X) else stanna direkt (2) return StoppAlla(Q) Om StoppAlla( ) fanns skulle stopp-problemet vara avgörbart; orimligt.