Castor affairé

Castor affairé
Page d'aide sur l'homonymie Pour les articles homonymes, voir castor.

En mathématiques, et plus précisément en théorie de la calculabilité, le castor affairé, dont le nom a été proposé par le mathématicien hongrois Tibor Radó, est l'un des premiers exemples de fonction non calculable. Un castor affairé est une machine de Turing à n états qui écrit un maximum de « 1 » sur son ruban avant de s'arrêter. Déterminer le « castor affairé » pour un nombre n donné est un problème insoluble algorithmiquement ; en pratique on ne peut même pas espérer le résoudre pour un nombre n au-delà de 10. Ce problème abstrait a été, dès son origine, illustré par un jeu.

Sommaire

Le jeu du castor affairé

Biber-drawing.jpg

Imaginons un jeu, que nous appelons le « castor affairé ». Dans ce jeu, il y a trois objets :

  • Un ruban « infini » constitué d'une infinité de cases
  • Une machine qui peut écrire soit 0 soit 1 sur chaque case du ruban
  • Une liste de n instructions déterminant le comportement de cette machine

Le but du jeu est de trouver l'ensemble des règles qui permet d'écrire le plus de 1 possible sur la bande avant de s'arrêter, en suivant les règles suivantes :

Règle #1 : La machine possède un nombre fini d'états (dont un état spécial STOP). Un état est défini par :

  • son instruction dans la liste d'instructions fournies (appelons les 1, 2, 3, ..., n) ;
  • le symbole (0 ou 1) dans la case courante.

L'état suivant est déterminé par l'état courant de manière unique. Plus précisément, un état donne à la machine une liste d'actions à faire pour aller à l'état suivant (l'ordre est important) à savoir :

  • Une action d'écriture sur la bande infinie. La machine peut écrire un 0, ou un 1.
  • Une action de déplacement de la bande infinie (vers la gauche ou vers la droite).
  • Un arrêt (transition vers l'état STOP)

Règle #2 : La liste d'instructions ne peut pas changer au cours du jeu.

Règle #3 : Le jeu commence à l'instruction 1 avec la bande remplie de 0.

Règle #4 : Le jeu finit tôt ou tard sur l'état STOP (il est donc interdit de faire un ensemble d'instructions qui ne fait qu'écrire une infinité de 1 !).

Avec ces règles, la machine est une machine de Turing à deux symboles.

Exemple, pour n=2

Essayons avec l'ensemble d'instructions suivant :

Instruction n°1 Instruction n°2
Case lue : 0
  • Écrire 1
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 2
  • Écrire 1
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 1
Case lue : 1
  • Écrire 1
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 2
  • Écrire 1
  • Passer à l'état STOP

Nous commençons initialement à l'instruction 1, et le ruban est rempli de 0 (représentés ici par une case vide)

Case lue Instruction :
1

La machine écrit donc 1, déplace le ruban vers la droite et passe à l'instruction 2

Case lue Instruction :
1
1 2

Toujours avec ces instructions, la machine écrit donc 1, déplace le ruban vers la gauche et passe à l'instruction 1.

Case lue Instruction :
1
1 2
1 1 1

Et ainsi de suite, jusqu'à arriver à la situation suivante :

Case lue Instruction :
1
1 2
1 1 1
1 1 2
1 1 1 1
1 1 1 1 2

À ce moment-là, comme indiqué dans les instructions, la machine s'arrête après avoir écrit quatre 1. C'est le mieux qu'on puisse faire avec deux symboles et deux instructions.

Exemple, pour n=6

1 2 3 4 5 6
0
  • Écrire 1
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 2
  • Écrire 0
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 3
  • Écrire 1
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 4
  • Écrire 0
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 5
  • Écrire 0
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 1
  • Écrire 1
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 1
1
  • Écrire 0
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 6
  • Écrire 0
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 4
  • Écrire 1
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 5
  • Écrire 0
  • Déplacer le ruban vers la gauche
  • Passer à l'instruction 4
  • Écrire 1
  • Déplacer le ruban vers la droite
  • Passer à l'instruction 3
  • Écrire 1
  • Passer à l'état STOP

Ce jeu d'instructions permet d'écrire environ 1,2 x 10865 occurrences du symbole 1 en 3 x 101730 étapes. Voir la page de Heiner Marxen pour plus de machines à 6 instructions et les valeurs exactes. Le record confirmé au 30 juin 2010 est de 3,514 x 1018267 symboles 1 en 7,412 x 1036534 étapes.

Le problème du castor affairé

Maintenant que vous êtes devenu un très bon joueur, nous vous proposons de prendre la place de l'arbitre. Des joueurs vont vous soumettre leur liste d'instructions, et vous aimeriez déterminer :

  • Quels sont les joueurs éliminés car ne respectant pas la quatrième règle (la machine doit s'arrêter un jour)
  • Quel est le meilleur joueur, quel est le score de chaque joueur
  • Le meilleur joueur peut il recevoir le titre de "castor affairé" ? (c'est-à-dire qu'il a trouvé la liste d'instructions qui donne le meilleur score)

Ceci est un défi à la calculabilité. On peut démontrer que dans le cas général, on ne peut pas répondre algorithmiquement à la troisième question, car la fonction qui prend comme donnée une machine et répond si elle est ou n'est pas un castor affairé ne peut pas être décrite par un algorithme (par une machine de Turing par exemple). Comme conséquence, on peut affirmer que mêmes les ordinateurs les plus puissants ne pourront jamais décerner le titre de castor affairé à une machine. D'ailleurs dès la valeur 10 (et probablement même bien avant !) et même en utilisant des astuces et des procédés ad hoc c'est sans espoir.

Fonction du castor affairé

Ce qui suit est l'approche formelle du problème.

On voit qu'il n'existe qu'un nombre fini de machines de Turing à n états et 2 symboles. De plus, il est facile de démontrer que certaines s'arrêtent (tout simplement une machine qui écrit 1 puis s'arrête immédiatement après la première action). Maintenant, définissons :

  • En l'ensemble fini et non vide des machines de Turing à n états et 2 symboles qui finissent par s'arrêter ;
  • σ(M) (M étant un élément de En) comme le nombre de 1 écrits par la machine M avant de s'arrêter ;
  • Σ(n) comme étant le maximum de σ sur En ; Σ est la fonction du castor affairé.

Σ est totale et monotone. Elle est totale, car elle est manifestement définie pour tout n ≥ 1, et elle est monotone car on a la certitude que Σ(n) < Σ(n + 1) (si on augmente le nombre d'états permis, cela induit forcément que l'on peut produire plus de 1).

Radó a prouvé que Σ n'est pas calculable ; toutefois, sa valeur est connue pour certains cas particuliers (le plus évident étant Σ(1) = 1, et on peut montrer Σ(2) = 4, Σ(3) = 6 et Σ(4) = 13[1]), et dans d'autres cas la valeur est minorée (il suffit de trouver un exemple pour lequel la machine s'arrête, le nombre de 1 écrits étant donc un minorant).

Démonstration de l'incalculabilité de Σ

Il existe plusieurs moyens de prouver l'incalculabilité de Σ ; la démonstration qui suit[2] utilise la fonction de combinaison des machines de Turing.

Hypothèse de départ : supposons que Σ soit calculable.

Si Σ est calculable, alors la fonction D définie par D(n) = Σ(2n) l'est également. Si la fonction D est calculable, alors elle peut être représentée à l'aide d'une machine de Turing, que nous appellerons Md, et qui possédera un nombre fini d'état k (que nous ne connaissons pas).

Prenons maintenant la fonction u(f(n)) = f(n), qui se contentera d'afficher la valeur de retour d'une certaine fonction passée en paramètre. À l'instar de la fonction D, cette fonction u peut être représentée par une machine de Turing, que nous appellerons Mu. On prendra note qu'il est possible de coder cette machine Mu en utilisant n états (nous pourrions l'implémenter en moins que cela, mais cela ne nous intéresse pas dans le cadre de cette preuve).

Définissons maintenant la machine M, qui est une composition des machines Mu et Md. Autrement dit, nous allons passer en paramètre de la fonction u la fonction D afin de réaliser l'opération u(D(n)). Du fait de la composition, cette machine M sera composée de n + k états et, conformément aux descriptions précédentes, écrira sur une bande vierge D(n) = Σ(2n) symboles 1.

En résumé, nous avons obtenu une machine de Turing de n + k états et qui produit Σ(2n) symboles. Que pouvons-nous dire sur la valeur de Σ(n + k), qui est le nombre de 1 pouvant être écrits avec n + k états ? Eh bien, nous pouvons affirmer que cette fonction retournera une valeur plus grande ou en tout cas égale au nombre de 1 écrits par la machine M, c'est-à-dire : Σ(n + k)Σ(2n)[3].

Selon l'aspect monotone de Σ, on peut affirmer la chose suivante : pour tout k < n, Σ(2n) > Σ(n + k). Cette inéquation, combinée avec celle obtenue précédemment, nous donne : Σ(2n) > Σ(n + k)Σ(2n) | k < n.

Cette évidente contradiction nous permet d'affirmer que notre hypothèse de départ était fausse, Σ n'est pas calculable.

Notes

  1. id:A028444 - OEIS Search Results
  2. Cette preuve est inspirée du support de cours du professeur J. Nievergelt (enseignant à l'ETHZ) disponible ici
  3. En réalité, nous pourrions appliquer ici une stricte inégalité (avec le symbole >) du fait qu'il n'existe pas deux valeurs identiques de Σ pour des valeurs de n différentes (étant donné son caractère monotonique) ; nous ferons néanmoins abstraction ici de cette restriction, dans un souci de simplicité, et du fait que l'incompatibilité due à la monotonie est mise en avant plus loin dans la preuve.

Références

  • Radó, Tibor (1962), On non-computable functions, Bell Systems Tech. J. 41, 3 (mai 1962). C'est ici que Radó a donné la preuve de la non calculabilité de Σ(n)
  • Lin, Shen and Radó, Tibor (1965), Computer Studies of Turing Machine Problems, Journal of the Association for Computing Machinery, Vol. 12, No. 2 (Avril 1965), p. 196-212. Ceci inclut la thèse de Lin, qui a montré que Σ(3) = 6 en prouvant que toutes les machines à trois états et deux symboles ne s'arrêtaient jamais si elles ne s'arrêtent pas après 21 étapes.
  • Brady, Allen H. (1983), The determination of the value of Rado's noncomputable function Sigma(k) for four-state Turing machines, Mathematics of Computation, Vol. 40, No. 162 (Avril 1983), pp. 647-665. Une preuve de Σ(4) = 13

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Castor affairé de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Castor Affairé — Pour les articles homonymes, voir castor. Le castor affairé, dont le nom a été proposé par le mathématicien hongrois Tibor Radó, est l un des premiers exemples de fonction non calculable. Un castor affairé est une machine de Turing à n états qui… …   Wikipédia en Français

  • Castor affaire — Castor affairé Pour les articles homonymes, voir castor. Le castor affairé, dont le nom a été proposé par le mathématicien hongrois Tibor Radó, est l un des premiers exemples de fonction non calculable. Un castor affairé est une machine de Turing …   Wikipédia en Français

  • Castor — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Castor », sur le Wiktionnaire (dictionnaire universel) Castor est un nom propre et un nom commun qui… …   Wikipédia en Français

  • Affaire Battisti — Cesare Battisti (1954) Pour les articles homonymes, voir Battisti et Cesare Battisti. Cesare Battisti, né le 18 décembre 1954 à Sermoneta au sud de Rome, est un écrivain de romans noirs. Il est aussi un ancien membre d un groupe terroriste… …   Wikipédia en Français

  • Affaire Goëzman — L affaire Goëzman, ou Goetzmann, est une cause célèbre de la prérévolution française qui connut un grand retentissement dans les années 1773 1774 en France et en Europe. Elle suscita un vif intérêt de la part du public cultivé et des journaux de… …   Wikipédia en Français

  • Busy beaver — Castor affairé Pour les articles homonymes, voir castor. Le castor affairé, dont le nom a été proposé par le mathématicien hongrois Tibor Radó, est l un des premiers exemples de fonction non calculable. Un castor affairé est une machine de Turing …   Wikipédia en Français

  • Calculabilite — Calculabilité La théorie de la calculabilité (appelée aussi parfois théorie de la récursion) est une branche de la logique mathématique et de l informatique théorique. Alors que la notion intuitive de fonction calculable est aussi vieille que les …   Wikipédia en Français

  • Calculabilité — La théorie de la calculabilité (appelée aussi parfois théorie de la récursion) est une branche de la logique mathématique et de l informatique théorique. Alors que la notion intuitive de fonction calculable est aussi vieille que les mathématiques …   Wikipédia en Français

  • Calculable — Calculabilité La théorie de la calculabilité (appelée aussi parfois théorie de la récursion) est une branche de la logique mathématique et de l informatique théorique. Alors que la notion intuitive de fonction calculable est aussi vieille que les …   Wikipédia en Français

  • Fonction Diviseur — Cet article traite de la fonction diviseur. Pour la fonction sigma de Rado, voir Castor affairé (busy beaver). Sommaire 1 Definition 2 Propriétés 3 Fonction nombre de diviseurs …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”