Problème inverse de l'automate fini et algorithmes génétiques
Algorithmes génétiques appliqués à la factorisation de mots.
Morphismes et factorisations de mots
Le monoïde libre et les morphismes sont décrits à la page :
Monoïde libre.
Une application écrite en javascript permet de jouer avec les morphismes
de construire des mots, en particulier les suites ou mots de Prouhet-Thue-Morse, de Fibonacci, ou encore la 'Look and Say sequence'.
Inversement, on peut se demander comment trouver un morphisme, le plus simple possible,
qui permettrait de construire un mot donné, à partir de sa première lettre, en appliquant un même morphisme plusieurs fois.
Si le mot est fini, il existe évidemment au moins les morphisme triviaux : 1ère lettre -> le mot, mais il y en a peut-être d'autres.
On propose un mot à l'application, seuls les 80 premiers caractères seront utilisés (pour éviter un trop long temps d'exécution).
Le programme détermine l'alphabet utilisé et construit aléatoirement une population initiale de 10 morphismes.
Les générations suivantes sélectionneront les morphismes les mieux adaptés.
Les solutions sont les morphismes s qui fixent le mot A donné : s(A) = AB.
[Premier exemple] Les étapes dans l'utilisation de l'application sont : 1 - choix d'un mot (ici un mot de Fibonacci 1011010110110101101011...), 2 - construction de la population initiale, 3 - évolution de la population pour tenter d'obtenir une factorisation.
Le nombre de générations, le nombre d'individus créés, l'alphabet et le mot à atteindre seront affichés sur les premières lignes. Ensuite, sur deux lignes chaque fois, le morphisme, sa valeur (fitness f) et le mot qu'il permet de construire.
Lorsque f > 80 le morphisme trouvé est une solution, dans l'exemple ci-dessous le 73ième individu parmi les 80 créés est une solution :
D'abord choisir un mot ou le créer à l'aide d'un morphisme.
Dans ce dernier cas,
écrire séparément ci-dessous l'alphabet et les images des lettres par le morphisme, le bouton [Mot] permet ensuite d'obtenir un mot de 80 lettres au moins.
- Créer la population : bouton [Initialiser].
- Faire évoluer la population pour tenter de factoriser le mot : bouton [Évoluer].
(On aimerait que le programme détermine un morphisme s aussi simple que possible et non trivial tel que s : A -> AB, le mot A étant un préfixe de son image s(A) = AB).
Pour un premier contact, écrivez-moi en utilisant ce formulaire. Lorsque vous vous référez à une page du site, merci d'indiquer son adresse précise http://jeux-et-mathématiques.davalan.org/...
Les correspondances suivantes pourront se faire par messagerie électronique. Important : Si votre question a un quelconque rapport avec un travail personnel (Devoir TIPE Master...) , vous devez absolument me le préciser dès maintenant et m'indiquer très précisément les limites des informations demandées. Vous devez aussi avertir la personne qui dirige votre travail ou le corrige de cette communication et lui montrer les documents fournis. J'essaie de répondre aux questions posées, mais ne lis pas les documents mathématiques amateurs, pas plus que je ne donne mon avis sur les démonstrations des conjectures de Collatz ou autres. Je ne lis pas les documents word, je ne corrige pas les programmes informatiques et depuis des années je n'utilise plus de tableur.