Turingmaskinen - en abstrakt datormodell

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

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

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

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.

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

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

TDDC77 Objektorienterad Programmering

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

Försättsblad till skriftlig tentamen vid Linköpings universitet

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

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.

Tentamen: Programutveckling ht 2015

Konfigurera anpassade Wiegand-format

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Mattias Wiggberg Collaboration

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Datalänklagret. Datalänklagret ska:

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

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Introduktion till programmering och Python Grundkurs i programmering med Python

Tentamen, Algoritmer och datastrukturer

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

Kort beskrivning av Sveriges första dator BESK

Parameteröverföring. Exempel. Exempel. Metodkropp

Uppgift 1 ( Betyg 3 uppgift )

F2 Binära tal EDA070 Datorer och datoranvändning

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

Följande signaler har kodats med Manchester. Hur ser bitströmmen ut om den inleds med en 0:a?

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

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

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

TDP Regler

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

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo,

AGENTBASERAD MODELLERING

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Åtgärda en faktura som Slutattestant

Datastrukturer och algoritmer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Programmeringsolympiaden 2017

Snabbguide till GC Dessa delar ska finnas med i kartongen när du får din Craft Robo skärplotter. Kontrollera att så är fallet.

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Föreläsning 9 Exempel

Shannon-Fano-Elias-kodning

Konkretisering av matematiska begrepp i skolan

Datorarkitekturer med operativsystem

HF0010. Introduktionskurs i datateknik 1,5 hp

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

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

Vilken skillnad gör det var du placerar det? Prova båda.

Datorsystemteknik DVG A03 Föreläsning 3

Det finns en hemsida. Adressen är

Systemkonstruktion SERIEKOMMUNIKATION

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

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

Digital Aritmetik Unsigned Integers Signed Integers"

Talrepresentation. Heltal, positiva heltal (eng. integers)

Tenta i Digitalteknik

F5 Introduktion till digitalteknik

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

TDP Regler

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

C++ Lektion Tecken och teckenfält

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

Conways Game of life: Att simulera några av livets egenskaper genom en datorprogram

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

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

DI-Plot. Instruktionsmanual

Åtgärda en faktura som Granskare (beställare)

UPPGIFT 1 LAMELLER. Minsta antalet hål: 1. Första lamellen? Andra lamellen? Minsta antalet hål: 3

a) 1 b) 4 a) b) c) c) 6 a) = 4 b) = 6 c) = 6 1. Hur många? Ringa in talet. 2. Vilket tal kommer efter? 4. Beräkna. 3. Hur många?

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

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

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Komplexitetsklasser och repetition

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Kapitel 2: De hela talen

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

HI1024 Programmering, grundkurs TEN

Jämförelse av skrivtekniker till cacheminne

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

A4-papper där det på varje papper står en siffra, på ett papper står det ett decimaltecken. Det kan också finnas papper med de olika räknesättens

Fortsättningskurs i programmering F 3. Algoritmer i programutveckling II Hugo Quisbert Flödesplaner med selektion

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

HI1024 Programmering, grundkurs TEN

Tentamen PC-teknik 5 p Lösningar och kommentarer

Digitalteknik och Datorarkitektur

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Bruksanvisning M-ANY PreMium MP3 Art I kartongen: Fjärrkontroll, hörlurar, batterier, USB-kabel, Audiokabel, väska, halssnodd, CD-Rom.

Transkript:

Turingmaskinen - en abstrakt datormodell Modeller är viktiga hjälpmedel vid studiet av många fenomen. En bra modell fyller oftast följande krav: Den fångar upp det centrala i sin fysiska motsvarighet Den är (troligen) i mindre skala än sin fysiska motsvarighet Den ignorerar oväsentliga detaljer i sin fysiska motsvarighet Den saknar en del av sin fysiska motsvarighets funktioner En modell av en räkneagent (a computing agent) borde fånga upp följande fyra centrala egenskaper hos sin fysiska motsvarighet: Att ta emot input Att producera output Att lagra i och återvinna information ur minnet Att vidta åtgärder beroende på instruktionerna i algoritmen; dels beroende på vilken input som behandlas, och dels på räkneagentens aktuella tillstånd. Det finns en relativt enkel modell som uppfyller alla dessa krav, den så kallade Turingmaskinen. En Turingmaskin består av ett band uppdelat i celler. I varje cell finns en symbol som måste komma ur ett givet alfabet. En symbol som alltid ingår i alfabetet är blanktecknet ( b ). I varje skede finns det högst ett ändligt antal icke-blanka celler på bandet. En Turingmaskin befinner sig alltid i ett visst tillstånd. Dessa betecknas oftast med siffrorna 1,2,..., k. En Turingmaskin har ett läs/skrivhuvud som alltid befinner sig ovanför någon av cellerna.... b b 0 1 1 b b b b... cs 8/A. Soini 1 1 current state (aktuellt tillstånd)

En Turingmaskin kan utföra bara en (typ av) primitiv operation: Skriv in en ny symbol i cellen (får vara samma symbol som den tidigare) OCH byt tillstånd (kan byta till samma tillstånd) OCH flytta läs/skrivhuvudet ett steg till höger eller vänster. Allt detta sker alltså i den primitiva operationen. Dessa operationer är i hög grad beroende av maskinens nuvarande, aktuella tillstånd och av den symbol som finns i den aktuella cellen. En primitiv operation för en Turingmaskin kan alltså beskrivas av följande femtupel: {current state, current symbol, next symbol, next state, move direction} {current state, current symbol, next symbol, next state, move direction} Dessa måste vara entydiga; för varje kombination av {current state, current symbol} får det finnas högst en operation. De primitiva operationer som vi definierar för en viss Turingmaskin utgör dess program. Vi stipulerar dessutom att maskinen alltid startar i den första icke-blanka cellen på bandet (räknat från vänster), och att den alltid startar i tillstånd 1. Programmet stoppar när det kommer till en sådan kombination av ett tillstånd och en cell att ingen operation är definierad för denna kombination. Med dessa restriktioner blir Turingmaskinen en utmärkt modell för en räkneagent, och därmed för en algoritm. cs 8/A. Soini 2

Turingmaskinen kan enklast beskrivas med hjälp av ett tillståndsdiagram: Ex. Bit-inverterare: varje 0 skall bli en 1, varje 1 skall bli en 0 1 : 1/0/R state 1 0/1/R När man är i tillstånd 1, och ser en 1, så ska man skriva en 0 och gå i tillstånd 1 och ta ett steg till höger (R). När man är i tillstånd 1, och ser en 0, så ska man skriva en 1 och gå i tillstånd 1 och ta ett steg till höger (R). Vilket ger oss följande instruktioner: 1. (1,1,0,1,R) // ändrar 1 till 0 2. (1,0,1,1,R) // ändrar 0 till 1 Programmet stannar när det ser det första blanktecknet; det finns ingen instruktion för kombinationen tillstånd 1, symbol b: (1, b, -, -, -). 1 Obs! Fast vi i exemplen ser mest alfabetet (b, 0, 1) är det ingalunda förbjudet att utöka alfabetet vid behov! cs 8/A. Soini 3

Ex. Unära tal: bara siffran 1 används. Tolkning: decimalt unärt 0 1 1 11 2 111 3 1111...... Uppgiften: inkrementera (med ett) det unära talet på bandet: 1/1/R state 1 state 2 b/1/r (1, 1, 1, 1, R) // går över ettorna (1, b, 1, 2, R) // ersätter första blankan med en 1... b b b 1 1 b// 1 b b b... 1 current state (aktuellt tillstånd) Effektivitet? O(N). Finns det en bättre lösning? 1/1/L state 1 state 2 b/1/l (1, 1, 1, 1, L) // tar ett steg åt vänster (1, b, 1, 2, L) // sätter en 1 i början av strängen cs 8/A. Soini 4

... b b b// 1 1 1 b b b b... Denna lösning har effektiviteten O(1). 1-> 2 current state (aktuellt tillstånd) Ex. Addera paritetsbit (udda paritet). Vi har en sträng bestående av 0:or och 1:or. Antalet 1:or ska bli udda. Så, när strängen tar slut, ska vi skriva paritetsbiten i slutet; 0, om antalet ettor var udda att börja med, annars 1. 1/1/R 0/0/R state 1 state 2 0/0/R b/1/r 1/1/R state 3 b/0/r State 1, som är startläget, representerar jämn paritet (det kan ju hända att vi bara har 0:or). State 2 motsvaras av udda paritet. En 0 i strängen ändrar inte läget. En 1 däremot för oss från jämnt tillstånd till udda tillstånd eller tvärtom. Vi ändrar inte de bitar vi tittar på. Först när strängen tar slut (när vi träffar blanktecknet) är det dags att ersätta det med antingen en 0 eller en 1; 0, om vi kommer dit från det udda läget, 1, om vi kommer dit från det jämna läget. cs 8/A. Soini 5

1. (1, 1, 1, 2, R) // jämn paritet, läser 1, byt läge 2. (1, 0, 0, 1, R) // jämn paritet, läser 0, ingen ändring 3. (2, 1, 1, 1, R) // udda paritet, läser 1, byt läge 4. (2, 0, 0, 2, R) // udda paritet, läser 0, ingen ändring 5. (1, b, 1, 3, R) // strängen slut, jämn paritet, skriv 1 och stanna. 6. (2, b, 0, 3, R) // strängen slut, udda paritet, skriv 0 och stanna. cs 8/A. Soini 6