VerktygslådaAndra språk
|
TuringmaskinEn Turingmaskin är en abstrakt mekanism, en teoretisk modell, för att utföra beräkningar, som utvecklades av Alan Turing år 1936. Turingmaskinen konstruerades till den enklast möjliga mekanismen som är kapabel att utföra icke-triviala beräkningar, och spelar en central roll i teorierna för beräkningsbarhet och beräkningskomplexitet, samt allmänt inom den matematiska logiken. En Turingmaskin kan konstrueras för att lösa ett givet problem (en specifik turingmaskin), men det går också att konstruera en universell turingmaskin som är kapabel att läsa en kodad beskrivning av en specifik turingmaskin med dess indata, och sedan utföra denna maskins beräkning. Church-Turings hypotes säger att varje tänkbar beräkningsprocess kan utföras av en Turingmaskin, och alltså att det rent principiellt inte finns någon mer kraftfull beräkningsmekanism. Denna tes är inte i strikt matematisk mening bevisad, men allmänt accepterad som sann. Argument som talar för tesen är bland andra att andra försök till teoretiska modeller av beräkningsprocesser, som till exempel Churchs lambdakalkyl, rekursionsteori och post-maskiner, kan visas vara ekvivalenta med turingmaskiner. Alla dagens datorer kan också betraktas som turingmaskiner: de kan med andra ord simuleras av en sådan. Teorierna om turingmaskiner fick stor betydelse för konstruktionerna av de första datorerna, till exempel Z3 .
[redigera] Informell beskrivningEn Turingmaskin består av
Läs-och skrivhuvudet rör sig längs remsan på order av styrenheten. Maskinen arbetar i diskreta beräkningssteg som styrs av en nästatillståndsfunktion eller övergångsfunktion (eng. transition function eller action table), ett slags program. Denna funktion kan beskrivas som en tabell som anger, för varje kombination av tillstånd i styrenheten och symbol i aktuell ruta, det beräkningsteg (eng. action) som ska utföras. Ett beräkningssteg kan vara att flytta sig ett steg åt ena eller andra hållet på remsan, och läsa eller skriva en symbol i aktuell ruta. Tabellen anger också vilket tillstånd styrenheten övergår till efter att ha utfört beräkningsteget. Maskinen startar med ett starttillstånd och en given position på remsan, och avslutar beräkningen när ett sluttillstånd uppnås. Beräkningen kan misslyckas genom att maskinen aldrig uppnår sluttillståndet och fortsätter i all oändlighet. [redigera] Formell definitionHopcroft och Ullman [1] definierar en (deterministisk) Turingmaskin som en 7-tupel M = (Q,Γ,b,Σ,δ,q0,F) där
[redigera] ExempelFö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). D.v.s 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)
Maskinen genomlöper t.ex. följande steg när den får en remsa med indata "11":
[redigera] Referenser
[redigera] Se ocksåBör ej förväxlas med Turingtest. |