Quel type d'automate est le Turing Doodle de Google?

10

Pour célébrer l'anniversaire d'Alan Turing, Google a publié un doodle montrant une machine. Quel type de machine est le doodle? Peut-il exprimer une langue Turing Complete?

Il existe des différences évidentes avec la machine de turing classique: une bande finie, des contraintes dans la façon dont l'état peut être connecté, ...

Le doodle est toujours disponible ici Capture d'écran du doodle

(L'affichage en haut à droite montre la sortie attendue.)

La bande au milieu est divisée en carrés pouvant contenir un blanc, un zéro ou un. La tête est positionnée au-dessus de l'un des carrés et est utilisée pour la lecture et l'écriture.

Sous la bande, vous pouvez voir une flèche verte sur laquelle vous pouvez cliquer pour démarrer la machine. Il y a deux lignes de cercles à côté, dont certaines sont connectées. Je les appellerai "états".

Après le démarrage de la machine, le premier état à droite du bouton vert s'allume, puis le suivant à droite, et ainsi de suite ... Chaque état contient l'une des commandes suivantes:

  • vide = ne rien faire (passer simplement à l'état suivant)
  • 1 = écrire un sur la bande à la position actuelle de la tête
  • 0 = écrire un zéro sur la bande à la position actuelle de la tête
  • flèche vers la gauche = déplacer la tête d'un pas vers la gauche
  • flèche vers la droite = déplacer la tête d'un pas vers la droite
  • condition: si la valeur sous la tête est égale à la valeur indiquée dans le carré, descendez à la deuxième ligne d'états. sinon, passez à l'état suivant vers la droite
  • saut à gauche: revenir à un état précédent (fixe) mais uniquement sur la ligne supérieure [J'avais initialement oublié celui-là, merci @Marzio!]

Il n'y a aucun moyen de "superposer" deux sauts (l'un sur l'autre). La machine s'arrête lorsqu'elle quitte un état et il n'y a pas d'état suivant à sa droite.

(Après l'arrêt de la machine, le contenu de la bande est comparé au contenu de l'écran, mais je ne considère pas que cela fait partie des fonctionnalités prévues de la machine.)

bjelli
la source
9
Une machine de Turing, bien sûr! en.wikipedia.org/wiki/Turing_machine Peut-être que vous étiez confus parce que le système de transition est génial.
Huck Bennett
Il y a aussi un "opérateur de saut gauche" dans le moteur de commande qui permet de revenir à une position précédente mais uniquement sur la rangée supérieure; de plus, il n'y a aucun moyen de "superposer" deux sauts (l'un sur l'autre). Sans l'opérateur de saut, la machine est équivalente à un DFA (les actions dans le moteur de contrôle sont "exécutées" de gauche à droite), mais aussi avec l' opérateur de saut gauche limité , la machine ne semble pas assez puissante pour simuler un LBA (mais je n'ai pas fait '' y pense pas trop). Dans tous les cas, il ne peut pas être Turing complet car la bande est finie.
Marzio De Biasi
1
@Marzio De Biasi: Vous avez raison de dire que ce puzzle contient des instructions de saut, et sans elles, le modèle est évidemment très faible car une machine ne peut fonctionner que pendant un temps constant. (Je ne sais pas ce que vous entendez par «équivalent à un DFA».) La restriction que vous imposez aux instructions de saut pourrait changer la réponse. «La bande est finie» est probablement une hypothèse incorrecte.
Tsuyoshi Ito
Google garde ses griffonnages disponibles (bien qu'apparemment pas toujours les versions interactives).
Raphael
@TsuyoshiIto: Je veux dire (mais peut-être que je me trompe) que, étant donné une machine sans boucles, vous pouvez créer un DFA qui le simule. Si vous autorisez des sauts arbitraires dans les deux sens et que cela peut se chevaucher, alors la machine est immédiatement "terminée" (en supposant une bande infinie) même avec seulement deux rangées (les états peuvent être "aplatis" horizontalement). Je ne sais pas ce qui se passe si vous autorisez les sauts à gauche qui peuvent se chevaucher (mais uniquement sur la première ligne) et un nombre arbitraire de lignes (mais le contrôle sur les lignes inférieures ne peut être que monter ou descendre). C'est peut-être une bonne question pour cs.stackexchange.com
Marzio De Biasi

Réponses:

10

En admettant que:

  • nous pouvons ajouter un nombre arbitrairement élevé de lignes ("lignes d'état")
  • les rangées peuvent être arbitrairement longues
  • la bande est infinie

M4

atdoodle

... donc même si le Doodle de l'AT n'est peut - être pas Turing complet (en raison de l'opérateur de saut gauche qui ne se chevauche pas uniquement disponible dans la première rangée), il est assez puissant pour parcourir la fine ligne de (non) décidabilité: - ré

EDIT: TURING DOODLE EST TURING COMPLET

(Je laisse la réponse précédente ci-dessus, car je ne suis pas sûr que cette partie soit correcte :-)

Je pense que même avec un seul saut gauche sans chevauchement, le Turing Doodle est Turing complet! . L'idée (simple) est d'utiliser la bande elle-même pour stocker l'état actuel et d'utiliser plusieurs cellules pour représenter un alphabet plus grand.

Par exemple, une MT à 2 états et 8 symboles peut être simulée en utilisant la représentation de bande suivante:

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

Le doodle Turing peut:

  1. s
  2. b2,b1,b0
  3. écrivez le symbole suivant, déplacez la tête vers la "macro-cellule" à gauche ou à droite et enregistrez-y l'état suivant; dans la figure ci-dessous, ces opérations (qui peuvent être effectuées sur une séquence de cellules en utilisant les actions se déplacer vers la gauche / droite et écrire) sont appelées "MW";
  4. enfin, transférez le contrôle à la rangée supérieure qui, avec un seul saut à gauche, ramènera le contrôle à l'étape 1.

L'image complète est disponible ici .

TdoodleTC

TMDM

Marzio De Biasi
la source
non! tu m'as battu dessus! J'écrivais juste comment faire une MT arbitraire dans l'espace d'état au lieu de la bande. Cependant, votre approche est plus agréable car elle n'utilise qu'un seul saut. Bien joué! Attendez, comment votre machine reçoit-elle les entrées?
Artem Kaznatcheev
@ marzio-de-biasi Beau travail!
pepper_chico
1
@ArtemKaznatcheev: il reçoit une entrée sur la bande; vous devez évidemment l'encoder en conséquence avec les symboles de l'alphabet d'origine de la MT que vous émulez et laisser des espaces vides pour la représentation de l'état.
Marzio De Biasi
La marque du junior alen turing. J'ai aimé lire ceci
iDroid
pas entièrement convaincu de l'exhaustivité de la MT. ne pensez pas que vous avez géré le cas où le TM écrit dans de nouveaux carrés vierges non définis précédemment sur la bande d'entrée. cela est nécessaire pour l'exhaustivité de la MT, sinon ce n'est qu'un calcul fini.
vzn
5

La machine est fournie avec une «bande» (l'analogue du papier) qui la traverse et divisée en sections (appelées «carrés») pouvant chacune porter un «symbole». À tout moment, il n'y a qu'un seul carré, disons le r-ème, portant le symbole S (r) qui est «dans la machine». Nous pouvons appeler ce carré le «carré scanné». Le symbole sur le carré scanné peut être appelé le «symbole scanné». Le «symbole scanné» est le seul dont la machine est, pour ainsi dire, «directement consciente». Cependant, en modifiant sa configuration m, la machine peut effectivement se souvenir de certains des symboles qu'elle a «vus» (scannés) précédemment. Le comportement possible de la machine à tout moment est déterminé par la configuration m qn et le symbole numérisé S (r). Cette paire qn, S (r) sera appelée la «configuration»: ainsi la configuration détermine le comportement possible de la machine. Dans certaines configurations dans lesquelles le carré numérisé est vierge (c'est-à-dire sans symbole), la machine écrit un nouveau symbole sur le carré numérisé: dans d'autres configurations, elle efface le symbole numérisé. La machine peut également modifier le carré en cours de numérisation, mais uniquement en le déplaçant d'un endroit vers la droite ou la gauche. En plus de n'importe laquelle de ces opérations, la configuration m peut être modifiée. Certains des symboles écrits {232} formeront la séquence de chiffres qui est la décimale du nombre réel qui est calculé. Les autres ne sont que des notes brutes pour «aider la mémoire». Ce ne seront que ces notes brutes qui seront susceptibles de s'effacer. ne porte aucun symbole), la machine écrit un nouveau symbole sur le carré numérisé: dans d'autres configurations, elle efface le symbole numérisé. La machine peut également modifier le carré en cours de numérisation, mais uniquement en le déplaçant d'un endroit vers la droite ou la gauche. En plus de n'importe laquelle de ces opérations, la configuration m peut être modifiée. Certains des symboles écrits {232} formeront la séquence de chiffres qui est la décimale du nombre réel qui est calculé. Les autres ne sont que des notes brutes pour «aider la mémoire». Ce ne seront que ces notes brutes qui seront susceptibles de s'effacer. ne porte aucun symbole), la machine écrit un nouveau symbole sur le carré numérisé: dans d'autres configurations, elle efface le symbole numérisé. La machine peut également modifier le carré en cours de numérisation, mais uniquement en le déplaçant d'un endroit vers la droite ou la gauche. En plus de n'importe laquelle de ces opérations, la configuration m peut être modifiée. Certains des symboles écrits {232} formeront la séquence de chiffres qui est la décimale du nombre réel qui est calculé. Les autres ne sont que des notes brutes pour «aider la mémoire». Ce ne seront que ces notes brutes qui seront susceptibles de s'effacer. Certains des symboles écrits {232} formeront la séquence de chiffres qui est la décimale du nombre réel qui est calculé. Les autres ne sont que des notes brutes pour «aider la mémoire». Ce ne seront que ces notes brutes qui seront susceptibles de s'effacer. Certains des symboles écrits {232} formeront la séquence de chiffres qui est la décimale du nombre réel qui est calculé. Les autres ne sont que des notes brutes pour «aider la mémoire». Ce ne seront que ces notes brutes qui seront susceptibles de s'effacer.

Je pense que ces opérations incluent toutes celles qui sont utilisées dans le calcul d'un nombre. La défense de cette affirmation sera plus facile lorsque la théorie des machines sera familière au lecteur. Dans la section suivante, je procède donc au développement de la théorie et suppose que l'on comprend ce que l'on entend par «machine», «bande», «numérisé», etc.

Ceci est un extrait de l'article original de Turing "Sur les nombres calculables, avec une application au problème Entscheidungs".

Un bon compagnon moderne pour le papier que je recommande est The Annotated Turing de Charles Petzold.

Comme vous pouvez le voir, Google a juste essayé de ressembler à une machine qui est très similaire à la description de Turing.

EDIT: en supposant que l'alphabet complet de Google TM est celui affiché à la fin du jeu après avoir cliqué sur l' icône du lapin , et en tenant compte du fait qu'il produit une séquence infinie , a obtenu plus de lignes et de colonnes (nous pouvons donc supposer que nous pouvons ajouter n'importe quel ), a des sauts à gauche (et aussi des sauts à gauche qui se chevauchent ) à n'importe quelle ligne , a un saut conditionnel et inconditionnel entre les rangées adjacentes, je pense que c'est Turing complet .

pepper_chico
la source
mais ont-ils implémenté une machine de turing? celui-ci a une bande finie, c'est donc une différence facilement discernable. est-ce une différence qui fait la différence? ont-ils en fait mis en œuvre une machine plus faible?
bjelli
2
@bjelli Eh bien, je ne peux pas le garantir car, comme je ne l'ai pas conçu, je ne connais pas toutes les règles concernant leur machine. Mais, si vous atteignez la finale du jeu, vous pouvez cliquer sur l'icône Bunny qui vous mène à une bande plus longue, consultez l'analyse ici: sbf5.com/~cduan/technical/turing . Ainsi, il ne peut y avoir aucune contrainte sur le nombre de lignes que la machine peut obtenir, ce qui vous mènerait à une bande de n'importe quelle taille.
pepper_chico
plz esquisse une preuve que son Turing est complet
vzn
4

Dans les puzzles, les sauts sont autorisés sur les deux lignes, mais ils ne peuvent pas se chevaucher. Au dernier doodle de séquence de lapin à la fin du jeu, ils autorisent les sauts sur chaque ligne et ils peuvent être imbriqués entre parenthèses et [()] est autorisé, mais ([)] ne semble pas être autorisé.

J'utiliserai les hypothèses suivantes:

  1. 01ϵ
  2. La machine peut utiliser n'importe quel nombre fixe de lignes
  3. Les sauts à gauche sont autorisés sur n'importe quelle ligne (j'utiliserai un saut à gauche par ligne)
  4. ϵ01

Avec ces hypothèses, la machine Google Doodle est terminée .

01ϵ01n

3(n1)+15n+1

Google Doodle Machine

ϵ01ϵ0101

Le GDM simule le TM comme suit:

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

Choisissez votre TM universel préféré et implémentez-le dans la procédure ci-dessus pour obtenir un GDM universel.

Artem Kaznatcheev
la source