La constante de Chaitin est normale?


9

Selon cette source, la constante de Chaitin Ω Est normal.

Chaque probabilité d'arrêt est un nombre réel normal et transcendantal qui n'est pas calculable, ce qui signifie qu'il n'y a pas d'algorithme pour calculer ses chiffres. En effet, chaque probabilité d'arrêt est aléatoire de Martin-Löf, ce qui signifie qu'il n'y a même pas d'algorithme qui puisse deviner de manière fiable ses chiffres.

Source (Wikipedia)

En outre, la définition de la normale est que chaque chiffre se produit avec une probabilité égale 1/b. Et que chaque duo de chiffres se produit avec1/b2 probabilité et tous les triplets se produisent avec probabilité 1/b3 etc.

L'oméga de Chaitin est calculé via

Ω=phalts2|p|

L'écriture Ω en binaire, on obtient une liste de 0 et 1. Par exemple,

2^-1=0.1 +
2^-2=0.01 +
2^-3=0.001 +
~skip 2^-4 as it does not halt
2^-5=0.00001 +
...
=\Omega
=0.11101...

On voit bien que la position de chaque bit correspond à l'état d'arrêt du programme de longueur correspondant au bit.

Voici ce avec quoi je me bats

Si Ωest en effet normal, cela signifie que exactement 50% des programmes s'arrêtent et exactement 50% ne s'arrêtent pas. Cela semble très contre-intuitif.

Par exemple, supposons que je génère des programmes Java en concaténant au hasard des caractères uniques. La majorité d'entre eux, je suppose que plus de 99,99% ne compileraient même pas. Cela n'impliquerait-il pas qu'au moins 99,99% d'entre eux ne s'arrêteront pas? Comment pouvons-nous justifier que exactement la moitié s'arrêtera et exactement la moitié ne le sera pas, en vertu deΩ être normal.

Ou Wikipédia est-il incorrect Ω être normal?


2
Bienvenue sur le site! Si vous mettez votre LaTeX entre des dollars au lieu de backticks, nous pourrons lire la sortie, plutôt que la source.
David Richerby

1
Et pour les fractions \ frac {1} {b ^ 2} donne 1b2 au lieu de 1/b2.
Evil

Je crois que l'Omega de Chaitin est défini pour les encodages Turing Machine sans préfixe , pas pour les encodages arbitraires. Si c'est le cas, je pense que nos intuitions normales sur ce qui constitue une MT "aléatoire" pourraient ne pas être aussi fiables.
mhum

1
@mhum Vous pouvez ré-encoder n'importe quel programme en un encodage sans préfixe en ajoutant un 1 entre chaque bit du programme d'origine, puis en le terminant par un 0. Ensuite, la machine Turing lit tous les deux bits jusqu'à ce qu'elle trouve le 0 de fin. Cela laisse le code java intact mais le rend libre de préfixe. Le problème demeure donc.
Alexandre H. Tremblay

"Si Ω est en effet normal, cela signifie qu'exactement 50% des programmes s'arrêtent et exactement 50% ne le font pas. Cela semble très contre-intuitif." Cela signifie que, asymptotiquement, la moitié des programmes s'arrête. Ce n'est pas si contre-intuitif. Même si cela peut prendre un certain effort pour trouver un programme d'arrêt (c'est-à-dire que vous avez frappé une longue chaîne de 0 en Ω), une fois que vous en avez trouvé un, vous allez avoir une très longue chaîne de programmes d'arrêt qui le suit (c'est-à-dire un chaîne également longue de 1), par exemple des programmes qui sont fonctionnellement le même programme mais avec un tas de commentaires superflus (une sorte de lemme de pompage).
Marcel Besixdouze

Réponses:


9

Contrairement à votre exemple, la constante de Chaitin n'est pas définie comme suit:

Ω=n:nth program halts2n.

Au lieu de cela, il y a un ensemble Π{0,1}des programmes autorisés sans préfixe (aucune chaîne n'est le préfixe d'une autre chaîne). Chacun des programmesΠest légal (cela nie votre exemple Java). Si les programmes sont encodés en unaire, il est en effet vrai que lene programme a une longueur n, puis votre définition de Ωtravaux. Mais pour les autres encodages, la définition deΩ est

Ω=pΠ:p halts2|p|,
|p| est la longueur de la chaîne binaire p. L'inégalité de Kraft montre quepΠ2|p|1.

La constante de Chaitin est algorithmiquement aléatoire : la (préfixe) complexité de Kolmogorov du premiern bits est nO(1). Pour le montrer, notez d'abord queΩn, la première n un peu de Ω, suffit pour déterminer si un programme de longueur n (sous l'encodage Π) s'arrête ou non. En effet, en fraction,ΩnΩ<Ωn+2n. Exécutez tous les programmes en parallèle et chaque foisp s'arrête, ajouter 2|p| à un comptoir C(initialisé à zéro). FinalementCΩn (depuis CΩpar le bas). À ce stade, si le programme d'entrée de longueurn ne s'est pas arrêté, alors vous savez qu'il ne s'arrête pas, car sinon ΩC+2nΩn+2n.

Compte tenu de cela, supposons que pour certains K>0 et infiniment n, vous pourriez calculer Ωn en utilisant nKmorceaux. Pour chacunn, vous pouvez trouver une chaîne dont la complexité de Kolmogorov est supérieure à n, en considérant la sortie de tous les programmes de durée n. Pour assez grandK, le résultat est un programme de longueur au plus n pour calculer la chaîne dont la complexité de Kolmogorov est supérieure à n. Cette contradiction prouve que pour certainsK, la complexité de Kolmogorov Ωn Est au moins nK.

Aléatoire algorithmique de Ωimplique, en particulier, que la fréquence de 0 et de 1 dans son expansion binaire tend vers 1/2. En effet, supposons que pour certains (rationnels)ϵ>0 il existe une infinité de n de telle sorte que la fraction de 1 s Ωn est tout au plus 1/2ϵ. Puisqu'il n'y a que2h(1/2ϵ)n cordes avec au plus 1/2ϵ plusieurs 1, nous pouvons compresser Ωn sur mesure h(1/2ϵ)n+2logn+Cϵ (la constante Cϵ dépend de ϵ puisque le programme a besoin de savoir ϵ). Cependant, c'estnω(1), contredisant le caractère aléatoire algorithmique de Ω.


Merci pour la réponse très complète. Je me bats avec le tout premier paragraphe et je m'excuse de ne pas avoir traversé mon crâne. Si nous ne prenons que les programmes java qui se compilent, puis les codons en unaire, cela signifie-t-il alors que exactement la moitié d'entre eux s'arrêtera?
Alexandre H. Tremblay

@ AlexandreH.Tremblay Oui, c'est l'implication. Pour en savoir plus, je recommande un manuel sur la complexité de Kolmogorov, comme Li et Vitanyi.
Yuval Filmus

Pourriez-vous rendre la machine Turing telle qu'elle inclut un compilateur java? Imaginez ceci. Tout d'abord, répertoriez toutes les chaînes de caractères générées de manière aléatoire, du plus court au plus long. Deuxièmement, encodez ces chaînes en unaire. Troisièmement, introduisez les cordes unaires dans la machine de Turing en entrée. La machine Turing vérifie si l'entrée se compile en Java. Si c'est le cas, il l'exécute et la moitié s'arrêtera et la moitié ne le fera pas. S'il ne compile pas, alors il boucle pour toujours (while (true) {};). Cela ne fausserait-il pas le rapport arrêt / non-arrêt? J'ai lu Li et Vitanyi la semaine dernière, mais je devrai le relire;).
Alexandre H. Tremblay

Je soupçonne qu'un codage unaire de la manière que vous suggérez ne serait pas admissible . Par exemple, dans le codage unaire (même le plus simple), vous ne pourrez pas composer de programmes avec une surcharge constante. Je vérifierais Li et Vitanyi pour une liste de propriétés qu'un ordinateur universel admissible doit satisfaire. Cela ferait partie de la définition de la complexité de Kolmogorov.
Yuval Filmus

Bonjour, pouvez-vous recommander la section de Li et Vitanyi où ces informations sont présentes. J'ai lu le livre une deuxième fois et je ne l'ai pas trouvé.
Alexandre H. Tremblay

0

Votre erreur est sur la ligne suivante:

Si Ω est en effet normal, cela signifie que exactement 50% des programmes s'arrêtent et exactement 50% ne s'arrêtent pas.

Nan. Ce n'est pas ce que signifie "normal". Ou, pour le dire autrement: définird0(n) être le nombre de bits qui sont un 0, dans le premier n bits de l'expansion base-2 de Ω. Dire queΩest normal implique que

limnd0(n)n=1/2.

En d'autres termes, "normal" est une notion asymptotique. Cela signifie que si vous regardez suffisamment loin dans les morceaux deΩ, environ la moitié d'entre eux seront en moyenne des 0. (De même, environ la moitié avec un 1.)

Cependant, cela ne dit rien sur les premiers bits de Ω. Par exemple, il n'y a aucune implication que l'expansion binaireΩ commence comme 0,01 ... ou à toute autre chose - et il n'y a aucune implication que Ω est proche de 1/2. Ωpeut être proche de 0, ou proche de 1, ou n'importe où entre les deux; cela ne contredit pas le fait d'être normal, et être normal n'implique rien sur la tailleΩ est.


Notez que Ωest la probabilité qu'une machine de Turing aléatoire s'arrête sous une distribution très étrange. Le PO s'intéresse à la distribution uniforme (dans un certain sens limitatif). Donc, personne n'implique queΩest proche de 1/2.
Yuval Filmus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.