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

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

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

Algoritmer, datastrukturer och komplexitet

Datastrukturer och algoritmer

DAB760: Språk och logik

Algoritmer, datastrukturer och komplexitet

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

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

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

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

Algoritmer, datastrukturer och komplexitet

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

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning 8: Intro till Komplexitetsteori

Turingmaskinen - en abstrakt datormodell

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?

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

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

Föreläsning 5. Deduktion

Komplexitetsklasser och repetition

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

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?

Datastrukturer och algoritmer

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

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

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

Datorprogram, algoritmer och Turing-maskiner

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

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

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

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

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.

7, Diskreta strukturer

Klassdeklaration. Metoddeklaration. Parameteröverföring

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.

Grundläggande textanalys, VT2012

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

Algoritmer, datastrukturer och komplexitet

7, Diskreta strukturer

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

Algoritmer, datastrukturer och komplexitet

Teoretisk del. Facit Tentamen TDDC (6)

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Algoritmer, datastrukturer och komplexitet

Välkomna! Datalogiskt tänkande och programmering 15 augusti WiFI Nätverk: Conventumwifi Lösenord: conventum2018

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

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.

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

Algoritmer, datastrukturer och komplexitet

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

Grundläggande logik och modellteori

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

DD1350 Logik för dataloger

AGENTBASERAD MODELLERING

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

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

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

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.

MÖNSTER OCH TALFÖLJDER

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Föreläsning 11. Giriga algoritmer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Grundläggande logik och modellteori

Föreläsning 7: Syntaxanalys

Lite mer psykologi. L2: Automater, Sökstrategier. Top-down. Kimballs sju principer

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

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

i LabVIEW. Några programmeringstekniska grundbegrepp

10. Mängder och språk

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

729G09 Språkvetenskaplig databehandling

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

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

Matematik för språkteknologer

Källkodning. Egenskaper hos koder. Några exempel

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

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

Grundläggande logik och modellteori (5DV102)

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

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

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

MMA132: Laboration 2 Matriser i MATLAB

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

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

Grundläggande datalogi - Övning 9

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

Algebra I, 1MA004. Lektionsplanering

Programmeringsolympiaden 2017

Föreläsning 5. Rekursion

Tentamen i EDAF05 Algoritmer, datastrukturer och komplexitet

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden

TDDD02 Föreläsning 2 HT Reguljära uttryck och reguljära språk Lars Ahrenberg

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmering. Den första datorn hette ENIAC.

Inledande programmering med C# (1DV402) Introduktion till programmering

Primitivt rekursiva funktioner och den aritmetiska hierarkin

Föreläsningsanteckningar F6

Transkript:

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 {L, R, S} Q 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. 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, ), (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 y 1 y 1 aa y 4 medan {(bb, bab), (a, aa), (bab, ab), (baba, aa), (aba, a)} saknar lösning. 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.