I computer reali hanno solo un numero finito di stati, quindi qual è la rilevanza delle macchine di Turing rispetto ai computer reali?


42

I computer reali hanno una memoria limitata e solo un numero limitato di stati. Quindi sono essenzialmente automi finiti. Perché gli informatici teorici usano le macchine di Turing (e altri modelli equivalenti) per studiare i computer? Qual è lo scopo di studiare questi modelli molto più forti rispetto ai computer reali? Perché il modello di automi finito non è abbastanza?


7
@Kaveh Le persone di solito agitano a mano che sì, i computer utilizzati nella pratica sono FSM, ma gli FSM sono troppo grandi e le proprietà strutturali interessanti si perdono nella vista FSM. Non ho mai visto una spiegazione non fatta a mano. Pertanto la domanda è sull'argomento qui.
Martin Berger,

15
La vera domanda è: perché studiare le macchine di Turing, quando utilizziamo il modello RAM quando analizziamo gli algoritmi.
Yuval Filmus,

39
Perché a volte è un'approssimazione migliore a rispetto a . 10000000000000000000000000000000 10000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000
Andrej Bauer,

30
Ricorda, il problema irrisolto più famoso oggi nell'informatica teorica è: un tipo di computer immaginario fisicamente impossibile può risolvere problemi tanto velocemente quanto un computer immaginario ancora più fisicamente impossibile ? Non confondere l'informatica teorica con l'ingegneria informatica pratica; i dettagli del mondo fisico non sono particolarmente rilevanti.
Eric Lippert,

23
I materiali reali sono fatti di atomi e sono di natura discreta, quindi perché studiare gli integrali?
Peter Shor,

Risposte:


32

Esistono due approcci quando si considera questa domanda: storica che riguarda il modo in cui i concetti sono stati scoperti e tecnica che spiega perché alcuni concetti sono stati adottati e altri abbandonati o addirittura dimenticati.

Storicamente, la Turing Machine è forse il modello più intuitivo di molti sviluppati che cercano di rispondere al problema di Entscheidungs . Ciò è intimamente collegato al grande sforzo compiuto nei primi decenni del XX secolo per assiomatizzare completamente la matematica. La speranza era che una volta dimostrato che un piccolo insieme di assiomi fosse corretto (il che richiederebbe uno sforzo sostanziale), si potrebbe quindi utilizzare un metodo sistematico per ricavare una prova per l'affermazione logica a cui si era interessati. Anche se qualcuno considerasse automi finiti in questo contesto, verrebbero rapidamente respinti poiché non riescono a calcolare nemmeno le funzioni semplici.

Tecnicamente, l'affermazione secondo cui tutti i computer sono automi limitati è falsa. Un automa finito ha una memoria costante che non può essere modificata a seconda della dimensione dell'input. Non ci sono limiti, né in matematica né in realtà, che impediscono di fornire nastro aggiuntivo, dischi rigidi, RAM o altre forme di memoria, una volta che la memoria della macchina è stata utilizzata. Credo che questo sia stato spesso utilizzato nei primi tempi dell'informatica, quando anche semplici calcoli potevano riempire la memoria, mentre ora per la maggior parte dei problemi e con la moderna infrastruttura che consente una gestione della memoria molto più efficiente, questo spesso non è un problema .


EDIT: ho considerato entrambi i punti sollevati nei commenti, ma ho scelto di non includerli entrambi per brevità e tempo che avevo a disposizione per scrivere la risposta. Questo è il mio ragionamento sul perché credo che questi punti non riducano l'efficacia delle macchine Turing nella simulazione di computer moderni, soprattutto se confrontati con gli automi finiti:

  • Consentitemi innanzitutto di affrontare il problema fisico di un limite alla memoria da parte dell'universo. Prima di tutto, non sappiamo davvero se l'universo sia finito o no. Inoltre, il concetto dell'universo osservabile, che è per definizione finito, è anche per definizione irrilevante per un utente che può viaggiare in qualsiasi punto dell'universo osservabile per usare la memoria. La ragione è che l'universo osservabile si riferisce a ciò che possiamo osservare da un punto specifico, vale a dire la Terra, e sarebbe diverso se l'osservatore potesse viaggiare in una posizione diversa nell'universo. Pertanto, qualsiasi argomentazione sull'universo osservabile si trasforma nella questione della finitezza dell'universo. Ma supponiamo che attraverso alcune scoperte acquisiamo la conoscenza che l'universo è davvero finito. Sebbene ciò avrebbe un grande impatto su questioni scientifiche, Dubito che avrebbe alcun impatto sull'uso dei computer. In poche parole, potrebbe essere che in linea di principio i computer siano effettivamente automi limitati e non macchine di Turing. Ma per la stragrande maggioranza dei calcoli e con ogni probabilità a tutti i calcoli a cui gli umani sono interessati, le macchine di Turing e la teoria associata ci offrono una migliore comprensione. In un esempio approssimativo, sebbene sappiamo che la fisica newtoniana è essenzialmente sbagliata, dubito che gli ingegneri meccanici utilizzino principalmente la fisica quantistica per progettare automobili o macchinari di fabbrica; i casi angolari in cui ciò è necessario possono essere trattati a livello individuale. Ma per la stragrande maggioranza dei calcoli e con ogni probabilità a tutti i calcoli a cui gli umani sono interessati, le macchine di Turing e la teoria associata ci offrono una migliore comprensione. In un esempio approssimativo, sebbene sappiamo che la fisica newtoniana è essenzialmente sbagliata, dubito che gli ingegneri meccanici utilizzino principalmente la fisica quantistica per progettare automobili o macchinari di fabbrica; i casi angolari in cui ciò è necessario possono essere trattati a livello individuale. Ma per la stragrande maggioranza dei calcoli e con ogni probabilità a tutti i calcoli a cui gli umani sono interessati, le macchine di Turing e la teoria associata ci offrono una migliore comprensione. In un esempio approssimativo, sebbene sappiamo che la fisica newtoniana è essenzialmente sbagliata, dubito che gli ingegneri meccanici utilizzino principalmente la fisica quantistica per progettare automobili o macchinari di fabbrica; i casi angolari in cui ciò è necessario possono essere trattati a livello individuale.

  • Eventuali restrizioni tecniche come bus e indirizzamento sono semplicemente limitazioni tecniche dell'hardware esistente e possono essere superate fisicamente. Il motivo per cui ciò non è vero per i computer attuali è perché l'indirizzamento a 64 bit ci ha permesso di spostare il limite superiore nello spazio degli indirizzi ad altezze poche se qualsiasi applicazione può raggiungere. Inoltre, l'implementazione di un sistema di indirizzamento "estendibile" potrebbe potenzialmente avere un impatto sulla maggior parte dei calcoli che non ne avranno bisogno ed è quindi inefficiente. Nulla ti impedisce di organizzare un sistema di indirizzamento gerarchico, ad esempio per due livelli il primo indirizzo potrebbe riferirsi a uno qualsiasi dei banchi di memoria e quindi ogni banco ha 2 64264264indirizzi diversi. Essenzialmente il networking è un ottimo modo per farlo, ogni macchina si prende cura solo della sua memoria locale ma può calcolarla insieme.


4
La seconda parte di questa risposta è sbagliata. I computer sono automi a stati finiti, anche se hai acquistato tutta la RAM e altro hardware che potresti. La quantità di RAM che è possibile collegare a un computer è limitata dalla larghezza del suo bus di indirizzo e lo stesso vale per i dischi e altri periferiche.
Emil Jeřábek sostiene Monica il

12
@ EmilJeřábek non è vero. Le interfacce seriali non hanno un bus di indirizzo e la quantità di dati a cui posso accedere su Internet non è limitata da nessuna proprietà del mio computer.
Smetti di fare del male a Monica il

5
@OrangeDog ma l'universo sarebbe ancora porre un limite alla quantità di dati che possono essere memorizzati nella osservabile dell'universo
maniaco del cricchetto

9
@ratchetfreak come dimostra la macchina di Turing, hai solo bisogno dell'accesso locale - l'attuale "fine" del nastro non deve necessariamente trovarsi nell'universo osservabile;)
Stop Harming Monica,

6
Nel menzionare la storia, vale la pena citare la recensione di Church del documento di Turing, secondo cui le macchine di Turing hanno "il vantaggio di rendere l'identificazione con efficacia ... immediatamente evidente". Cioè, per le persone che cercavano di convincersi di aver effettivamente catturato tutto ciò che poteva essere calcolato, la definizione di Turing era convincente.
Jim Hefferon,

44

Per completare le altre risposte: penso che Turing Machine sia una migliore astrazione di ciò che i computer fanno rispetto agli automi finiti. In effetti, la differenza principale tra i due modelli è che con automi finiti, ci aspettiamo di trattare dati che sono più grandi dello spazio degli stati, e Turing Machine è un modello per il contrario (spazio degli stati >> dati) creando lo stato spazio infinito. Questo infinito può essere percepito come un'astrazione di "molto grande di fronte alla dimensione dei dati". Quando si scrive un programma per computer, si tenta di risparmiare spazio per l'efficienza, ma in genere si presuppone che non si sarà limitati dalla quantità totale di spazio sul computer. Questo è uno dei motivi per cui le macchine di Turing sono un'astrazione migliore dei computer rispetto agli automi finiti.


14
Questa è la risposta giusta per IMHO. Le ragioni sono puramente pragmatiche, le macchine di Turing fanno meglio degli automi finiti per spiegare cosa fanno i computer alle scale coinvolte.
Emil Jeřábek sostiene Monica il

3
Sono d'accordo con questo, tranne la frase "in genere supponi che non sarai limitato dalla quantità totale di spazio sul computer". Al contrario, quasi tutti i programmi non banali sono limitati dallo spazio disponibile e i programmatori fanno di tutto per gestirlo (ad es. Garbage collection per il riutilizzo automatico della memoria), ma (1) non c'è nulla che possiamo fare al riguardo, e (2) ci limitiamo a input abbastanza piccoli. È degno di nota il fatto che le TM ci danno un controllo naturale sulla dimensione del problema e che gli algoritmi tendono a essere chiusi verso il basso rispetto a questa nozione naturale della dimensione del problema.
Martin Berger,

2
@MartinBerger Re "quasi tutti i programmi non banali sono limitati dallo spazio disponibile e i programmatori fanno di tutto per gestirlo (ad es. Garbage collection per il riutilizzo automatico della memoria)": direi che i programmi scritti per sistemi con garbage collection considerano quel sistema, incluso il gc , come la macchina contro cui programmano. Il garbage collector non fa parte del programma; fa parte di uno sforzo per fornire esattamente ciò che Denis ha detto: una macchina da programmare contro la quale ha risorse di memoria praticamente illimitate.
Peter - Ripristina Monica il

2
@ PeterA.Schneider Non sono d'accordo. Il motivo dell'utilizzo del GC fornito dal linguaggio runtime è uno dei vantaggi economici dello sviluppo del software: il meccanismo di gestione della memoria specifico per il programma è più performante del GC e la maggior parte dei programmatori lo preferirebbe se potesse farlo in modo sicuro ed economico. Ma non possono, quindi preferiscono giocare in sicurezza e utilizzare il GC ambientale il cui costo è ammortizzato su un gran numero di programmi. In tal senso, l'uso di GC farà molto per gestire la memoria della finezza.
Martin Berger,

2
Le macchine da turismo non sono astrazioni di ciò che fanno i computer, sono astrazioni di ciò che fa l'informatica e i computer sono stati costruiti dopo. I computer eseguono la maggior parte dei loro calcoli utilizzando una quantità fissa di memoria di lavoro interna, ma le macchine di Turing non sono state inventate per ragionare sul calcolo con una quantità limitata di memoria di lavoro.
reinierpost,

10

Andrej Bauer ha fornito una ragione importante nei commenti:

1000000000000000000000000000000010000000000000000000000000000000

Consentitemi di completare le altre risposte con alcuni punti, che probabilmente erano troppo ovvi per menzionare:

  • Se il tuo obiettivo è studiare computer reali, sia gli automi finiti che le macchine di Turing saranno spesso modelli troppo semplici per le domande pertinenti. I computer reali hanno più core di elaborazione con una gerarchia di cache (o qualche altro schema di gestione intelligente), accesso a una discreta quantità di memoria veloce, accesso a un'enorme quantità di memoria esterna lenta (dischi rigidi) e in grado di comunicare con altri computer simili in un velocità approssimativamente paragonabile alla velocità di accesso alla memoria esterna lenta.
  • Se ora ti chiedi perché hai bisogno di tutti quei dettagli, allora il tuo vero obiettivo è lo studio delle istanze problematiche e quanto efficacemente puoi risolverle. Se stai parlando di computer reali, ciò può anche significare che esegui esperimenti con istanze problematiche reali su diversi tipi di architetture (reali) del computer.
  • Il modello di computer reali sopra descritto è ancora idealizzato, poiché ignora le varie modalità di errore dei computer reali. Poiché l'interruzione dello spegnimento potrebbe essere più frequente dell'errore del disco rigido (e i dischi rigidi potrebbero comunque disporre di backup), alcuni domini problematici come il funzionamento affidabile del database potrebbero dover tenerne conto.
  • Π10

8

Un formalismo è utile o meno, basato su ciò che le persone vogliono usare il formalismo per modellare e comprendere.

La macchina di Turing è un formalismo utile per comprendere i programmi . I programmi meritano di essere compresi; il calcolo più effettivo viene eseguito da programmi anziché da macchine per scopi speciali. Il formalismo della macchina di Turing ci consente di modellare importanti preoccupazioni del mondo reale come la complessità del tempo e dello spazio. È molto meno naturale provare a studiare queste nozioni usando automi a stati finiti.

Le macchine di Turing non sono molto utili quando si cerca di studiare la complessità del calcolo di funzioni finite (diciamo, funzioni il cui dominio è costituito da input di lunghezza al massimo di 10 milioni). La complessità del circuito è molto meglio nel descrivere la complessità delle funzioni finite ... ma le macchine di Turing a loro volta sono state molto utili per comprendere la complessità del circuito.

Gli automi finiti sono stati utili anche per comprendere la complessità del circuito; tutti questi modelli hanno il loro posto nell'arsenale matematico.

Respingo l'argomentazione secondo cui gli automi a stati finiti sono un modello migliore della realtà puramente perché i computer del mondo reale hanno solo un numero finito di stati interni. Lo studio degli automi a stati finiti si occupa in modo cruciale degli input provenienti dall'infinito insieme di stringhe, mentre i computer del mondo reale trattano input solo di una lunghezza massima fissa (a meno che non crediate che viviamo in un universo infinito, sia in termini di spazio o tempo).

Un modello dovrebbe essere giudicato in base alla sua utilità nel comprendere quegli aspetti della realtà a cui teniamo. O (in alternativa) in termini di utilità nel comprendere un universo matematico che le persone trovano sufficientemente convincente, anche se quell'universo matematico non ha alcuna manifestazione fisica evidente.

Macchine di Turing, macchine a stati finiti e circuiti (e altri modelli oltre) hanno tutti dimostrato la loro utilità.


6

I computer reali non sono FSA. Un computer reale è un computer universale, nel senso che possiamo descrivere un computer per emulare un computer e il computer lo emulerà. Per molti esempi, cerca "macchina virtuale".

È possibile costruire una Universal Turing Machine - una TM che riceve una descrizione di un'altra TM quindi emula il funzionamento di quella TM su un input fornito.

n22n

Per un punto di partenza sulla letteratura, posso raccomandare " Sull'esistenza di Universal Finite o Pushdown Automata ", che studia la non esistenza di automi universali. Potresti anche guardare i suoi riferimenti (e così via).


3
Questo è un approccio utile per comprendere intuitivamente diversi livelli di "potere computazionale". Tuttavia, OP sembra pensare che i computer reali siano FSM perché il numero di stati è limitato, ad esempio a causa della RAM finita. Secondo la tua argomentazione, ciò significa che i computer reali sono più simili agli FSM che alle macchine di Turing perché non posso raddoppiare liberamente il numero di stati in una macchina simulata; Non ho un nastro infinito come memoria.
amon

1
Neanche le macchine di Turing devono avere un nastro infinito. I computer possono utilizzare una quantità arbitrariamente grande di memoria esterna nei loro calcoli (e diventa particolarmente facile con i fornitori di cloud che abbiamo oggi), quindi sono fondamentalmente come Turing Machines piuttosto che FSM.
reinierpost,

1
Se supponiamo che un computer abbia una quantità fissa di memoria, la memoria si esaurirà quando si simula un computer con più memoria, quindi con tale presupposto non è davvero universale.
Kaveh,

3

Ciò che rende speciale la macchina Turing è che, pur essendo molto, molto semplice, può eseguire tutti (le classi di) algoritmi a cui possiamo pensare. Non esiste una macchina nota più potente (in quanto può eseguire algoritmi di cui la macchina Turing non è in grado).

Essendo meccanicamente semplice, è facile mostrare se, o fino a che punto, altre macchine sono equivalenti a quelle di Turing. Questo a sua volta rende relativamente semplice mostrare se un determinato computer (o linguaggio informatico) è veramente universale (c / f "Turing-complete").


La domanda riguarda la relazione tra il modello della macchina di Turing e i computer reali. Se supponiamo che un computer abbia una quantità fissa di memoria non è realmente universale.
Kaveh,

1

Perché il modello di automi finito non è abbastanza?

Mentre altre risposte hanno già menzionato molti aspetti rilevanti, ritengo che il forte vantaggio delle macchine Turing rispetto agli automi finiti sia la separazione di dati e programma . Ciò consente di analizzare un programma abbastanza finito e fare dichiarazioni su come quel programma gestirà input diversi, senza limitare le dimensioni dell'input.

Mentre è teoricamente possibile descrivere sia un computer reale sia qualcosa di simile a una macchina di Turing con nastro finito come una macchina a stati, ciò non è realmente fattibile: il numero di stati è esponenziale nella quantità di memoria della vostra macchina e il finito generale Il formalismo dell'automa statale richiede di elencare esplicitamente le transizioni tra questi stati. Quindi per un automa a stati finiti generale di quelle dimensioni è abbastanza impossibile fare delle deduzioni basate su un elenco completo di tutte le transizioni di stato.

Naturalmente, in un vero computer, le transizioni degli stati non possono avvenire in modo arbitrario. Non esiste alcun comando per scambiare un terzo dei bit in memoria in un singolo passaggio del calcolo. Quindi potresti provare a trovare una specifica più compatta per le transizioni di stato. Qualcosa come la specifica del set di istruzioni della tua architettura. Ovviamente, le architetture di computer reali sono complicate per motivi di prestazioni, quindi è possibile semplificare ulteriormente questo, ad un set di istruzioni molto semplice, che esegue solo piccoli passi usando input e output molto limitati. Alla fine potresti scoprire che la tua architettura assomiglia a qualcosa di simile a un interprete di una macchina Turing: usando alcuni bit di codice di programma e un bit di input, genera un po 'di output e spostati nel tuo codice di programma.

Un'alternativa sarebbe usare gli stati di un automa a stati finiti solo per rappresentare i dati elaborati dal programma, mentre codifica il programma stesso nelle transizioni di stato. Ciò implicherebbe lo stesso problema di come enumerare tutti gli stati e una rappresentazione compatta potrebbe essere di nuovo vicina a ciò che fa una macchina di Turing.

Qual è lo scopo di studiare questi modelli molto più forti rispetto ai computer reali?

Nel complesso, direi che una macchina Turing a nastro finito sarebbe probabilmente un modello migliore per i computer reali. Ma per molte questioni scientifiche, la distinzione tra un nastro finito ma grande e un nastro infinito è irrilevante, quindi solo rivendicare un nastro infinito rende le cose più facili. Per altre domande, la quantità di nastro utilizzata è al centro della domanda, ma il modello consente facilmente di parlare della quantità di utilizzo del nastro senza la seccatura di specificare cosa succede se il calcolo si esaurisce.


1

La maggior parte dei problemi richiede macchine di Turing di dimensioni finite

Sebbene l'ipotesi che il nastro illimitato sia un'utile semplificazione, la maggior parte dei problemi / algoritmi richiede infatti una quantità finita di nastro e i limiti della memoria richiesta (possibilmente a seconda della dimensione dell'input) possono essere analizzati e spesso dimostrati.

Questo spesso si generalizza anche ad altri tipi di computer (per i quali l'analisi o la prova rilegata può essere molto più complicata rispetto a una macchina Turing) e consente di stimare la quantità di memoria temporanea richiesta per un particolare problema - può essere eseguita in un numero fisso di spazio? Proporzionale all'ingresso? Richiede quantità esponenziali di spazio man mano che gli input crescono?


1

Una caratteristica importante delle macchine di turing che gli automi finiti non condividono è che possono ridimensionare la quantità di memoria necessaria per risolvere il problema con le dimensioni del problema .

nn2

Il punto: molti problemi hanno soluzioni naturali che usano più memoria più grande è il problema. Pertanto, è naturale descrivere queste soluzioni con rappresentazioni che possono utilizzare la memoria infinita, non perché una sola istanza utilizzerà quantità infinite di essa, ma perché esiste un'istanza che utilizza ciascuna quantità. Puoi farlo con macchine turing, ma anche con sequenze di automi finiti.


In una nota correlata, se una macchina di Turing con stati N viene avviata con un nastro che ha un numero finito di C caratteri non vuoti prima e dopo la posizione iniziale, ci sarà un numero T (N, C) tale che qualsiasi macchina che potrà mai terminare potrebbe essere emulato da una macchina una macchina il cui nastro era limitato a caratteri T (N, C).
supercat

-2

I computer reali hanno una memoria limitata e solo un numero limitato di stati. Quindi sono essenzialmente automi finiti.

Le macchine di Turing sono derivati ​​di automi finiti. Le macchine di Turing sono praticamente architettura von Nuemann.

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.