Importanza pratica delle macchine di Turing?


27

Sono un ingegnere elettrico, e ho avuto un solo corso CS al college 26 anni fa. Tuttavia, sono anche un devoto utente di Mathematica.

Ho la sensazione che le macchine di Turing siano molto importanti nell'informatica. L'importanza è solo nella teoria dell'informatica? Se ci sono implicazioni / applicazioni pratiche, quali sono alcune?

Risposte:


21

L'importanza delle macchine Turing è duplice. In primo luogo, le macchine Turing sono state uno dei primi (se non il primo) modelli teorici per computer, risalenti al 1936. In secondo luogo, molta scienza informatica teorica è stata sviluppata pensando alle macchine Turing, e quindi molti dei risultati di base sono nella lingua delle macchine di Turing. Uno dei motivi è che le macchine di Turing sono semplici e quindi suscettibili di analisi.

Detto questo, le macchine di Turing non sono un modello pratico per il calcolo. Come ingegnere e utente Mathematica, non dovrebbero preoccuparti affatto. Anche nella comunità teorica dell'informatica, le macchine RAM più realistiche sono utilizzate nelle aree di algoritmi e strutture di dati.

In effetti, dal punto di vista della teoria della complessità, le macchine di Turing sono polinomialmente equivalenti a molti altri modelli di macchine, e quindi classi di complessità come P e NP possono essere equivalentemente definite in termini di questi modelli. (Altre classi di complessità sono più delicate.)


11

Le macchine di Turing furono uno dei primi modelli di calcolo, cioè furono sviluppati quando il calcolo stesso non fu compreso molto bene (intorno al 1940). Voglio concentrarmi su due aspetti che (probabilmente) li hanno portati ad essere il modello preferito di allora, che ha portato ad essere il modello più consolidato e quindi eventualmente standard.

  1. Semplicità delle prove
    Come modello teorico, le macchine di Turing hanno il fascino di essere "semplici", nel senso che lo stato attuale della macchina ha solo dimensioni costanti. Tutte le informazioni necessarie per determinare lo stato macchina successivo sono un simbolo e un numero di stato (di controllo). Il cambio allo stato della macchina è altrettanto piccolo, aggiungendo solo il movimento della testa della macchina. Ciò semplifica notevolmente le prove (formali), in particolare il numero di casi da distinguere.

    Confronta questo aspetto con il modello di RAM (quando non utilizzato nella sua forma minimalista): l'operazione successiva potrebbe essere una delle diverse operazioni, che possono accedere a qualsiasi (due) registri. Esistono anche più strutture di controllo.


  2. λμ

    Per le macchine Turing, tuttavia, entrambe le nozioni sono facilmente definibili (ed erano nel primo documento di Turing sul suo modello, se ricordo bene). Dato che le considerazioni sull'efficienza sono state presto molto importanti per fare effettivamente cose, questo è stato un netto vantaggio delle macchine Turing.

Pertanto, le macchine di Turing sono stati stabiliti come il modello di calcolo, che potrebbe essere visto come una combinazione di storica "incidente" e alcune delle sue proprietà chiave. Tuttavia, molti modelli sono stati definiti da allora e sono utilizzati avidamente, in particolare per ovviare alle carenze delle macchine di Turing; per esempio, sono noiosi di "programmare" (cioè definire).

In pratica non sono a conoscenza di applicazioni dirette. In particolare, la pratica del calcolo si è evoluta parallelamente (e, all'inizio, in gran parte indipendentemente dalla) teoria del calcolo. I linguaggi di programmazione sono stati sviluppati senza modelli formali di macchine. Tuttavia, è chiaro (col senno di poi) che molti progressi nella pratica del calcolo sono stati abilitati dalla teoria.

Inoltre, tieni presente che il valore che un concetto teorico ha avuto per la pratica dovrebbe essere misurato considerando tutti i discendenti, ovvero il lavoro di follow-up, i risultati e le nuove idee rese possibili da quel concetto. E a tal proposito, penso che sia giusto dire che il concetto di macchine di Turing (tra gli altri) ha rivoluzionato il mondo.


4

L'unica applicazione ragionevolmente pratica che mi viene in mente (nel senso che potresti effettivamente implementare una macchina di Turing) è quella di dimostrare che un linguaggio di qualche tipo ha potenza sufficiente.

Se stai progettando un qualche tipo di linguaggio di programmazione (o qualcos'altro che è destinato a calcolare le cose), allora potresti voler assicurarti che sia Turing completo (cioè in grado di calcolare tutto ciò che è calcolabile) implementando una macchina Turing dentro.

Naturalmente, potresti anche implementare qualsiasi altra cosa che sia Turing completa (come la C o la logica combinatoria), ma a volte una macchina di Turing è l'opzione più semplice.


-1

La macchina di Turing è un modello matematico di calcolo. I suoi vantaggi sono: -

1. Verifica della decidibilità Se TM non è in grado di risolvere un problema in tempo numerabile, allora non potrebbe esserci alcun algoritmo in grado di risolverlo (il problema è indecidibile).

Per un problema decisionale se la sua TM si ferma in tempo numerabile per tutti gli input di lunghezza finita, allora possiamo dire che il problema potrebbe essere risolto da un algoritmo in tempo numerabile.

2. Classify Problem TM aiuta a classificare i problemi decidibili in classi di Gerarchia Polinomiale.

Supponiamo di aver scoperto che il problema è decidibile. Quindi il nostro obiettivo diventa l'efficienza con cui possiamo risolverlo. L'efficienza è stata calcolata in numero di passaggi, spazio extra utilizzato, lunghezza del codice / dimensione dell'FSM.

3. Progettare e implementare l'algoritmo per macchine pratiche TM aiuta a diffondere l'idea dell'algoritmo in altre macchine pratiche. Dopo aver verificato con successo 1,2 criteri possiamo usare i nostri dispositivi / computer pratici per progettare e implementare l'algoritmo.


3
Le macchine di Turing non ti permettono di "controllare la decidibilità"; danno solo una definizione di cosa sia la decidibilità. La classificazione dei problemi è perfettamente possibile utilizzando altri modelli di calcolo, come le macchine ad accesso casuale. Gli algoritmi che funzionano su macchine Turing sono raramente adatti ad altri modelli di macchine, poiché gli algoritmi di macchine Turing comportano grandi quantità di shuffle che non si verificano altrove.
David Richerby,

La TM fornisce la definizione di decidibilità. Destra. Per verificare la decidibilità non stiamo prendendo in considerazione la MT? "La classificazione dei problemi è perfettamente possibile utilizzando altri modelli di calcolo." Giusto, ma possiamo anche farlo usando TM. Durante l'implementazione dell'algoritmo devi essere certo della durezza di quel problema.
Subhankar Ghosal,

-3

Le macchine di Turing sono un buon esercizio fisico con un uso poco pratico. Non c'è nulla di male nel non averne uno. Tutte le applicazioni di una macchina Turing sono intuitive o religiose perché non possono essere provate o confutate.


2
"Tutte le applicazioni di una macchina di Turing sono o intuitive o una questione di religione [...]" E, quindi, tutti i campi della teoria della computabilità e della teoria della complessità sono stati respinti in quattordici parole.
David Richerby,

Questi non miravano a respingere quelle teorie. Tutto quello che stavo dicendo era che le applicazioni di una macchina di Turing sono ovvie, possono essere comprese in modo intuitivo o richiedere credenze senza prove.
Valery Gavrilov,

"una questione di religione perché non possono essere provati o smentiti". Ehm, cosa? L'interpretazione più generosa di ciò che posso inventare è che ti riferisci alla tesi di Church-Turing, ma ogni specifica applicazione di questo può davvero essere dimostrata (basta passare attraverso il noioso lavoro di progettazione della macchina di Turing appropriata; o, solo scrivere un algoritmo appropriato nel tuo linguaggio di programmazione preferito e usare la solita equivalenza) e CT non è un'applicazione, solo un modo per semplificare l'esposizione delle prove (e se si dubita seriamente di un'applicazione di essa, si può sempre dare un formale prova).
Noah Schweber,

Inoltre non capisco come "possa essere compreso intuitivamente" è un inconveniente. Tutta la matematica può essere compresa intuitivamente; significa che la matematica è solo un esercizio mentale con un uso poco pratico?
Noah Schweber,
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.