Perché la macchina di Turing è un modello popolare di calcolo?


68

Sono un laureando CS. Capisco come Turing abbia inventato la sua macchina astratta (modellando una persona facendo un calcolo), ma mi sembra un'astrazione goffa e inelegante. Perché consideriamo un "nastro" e una testa di una macchina che scrive simboli, cambia stato, sposta il nastro avanti e indietro?

Qual è il significato sottostante? Un DFA è elegante: sembra catturare esattamente ciò che è necessario per riconoscere le lingue normali. Ma la macchina di Turing, a mio giudizio da principiante, è solo un grosso aggeggio astratto.

Dopo averci pensato, penso che il modello di calcolo più idealizzato sarebbe quello di dire che qualche sistema fisico corrispondente alla stringa di input, dopo essere stato messo in moto, raggiungerebbe un equilibrio statico che, interpretando equivalente a quello usato per formare il sistema dalla stringa originale, corrisponderebbe alla stringa di output corretta. Ciò cattura la nozione di "automazione", poiché il sistema cambierebbe in modo deterministico basato esclusivamente sullo stato originale.

Modifica :

Dopo aver letto alcune risposte, mi sono reso conto che ciò che mi confonde della macchina di Turing è che non sembra minimo. Il modello canonico di calcolo non dovrebbe ovviamente trasmettere l'essenza della calcolabilità?

Inoltre, nel caso non fosse chiaro, so che i DFA non sono modelli completi di calcolo.

Grazie per le risposte


2
Speriamo che le lezioni future aiuteranno a chiarire.
Yuval Filmus,

19
Forse troverai il calcolo lambda come un modello di calcolo più naturale. È su questo che si basa la programmazione funzionale.
Bakuriu,

4
In realtà, sto per laurearmi. Il corso di più alto livello che ho seguito, che riguardava la teoria degli automi, si è interrotto con le macchine di Turing, sebbene menzionassero l'equivalenza tra i vari modelli di calcolo. Ho anche fatto la mia giusta parte di "programmazione", giustamente di base, TM. La TM però mi ha sempre infastidito. Non sembrava "minimo"; non mi ha rivelato l'essenza del calcolo.
Alex,

4
" un sistema fisico corrispondente alla stringa di input " - come sarebbe quella corrispondenza? La macchina turing è un modello formale piuttosto semplice ma potente per esattamente una cosa del genere.
Bergi,

2
Le macchine di Turing cambiano in modo deterministico in base esclusivamente allo stato originale (se si intende la configurazione). Quindi cosa c'è che non va?
user23013

Risposte:


72

Bene, un DFA è solo una macchina di Turing che può solo spostarsi a destra e che deve accettare o rifiutare non appena si esauriscono i caratteri di input. Quindi non sono sicuro che si possa davvero dire che un DFA è naturale ma una macchina di Turing no.

A parte la critica della domanda, ricorda che Turing funzionava prima che esistessero i computer. In quanto tale, non stava cercando di codificare ciò che fanno i computer elettronici, ma piuttosto il calcolo in generale. I miei genitori hanno un dizionario degli anni '30 che definisce il computer come "qualcuno che calcola" e questo è fondamentalmente la provenienza di Turing: per lui, a quel tempo, il calcolo riguardava le regole delle diapositive, i registri, le matite e i fogli di carta. In questa mentalità, riscrivere i simboli su un nastro di carta non sembra una cattiva astrazione.

OK, bene, stai dicendo (spero!) Ma non siamo più negli anni '30, quindi perché lo usiamo ancora? Qui, non penso che ci sia un motivo specifico. Il vantaggio delle macchine Turing è che sono ragionevolmente semplici e siamo abbastanza bravi a provare cose su di loro. Sebbene specificare formalmente un programma della macchina di Turing per svolgere un determinato compito sia molto noioso, una volta che lo hai fatto alcune volte, hai una ragionevole intuizione su cosa possono fare e non hai più bisogno di scrivere le specifiche formali. Il modello può anche essere facilmente esteso per includere altre caratteristiche naturali, come l'accesso casuale al nastro. Quindi sono un modello piuttosto utile che comprendiamo bene e abbiamo anche una buona comprensione di come si collegano ai computer reali.

Si potrebbero usare altri modelli ma si dovrebbe quindi fare un'enorme quantità di traduzione tra i risultati per il nuovo modello e il vasto corpus di lavori esistenti su ciò che le macchine di Turing possono fare. Nessuno ha escogitato un sostituto per le macchine di Turing che hanno avuto abbastanza grandi vantaggi da renderlo una buona idea.


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Gilles 'SO- smetti di essere malvagio'

56

Stai ponendo diverse domande. Vorrei rispondere brevemente uno per uno.

Cosa c'è di così importante nel modello della macchina di Turing?

λ

All'epoca, il tentativo di Turing di definire la calcolabilità sembrava il più soddisfacente. Alla fine si è scoperto che tutti i modelli di calcolo sopra descritti sono equivalenti - descrivono tutti la stessa nozione di calcolabilità. Per ragioni storiche, il modello di Turing è emerso come il modo più canonico di definire la calcolabilità. Il modello è anche molto rudimentale e così facile da lavorare, rispetto a molti altri modelli tra cui quelli sopra elencati.

La solita informatica informa le macchine di Turing come definizione di calcolabilità e le usa anche per esplorare la teoria della complessità. Ma gli algoritmi vengono analizzati rispetto a un modello più realistico noto come la macchina RAM, anche se questo problema è di solito spazzato sotto il tappeto come un segreto per i cognoscenti.

I DFA non sono un modello migliore?

Questa era la motivazione originale alla base del famoso articolo di Rabin e Scott, degli automi finiti e dei loro problemi di decisione:

Le macchine di Turing sono ampiamente considerate il prototipo astratto dei computer digitali; i lavoratori del settore, tuttavia, hanno sempre più sentito che l'idea di una macchina di Turing è troppo generale per servire da modello accurato di computer reali. È noto che anche per semplici calcoli è impossibile assegnare a priori un limite superiore alla quantità di nastro di cui una macchina Turing avrà bisogno per ogni dato calcolo. È proprio questa caratteristica che rende irrealistico il concetto di Turing.

Negli ultimi anni l'idea di un automa finito è apparsa in letteratura. Queste sono macchine che hanno solo un numero finito di stati interni che possono essere utilizzate per la memoria e il calcolo. La restrizione della finezza sembra dare una migliore approssimazione all'idea di una macchina fisica. Naturalmente, tali macchine non possono fare quanto le macchine di Turing, ma il vantaggio di poter calcolare una funzione ricorsiva generale arbitraria è discutibile, poiché pochissime di queste funzioni emergono in applicazioni pratiche.

Si è scoperto, tuttavia, che mentre le macchine di Turing sono troppo forti, i DFA sono troppo deboli . Oggi i teorici preferiscono la nozione di calcolo del tempo polinomiale , sebbene questa nozione non sia priva di problemi. Detto questo, i DFA e gli NFA hanno ancora i loro usi, principalmente nei compilatori (usati per l'analisi lessicale) e nei dispositivi di rete (usati per un filtraggio estremamente efficiente).

Il modello della macchina di Turing non è troppo limitato?

La tesi Church-Turing afferma che le macchine Turing catturano la nozione fisica di calcolabilità. Yuri Gurevich ha condotto un tentativo di provare questa tesi, formulando una classe più generale di dispositivi di calcolo noti come macchine a stati astratti e dimostrando che sono equivalenti in potenza alle macchine di Turing. Forse queste macchine sono analoghe al tuo modello idealizzato.


17

Il significato di fondo riguarda l'idea dell'equivalenza di Turing. Il modello esatto non è importante, purché sia ​​equivalente a Turing. Ma è meglio usare un modello più semplice in modo da poter provare più facilmente l'equivalenza con altri modelli.

Più precisamente, è meglio semplificare la simulazione di questo modello in altri modelli, poiché sappiamo che la maggior parte dei linguaggi di programmazione avanzata sono equivalenti a Turing (con alcuni presupposti sugli indirizzi di memoria) e possono essere utilizzati per simulare altri modelli.

Esistono altri modelli, come il calcolo lambda e la grammatica (riscrittura delle stringhe). Ma è più semplice definire vincoli di tempo e spazio in una macchina Turing. Potresti anche usare un linguaggio di programmazione come Brainfuck, ma richiede un lavoro non necessario per ridefinire, ad esempio, i simboli per ottenere a volte una modifica logicamente banale.

Quindi, la macchina di Turing mi è sembrata del tutto appropriata se devi imparare un modello unico per tutto. Ma se hai intenzione di apprendere più modelli comunque, non vedo nulla di sbagliato nell'imparare il calcolo lambda per l'idea di equivalenza di Turing, Brainfuck per dimostrare altri modelli equivalenti di Turing e linguaggi di programmazione pratica (meglio con stack accessibile e senza variabili nascoste) per vincoli di tempo / spazio e considera la macchina di Turing solo uno strumento per provare queste cose equivalenti se nessuno è disturbato a trovare un modo per aggirarla. Questo accade naturalmente se non hai iniziato con l'apprendimento della teoria di base, ma lo hai fatto solo quando li hai trovati utili.


1
Fondamentalmente tutte le CPU moderne sono macchine per la registrazione con RAM. Perfino i microcontrollori o le architetture di giocattoli con un solo registro di accumulatori in genere hanno una sorta di registro di indirizzi separato in cui è possibile caricare puntatori, anziché essere un puro accumulatore. Ma l'hardware reale ha indirizzi di dimensioni fisse e quindi non è completo di Turing. IDK se il modello di macchina del registro viene utilizzato molto nel CS teorico, ma è il modo in cui il linguaggio assembly funziona nella vita reale e può essere utile per comprendere l'analisi perf perché tutto si compila in asm.
Peter Cordes,

14

Vorrei rispondere a questa parte della domanda, aggiunta in una modifica:

"Il modello canonico di calcolo non dovrebbe ovviamente trasmettere l'essenza della calcolabilità?"

TTT

Questa è una delle essenze della calcolabilità: qualunque sia la nozione generale di calcolabilità che uno ha in mente, dovrebbe esserci un'unica macchina che fa tutto. Questo è esattamente ciò che fa una macchina di Turing universale. È anche ciò che fanno i computer moderni (soggetto all'idealizzazione fisicamente irrealistica di avere una memoria infinita).

Un altro modo per dirlo, che affronta direttamente la tua preoccupazione che le macchine di Turing non siano minime, è che sono il minimo possibile, fatto salvo il requisito che descrivono una nozione generale di calcolabilità per la quale esiste una macchina universale.


Grazie per avermi ricordato della macchina universale. Vedo come ciò implichi un calcolo "completo".
Alex,

5

Le macchine di Turing non sono pensate per essere usate letteralmente; la programmazione in essi è qualcosa che si farebbe solo una volta come esercizio, per capire come funzionano.

In particolare non sono fatti per "fare" nulla. Non devono essere minimali, non devono essere comodi con cui lavorare.

Sono semplicemente un modello di una macchina che potresti costruire, che sarebbe espressiva e potente come qualsiasi altra macchina che potresti mai costruire nell'universo fisico (per quanto ne sappiamo oggi).

Sono stati definiti da Turing come sono per questi motivi principali:

  • Essere in grado di dimostrare che comprendono tutti gli algoritmi a cui potremmo mai pensare.
  • Per lavorare sul problema di arresto / problema decisionale.
  • Essere in grado di ridurre qualsiasi altra macchina / linguaggio a questo.

Sarebbe stato possibile scegliere un'altra lingua? Di sicuro! Qualunque lingua turing completa che conosciamo oggi avrebbe potuto essere usata. Ma sarebbe stato molto più difficile costruire le basi teoriche su una macchina più complessa.

Direi che non sono nemmeno un "modello popolare di calcolo"; nessuno avrebbe mai calcolato nulla con una macchina di Turing. È un concetto puramente teorico, realizzato da teorici informatici, per TCS.


D'accordo su tutti i punti. La popolarità è forse solo relativa ai modelli più oscuri come le macchine Thue e il calcolo Lambda e le cose di Emil Post.
luser droog,

Ci dispiace ma ti manca un punto molto centrale che altre lingue avrebbero gravemente incasinato. Una macchina di Turing definisce ciò che puoi effettivamente calcolare. Qualsiasi altra lingua limiterebbe la domanda a come è possibile calcolarla, rendendo altamente improbabile che sia in grado di dimostrare ciò che è possibile calcolare o meno.
Piegato

Se si suppone che le macchine di turing siano un obiettivo di riduzione per altri modelli, perché non dovrebbero essere minime?
Bergi,

@Bent, ammetto che non capisco esattamente quello che stai cercando di dire, oltre a quello che ho citato con "Ma sarebbe stato molto più difficile costruire le basi teoriche su una macchina più complessa". (vale a dire, su un vero linguaggio di programmazione come li conosciamo e li usiamo).
AnoE

Per popolarità, intendevo ciò che viene utilizzato in CS teorico. Ancora una volta, è stato l'unico modello che ho imparato (anche se penso di essere stato esposto a un po 'del calcolo lambda). Mi chiedevo solo perché, forse pedagogicamente, è sempre il primo ad essere insegnato. Vedo come la sua praticità lo giustifichi.
Alex,

5

Perché è popolare, forse il più popolare? Devi ricordare che Turing ha inevitabilmente inventato questa "macchina" molti anni prima dei computer elettronici. Il TM è gestito con una carta, una penna, una gomma e, ultimo ma non meno importante, un cervello umano. Quindi tutti sono in grado di eseguire un "calcolo" con questa macchina. Tutti significano una persona che non ha mai imparato i computer, programmando lingue. E 'semplice da usare. Quando ci pensi, scopri un paradosso: questa macchina è un insieme di quasi nulla ma puoi far funzionare tutto. Secondo me il paradosso di "quasi-niente / contro / tutto" è il motivo per cui è popolare. Vorrei notare che la TM non spiega esplicitamente la ricorsione, la TM si occupa solo di "saltare". Quella caratteristica (che parla esplicitamente di ricorsione) può essere una fonte di mal di testa per i principianti, per esempio nel lambda-calcolo il concetto di Y-combinatore è quasi incomprensibile; Più precisamente, la TM è popolare perché il paradosso di "quasi-niente / contro / tutto" senza il mal di testa ricorsivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.