Chapitre 91
Cinq c cinq i cinq n cinq q

Résumé : un texte pangrammatique est fabriqué en s’efforçant de faire entrer une ou plusieurs lettres données dans un récit. L’auto-référence consiste à trouver un énoncé qui décrit une contrainte : « Ce titre contient quatre ’a’, un ’b’, cinq ’c’, cinq ’d’, dix-neuf ’e’, deux ’f’, un ’g’, deux ’h’, treize ’i’, un ’j’, un ’k’, un ’l’, un ’m’, seize ’n’, trois ’o’, quatre ’p’, sept ’q’, sept ’r’, sept ’s’, quinze ’t’, dix-huit ’u’, un ’v’, un ’w’, six ’x’, un ’y’ et quatre ’z’ ». Trouver de telles phrases est très difficile si l’on n’utilise pas d’ordinateur.

Mots-clés : auto-référence, réflexivité, pangramme.

Enoncé

L’exercice s’inspire du livre Metamagical Themas : Questing for the Essence of Mind and Pattern de Douglas R. Hofstadter, Editeur, Penguin Books, 1985 et du rapport de Jacques Pitrat qui se trouve sur le site : http://www-apa.lip6.fr/META/pitratpublication.html.

Un pangramme est un texte utilisant toutes les lettres de l’alphabet. Le mot est issu de deux racines grecques pan (toutes) et gramme (lettres). Un texte pangrammatique est fabriqué en s’efforçant de faire entrer une ou plusieurs lettres données dans un récit. Les spécialistes définissent également l’hétérogramme (un énoncé qui ne répète aucune de ses lettres), l’hétéropangramme (un énoncé de vingt-six lettres contenant toutes les lettres de l’alphabet ; il s’agit simplement d’un anagramme de l’alphabet), l’hétéroconsonnantisme (recherche de pangrammes dans lesquels les répétitions des lettres sont soit interdites, soit limitées aux voyelles).

Les pangrammes les plus recherchés sont ceux qui contiennent toutes les lettres de l’alphabet dans une phrase la plus courte possible ayant au moins un certain sens. Le mathématicien de Morgan aurait trouvé en 1861 deux hétéropangrammes en anglais (i et j sont considérés comme identiques, u et v également) :

I, quartz pyx, who fling muck beds.

Get nymph ; quiz sad brow ; fix luck.

Les pangrammes sont connus des utilisateurs de Macintosh. Pour afficher les polices de caractères, un pangramme avait été proposé : « The quick brown fox jumps over the lazy dog ». Un traducteur avait suggéré : « Le brun renard rapide saute par-dessus le chien paresseux », preuve que le traducteur ne maîtrisait pas la notion de pangrammes.

Les sites internet fourmillent de pangrammes dans toutes les langues. Parmi les pangrammes en français, on peut citer :

Le dernier pangramme est autoréférent : la phrase décrit son contenu. Si elle n’en décrit qu’une faible partie, c’est assez facile : « Cette phrase contient exactement quatre ’c’ et trois ’o’. » Les difficultés commencent quand la description est plus complète, par exemple, les vingt-six lettres de l’alphabet. Trouver de telles phrases est un problème très difficile et long si l’on n’utilise pas un ordinateur. Même la vérification de la correction d’une solution prend du temps.

Jacques Pitrat donne l’explication suivante. Supposons, par exemple, que la phrase énonce qu’il y a sept ’p’ alors qu’il y a en réalité huit. Si nous changeons le ’sept’ lié à ’p’ en ’huit’, nous allons perturber le nombre de ’h’, de ’u’, de ’i’, de ’s’, de ’e’ et de ’p’. Le nombre de ’t’ est le seul à rester inchangé. De plus nous n’avons pas résolu le problème pour les ’p’ : il y en avait huit et nous indiquons sept. Maintenant, nous avons enlevé un ’p’ en remplaçant ’sept’ par ’huit’. Non seulement nous avons modifié le nombre de ’e’, ’h’, ’i’, ’s’, ’u’, mais nous n’avons pas résolu le problème des ’p’ ; nous avons simplement inversé l’erreur, car la phrase énonce qu’il y a huit ’p’ alors qu’il n’y en a plus que sept.

Le moindre changement a de nombreuses répercussions et engendre un univers chaotique. On pourrait essayer tous les ensembles possibles de vingt-six lettres mais, cela est impraticable pour des raisons de temps de calcul.

Il existe même des cas où le problème n’a pas de solution.

En français, certaines lettres n’interviennent pas dans la combinatoire, parce qu’elles n’apparaissent dans aucun nombre. C’est le cas des cinq lettres : ’b’, ’k’, ’k’, ’w’ et ’y’. On peut également éliminer ’l’ et ’m’ qui n’apparaissent que dans ’mille’, ’million’ et ’milliard’. D’autre part, les lettres ’g’ et de ’v’ n’apparaissent que dans ’vingt’. On peut donc réduire la recherche aux 18 lettres restantes.

Le but du problème est d’écrire un programme permettant de construire de telles phrases.

Indications

Jacques Pitrat suggère l’utilisation d’une partie fixe qui contient la phrase et les nombres de caractères qui n’apparaissent pas dans des nombres. La partie fixe de la phrase commençant par « Ce titre contient » est :

Cetitrecontientaunbcdefghiunjunkunlunmnopqrstuvunwxunyetz

La partie mobile est formée des caractères des nombres liés aux caractères pouvant figurer dans des nombres. La partie mobile de la phrase ci-dessus est :

quatrecinqcinqdixneufdeuxundeuxtreizeseizetroisquatreseptseptseptquinze dixhuitunsixquatre

Douglas R. Hofstadter donne dans Metamagical Themas plusieurs exemples de phrase réflexive ainsi qu’une méthode pour créer de telles phrases.

Nous dirons que, pour une lettre d’une phrase, le nombre réel est celui des occurrences de cette lettre dans la phrase et le nombre affiché est celui qui figure dans la phrase lié à cette lettre.

On commence par affecter au hasard des valeurs aux nombres liés aux 26 lettres. Si, pour toutes les lettres, le nombre ainsi affiché correspond au nombre réel, on a trouvé une solution. Si ce n’est pas le cas, on remplace pour chaque lettre son nombre affiché par son nombre réel qui devient ainsi le nouveau nombre affiché. On repart en vérifiant si l’on a bien obtenu la solution et en remplaçant tous les nombres différents du nombre réel. Hofstadter espère ainsi tomber sur un point fixe qui est la solution.

Deux cas peuvent se produire : on arrive à une solution ou l’on retrouve une situation déjà rencontrée auquel cas on boucle. On peut détecter les bouclages mais, cela prend du temps et de la mémoire. Il est plus simple de limiter le nombre d’itérations permises : si l’on dépasse cette limite, on arrête d’itérer. Pour augmenter les chances d’obtenir une solution, on peut refaire un tirage et recommencer les itérations à partir de là. Cette méthode a été programmée pour le français, mais le traducteur de Douglas R. Hofstadter a commis une erreur : il a orthographié troix avec un x et non avec un s.

Cette méthode a un important avantage. Lorsque l’on arrive à une situation où l’ensemble des lettres des nombres réels est la même que l’ensemble des lettres des nombres affichés, on arrive directement à la solution à l’étape suivante. S’il n’existe que de rares solutions, il existe en revanche plus de situations qui sont ainsi à une étape de la solution.

Jacques Pitrat suggère une modification de la méthode proposée par Douglas R. Hofstadter : on ne change qu’un nombre à la fois. On prend un seul des nombres dont la valeur affichée est différente de la valeur réelle et on construit la phrase où l’on remplace la valeur affichée de ce nombre par la valeur réelle que l’on a déterminée, sans changer les autres nombres. Cela demande toutefois deux précautions.

La première porte sur la détermination du nombre pour lequel on va remplacer la valeur affichée par la valeur réelle. Il faut prendre garde de ne pas commencer chaque fois au même endroit la recherche d’une lettre pour laquelle ces deux nombres sont différents : en opérant ainsi, on aurait souvent des bouclages. On peut remédier à cet état de fait en commençant la recherche d’un désaccord entre valeur affichée et valeur réelle pour une autre lettre que celle pour laquelle on a fait le dernier changement. On remarque qu’après un premier parcours de l’ensemble des lettres, la valeur de la partie fixe de la phrase est correctement établie.

La deuxième précaution consiste à donner à cette nouvelle méthode une qualité essentielle de la précédente : quand l’ensemble des lettres des nombres réels est le même que l’ensemble des lettres des nombres affichés, on doit obtenir la solution à l’étape suivante. Sans cela, on risque de passer à côté d’une solution évidente.

Jacques Pitrat donne ensuite des comparaisons des résultats des deux méthodes, un paradoxe sur le style d’Epiménide, des études sur les fréquences des solutions et sur l’influence des différents paramètres.

En conclusion, comme le commun des mortels, il se pose la question. « Au fond, est-ce bien utile de savoir que cette phrase contient cinq ’a’, deux ’b’, huit ’c’, huit ’d’, vingt ’e’, quatre ’f’, cinq ’g’, six ’h’, vingt-deux ’i’, un ’j’, un ’k’, deux ’l’, un ’m’, vingt-deux ’n’, cinq ’o’, trois ’p’, sept ’q’, cinq ’r’, huit ’s’, dix-neuf ’t’, vingt ’u’, six ’v’, un ’w’, huit ’x’, un ’y’ et enfin un ’z’ ?

Il y trouve toutefois trois raisons qui militent en faveur de tels problèmes :

Solutions

La solution actuellement proposée est donnée par les fichiers MatLab : pitrat.m.