Che tipo di automa è Turing Doodle di Google?


10

In occasione del compleanno di Alan Turing, Google ha pubblicato uno scarabocchio che mostra una macchina. Che tipo di macchina è il doodle? Può esprimere una lingua completa di Turing?

Ci sono ovvie differenze con la classica macchina da turismo: un nastro finito, i vincoli su come collegare lo stato, ...

Il doodle è ancora disponibile qui Schermata del doodle

(Il display in alto a destra mostra l'output previsto.)

Il nastro nel mezzo è diviso in quadrati che possono contenere uno spazio vuoto, uno zero o uno. La testa è posizionata sopra uno dei quadrati e viene utilizzata per leggere e scrivere.

Sotto il nastro puoi vedere una freccia verde su cui puoi fare clic per avviare la macchina. Ci sono due linee di cerchi accanto, alcune delle quali sono collegate. Li chiamerò "stati".

Dopo l'avvio della macchina, il primo stato a destra del pulsante verde si illumina, quindi il successivo a destra e così via ... Ogni stato contiene uno dei seguenti comandi:

  • vuoto = non fare nulla (passa allo stato successivo)
  • 1 = scriverne uno sul nastro nella posizione corrente della testina
  • 0 = scrive uno zero sul nastro nella posizione corrente della testina
  • freccia a sinistra = sposta la testa di un passo a sinistra
  • freccia a destra = sposta la testa di un passo a destra
  • condizione: se il valore sotto la testa è uguale al valore mostrato nel quadrato, scendi alla seconda linea di stati. in caso contrario, passa allo stato successivo a destra
  • salto a sinistra: ritorno a uno stato (fisso) precedente ma solo nella riga superiore [inizialmente avevo dimenticato quello, grazie @Marzio!]

Non c'è modo di "sovrapporre" due salti (uno sopra l'altro). La macchina si ferma quando lascia uno stato e non vi è alcuno stato successivo alla sua destra.

(Dopo che la macchina si ferma, il contenuto del nastro viene confrontato con il contenuto del display, ma non ritengo che faccia parte delle funzionalità previste della macchina.)


9
Una macchina di Turing, ovviamente! en.wikipedia.org/wiki/Turing_machine Forse eri confuso perché il sistema di transizione è funky.
Huck Bennett,

C'è anche un "operatore di salto a sinistra" nel motore di controllo che consente di tornare a una posizione precedente ma solo nella riga superiore; inoltre non c'è modo di "sovrapporre" due salti (uno sopra l'altro). Senza l'operatore di salto la macchina equivale a un DFA (le azioni nel motore di controllo vengono "eseguite" da sinistra a destra), ma anche con l' operatore di salto sinistro limitato la macchina non sembra abbastanza potente per simulare un LBA (ma non l'ho fatto non pensarci troppo). In ogni caso non può essere Turing completo perché il nastro è finito.
Marzio De Biasi,

1
@Marzio De Biasi: Hai ragione nel dire che questo puzzle contiene istruzioni di salto e senza di esse il modello è ovviamente molto debole perché una macchina può funzionare solo per un tempo costante. (Non sono sicuro di cosa intendi per "equivalente a un DFA".) Quale restrizione hai inserito nelle istruzioni di salto potrebbe cambiare la risposta. "Il nastro è finito" è probabilmente un presupposto errato.
Tsuyoshi Ito,

Google mantiene disponibili i loro scarabocchi (sebbene apparentemente non sempre le versioni interattive).
Raphael,

@TsuyoshiIto: Voglio dire (ma forse mi sbaglio) che, dato un computer senza loop, puoi creare un DFA che lo simula. Se si consentono salti arbitrari in entrambe le direzioni e che possono sovrapporsi, la macchina sta immediatamente "completando il turing" (presupponendo un nastro infinito) anche con solo due file (gli stati possono essere "appiattiti" in orizzontale). Non so cosa succede se si consentono i salti di sinistra che possono sovrapporsi (ma solo nella prima riga) e un numero arbitrario di righe (ma il controllo sulle righe inferiori può essere solo su o giù). Forse è una bella domanda per cs.stackexchange.com
Marzio De Biasi,

Risposte:


10

Supponendo che:

  • possiamo aggiungere un numero arbitrariamente elevato di righe ("righe di stato")
  • le file possono essere arbitrariamente lunghe
  • il nastro è infinito

Ho cercato di costruire una configurazione della macchina Doodle di Alan Turing che emuli la macchina descritta in " Piccole macchine di Turing e concorrenza generalizzata sui castori indaffarati " che ha un problema di arresto che dipende da un problema aperto (per quanto ne so) simile a Collatz. L'immagine completa è disponibile qui .M4

atdoodle

... quindi anche se il Doodle dell'AT forse non è completo di Turing (a causa dell'operatore di salto solo sinistro non sovrapposto disponibile solo nella prima riga), è abbastanza potente da percorrere la linea sottile della (non) decidibilità: - D

EDIT: TURING DOODLE È COMPLETAMENTE TURING

(Lascio la risposta precedente sopra, perché non sono sicuro che questa parte sia corretta :-)

Penso che anche con un singolo salto non sovrapposto a sinistra il Turing Doodle sia Turing completo! . L'idea (semplice) è quella di utilizzare il nastro stesso per memorizzare lo stato corrente e utilizzare più celle per rappresentare un alfabeto più grande.

Ad esempio un 2 stati 8 simboli TM possono essere simulati usando la seguente rappresentazione nastro:

    HEAD POSITION
    v
...[s][b2 b1 b0] [_][b2 b1 b0] [_][b2 b1 b0] ....
   ^^^^^^^^^^^^^
    "macro cell"

Il doodle di Turing può:

  1. s
  2. b2,b1,b0
  3. scrivere il simbolo successivo, spostare la testa nella "cella macro" a sinistra o a destra e memorizzare su di essa lo stato successivo; nella figura seguente queste operazioni (che possono essere eseguite su una sequenza di celle usando le azioni muovi sinistra / destra e scrivi) sono chiamate "MW";
  4. infine trasferisci il controllo nella riga superiore che con un singolo salto a sinistra riporterà il controllo al passaggio 1.

L'immagine completa è disponibile qui .

TdoodleTC

TMDM


Nooo! Mi hai battuto sul tempo! Stavo solo scrivendo come realizzare una TM arbitraria nello spazio degli stati invece che sul nastro. Tuttavia, il tuo approccio è migliore poiché utilizza solo un salto. Molto bene! Aspetta, in che modo la tua macchina riceve input?
Artem Kaznatcheev

@ marzio-de-biasi Bel lavoro!
pepper_chico,

1
@ArtemKaznatcheev: riceve input sul nastro; ovviamente devi codificarlo secondo i simboli alfabetici originali della TM che stai emulando e lasciare spazi vuoti per la rappresentazione dello stato.
Marzio De Biasi,

Il marchio junior alen turing. Mi è piaciuto leggere questo
iDroid il

non completamente convinto della completezza di TM. non pensare di aver gestito il caso in cui la TM scrive in nuovi quadrati vuoti non precedentemente definiti sul nastro di input. ciò è necessario per la completezza della TM, altrimenti è solo un calcolo finito.
vzn,

5

La macchina viene fornita con un "nastro", (analogo della carta) che la attraversa, e divisa in sezioni (chiamate "quadrati") ciascuna in grado di recare un "simbolo". In qualsiasi momento c'è un solo quadrato, ad esempio il r-esimo, con il simbolo S (r) che è "nella macchina". Possiamo chiamare questo quadrato il "quadrato scannerizzato". Il simbolo sul riquadro scansionato può essere chiamato "simbolo scansionato". Il "simbolo scansionato" è l'unico di cui la macchina è, per così dire, "direttamente consapevole". Tuttavia, alterando la sua configurazione m la macchina può effettivamente ricordare alcuni dei simboli che ha "visto" (scansionato) in precedenza. Il possibile comportamento della macchina in qualsiasi momento è determinato dalla configurazione m qn e dal simbolo scansionato S (r). Questa coppia qn, S (r) verrà chiamata "configurazione": quindi la configurazione determina il possibile comportamento della macchina. In alcune delle configurazioni in cui il quadrato scansionato è vuoto (cioè non porta alcun simbolo) la macchina annota un nuovo simbolo sul quadrato scansionato: in altre configurazioni cancella il simbolo scansionato. La macchina può anche cambiare il quadrato da scansionare, ma solo spostandolo di un posto a destra o sinistra. Oltre a una di queste operazioni, è possibile modificare la configurazione m. Alcuni dei simboli scritti {232} formeranno la sequenza di cifre che è il decimale del numero reale che viene calcolato. Le altre sono solo note approssimative per "aiutare la memoria". Saranno solo queste note approssimative che potrebbero essere cancellate. non porta alcun simbolo) la macchina annota un nuovo simbolo sul quadrato scansionato: in altre configurazioni cancella il simbolo scansionato. La macchina può anche cambiare il quadrato da scansionare, ma solo spostandolo di un posto a destra o sinistra. Oltre a una di queste operazioni, è possibile modificare la configurazione m. Alcuni dei simboli scritti {232} formeranno la sequenza di cifre che è il decimale del numero reale che viene calcolato. Le altre sono solo note approssimative per "aiutare la memoria". Saranno solo queste note approssimative che potrebbero essere cancellate. non porta alcun simbolo) la macchina annota un nuovo simbolo sul quadrato scansionato: in altre configurazioni cancella il simbolo scansionato. La macchina può anche cambiare il quadrato da scansionare, ma solo spostandolo di un posto a destra o sinistra. Oltre a una di queste operazioni, è possibile modificare la configurazione m. Alcuni dei simboli scritti {232} formeranno la sequenza di cifre che è il decimale del numero reale che viene calcolato. Le altre sono solo note approssimative per "aiutare la memoria". Saranno solo queste note approssimative che potrebbero essere cancellate. Alcuni dei simboli scritti {232} formeranno la sequenza di cifre che è il decimale del numero reale che viene calcolato. Le altre sono solo note approssimative per "aiutare la memoria". Saranno solo queste note approssimative che potrebbero essere cancellate. Alcuni dei simboli scritti {232} formeranno la sequenza di cifre che è il decimale del numero reale che viene calcolato. Le altre sono solo note approssimative per "aiutare la memoria". Saranno solo queste note approssimative che potrebbero essere cancellate.

Ritengo che queste operazioni includano tutte quelle utilizzate nel calcolo di un numero. La difesa di questa tesi sarà più facile quando la teoria delle macchine è familiare al lettore. Nella sezione successiva procedo quindi allo sviluppo della teoria e presumo che sia compreso cosa si intende per "macchina", "nastro", "scannerizzato", ecc.

Questo è un estratto dall'articolo originale di Turing "Sui numeri calcolabili, con un'applicazione al problema di Entscheidungs".

Un buon compagno moderno del documento che raccomando è The Annotated Turing di Charles Petzold.

Come puoi vedere, Google ha appena tentato di assomigliare a una macchina che è molto simile alla descrizione di Turing.

EDIT: Supponendo che l'alfabeto completo di Google TM sia quello mostrato alla fine del gioco dopo aver fatto clic sull'icona del coniglietto , e prendendo dal fatto che sta producendo una sequenza infinita , abbiamo più righe e colonne (quindi possiamo presumere che possiamo aggiungere qualsiasi ), ha lasciato i salti (e anche sovrapposti i salti di sinistra) in qualsiasi riga , ha un salto condizionale e incondizionato tra le file adiacenti, penso che sia Turing completo .


ma hanno effettivamente implementato una macchina turing? questo ha un nastro finito, quindi questa è una differenza facilmente riconoscibile. è una differenza che fa la differenza? hanno effettivamente implementato una macchina più debole?
Bjelli,

2
@bjelli Beh, non posso assicurarlo perché dal momento che non l'ho progettato, non conosco tutte le regole sulla loro macchina. Ma, se raggiungi la finale del gioco, puoi fare clic sull'icona Bunny che ti porta a un nastro più lungo, controlla qui l'analisi: sbf5.com/~cduan/technical/turing . Pertanto, potrebbe non esserci alcun vincolo sul numero di linee che la macchina può ottenere, il che porterebbe a un nastro di qualsiasi dimensione.
pepper_chico,

per favore, elabora una prova del completamento di Turing
vzn,

4

Nei puzzle, i salti sono consentiti su entrambe le linee, ma non possono sovrapporsi. Alla fine della sequenza del coniglio alla fine del gioco, consentono salti su ogni linea e possono essere nidificati con parentesi quadre così [[)] è permesso, ma ([)] sembra non essere permesso.

Userò i seguenti presupposti:

  1. 01ϵ
  2. La macchina può utilizzare qualsiasi numero fisso di linee
  3. I salti a sinistra sono consentiti su qualsiasi linea (userò un salto a sinistra per linea)
  4. ϵ01

Con questi presupposti, Google Doodle Machine è Turing Complete .

01ε01n

3(n-1)+15n+1

Google Doodle Machine

ε01ε0101

GDM simula la TM come segue:

  1. 1
  2. j
  3. ε01
  4. ε
  5. 01
  6. 01

Scegli la tua TM universale preferita e implementala nella procedura sopra per ottenere un GDM universale.

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.