1 Au bout d'un nombre $b$ d'itérations,
2 si la fonction, notée $G_{f_u}$ (ou bien $G_{f_g}$)
3 présentée au chapitre~\ref{chap:carachaos},
4 a de \og bonnes\fg{} propriétés chaotiques,
5 le mot $x^b$ devrait \og sembler ne plus dépendre\fg{} de $x^0$.
6 On peut penser à exploiter une de ces fonctions $G_f$
7 comme un générateur aléatoire.
9 Ce chapitre présente une application directe
10 de la théorie développée ci-avant
11 à la génération de nombres pseudo aléatoires.
14 La suite de ce document donnera
15 une condition nécessaire est suffisante pour que
16 cette propriété soit satisfaite.
19 On présente tout d'abord le générateur
20 basé sur des fonctions chaotiques (section~\ref{sub:prng:algo}),
21 puis comment intégrer la contrainte de distribution uniforme
23 dans le choix de la fonction à itérer (section~\ref{sub:prng:unif}).
24 L'approche est évaluée dans la dernière section.
28 \section{ Nombres pseudo aléatoires construits par itérations unaires}\label{sub:prng:algo}
37 \KwIn{une fonction $f$, un nombre d'itérations $b$,
38 une configuration initiale $x^0$ (${\mathsf{N}}$ bits)}
39 \KwOut{une configuration $x$ (${\mathsf{N}}$ bits)}
41 %$k\leftarrow b + \textit{XORshift}(b+1)$\;
44 $s\leftarrow{\textit{Random}({\mathsf{N}})}$\;
45 %$s\leftarrow{\textit{XORshift}(n)}$\;
46 $x\leftarrow{F_{f_u}(x,s)}$\;
50 \caption{PRNG basé sur les itérations unaires.}
54 \subsection{Algorithme d'un générateur}
55 On peut penser à construire un générateur de nombres pseudo
56 aléatoires comme dans l'algorithme~\ref{CI Algorithm} donné ci-dessous.
59 Celui-ci prend en entrée: une fonction $f$;
60 un entier $b$, qui est le nombre d'itérations à effectuer entre deux sorties
61 et une configuration initiale $x^0$.
62 Il retourne une nouvelle configuration $x$ en appliquant
63 la fonction $F_{f_u}$ (équation~\ref{eq:iterations:unaires}
64 vue au chapitre~\ref{chap:carachaos}) et correspondant
65 à des itérations unaires.
66 En interne, il exploite un algorithme de génération
67 de nombres pseudo aléatoires donné en paramètre.
68 Cela peut être n'importe quel PRNG (XORshift, Mersenne-Twister) dont la
69 sortie est uniformément distribuée.
70 Notre approche vise a donner des propriétés de chaos a ce générateur embarqué.
73 % \textit{Random}$(l)$.
74 % Cet algorithme est utilisée dans notre générateur pour construire la longueur
75 % de la stratégie ainsi que les éléments qui la composent.
76 % Pratiquement, il retourne des entiers dans $\llbracket 1 ; l \rrbracket$
77 % selon une distribution uniforme et utilise
78 % \textit{XORshift} qui est une classe de générateurs de
79 % nombres pseudo aléatoires conçus par George Marsaglia.
82 % L'algorithme \textit{XORshift}
83 % exploite itérativement l'opérateur $\oplus$
84 % sur des nombres obtenus grâce à des décalages de bits.
85 % Cet opérateur, défini dans $\Bool^{n}$,
86 % applique la fonction \og xor \fg{}
87 % aux bits de même rang de ses deux opérandes (\og opération bit à bit \fg{}).
88 % Une instance de cette classe est donnée dans l'algorithme~\ref{XORshift} donné
91 % \begin{algorithm}[h]
93 % \KwIn{la configuration interne $z$ (un mot de 32-bit)}
94 % \KwOut{$y$ (un mot de 32-bits)}
95 % $z\leftarrow{z\oplus{(z\ll13)}}$\;
96 % $z\leftarrow{z\oplus{(z\gg17)}}$\;
97 % $z\leftarrow{z\oplus{(z\ll5)}}$\;
101 % \caption{Une boucle de l'algorithme de \textit{XORshift}}
106 Nous avons vu au chapitre~\ref{chap:carachaos} que
107 $G_{f_u}$ est chaotique dans l'espace $\mathcal{X}_u$
108 si et seulement le graphe d'itérations $\textsc{giu}(f)$
109 est fortement connexe.
110 Pour $b=1$, l'algorithme itère la fonction $F_{f_u}$.
112 Pour simuler au mieux l'aléa, un bon générateur de nombre pseudo-aléatoires
113 se doit de fournir des nombres selon une distribution uniforme.
114 Regardons comment l'uniformité de la distribution
115 contraint la fonction $f$ à itérer.
117 \subsection{Un générateur à sortie uniformément distribuée}\label{sub:prng:unif}
119 Une matrice stochastique est une matrice carrée
120 dont tous les éléments sont positifs ou nuls et dont
121 la somme de chaque ligne
123 Une matrice stochastique l'est doublement si la somme de chaque colonne est 1.
124 Enfin, une matrice stochastique de taille $n \times n$ est régulière
125 si la propriété suivante est établie:
126 $$\exists k \in \mathds{N}^\ast, \forall i,j \in \llbracket 1; n \rrbracket, M_{ij}^k>0.$$
128 On énonce le théorème classique suivant liant les
129 vecteur de probabilités
130 et les chaînes de Markov.
135 \begin{theorem}\label{th}
136 Si $M$ est une matrice stochastique régulière, alors $M$
137 possède un unique vecteur stationnaire de probabilités $\pi$
139 De plus, si $\pi^0$ est un {vecteur de probabilités}
141 la suite $(\pi^{k})^{k \in \Nats}$ par
142 $\pi^{k+1} = \pi^k.M $ pour $k = 0, 1,\dots$
143 alors la {chaîne de Markov} $\pi^k$
144 converge vers $\pi$ lorsque $k$ tend vers l'infini.
148 Montrons sur un exemple jouet à deux éléments
149 que ce théorème permet de vérifier si la sortie d'un générateur de
150 nombres pseudo aléatoires est uniformément distribuée ou non.
151 Soit alors $g$ et $h$ deux fonctions de $\Bool^2$
152 définies par $g(x_1,x_2)=(\overline{x_1},x_1.\overline{x_2}) $
153 et $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$.
154 Leurs graphes d'interactions donnés en figure \ref{fig:g:inter} et \ref{fig:h:inter}
155 vérifient les hypothèses du théorème~\ref{th:Adrien}.
156 Leurs graphes d'itérations
157 sont donc fortement connexes, ce que l'on peut vérifier aux figures~\ref{fig:g:iter}
159 \textit{A priori}, ces deux fonctions pourraient être intégrées
160 dans un générateur de nombres pseudo aléatoires. Montrons que ce n'est pas le cas pour $g$ et
161 que cela l'est pour $h$.
173 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
174 \begin{minipage}{0.40\textwidth}
176 \includegraphics[height=4cm]{images/g.pdf}
181 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
182 \begin{minipage}{0.40\textwidth}
184 \includegraphics[height=4cm]{images/h.pdf}
189 \caption{Graphes des itérations unaires
190 de fonctions booléennes dans $\Bool^2$}
191 \label{fig:xplgraphIter}
204 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
205 \begin{minipage}{0.40\textwidth}
207 \includegraphics[height=3cm]{images/gp.pdf}
212 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
213 \begin{minipage}{0.40\textwidth}
215 \includegraphics[height=3cm]{images/hp.pdf}
220 \caption{Graphes d'interactions de fonctions booléennes dans $\Bool^2$}
221 \label{fig:xplgraphInter}
229 Comme le générateur \textit{Random} possède une sortie uniformément
230 distribuée, la stratégie est uniforme sur $\llbracket 1, 2 \rrbracket$,
232 pour tout sommet de $\textsc{giu}(g)$ et de $\textsc{giu}(h)$,
233 chaque arc sortant de ce sommet a, parmi l'ensemble des arcs sortant
234 de ce sommet, une probabilité $1/2$ d’être celui qui sera traversé.
235 En d'autres mots, $\textsc{giu}(g)$ est le graphe orienté d'une chaîne de Markov.
236 Il est facile de vérifier que la matrice de transitions
238 est $M_g = \frac{1}{2} \check{M}_g$,
239 où $\check{M}_g$ est la matrice d' adjacence donnée en
240 figure~\ref{fig:g:incidence} (voir ci-après), et de manière similaire pour $M_h$.
244 \subfigure[$\check{M}_g $.]{
245 \begin{minipage}{0.25\textwidth}
259 \label{fig:g:incidence}
261 \subfigure[$\check{M}_h $.]{
262 \begin{minipage}{0.25\textwidth}
275 \label{fig:h:incidence}
278 \caption{Graphe des fonctions candidates avec $n=2$}
282 Les deux matrices $M_g$ et $M_h$ sont stochastiques. Pour
283 montrer qu'elles sont régulières il suffit de constater qu'aucun élément de
284 $M^5_g$ ni de $M^3_h$ n'est nul.
285 De plus, les vecteurs de probabilités
286 $\pi_g=(\frac{4}{10}, \frac{1}{10},\frac{3}{10},\frac{2}{10})$ et
287 $\pi_h=(\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4})$
288 vérifient $\pi_g M_g = \pi_g$ et
290 Alors d'après le théorème~\ref{th},
291 pour n'importe quel vecteur initial de probabilités $\pi^0$, on a
292 $\lim_{k \to \infty} \pi^0 M^k_g = \pi_g$ et
293 $\lim_{k \to \infty} \pi^0 M^k_h = \pi_h$.
294 Ainsi la chaîne de Markov associé à $h$ tend vers une
295 distribution uniforme, contrairement à celle associée à $g$.
296 On en déduit que $g$ ne devrait pas être itérée dans
297 un générateur de nombres pseudo aléatoires.
299 $h$ devrait pouvoir être embarquée dans l'algorithme~\ref{CI Algorithm},
300 pour peu que le nombre $b$ d'itérations entre deux mesures successives
301 de valeurs soit suffisamment grand de sorte que
302 le vecteur d’état de la chaîne de Markov
303 ait une distribution suffisamment proche de la distribution uniforme.
305 On énonce directement le théorème suivant dont la preuve est donnée en annexes~\ref{anx:generateur}.
307 \begin{theorem}\label{thm:prng:u}
308 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{giu}(f)$ son
309 graphe d'itérations , $\check{M}$ sa matrice d'adjacence
310 et $M$ une matrice $2^n\times 2^n$
312 $M = \dfrac{1}{n} \check{M}$.
313 Si $\textsc{giu}(f)$ est fortement connexe, alors
314 la sortie du générateur de nombres pseudo aléatoires détaillé par
315 l'algorithme~\ref{CI Algorithm} suit une loi qui
316 tend vers la distribution uniforme si
317 et seulement si $M$ est une matrice doublement stochastique.
321 \subsection{Quelques exemples}
323 On considère le graphe d'interactions $\Gamma(f)$ donné
324 en figure~\ref{fig:G}. C'est le même qui a été présenté
325 à la section~\ref{sec:11FCT}.
326 On a vu qu'il y avait 520 fonctions $f$ non isomorphes de graphe d'interactions $\Gamma(f)$.
328 Seulement 16 d'entre elles possèdent une matrice doublement stochastique.
329 La figure~\ref{fig:listfonction} explicite ces 16 fonctions en
330 définissant les images des éléments de la liste
331 0, 1, 2,\ldots, 14, 15 en respectant l'ordre.
332 Expliquons enfin comment a été calculé le nombre de la troisième
333 colonne utilisé comme le paramètre $b$
334 dans l'algorithme~\ref{CI Algorithm}.
336 Soit $e_i$ le $i^{\textrm{ème}}$ vecteur la base canonique de $\R^{2^{n}}$.
337 Chacun des éléments $v_j$, $1 \le j \le 2^n$,
338 du vecteur $e_i M_f^t$ représente la probabilité
339 d'être dans la configuration $j$ après $t$ étapes du processus de Markov
340 associé à $\textsc{giu}(f)$ en partant de la configuration $i$.
342 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
343 \}$ représente le plus petit nombre d'itérations où la distance de
344 ce vecteur au vecteur $\pi=(\frac{1}{2^n},\ldots,\frac{1}{2^n})$
345 -- autrement dit, où la déviation par rapport à la distribution uniforme --
347 à $10^{-4}$. En prenant le max pour tous les $e_i$, on obtient une valeur pour
351 b = \max\limits_{i \in \llbracket 1, 2^n \rrbracket}
354 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
360 \noindent Par la suite, ce nombre sera appelé \emph{temps de mélange}.
366 \subfigure[Graphe d'interactions]{
367 \begin{minipage}{0.20\textwidth}
369 \includegraphics[width=3.5cm]{images/Gi.pdf}
374 \subfigure[Fonctions doublement stochastiques]{
375 \begin{minipage}{0.75\textwidth}
378 \begin{tabular}{|c|c|c|}
380 {Nom}& {Définition}&{$b$} \\
382 $\mathcal{F}_1$ & 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 1, 0 & 206\\
384 $\mathcal{F}_2$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 0, 1
387 $\mathcal{F}_3$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 1, 0
390 $\mathcal{F}_4$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 0, 1
393 $\mathcal{F}_5$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0
396 $\mathcal{F}_6$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 0, 1
399 $\mathcal{F}_7$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 1, 0
402 $\mathcal{F}_8$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0
405 $\mathcal{F}_9$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
408 $\mathcal{F}_{10}$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
411 $\mathcal{F}_{11}$ &14, 15, 12, 13, 11, 10, 9, 8, 7, 6, 5, 4, 2, 3, 1, 0
414 $\mathcal{F}_{12}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 2, 3, 1, 0
417 $\mathcal{F}_{13}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 3, 2, 1, 0
420 $\mathcal{F}_{14}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 5, 4, 3, 2, 1, 0
423 $\mathcal{F}_{15}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
426 $\mathcal{F}_{16}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
433 \label{fig:listfonction}
436 \caption{Candidates pour le générateur avec $n=4$}
440 La qualité des séquences aléatoires a été évaluée à travers la suite
441 de tests statistiques développée pour les générateurs de nombres
442 pseudo aléatoires par le
443 \emph{National Institute of Standards and Technology} (NIST).
444 L'expérience a montré notamment que toutes ces fonctions
445 passent avec succès cette batterie de tests.
447 Pour conclure cette section, on remarque que le générateur de nombres pseudo-aléatoires
448 a été prouvé chaotique pour $b=1$, \textit{i.e.}, lorsqu'il y a une sortie pour chaque itération.
449 Ceci est difficilement compatible avec la volonté d'avoir une sortie uniformément distribuée:
450 se rapprocher de cette distribution nécessite en effet un nombre plus élevé
451 d'itérations $b$ entre chaque sortie. Par exemple, dans l'exemple précédent, il est nécessaire
452 d'itérer au moins 42 fois entre chaque sortie pour suivre une loi uniforme à $10^{-4}$ près.
453 Montrer que les sous-séquences de suites chaotiques ainsi générées demeurent chaotiques
454 est l'objectif de la section suivante.
457 \section{Un PRNG basé sur des itérations unaires qui est chaotique }
459 Cette section présente un espace métrique adapté au générateur de nombres pseudo-aléatoires
460 présenté à l'algorithme~\ref{CI Algorithm} et prouve ensuite que la fonction qu'il représente
461 est chaotique sur cet espace.
463 \subsection{Un espace $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ pour le PRNG de l'algorithme~\ref{CI Algorithm}}
467 Introduisons tout d'abord $\mathcal{P} \subset \mathds{N}$ un ensemble fini non vide de cardinalité
468 $\mathsf{p} \in \mathds{N}^\ast$.
469 Intuitivement, c'est le nombre d'itérations qu'il est autorisé de faire.
470 On ordonne les $\mathsf{p}$ éléments de $\mathcal{P}$ comme suit:
471 $\mathcal{P} = \{ p_1, p_2, \hdots, p_\mathsf{p}\}$
472 et $p_1< p_2< \hdots < p_\mathsf{p}$.
474 Dans l'algorithme~\ref{CI Algorithm},
475 $\mathsf{p}$ vaut 1 et $p_1=b$.
476 Cet algorithme peut être vu comme $b$ compostions de la fonction $F_{f_u}$.
477 Ceci peut cependant se généraliser à $p_i$, $p_i \in \mathcal{P}$,
478 compositions fonctionnelles de $F_{f_u}$.
479 Ainsi, pour chaque $p_i \in \mathcal{P}$, on construit la fonction
480 $F_{{f_u},p_i} : \mathds{B}^\mathsf{N} \times [\mathsf{N}]^{p_i}
481 \rightarrow \mathds{B}^\mathsf{N}$ définie par
484 F_{f_u,p_i} (x,(u^0, u^1, \hdots, u^{p_i-1})) \mapsto
485 F_{f_u}(\hdots (F_{f_u}(F_{f_u}(x,u^0), u^1), \hdots), u^{p_i-1}).
489 on construit l'espace
490 $\mathcal{X}_{\mathsf{N},\mathcal{P}}= \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}}$, où
491 $\mathds{S}_{\mathsf{N},\mathcal{P}}=
492 [\mathsf{N}]^{\Nats}\times
493 \mathcal{P}^{\Nats}$.
494 Chaque élément de l'espace est une paire où le premier élément est
495 un $\mathsf{N}$-uplet de $\Bool^{\mathsf{N}}$ (comme dans $\mathcal{X}_u$).
496 Le second élément est une paire $((u^k)_{k \in \Nats},(v^k)_{k \in \Nats})$ de suites infinies.
497 La suite $(v^k)_{k \in \Nats}$ définit combien d'itérations sont exécutées au temps $k$ entre deux sorties.
498 La séquence $(u^k)_{k \in \Nats}$ définit quel élément est modifié (toujours au temps $k$).
500 Définissons la fonction de décalage $\Sigma$ pour chaque élément de $\mathds{S}_{\mathsf{N},\mathcal{P}}$.
501 $$\begin{array}{cccc}
502 \Sigma:&\mathds{S}_{\mathsf{N},\mathcal{P}} &\longrightarrow
503 &\mathds{S}_{\mathsf{N},\mathcal{P}} \\
504 & \left((u^k)_{k \in \mathds{N}},(v^k)_{k \in \mathds{N}}\right) & \longmapsto & \left(\sigma^{v^0}\left((u^k)_{k \in \mathds{N}}\right),\sigma\left((v^k)_{k \in \mathds{N}}\right)\right).
507 En d'autres termes, $\Sigma$ reçoit deux suites $u$ et $v$ et
508 effectue $v^0$ décalage vers la droite sur la première et un décalage vers la droite
512 Ainsi, les sorties $(y^0, y^1, \hdots )$ produites par le générateur détaillé dans
513 l'algorithme~\ref{CI Algorithm}
514 sont les premiers composants des itérations $X^0 = (x^0, (u,v))$ et $\forall n \in \mathds{N},
515 X^{n+1} = G_{f_u,\mathcal{P}}(X^n)$ dans $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ où
516 $G_{f_u,\mathcal{P}}$ est définie par:
523 G_{f_u,\mathcal{P}} :& \mathcal{X}_{\mathsf{N},\mathcal{P}} & \longrightarrow & \mathcal{X}_{\mathsf{N},\mathcal{P}}\\
524 & (e,(u,v)) & \longmapsto & \left( F_{f,v^0}\left( e, (u^0, \hdots, u^{v^0-1}\right), \Sigma (u,v) \right) .
530 \subsection{Une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
532 On définit la fonction $d$ sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ comme suit:
533 Soit $x=(e,s)$ et $\check{x}=(\check{e},\check{s})$ dans
534 $\mathcal{X}_{\mathsf{N},\mathcal{P}} = \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}} $,
535 où $s=(u,v)$ et $\check{s}=(\check{u},\check{v})$ sont dans $ \mathds{S}_{\mathsf{N},\mathcal{P}} =
536 \mathcal{S}_{\llbracket 1, \mathsf{N} \rrbracket} \times \mathcal{S}_\mathcal{P}$.
538 \item $e$ et $\check{e}$ sont des entiers appartenant à $\llbracket 0, 2^{\mathsf{N}-1} \rrbracket$.
539 La distance de Hamming $d_{\mathds{B}^\mathsf{N}}$ sur entre les
540 décompositions binaires de $e$ et de $\check{e}$ (\textit{i.e.}, le
541 le nombre de bits qu'elles ont de différent) constitue
542 la partie entière de $d(X,\check{X})$.
543 \item la partie décimale est construite à partir des différences entre
544 $v^0$ et $\check{v}^0$, suivie des différences entre les séquences finies
545 $u^0, u^1, \hdots, u^{v^0-1}$ et $\check{u}^0, \check{u}^1, \hdots, \check{u}^{\check{v}^0-1}$, suivie par les différences entre $v^1$ et $\check{v}^1$,
546 suivie par les différences entre $u^{v^0}, u^{v^0+1}, \hdots, u^{v^1-1}$ et
547 $\check{u}^{\check{v}^0}, \check{u}^{\check{v}^0+1}, \hdots, \check{u}^{\check{v}^1-1}$, etc.
549 Plus précisément, soit
550 $p = \lfloor \log_{10}{(\max{\mathcal{P}})}\rfloor +1$ et
551 $n = \lfloor \log_{10}{(\mathsf{N})}\rfloor +1$.
553 \item Les $p$ premiers éléments de $d(x,\check{x})$ sont $|v^0-\check{v}^0|$
554 écrits en base 10 et sur $p$ indices;
555 \item les $n\times \max{(\mathcal{P})}$ éléments suivants servent
556 à évaluer de combien $u^0, u^1, \hdots, u^{v^0-1}$ diffère de
557 $\check{u}^0, \check{u}^1, \hdots, \check{u}^{\check{v}^0-1}$.
558 Les $n$ premiers éléments sont $|u^0-\check{u}^0|$. Il sont suivis de
559 $|u^1-\check{u}^1|$ écrits à l'aide de $n$ éléments, etc.
563 alors le processus se continue jusqu'à $|u^{v^0-1}-\check{u}^{\check{v}^0-1}|$ et la
564 partie décimale de $d(X,\check{X})$ est complétée par des 0
566 $p+n\times \max{(\mathcal{P})}$ éléments.
567 \item Si $v^0<\check{v}^0$, alors les $ \max{(\mathcal{P})}$ blocs de $n$
568 éléments sont $|u^0-\check{u}^0|$, ..., $|u^{v^0-1}-\check{u}^{v^0-1}|$,
569 $\check{u}^{v^0}$ (sur $n$ éléments), ..., $\check{u}^{\check{v}^0-1}$ (sur $n$ éléments), suivi par des 0, si besoin.
570 \item Le cas $v^0>\check{v}^0$ est similaire, et donc omis
572 \item Les $p$ suivants sont $|v^1-\check{v}^1|$, etc.
577 La fonction $d$ peut se formaliser comme suit:
578 $$d(x,\check{x})=d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s})+d_{\mathds{B}^\mathsf{N}}(e,\check{e}),$$
579 où: % $p=\max \mathcal{P}$ and:
581 \item $d_{\mathds{B}^\mathsf{N}}$ est la distance de Hamming,
582 \item $\forall s=(u,v), \check{s}=(\check{u},\check{v}) \in \mathcal{S}_{\mathsf{N},\mathcal{P}}$,\newline
584 d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) &= &
585 \sum_{k=0}^\infty \dfrac{1}{10^{(k+1)p+kn\max{(\mathcal{P})}}}
586 \bigg(|v^k - \check{v}^k| \\
587 & & + \left| \sum_{l=0}^{v^k-1}
588 \dfrac{u^{\sum_{m=0}^{k-1} v^m +l}}{ 10^{(l+1)n}} -
589 \sum_{l=0}^{\check{v}^k-1}
590 \dfrac{\check{u}^{\sum_{m=0}^{k-1} \check{v}^m +l}}{ 10^{(l+1)n}} \right| \bigg)
592 $$ %\left| \sum_{l=0}^{v^k-1} \dfrac{u^{\sum_{m=0}^{k-1} v^m +l}}{ 10^{l}} - \sum_{l=0}^{\check{v}^k-1} \dfrac{\check{u}^{\sum_{m=0}^{k-1} \check{v}^m +l}}{ 10^{l}}\right|\right)}.$$
598 On considère par exemple
599 $\mathsf{N}=13$, $\mathcal{P}=\{1,2,11\}$ ($\mathsf{p}$ vaut ainsi $3$),
603 u=\underline{6,} ~ \underline{11,5}, ...\\
610 \check{u}=\underline{6,4} ~ \underline{1}, ...\\
616 d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) =
617 0.01~0004000000000000000000~01~1005 \dots\]
618 En effet, les $p=2$ premiers éléments sont 01, c'est-à-dire
619 $|v^0-\check{v}^0|=1$,
620 et on utilise $p$ éléments pour représenter cette différence
621 (Comme $\mathcal{P}=\{1,2,11\}$, cette différence peut valoir 10).
622 On prend alors le $v^0=1$ premier terme de $u$,
623 chaque terme étant codé sur $n=2$ éléments, soit 06.
624 Comme on itère au plus $\max{(\mathcal{P})}$ fois,
625 on complète cette valeur par des 0 de sorte que
626 la chaîne obtenue a $n\times \max{(\mathcal{P})}=22$ éléments, soit:
627 0600000000000000000000.
628 De manière similaire, les $\check{v}^0=2$ premiers
629 termes de $\check{u}$ sont représentés par
630 0604000000000000000000.
631 La valeur absolue de leur différence est égale à
632 0004000000000000000000.
633 Ces éléments sont concaténés avec 01. On peut construire alors le reste de
639 % On considère à présent que $\mathsf{N}=9$, que $\mathcal{P}=\{2,7\}$ et que
642 % u=\underline{6,7,} ~ \underline{4,2,} ...\\
647 % $$\check{s}=\left\{
649 % \check{u}=\underline{4, 9, 6, 3, 6, 6, 7,} ~ \underline{9, 8}, ...\\
655 % Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.5173633305600000...$,
657 % $|v^0-\check{v}^0|=5$, $|4963667-6700000| = 1736333$, $|v^1-\check{v}^1|=0$,
658 % et $|9800000-4200000| = 5600000$.
663 On a la proposition suivante, qui est démontrée en annexes~\ref{anx:generateur}.
665 $d$ est une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$.
669 \subsection{Le graphe $\textsc{giu}_{\mathcal{P}}(f)$ étendant $\textsc{giu}(f)$}
671 A partir de $\mathcal{P}=\{p_1, p_2, \hdots, p_\mathsf{p}\}$, on
672 définit le graphe orienté $\textsc{giu}_{\mathcal{P}}(f)$ de la manière suivante:
674 \item les n{\oe}uds sont les $2^\mathsf{N}$ configurations de $\mathds{B}^\mathsf{N}$,
675 %\item Each vertex has $\displaystyle{\sum_{i=1}^\mathsf{p} \mathsf{N}^{p_i}}$ arrows, namely all the $p_1, p_2, \hdots, p_\mathsf{p}$ tuples
676 % having their elements in $\llbracket 1, \mathsf{N} \rrbracket $.
677 \item il y a un arc libellé $u_0, \hdots, u_{p_i-1}$, $i \in \llbracket 1, \mathsf{p} \rrbracket$ entre les n{\oe}uds $x$ et $y$ si et seulement si $p_i$ est un élément de
678 $\mathcal{P}$ (\textit{i.e.}, on peut itérer $p_i$ fois), et pour chaque
679 $k$, $0 \le k \le p_i-1$, on a
680 $u_k$ qui apaprtient à $[\mathsf{N}]$ et
681 $y=F_{f_u,p_i} (x, (u_0, \hdots, u_{p_i-1})) $.
683 Il n'est pas difficile de constater que $\textsc{giu}_{\{1\}}(f)$ est $\textsc{giu}(f)$.
691 \subfigure[$\textsc{giu}_{\{2\}}(h)$]{
692 \begin{minipage}{0.30\textwidth}
694 \includegraphics[scale=0.5]{images/h2prng}
699 \subfigure[$\textsc{giu}_{\{3\}}(h)$]{
700 \begin{minipage}{0.40\textwidth}
702 \includegraphics[scale=0.5]{images/h3prng}
707 \subfigure[$\textsc{giu}_{\{2,3\}}(h)$]{
708 \begin{minipage}{0.40\textwidth}
710 \includegraphics[scale=0.5]{images/h23prng}
717 \caption{Graphes d'itérations $\textsc{giu}_{\mathcal{P}}(h)$ pour $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$}
718 %\label{fig:xplgraphIter}
725 On reprend l'exemple où $\mathsf{N}=2$ et
726 $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$ déjà détaillé
727 à la section~\ref{sub:prng:unif}.
729 Le graphe $\textsc{giu}_{\{1\}}(h)$ a déjà été donné à la figure~\ref{fig:h:iter}.
730 Les graphes $\textsc{giu}_{\{2\}}(h)$, $\textsc{giu}_{\{3\}}(h)$ et
731 $\textsc{giu}_{\{2,3\}}(h)$ sont respectivement donnés aux figure~\ref{fig:h2prng}, ~\ref{fig:h3prng} et ~\ref{fig:h23prng}.
732 Le premier (respectivement le second)
733 illustre le comportement du générateur lorsque qu'on itère exactement
734 2 fois (resp. 3 fois) puis qu'on affiche le résultat.
735 Le dernier donnerait le comportement d'un générateur qui s'autoriserait
736 à itérer en interne systématiquement 2 ou trois fois avant de retourner un résultat.
741 \subsection{le PRNG de l'algorithme~\ref{CI Algorithm} est chaotique sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
743 Le théorème suivant, similaire à ceux dans $\mathcal{X}_u$ et dans $\mathcal{X}_g$
744 est prouvé en annexes~\ref{anx:generateur}.
747 La fonction $G_{f_u,\mathcal{P}}$ est chaotique sur
748 $(\mathcal{X}_{\mathsf{N},\mathcal{P}},d)$ si et seulement si
749 graphe d'itération $\textsc{giu}_{\mathcal{P}}(f)$
750 est fortement connexe.
752 On alors corollaire suivant
755 Le générateur de nombre pseudo aléatoire détaillé
756 à l'algorithme~\ref{CI Algorithm}
758 sur $(\mathcal{X}_{\mathsf{N},\{b\}},d)$ pour la fonction négation.
761 Dans cet algorithme, $\mathcal{P}$ est le singleton $\{b\}$.
762 Que $b$ soit pair ou impair, $\textsc{giu}_{\{b\}}(f)$
763 n'est pas fortement connexe.