Datorhistoria

Turing Machines and Computability Theory

Turing Machines and Computability Theory

Turing-maskinen är den centrala teoretiska konstruktionen inom datavetenskap. Turing-maskinen är en abstrakt matematisk beräkningsmodell. Användningen av Turing-maskiner hjälper till att förklara vad beräkning är genom att avgränsa de så kallade ”beräknbara funktionerna.”

Alan Turings tidiga forskning om logik fokuserade på ett berömt olöst problem som kallas Entscheidungsproblem. Entscheidungsproblemet (grovt översatt från tyska som beslutsproblem) föreslogs av filosofen och matematikern David Hilbert 1928. Problemet frågade om det fanns en algoritm som skulle avgöra varje uttalande på ett formellt språk.

Ett formellt språk är ett system av axiomer och slutsatsregler som de i aritmetik eller första ordningslogik. Axiomerna kan vara valfria symboler, och slutsatserna kan vara vilken lista som helst för att manipulera dessa symboler.  ”Att avgöra varje uttalande” innebar antingen att ange om påståendet var sant / falskt eller att ange om påståendet var avledbart / undermåligt. Kurt Godels fullständighetssats bevisade att en algoritm som bestämmer för giltighet motsvarar ett effektivt förfarande som bestämmer för derivat. Alan Turings 1936-tidning "On Computable Numbers, with an Application to the Entscheidungsproblem", visade sig vara ett negativt resultat, att det var omöjligt att algoritmiskt avgöra varje uttalande i ett formellt system.

Alan Turing

För att bevisa ett negativt resultat för Entscheidungsproblemet behövde Turing formalisera uppfattningen om en algoritm. Turing's formalisering av en algoritm var en matematisk datormodell som senare blev känd som Turing-maskinen. En Turing-maskin har en begränsad uppsättning tillstånd som maskinen kan vara i. Turing-maskinen har ett oändligt långt tejp som är uppdelat i rutor. På varje ruta i bandet finns en symbol som dras från en begränsad uppsättning symboler. När som helst i beräkningen läser Turing-maskinen symbolen på bandets en kvadrat. Turing-maskinen kan ersätta den symbolen med en annan symbol och flytta till antingen torget till höger eller torget till vänster. Åtgärden som Turing-maskinen vidtar bestäms automatiskt av det tillstånd maskinen är i. Efter att ersättningssymbolen och flyttat till en annan fyrkantig åtgärd har ägt rum kan Turing-maskinen övergå till ett annat tillstånd. Varje stat har olika regler om hur man byter symboler och vilken riktning man ska flytta.

En sällsynt fysisk implementering av Turing Machine Design (utan ett oändligt tejp)

Den kanoniska formuleringen av Turing-maskinen består vanligtvis av ett binärt alfabet på exklusivt 0s och 1s. Denna formulering matchar intuitionen hos moderna datorprogrammerare, med tanke på att alla moderna datorer använder binär. Faktum är att Turing-maskiner är neutrala med avseende på storleken på symbolernas alfabet. En Turing-maskin kan också använda vilken symbol som helst, antingen siffror eller hämtad från någon annan typ av alfabet, såsom bildsymboler eller det latinska alfabetet. Varje formulering av alla möjliga ändliga alfabet kan reduceras till en binär Turing-maskin.

Turing-maskiner antar att det finns en oändlig mängd minne tillgängligt. Inga riktiga fysiskt instanserade maskiner klarar detta krav att vara en Turing-maskin. En Turing-maskin antar också att en potentiellt oändlig tid kan spenderas på att beräkna funktionen. Dessa antaganden gjordes för att generera den mest expansiva klassen av möjliga funktioner för Turings definition av beräkningsbara funktioner. Turings beräknbara funktioner är alla funktioner som kan beräknas av en Turing-maskin. Många av dessa beräkningsbara funktioner kan aldrig beräknas av någon fysiskt instanserad maskin eftersom de kräver för mycket tid eller minne.

Church-Turing-avhandlingen hävdar ekvivalensen av beräknbara funktioner och funktioner som kan beräknas av en Turing-maskin. Detta innebär att alla funktioner som inte kan beräknas av Turing-maskiner inte kan beräknas med någon annan metod. David Hilbert hade förväntat sig ett positivt svar på Entscheidungsproblemet, vilket skulle innebära att alla problem kan beräknas. Turing resultat har lett till upptäckten av många oberäknbara problem.

Det mest kända oberäknbara problemet är Halting Problem. Halting Problemet är problemet med att skapa en algoritm som i allmänhet kan avgöra om ett datorprogram med dess ingång kommer att stanna eller fortsätta för alltid. Även om det finns specifika fall där Halting-problemet kan lösas, kan det inte lösas för alla datorprogram med någon ingång. Detta resultat har haft viktiga konsekvenser för datorprogrammering, eftersom datorprogrammerare måste vara medvetna om möjligheten till oändliga slingor och omöjligheten att upptäcka alla oändliga slingor innan de kör sina program.

En annan konsekvens av Turing-maskinen är möjligheten till universella Turing-maskiner. Implicit i Turings design är konceptet att lagra programmet som modifierar data tillsammans med data som det modifierar. Detta föreslog möjligheten för allmänna och omprogrammerbara datorer. Moderna datorer är vanligtvis universella Turing-maskiner i den meningen att de kan programmeras för att köra vilken algoritm som helst. Detta eliminerade behovet av olika hårdvara för varje potentiellt datorprogram och införde skillnaden mellan hårdvara och programvara.

Turing-maskinmodellen ledde direkt till uppfinningen av datorer, men det är inte samma ritning som används för att konstruera moderna datorer. Von Neumann-arkitekturen som används som en ritning för moderna datorer använder det lagrade programkonceptet implicit i Turing-maskinmodellen men skiljer sig från resten av Turing-maskinmodellen på flera viktiga sätt. De största skillnaderna är att von Neumann-arkitekturen inte använder ett skriv- och skrivhuvud utan istället innehåller flera register, random access-minne, databussar, en liten uppsättning grundläggande maskininstruktioner och multipla bitbehandlingsfunktioner. Von Neumann-arkitekturen tillåter också uttryckligen specialinmatnings- och utmatningsenheter som tangentbord och bildskärmar.

Turing-maskinmodellen var den första matematiska beräkningsmodellen. Det ledde direkt till uppfinningen av fysiska datorer. Fysiska datorer har alla samma funktioner som Turing-maskiner har, förutsatt ett begränsat minne och tidsbegränsningar för faktisk beräkning. Turing-formuleringen spelar fortfarande en central roll i studiet av beräkning. Datavetare är fortfarande aktivt involverade i att undersöka om specifika funktioner kan beräknas av Turing-maskiner.

Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...
OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...