Fonction chaotique

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Pharcy
Messages: 9
Enregistré le: 11 Aoû 2010, 17:24

Fonction chaotique

par Pharcy » 11 Aoû 2010, 19:40

Bonsoir.

Je cherche à déterminer une fonction bijective paramétrée (et sa réciproque), de [|0;n[| vers [|0;n[| (bref, l'ensemble des n entiers compris entre 0 et n-1), telle que l'ensemble résultat soit une permutation la plus chaotique possible de l'ensemble de départ, la permutation obtenue variant selon la valeur du paramètre.

Comme le terme chaotique est un peu vague, pour préciser ma pensée, il faudrait que, si l'on considère toutes les permutations que permet d'obtenir la fonction, aucun nombre ne soit statistiquement plus souvent voisin de certains nombres que d'autres.

Comme en plus il s'agit de l'implémenter dans un programme et de la faire tourner plusieurs centaines (milliers ?) de fois par secondes, je serai obligé de me restreindre à des calculs pas trop gourmands, pour la fonction et pour sa réciproque.

Pour mieux illustrer mon problème, de peur que tout ceci ne semble un peu confus, j'utilisai jusqu'à présent la fonction :

fa,n:x -> (a*x)%n

(Il s'agit du modulo informatique, qui renvoie l'entier congruent compris entre 0 et n-1.)

Pour que la fonction corresponde au critères, il faut que a soit premier avec n. Il est inutile que a soit supérieur à n/2 car au-delà, ce seront de nouveau les même permutations ou leurs inversées. La réciproque se calcule facilement.

Ainsi, par exemple, pour n=10, on pourra prendre a=1 ou a=3, ou pour n=15 a=1, a=2 ou a=4 et ainsi :

Code: Tout sélectionner
 
 a| 1| 3       a| 1| 2| 4
---------     ------------
 0| 0| 0       0| 0| 0| 0
 1| 1| 3       1| 1| 2| 4
 2| 2| 6       2| 2| 4| 8
 3| 3| 9       3| 3| 6|12
 4| 4| 2       4| 4| 8| 1
 5| 5| 5       5| 5|10| 5
 6| 6| 8       6| 6|12| 9
 7| 7| 1       7| 7|14|13
 8| 8| 4       8| 8| 1| 2
 9| 9| 7       9| 9| 3| 6
              10|10| 5|10
              11|11| 7|14
              12|12| 9| 3
              13|13|11| 7
              14|14|13|11


C'est pas trop mal, mais il reste quelque défauts. Si on passe sur le fait que ça reste très régulier pour un ensemble chaotique, et que ça ne permet d'obtenir qu'une infime portion des permutations possibles, le plus important, de loin, est que a dépend de n, et que malgré donc la simplicité du calcul, je doive d'abord calculer la décomposition de n (pouvant être très grand) en facteurs premiers.

En gros, j'aimerais donc trouver une nouvelle fonction plus à même de répondre à mes attentes, mais n'étant pas une flèche en mathématiques, je n'ai plus du tout d'idées. Du coup, je me tourne humblement vers vous, en espérant que mon problème suscite chez vous de l'intérêt, et que vous puissiez me donner quelques pistes. :happy2:

Cordialement,



Finrod
Membre Irrationnel
Messages: 1944
Enregistré le: 24 Sep 2009, 10:00

par Finrod » 11 Aoû 2010, 20:34

Tu pourrais utiliser une simulation de variable aléatoire discrète sur [0,n]. Mais le résultat est aléatoire donc peut être régulier comme chaotique.

Pour ça l'image de 1 est une Va sur [1,n], l'image de 2 sur l'ensemble à n-1 elts restant ainsi de suite.

Sinon ça reviendrais éventuellement à trouver le maximum d'une fonction très lourde à calculer, faite de somme de carrés, ça convient pas.

Pharcy
Messages: 9
Enregistré le: 11 Aoû 2010, 17:24

par Pharcy » 11 Aoû 2010, 20:55

C'est un peu comme ça que je travaillais au tout début. L'ennui, c'est que ça revient à calculer les x-1 premiers éléments avant de pouvoir déterminer x.

Ça peut marcher si n n'est pas trop élevé, mais hélas n peut bel et bien être très élevé. Du coup je suis obligé de devoir déterminer l'image de x sans connaitre les images de toutes les autres valeurs.

Mais merci tout de même. :happy2:

Finrod
Membre Irrationnel
Messages: 1944
Enregistré le: 24 Sep 2009, 10:00

par Finrod » 11 Aoû 2010, 21:12

ça revient au même de commencer par la fin, si seul le dernier cas t'intéresses, auquel cas, tu ne calcules qu'un terme.

Mais je ne suis pas sur d'avoir bien compris.

Par ex (a*x)%n je ne sais pas ce que c'est...

Pharcy
Messages: 9
Enregistré le: 11 Aoû 2010, 17:24

par Pharcy » 11 Aoû 2010, 21:21

Heu, oui, c'est pas très mathématique comme notation...

Littéralement, c'est la valeur compris entre 0 et n-1 qui est congruente modulo n à a multiplié par x.
a fois x modulo n, je ne sais pas trop comment écrire ça...

Finrod
Membre Irrationnel
Messages: 1944
Enregistré le: 24 Sep 2009, 10:00

par Finrod » 11 Aoû 2010, 21:42

C'est égal à E= partie entière.

Pharcy
Messages: 9
Enregistré le: 11 Aoû 2010, 17:24

par Pharcy » 11 Aoû 2010, 21:59

Tout à fait.

Par contre, je ne suis pas spécialement intéressé par le premier ou le dernier cas.

En pratique, je peux avoir n=10^9, devoir calculer f(18), f(75 451) et f(84 841 123), puis passer à un nouveau cas où n=15 478 et ainsi de suite...

Finrod
Membre Irrationnel
Messages: 1944
Enregistré le: 24 Sep 2009, 10:00

par Finrod » 11 Aoû 2010, 22:21

Si tu n'a besoin, pour le même f que de peu de valeurs de f(i), tu peux faire une simulation uniquement pour les valeurs dont tu as besoin.

S'il y en a trois, le premier f(i) est une loi uniforme sur [1,n], le second sur [1,n] privé du premier ainsi de suite. ça revient au même.

Tu t'en tire à une simulation par valeur. (reste que chaque simulation a elle même une durée incompressible, je suppose que l'algo est plus long que pour une multiplication ou une partie entière)

Pharcy
Messages: 9
Enregistré le: 11 Aoû 2010, 17:24

par Pharcy » 11 Aoû 2010, 22:34

Oui, mais là le problème, c'est que si une heure après je refais le calcul avec les même paramètres, j'aurai un résultat différent. Ce n'est plus vraiment une fonction mathématique. Le but du jeu est que ça ait l'air chaotique à première vue, mais que ça soit parfaitement déterministe et réversible.

Pour autant que je puisse en juger, il n'y a pas vraiment de solution "informatique". Raison pour laquelle je me suis tourné vers les maths...

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite