Perché il nastro non fa parte della definizione di Turing Machine?


11

Mi chiedevo perché il nastro / i nastri non facessero parte della definizione formale di una macchina di Turing. Considera, ad esempio, la definizione formale di una macchina Turing sulla pagina di Wikipedia . La definizione, che segue Hopcroft e Ullman, comprende: l'insieme finito di stati , l' alfabeto a nastro , il simbolo vuoto , lo stato iniziale , l'insieme di stati finali , e la funzione di transizione . Nessuno dei quali è il nastro stesso.Q ΓBΓq0QFQδ:(QF)×ΓQ×Γ×{L,R}

Si considera sempre che una macchina di Turing funzioni su un nastro e la funzione di transizione viene interpretata come muovere la testa, sostituire il simbolo e cambiare stato. Quindi, perché il nastro viene lasciato fuori dalla definizione matematica di una macchina di Turing?

Da quello che posso vedere, la definizione formale in sé non sembra implicare che la Turing Machine funzioni come viene spesso descritta in modo informale (con una testa che si muove su un nastro). O lo fa?


1
la prossima sezione di Wikipedia dice: "Nelle parole di van Emde Boas (1990), p. 6:" L'oggetto set-teorico [la sua descrizione formale di sette tuple simile a quella sopra] fornisce solo informazioni parziali su come si comporterà la macchina e come saranno i suoi calcoli. "" è abbastanza simile alla dicotomia software / hardware / sinergia / interdipendenza. il software presuppone un hardware particolare su cui viene eseguito. se qualcuno scoprisse del software in futuro, non potrebbe capirne il "significato" senza capire anche l'hardware su cui gira.
vzn,

Perché la strada non fa parte della macchina?
Andrej Bauer,

Risposte:


8

Per definire formalmente un'istanza di una macchina Turing (non il concetto generale) non è necessario menzionare esplicitamente il nastro stesso o il suo contenuto. Per indicare una configurazione di questa particolare macchina o un calcolo eseguito da essa, ovvero quando è necessaria una qualche forma di notazione per descrivere il contenuto del nastro.


Quindi è necessario un nastro per definire una configurazione e un calcolo, solo?
Shuzheng,

Sì, la macchina funziona solo sul nastro. Diversi contenuti del nastro non creano macchine diverse.
André Souza Lemos,

1
In altre parole: la domanda cita solo la sintassi delle TM. Solo quando si definisce la semantica il nastro entra nell'immagine. (Analogia: la definizione della sintassi di C (o qualsiasi altro linguaggio di programmazione) non menziona nemmeno l'architettura hardware presunta / l'insieme di istruzioni OS / CPU.)
Raffaello

Anche semanticamente, è naturale pensare che la macchina rimanga la stessa macchina anche quando il contenuto del nastro cambia. (Formalmente, questo non è il caso, poiché i contenuti iniziali fanno parte della definizione della macchina.)
reinierpost

2

E 'un po' zona grigia, ma direi che la definizione divide il modello dal istanza . Se desideri avere un'idea semplice in mente, pensa all'hardware o al software.

Il modello è l'hardware: è una testa. C'è un nastro. Il nastro è infinito su un lato e contiene spazi vuoti (oltre all'input). La testa può muoversi di un passo alla volta.

L' istanza è il software: l'ingresso determina cosa tiene il nastro all'inizio, la funzione stato / transizione indica come si muove la testina e come "lavora" la macchina. Gli stati finali danno il significato di successo / fallimento.

Entrambi i parametri sono configurabili --- entrambi possono essere modificati. Esistono modelli alternativi con due nastri, due testine, nastri a due lati, nastro non vuoto, ecc. Ma una volta risolto il modello, è necessario regolare gli altri parametri "configurabili", come il numero di stati possibili e la funzione di transizione .

PMpun'ttern


1

Qui già buone risposte, ma provo a farne una breve.

Le definizioni non devono essere in eccesso o verbose.

In effetti, la definizione della macchina di Turing definisce anche l'astrazione del nastro. Il q0 - è l' inizio del nastro. L'alfabeto è un contenuto del nastro. E δ: (Q ∖ F) × Γ → Q × Γ × {L, R} afferma che il nastro ha lasciato e destra e l'infinito in entrambe le direzioni.

Quindi, nastro, testa, sposta solo rappresentazioni del modello a misura d'uomo, sono già nel modello matematico , ma non sono esse stesse un modello formale.


1

Les fornisce una risposta concisa e corretta: le definizioni matematiche sono il più concise possibile e includere esplicitamente un nastro infinito in una definizione di una macchina di Turing renderebbe la sua definizione molto meno concisa, quindi non lo facciamo.

Questo non risponde alla domanda: perché ? Come può la definizione escludere il nastro infinito quando ne abbiamo bisogno?

La risposta: noi no. In un certo senso, le macchine di Turing in realtà non richiedono nastri infiniti e la loro definizione lo rende chiaro.

Per definizione, il movimento di una macchina Turing porta la macchina da una configurazione all'altra; una configurazione include una stringa finita , che consideriamo un frammento finito di nastro scritto. Ciascuna mossa sposta la testina di una posizione o sovrascrive il simbolo sotto la testina. Tuttavia - e questo è essenziale per il suo funzionamento:

  • B
  • possiamo farlo all'infinito spesso .

nn

Un modo per riformulare questo è dire: la macchina opera su un nastro infinito, interamente riempito di spazi vuoti, ad eccezione di un frammento finito su cui si trova la sua testina. Questo è ciò che dice la maggior parte delle spiegazioni.

Un altro modo di riformulare questo è dire: la macchina funziona su un nastro finito, esteso con spazi vuoti ogni volta che la sua testa si sposta dal nastro alle due estremità.

Questi sono entrambi modi validi per concettualizzare il funzionamento della macchina: in entrambi i casi, se in realtà una macchina funzionasse in quel modo, implementerebbe correttamente una macchina di Turing.

Se tutto ciò che ti interessa è insegnare agli studenti come funzionano le macchine di Turing, probabilmente non importa quale concettualizzazione scegli.

Tuttavia, penso che la prima concettualizzazione sia un errore, per due motivi:

  • Non è realistico . Non possiamo effettivamente costruire una macchina con un nastro infinito. Siamo in grado di costruire una macchina con un nastro finita esteso su richiesta.
  • È controintuitivo. Non pensiamo che le macchine che svolgono attività arbitrariamente spesso contengano una quantità infinita di risorse. Ad esempio, non pensiamo che una fotocopiatrice contenga una quantità infinita di carta da copia. Le macchine di Turing modellano l'attività dell'informatica. Modellano cosa accadrebbe se sostituissimo un computer (che, al momento della sua invenzione, era una donna che eseguiva calcoli su carta) con una macchina in grado di eseguire calcoli programmabili arbitrari. Non pensiamo a quella donna come a contenere una quantità infinita di carta. Piuttosto, supponiamo che le verrà fornita tutta la quantità di carta di cui ha bisogno, e consideriamo un fallimento nel farlo come un fallimento dell'ambiente, piuttosto che dire che una donna del genere non può esistere. Perché non fare lo stesso per la macchina?
  • Invita conclusioni fuorvianti. L'ho visto molto. Per esempio:
    • La gente dice che le macchine di Turing non possono essere effettivamente costruite, mentre le macchine a stati finiti possono farlo. Bene, non possiamo costruire arbitrarie macchine a stati finiti più grandi di quanto non possiamo fornire quantità arbitrarie di nastro a una macchina di Turing.
    • La gente dice che le macchine di Turing non modellano correttamente i computer, mentre le macchine a stati finiti lo fanno. Questo serve a fare un punto importante: se tutto ciò che ci interessa è usare una macchina per decidere le lingue di input, allora un computer che funziona solo sulla sua memoria interna (fissa) può implementare completamente qualsiasi macchina a stati finiti fino a una certa dimensione, mentre non può implementare completamente la maggior parte delle macchine Turing, poiché rimarrà a corto di memoria interna per molte di esse. Tuttavia, questo è spesso generalizzato dicendo: i computer sono macchine a stati finiti, il che è fuorviante:
      • Non dipinge un'immagine realistica della maggior parte della programmazione per computer. In effetti, la programmazione del flusso di dati è in realtà basata su macchine a stati finiti, ma la programmazione imperativa tradizionale non lo è; utilizza programmi molto più vicini alle istanze di macchine di Turing.
      • In pratica, i computer interagiscono anche con fonti esterne di input, output e storage di dimensioni non fisse.
      • Le macchine di Turing non dovrebbero in primo luogo modellare i computer; modellano il calcolo arbitrario.

Riassumendo: l'idea delle macchine di Turing che usano o contengono un nastro infinito serve a enfatizzare un importante punto tecnico, ma non è necessariamente il modo più intuitivo di pensare alle macchine di Turing e invita alcune conclusioni errate. Usare con cautela.

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.