Section : Simulation, modèles et réalité
Précédent : Suites uniformes
Suivant : Variables aléatoires

## Complexité et hasard

Parmi les différentes formalisations du hasard qui ont pu être proposées, la notion de suite uniforme est la seule utilisable en pratique : elle est la seule que l'on puisse tester pour un générateur donné et elle suffit à justifier toutes les applications de la fonction `Random`. Une "vraie" suite aléatoire doit être uniforme. Mais peut-on considérer comme aléatoire toute suite uniforme ? Nous allons voir que non, malheureusement.

Comme l'ordinateur ne peut donner que des approximations décimales des réels, il suffirait de savoir construire une suite aléatoire de chiffres entre 0 et , pour en déduire des réels au hasard dans , approchés à la -ème décimale, en considérant des -uplets consécutifs de chiffres de la suite initiale. La même remarque vaut bien sûr en base 2. Il suffirait donc de savoir définir ce qu'est une suite de bits au hasard.

Limitons-nous donc aux suites de bits dans . On attend d'une telle suite qu'elle soit le résultat typique d'une suite de tirages de Pile ou Face. Voici trois séquences particulières :

La troisième a meilleur aspect que les deux premières. Elle a pourtant exactement la même probabilité de sortir telle quelle à Pile ou Face : . Parmi les -uplets de bits, tous ont a priori la même probabilité de sortir : . Toute suite aléatoire de bits doit contenir nécessairement une infinité de fois zéros à la suite. Accepterions-nous qu'un générateur de bits retourne ne serait-ce que zéros à la suite ? Cela paraît peu vraisemblable.

Sur les exemples ci-dessus, nous écarterions le premier car il semble violer la 1-uniformité. Nous écarterions le second au nom de la 2-uniformité. Mais que dire alors de la suite concaténée de tous les entiers en base 2 (suite de Champernowne) ?

On montre qu'elle est -uniforme. Mais comment qualifier d'aléatoire une suite aussi parfaitement prévisible ?

La définition la plus intuitive du hasard, celle des dictionnaires, n'a aucun rapport avec l'uniformité. Est aléatoire ce qui est imprévisible. Une suite serait donc aléatoire si on ne pouvait pas prévoir son -ème terme connaissant les premiers. La suite

n'est pas aléatoire car sans avoir écrit les premiers termes on sait que le -ème sera "1" et le suivant "0". La suite

en revanche, ne semble pas présenter de régularité, de configuration qui permettrait d'en prévoir les termes suivants. Une suite est donc aléatoire si elle n'a pas de règle de construction simple.

On peut voir une règle de construction comme un moyen de compresser une suite en un algorithme qui l'engendre.

Exemple :

`Répéter fois
écrire 0 puis 1
finRépéter`

Traduit en chaîne de bits, la seule chose qui dépend de dans cet algorithme est le test. La longueur de la chaîne de bits sera constante, pour engendrer à l'exécution une chaîne de longueur ( est le nombre de bits nécessaires pour écrire , à 1 près).

Notons l'ensemble de toutes les chaînes de bits de longueur finie. Si , sa longueur (nombre de bits) sera notée . Un algorithme est une application de dans lui-même.

input |  | output

Soit la taille du codage de exprimée en bits (hors input).

Définition 2.4 On appelle complexité de relative à l'entier :

si

En d'autres termes est une mesure de la taille de l'information qu'il faut donner à l'algorithme pour produire . Dans l'exemple ci-dessus, une chaîne de bits suffisait à produire la chaîne de longueur

Définition 2.5 On appelle complexité de l'entier :

est la quantité minimale d'information nécessaire pour produire .

Remarque : Bien que ceci n'ait pas la prétention d'être un cours de complexité, on doit tout de même signaler que les définitions ci-dessus n'ont de sens que si on restreint quelque peu la notion d'algorithme. Si on en reste aux applications quelconques de dans , on se heurte à des paradoxes du type de celui de R. Berry :

"Le plus petit nombre qu'on ne puisse pas définir en moins de mots".
Le bon cadre est celui des fonctions récursives, calculables par machines de Turing.

Pour engendrer une suite donnée de bits, l'algorithme brutal consiste à les écrire tous les uns après les autres. Il correspond à l'application identique de dans lui-même. Relativement à cet algorithme la complexité de toute suite de bits est . Donc la complexité de toute suite est majorée par sa longueur :

Dire qu'une suite est aléatoire, c'est dire qu'on ne peut pas faire mieux que l'algorithme brutal pour l'engendrer.

Définition 2.6 Soit une suite de bits. Elle est dite aléatoire si il existe une constante telle que pour tout :

D'après la proposition suivante, la plupart des suites sont aléatoires.

Proposition 2.7 Le cardinal de l'ensemble des suites de bits de longueur dont la complexité est minorée par est au moins :

Démonstration :Parmi les inputs susceptibles d'engendrer les suites de longueur , seuls ceux dont la longueur est inférieure à nous intéressent. Il y en a au plus :

Chaque couple (input+algorithme) engendre au plus une suite de longueur . Il y a donc au plus suites de longueur dont la complexité est inférieure à .

Concrètement, parmi toutes les suites de longueur , une proportion de d'entre elles seulement sont de complexité .

Il devrait donc être facile de trouver des suites aléatoires puisque la plupart d'entre elles le sont. Paradoxement, le problème de démontrer qu'une suite particulière est aléatoire est indécidable en général.

Section : Simulation, modèles et réalité
Précédent : Suites uniformes
Suivant : Variables aléatoires