Turingmaskin

teoretisk modell för att utföra beräkningar som utvecklades av Alan Turing år 1936
Ej att förväxla med Turingtestet.

En Turingmaskin är en teoretisk modell för att utföra beräkningar. Den utvecklades av matematikern Alan Turing år 1936. Syftet med Turingmaskinen är att betrakta algoritmiska lösningars gränser.

En modell av Turingmaskinen

En Turingmaskin konstrueras för att lösa ett givet problem, medan den universella Turingmaskinen kan lösa vilket problem som helst. Man kan alltså tänka sig Turingmaskinen som ett datorprogram som utför ett visst program, medan den universella Turingmaskinen kan tänkas som programmerbar.

Enligt Church-Turings hypotes kan alla tänkbara beräkningsprocesser utföras av en Turingmaskin. Med andra ord är det den mest kraftfulla beräkningsmekanismen som existerar. Denna tes är inte i strikt matematisk mening bevisad, men allmänt accepterad som sann.

Teorierna som Alan Turing skapade, samt den teoretiska Turingmaskinen, har haft en stor betydelse i utvecklingen och konstruktionen av de första datorerna. Alla moderna datorer kan dessutom simuleras med en Turingmaskin. Alan Turings teorier har också en viktig roll inom den matematiska logiken.

Uppbyggnad redigera

Turingmaskinen består av fyra delar:

  • En remsa uppdelad i rutor. Remsan är så lång som det behövs för maskinen att utföra det den ska, den teoretiska Turingmaskinen har en oändligt lång remsa. Rutorna är fyllda med symboler, men de kan även vara tomma. Remsan som ges åt Turingmaskinen är oftast redan färdigt ifylld med problemet som ska lösas, men kan även vara helt blank beroende på vad maskinen ska göra.
  • Ett läs- och skrivhuvud. Huvudet befinner i varje ögonblick vid en viss ruta och kan röra sig en ruta i taget åt antingen vänster eller höger. Huvudet kan läsa symbolen som står i rutan och ersätta den med en ny. I vissa modeller är huvudet det som rör på sig och i andra rör sig remsan och huvudet är stilla.
  • En styrenhet som sparar Turingmaskinens tillstånd. Turingmaskinen kan ha ett godtyckligt ändligt antal tillstånd. Den startar alltid i ett starttillstånd och byter sedan tillstånd genom att följa instruktionerna som getts maskinen.
  • Instruktionerna lagras i en instruktionstabell. De beskriver vad maskinen skall göra beroende på vilket tillstånd den befinner sig i och vilken symbol som finns i den nuvarande rutan. [1]
 
Representation av läshuvudet och remsan

Turingmaskinens funktion baserar sig på att maskinen ges en färdigt ifylld remsa med problemet som den ska lösa. Maskinen modifierar remsan med hjälp av instruktionerna den fått. Det finns en instruktion/regel för varje kombination av aktuellt tillstånd och aktuell symbol. Reglerna anger om maskinen ska (1) skriva eller sudda i den aktuella rutan (2) flytta huvudet till vänster eller höger (eller stå stilla) efteråt och (3) behålla samma tillstånd eller byta till ett annat. Till exempel kan en av instruktionerna låta på följande sätt: om det vid tillstånd 35 står 1 på remsan, ska den bytas till 0, därefter ändras tillståndet till tillstånd 6.

När maskinen börjat sitt arbete kan något av följande inträffa: den kommer till en instruktion som säger att arbetet är klart och maskinen skall stoppa, eller den kommer aldrig till en sådan instruktion och maskinen fortsätter då att arbeta i all oändlighet.

Det finns också varianter av Turingmaskin som har flera remsor och läs-/skrivhuvuden, men detta påverkar inte maskinens förmåga att göra beräkningar, bara hur lång tid det tar.

Varje del i maskinen och dess funktioner är ändliga, diskreta och särskiljbara, det är den oändliga remsan som leder till maskinens obegränsade lagringsutrymme.[2]

Formell definition redigera

Det finns flera matematiska formella definitioner av en Turingmaskin som alla är likvärdiga. Hopcroft och Ullman [3] definierar en (deterministisk) Turingmaskin som en 7-tupel M = (Q, Γ, b, Σ, δ, q0, F) där

  • Q är en ändlig icke-tom mängd av tillstånd.
  • Γ är en ändlig icke-tom mängd av symboler.
  • b ∈ Γ är den tomma symbolen (den enda symbolen som tillåts finnas oändligt många gånger på remsan under något beräkningssteg).
  • Σ ⊆ Γ ∖ {b} är mängden av indata-symboler (d.v.s. en delmängd av alla symboler utom den tomma symbolen).
  • δ: Q × Γ → Q × Γ × {L, R} är övergångsfunktionen där L = flytta läshuvudet åt vänster, R = flytta läshuvudet åt höger.
  • q0Q är starttillståndet.
  • FQ är mängden av sluttillstånd.

Denna definition gäller för en enremsig Turingmaskin men kan modifieras för att beskriva en flerremsig sådan.

Historia redigera

Alan Turing redigera

Huvudartikel: Alan Turing
 
Alan Turing

Alan Mathison Turing föddes den 23 juni 1912 i Maida Vale, London och dog den 7 juni 1954, i Wilmslow, Cheishire. Turing var matematiker och kryptoanalytiker. Turing anses ha lagt grunden till dagens informations- och datateknologi.[4]

Redan som barn märkte man att Turing var begåvad. Han började studera vid King’s College i Cambridge och sedan fortsatte han sina studier i Princeton där han tog sin doktorsexamen med utmärkta vitsord.

Turing är mest känd för utvecklingen av Turingmaskinen och utformningen av Turingtestet. Han bevisade också att det inte finns en lösning till avgörbarhetsproblemet med att först visa att Turingmaskinens stopproblem är obestämbart. Under andra världskriget var han ledare för den grupp som knäckte tyskarnas Enigmachiffer. Man har uppskattat att detta arbete förkortade kriget med mellan två och fyra år.

Turingmaskinen redigera

Alan Turing hade ett livslångt intresse för maskiner. Han hade som barn alltid drömt om att uppfinna skrivmaskinen.

År 1936 studerade Turing för sin Ph.D vid Princetonuniversitetet. Turing publicerade då ett arbete “On Computable Numbers, with an application to the Entscheidungsproblem,” där han för första gången beskrev Turingmaskinen.[5]. Artikeln blev grunden för datavetenskap. Turing kallade maskinen först för “a-machine”, en förkortning för automatisk maskin, men den blev senare känd som Turingmaskinen.

När han utvecklade Turingmaskinen var inte hans mening att utveckla en dator utan han ville beskriva en metod för att avgöra om ett problem var lösbart eller inte. [6]  

Jämförelse med datorer redigera

Dagens moderna datorer baserar sig på flera av idéerna som ligger till grund för Turingmaskinen. Det är därmed ingen överraskning att moderna datorer och Turingmaskinen har mycket gemensamt. En Turingmaskin klarar av att utföra allt som en dator klarar av. Den egentliga skillnaden ligger i hur många operationer och hur lång tid som behövs för att lösa ett problem. Turingmaskinens operationer är enkla och okomplicerade och det kan behövas många steg innan ett problem är löst. En dator å andra sidan har ett begränsat ändligt minne som gör att den kan ha svårt att lösa vissa typer av problem. [7]

Det sägs ibland att Turingmaskinen opererar långsamt jämfört med en dator. Detta är egentligen inte sant. Eftersom Turingmaskinen är en teoretisk modell, opererar den inte med någon bestämd hastighet i förhållande till den verkliga världen. Däremot arbetar en dator med en hastighet som, liksom deras minne, är begränsat av tekniska faktorer.[8]

Andra Turingmaskiner redigera

Förutom den ordinära Turingmaskinen finns det också liknande maskiner som till exempel flerremsig (eng. Multi-tape) Turingmaskin, flerspårig (eng. Multi-track) Turingmaskin, icke-deterministisk (eng. Non-deterministic) Turingmaskin och universell Turingmaskin.

Den flerremsiga Turingmaskinen är en variant av den vanliga Turingmaskinen som har flera remsor. Varje remsa har ett eget skriv- och läshuvud. Denna modell kan tyckas vara mera kraftfull och bättre vilket inte riktigt är sant. Varje flerremsig maskin kan ersättas med en enkelremsig maskin, den enkelremsiga maskinen använder som mest kvadratiskt mer beräkningstid för att lösa ett givet problem. Det finns inte heller någon skillnad i vilka problem som kan lösas av de olika maskinerna.

Den flerspåriga Turingmaskinen är en specifik sort av flerremsig Turingmaskinen. Flerspåriga Turingmaskinen innehåller flera spår men endast ett huvud som skriver och läser alla spår. I en vanlig N-remsig Turingmaskin, flyttas n huvuden oberoende varandra.

I en icke-deterministisk Turingmaskin finns det för varje tillstånd en grupp av handlingar som Turingmaskinen kan välja mellan. Det vill säga, övergångarna är inte deterministiska. Maskinen används för att undersöka en dators förmåga och begränsningar. P vs NP-problemet är ett av de viktigaste olösta problemen inom teoretisk datalogi, frågan gäller hur svårt det är att på en deterministisk dator att simulera icke-deterministiska beräkningar.

Universella Turingmaskinen är en Turingmaskin vars programmering simulerar andra Turingmaskiner. Den Universella Turingmaskinen kan simulera vilken annan Turingmaskin som helst genom att från remsan läsa in en beskrivning av denna specifika Turingmaskin.

Exempel redigera

Följande Turingmaskin läser en remsa med ettor och "fördubblar" dessa genom att skriva samma antal ettor efter de första, separerade av en tom ruta (0). Det vill säga med "111" som indata produceras resultatet "1110111". Maskinen har sex tillstånd varav s1 är starttillståndet och s6 är sluttillståndet och maskinen startar med läshuvudet vid den första ettan (den längst till vänster).

M = (Q, Γ, 0, Σ, δ, s1, F)

  • Q = {s1, s2, s3, s4, s5, s6}
  • Γ = {1, 0}
  • Σ = {1}
  • F = {s6}
  • δ beskrivs av följande tabell:
Aktuellt
tillstånd
Läst
symbol
Skriven
symbol
Nytt
tillstånd
Rörelse Kommentar
s1 0 0 s6 N Ingen (mer) etta att kopiera. Klar!
s1 1 0 s2 R Kopiera denna etta till näst-nästa nolla högerut, lämna en nolla som markering för tillbakavägen (markerad som kursiv i tabellerna nedan).
s2 1 1 s2 R Leta vidare högerut efter första nollan.
s2 0 0 s3 R Första nollan hittad. Gå vidare till s3, som hittar andra.
s3 1 1 s3 R Leta vidare högerut efter andra nollan.
s3 0 1 s4 L Andra nollan hittad, skriv en etta och gå tillbaka två nollor.
s4 1 1 s4 L Leta vidare vänsterut efter första nollan på tillbakavägen.
s4 0 0 s5 L Första nollan hittad. Gå vidare till s5 som hittar andra.
s5 1 1 s5 L Leta vidare vänsterut efter andra nollan (den som s1 lämnade som markering).
s5 0 1 s1 R Nollan hittad. Skriv tillbaka den etta som s1 skrev över, och börja sedan om från början, men utgå från ett steg åt höger.

Maskinen genomlöper till exempel följande steg när den får en remsa med indata "11":

Steg Tillstånd Remsa
1 s1 11000
2 s2 01000
3 s2 01000
4 s3 01000
5 s4 01010
6 s5 01010
7 s5 01010
8 s1 11010
Steg Tillstånd Remsa
9 s2 10010
10 s3 10010
11 s3 10010
12 s4 10011
13 s4 10011
14 s5 10011
15 s1 11011
16 s6 -stopp-

Se även redigera

Referenser redigera

  1. ^ ”AlanTuring.net What is a Turing machine?”. www.alanturing.net. http://www.alanturing.net/turing_archive/pages/Reference%20Articles/What%20is%20a%20Turing%20Machine.html. Läst 12 april 2019. 
  2. ^ ”CSC 4170 Informal Definition of Turing Machines”. www.seas.upenn.edu. Arkiverad från originalet den 28 november 2017. https://web.archive.org/web/20171128151205/http://www.seas.upenn.edu/~cit596/notes/dave/turing1.html. Läst 12 april 2019. 
  3. ^ Hopcroft, John; Ullman, Jeffrey (1979). Introduction to Automata Theory, Languages and Computation (1:a utgåvan). Reading Mass.: Addison-Wesley. sid. 148. ISBN 0-201-02988-X 
  4. ^ ”Alan Turing - ETHW”. ethw.org. https://ethw.org/Alan_Turing. Läst 12 april 2019. 
  5. ^ Watson, Ian. ”How Alan Turing Invented the Computer Age” (på engelska). Scientific American Blog Network. https://blogs.scientificamerican.com/guest-blog/how-alan-turing-invented-the-computer-age/. Läst 12 april 2019. 
  6. ^ ”History of Computing Science: The Turing Machine”. www.eingang.org. http://www.eingang.org/Lecture/turing2.html. Läst 12 april 2019. 
  7. ^ ”American Institute of Science”. www.aiscience.org. http://www.aiscience.org/journal/allissues/ijeecs.html;jsessionid=3288D470CD52F5B47BFB85C05D20FD35.tomcat1. Läst 12 april 2019. 
  8. ^ ”AlanTuring.net”. www.alanturing.net. Arkiverad från originalet den 12 oktober 2018. https://web.archive.org/web/20181012014022/http://www.alanturing.net/. Läst 12 april 2019. 
Den här artikeln är helt eller delvis baserad på material från finskspråkiga Wikipedia.
Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia.

Externa länkar redigera