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.
8 Enfin, un bon générateur aléatoire se doit de
9 fournir des nombres selon une distribution uniforme
10 La suite de ce document donnera
11 une condition nécessaire est suffisante pour que
12 cette propriété soit satisfaite.
15 Cette section présente une application directe de la théorie développée ci-avant
16 à la génération de nombres pseudo aléatoires.
17 On présente tout d'abord le générateur
18 basé sur des fonctions chaotiques (section~\ref{sub:prng:algo}),
19 puis comment intégrer la contrainte de distribution uniforme
21 dans le choix de la fonction à itérer (section~\ref{sub:prng:unif}).
22 L'approche est évaluée dans la dernière section.
26 \section{ Nombres pseudo aléatoires construits par itérations unaires}\label{sub:prng:algo}
35 \KwIn{une fonction $f$, un nombre d'itérations $b$,
36 une configuration initiale $x^0$ ($n$ bits)}
37 \KwOut{une configuration $x$ ($n$ bits)}
40 %$k\leftarrow b + \textit{XORshift}(b+1)$\;
43 $s\leftarrow{\textit{Random}(n)}$\;
44 %$s\leftarrow{\textit{XORshift}(n)}$\;
45 $x\leftarrow{F_{f_u}(s,x)}$\;
49 \caption{PRNG basé sur les itérations unaires.}
53 \subsection{Algorithme d'un générateur}
54 On peut penser à construire un générateur de nombres pseudo
55 aléatoires comme dans l'algorithme~\ref{CI Algorithm} donné ci-dessous.
58 Celui-ci prend en entrée: une fonction $f$;
59 un entier $b$, qui assure que le nombre d'itérations
60 est compris entre $b+1 $ et $2b+1$ (et donc supérieur à $b$)
61 et une configuration initiale $x^0$.
62 Il retourne une nouvelle configuration $x$ en appliquant
63 la fonction $F_{f_u}$ vue au chapitre~\ref{chap:carachaos} et correspondant
64 à des itérations unaires.
65 En interne, il exploite un algorithme de génération
66 de nombres pseudo aléatoires donné en paramètre.
67 Cela peut être n'importe quel PRNG (XORshift, Mersenne-Twister) dont la
68 sortie est uniformément distribuée.
69 Notre approche vise a donner des propriétés de chaos a ce générateur embarqué.
72 % \textit{Random}$(l)$.
73 % Cet algorithme est utilisée dans notre générateur pour construire la longueur
74 % de la stratégie ainsi que les éléments qui la composent.
75 % Pratiquement, il retourne des entiers dans $\llbracket 1 ; l \rrbracket$
76 % selon une distribution uniforme et utilise
77 % \textit{XORshift} qui est une classe de générateurs de
78 % nombres pseudo aléatoires conçus par George Marsaglia.
81 % L'algorithme \textit{XORshift}
82 % exploite itérativement l'opérateur $\oplus$
83 % sur des nombres obtenus grâce à des décalages de bits.
84 % Cet opérateur, défini dans $\Bool^{n}$,
85 % applique la fonction \og xor \fg{}
86 % aux bits de même rang de ses deux opérandes (\og opération bit à bit \fg{}).
87 % Une instance de cette classe est donnée dans l'algorithme~\ref{XORshift} donné
90 % \begin{algorithm}[h]
92 % \KwIn{la configuration interne $z$ (un mot de 32-bit)}
93 % \KwOut{$y$ (un mot de 32-bits)}
94 % $z\leftarrow{z\oplus{(z\ll13)}}$\;
95 % $z\leftarrow{z\oplus{(z\gg17)}}$\;
96 % $z\leftarrow{z\oplus{(z\ll5)}}$\;
100 % \caption{Une boucle de l'algorithme de \textit{XORshift}}
105 Nous avons vu au chapitre~\ref{chap:carachaos} que
106 $G_{f_u}$ est chaotique dans l'espace $\mathcal{X}_u$
107 si et seulement le graphe d'itérations $\textsc{giu}(f)$
108 doit être fortement connexe.
109 Pour $b=1$, l'algorithme itère la fonction $F_{f_u}$.
110 Regardons comment l'uniformité de la distribution a
111 contraint la fonction.
113 \subsection{Un générateur à sortie uniformément distribuée}\label{sub:prng:unif}
115 Une matrice stochastique est une matrice carrée
116 dont tous les éléments sont positifs ou nuls et dont
117 la somme de chaque ligne
119 Une matrice stochastique l'est doublement si la somme de chaque colonne est 1.
120 Enfin, une matrice stochastique de taille $n \times n$ est régulière
121 si la propriété suivante est établie:
122 $$\exists k \in \mathds{N}^\ast, \forall i,j \in \llbracket 1; n \rrbracket, M_{ij}^k>0.$$
124 On énonce enfin le théorème suivant liant les
125 vecteur de probabilités
126 et les chaînes de Markov.
131 \begin{theorem}\label{th}
132 Si $M$ est une matrice stochastique régulière, alors $M$
133 possède un unique vecteur stationnaire de probabilités $\pi$
135 De plus, si $\pi^0$ est un {vecteur de probabilités}
137 la suite $(\pi^{k})^{k \in \Nats}$ par
138 $\pi^{k+1} = \pi^k.M $ pour $k = 0, 1,\dots$
139 alors la {chaîne de Markov} $\pi^k$
140 converge vers $\pi$ lorsque $k$ tend vers l'infini.
144 Montrons sur un exemple jouet à deux éléments
145 que ce théorème permet de vérifier si la sortie d'un générateur de
146 nombres pseudo aléatoires est uniformément distribuée ou non.
147 Soit alors $g$ et $h$ deux fonctions de $\Bool^2$
148 définies par $g(x_1,x_2)=(\overline{x_1},x_1.\overline{x_2}) $
149 et $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$.
150 Leurs graphes d'interactions donnés en figure \ref{fig:g:inter} et \ref{fig:h:inter}
151 vérifient les hypothèses du théorème~\ref{th:Adrien}.
152 Leurs graphes d'itérations
153 sont donc fortement connexes, ce que l'on peut vérifier aux figures~\ref{fig:g:iter}
155 \textit{A priori}, ces deux fonctions pourraient être intégrées
156 dans un générateur de nombres pseudo aléatoires. Montrons que ce n'est pas le cas pour $g$ et
157 que cela l'est pour $h$.
169 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
170 \begin{minipage}{0.40\textwidth}
172 \includegraphics[height=4cm]{images/g.pdf}
177 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
178 \begin{minipage}{0.40\textwidth}
180 \includegraphics[height=4cm]{images/h.pdf}
185 \caption{Graphes des itérations unaires
186 de fonctions booléennes dans $\Bool^2$}
187 \label{fig:xplgraphIter}
200 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
201 \begin{minipage}{0.40\textwidth}
203 \includegraphics[height=3cm]{images/gp.pdf}
208 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
209 \begin{minipage}{0.40\textwidth}
211 \includegraphics[height=3cm]{images/hp.pdf}
216 \caption{Graphes d'interactions de fonctions booléennes dans $\Bool^2$}
217 \label{fig:xplgraphInter}
225 Comme le générateur \textit{Random} possède une sortie uniformément
226 distribuée, la stratégie est uniforme sur $\llbracket 1, 2 \rrbracket$,
228 pour tout sommet de $\textsc{giu}(g)$ et de $\textsc{giu}(h)$,
229 chaque arc sortant de ce sommet a, parmi l'ensemble des arcs sortant
230 de ce sommet, une probabilité $1/2$ d’être celui qui sera traversé.
231 En d'autres mots, $\textsc{giu}(g)$ est le graphe orienté d'une chaîne de Markov.
232 Il est facile de vérifier que la matrice de transitions
234 est $M_g = \frac{1}{2} \check{M}_g$,
235 où $\check{M}_g$ est la matrice d' adjacence donnée en
236 figure~\ref{fig:g:incidence} (voir ci-après), et de manière similaire pour $M_h$.
240 \subfigure[$\check{M}_g $.]{
241 \begin{minipage}{0.25\textwidth}
255 \label{fig:g:incidence}
257 \subfigure[$\check{M}_h $.]{
258 \begin{minipage}{0.25\textwidth}
271 \label{fig:h:incidence}
274 \caption{Graphe des fonctions candidates avec $n=2$}
278 Les deux matrices $M_g$ et $M_h$ sont stochastiques. Pour
279 montrer qu'elles sont régulières il suffit de constater qu'aucun élément de
280 $M^5_g$ ni de $M^3_h$ n'est nul.
281 De plus, les vecteurs de probabilités
282 $\pi_g=(\frac{4}{10}, \frac{1}{10},\frac{3}{10},\frac{2}{10})$ et
283 $\pi_h=(\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4})$
284 vérifient $\pi_g M_g = \pi_g$ et
286 Alors d'après le théorème~\ref{th},
287 pour n'importe quel vecteur initial de probabilités $\pi^0$, on a
288 $\lim_{k \to \infty} \pi^0 M^k_g = \pi_g$ et
289 $\lim_{k \to \infty} \pi^0 M^k_h = \pi_h$.
290 Ainsi la chaîne de Markov associé à $h$ tend vers une
291 distribution uniforme, contrairement à celle associée à $g$.
292 On en déduit que $g$ ne devrait pas être itérée dans
293 un générateur de nombres pseudo aléatoires.
295 $h$ devrait pouvoir être embarquée dans l'algorithme~\ref{CI Algorithm},
296 pour peu que le nombre $b$ d'itérations entre deux mesures successives
297 de valeurs soit suffisamment grand de sorte que
298 le vecteur d’état de la chaîne de Markov
299 ait une distribution suffisamment proche de la distribution uniforme.
301 On énonce directement le théorème suivant dont la preuve est donnée en annexes~\ref{anx:generateur}.
303 \begin{theorem}\label{thm:prng:u}
304 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{giu}(f)$ son
305 graphe d'itérations , $\check{M}$ sa matrice d'adjacence
306 et $M$ une matrice $2^n\times 2^n$
308 $M = \dfrac{1}{n} \check{M}$.
309 Si $\textsc{giu}(f)$ est fortement connexe, alors
310 la sortie du générateur de nombres pseudo aléatoires détaillé par
311 l'algorithme~\ref{CI Algorithm} suit une loi qui
312 tend vers la distribution uniforme si
313 et seulement si $M$ est une matrice doublement stochastique.
317 \subsection{Quelques exemples}
319 On reprend le graphe d'interactions $\Gamma(f)$ donné en figure~\ref{fig:G} à la section~\ref{sec:11FCT}.
320 On a vu qu'il y avait 520 fonctions $f$ non isomorphes de graphe d'interactions $\Gamma(f)$,
321 dont seulement 16 d'entre elles possèdent une matrice doublement stochastique.
323 La figure~\ref{fig:listfonction} explicite ces 16 fonctions en
324 définissant les images des éléments de la liste
325 0, 1, 2,\ldots, 14, 15 en respectant l'ordre.
326 Expliquons enfin comment a été calculé le nombre de la troisième
327 colonne utilisé comme le paramètre $b$
328 dans l'algorithme~\ref{CI Algorithm}.
330 Soit $e_i$ le $i^{\textrm{ème}}$ vecteur la base canonique de $\R^{2^{n}}$.
331 Chacun des éléments $v_j$, $1 \le j \le 2^n$,
332 du vecteur $e_i M_f^t$ représente la probabilité
333 d'être dans la configuration $j$ après $t$ étapes du processus de Markov
334 associé à $\textsc{giu}(f)$ en partant de la configuration $i$.
336 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
337 \}$ représente le plus petit nombre d'itérations où la distance de
338 ce vecteur au vecteur $\pi=(\frac{1}{2^n},\ldots,\frac{1}{2^n})$
339 -- autrement dit, où la déviation par rapport à la distribution uniforme --
341 à $10^{-4}$. En prenant le max pour tous les $e_i$, on obtient une valeur pour
345 b = \max\limits_{i \in \llbracket 1, 2^n \rrbracket}
348 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
354 \noindent Par la suite, ce nombre sera appelé \emph{temps de mélange}.
360 \subfigure[Graphe d'interactions]{
361 \begin{minipage}{0.20\textwidth}
363 \includegraphics[width=3.5cm]{images/Gi.pdf}
368 \subfigure[Fonctions doublement stochastiques]{
369 \begin{minipage}{0.75\textwidth}
372 \begin{tabular}{|c|c|c|}
374 {Nom}& {Définition}&{$b$} \\
376 $\mathcal{F}_1$ & 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 1, 0 & 206\\
378 $\mathcal{F}_2$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 0, 1
381 $\mathcal{F}_3$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 1, 0
384 $\mathcal{F}_4$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 0, 1
387 $\mathcal{F}_5$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0
390 $\mathcal{F}_6$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 0, 1
393 $\mathcal{F}_7$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 1, 0
396 $\mathcal{F}_8$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0
399 $\mathcal{F}_9$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
402 $\mathcal{F}_{10}$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
405 $\mathcal{F}_{11}$ &14, 15, 12, 13, 11, 10, 9, 8, 7, 6, 5, 4, 2, 3, 1, 0
408 $\mathcal{F}_{12}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 2, 3, 1, 0
411 $\mathcal{F}_{13}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 3, 2, 1, 0
414 $\mathcal{F}_{14}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 5, 4, 3, 2, 1, 0
417 $\mathcal{F}_{15}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
420 $\mathcal{F}_{16}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
427 \label{fig:listfonction}
430 \caption{Candidates pour le générateur avec $n=4$}
434 La qualité des séquences aléatoires a été évaluée à travers la suite
435 de tests statistiques développée pour les générateurs de nombres
436 pseudo aléatoires par le
437 \emph{National Institute of Standards and Technology} (NIST).
438 L'expérience a montré notamment que toutes ces fonctions
439 passent avec succès cette batterie de tests.
441 Pour conclure cette section, on remarque que le générateur de nombres pseudo-aléatoires
442 a été prouvé chaotique pour $b=1$, \textit{i.e.}, lorsqu'il y a une sortie pour chaque itération.
443 Ceci est difficilement compatible avec la volonté d'avoir une sortie uniformément distribuée:
444 se rapprocher de cette distribution nécessite en effet un nombre plus élevé
445 d'itérations $b$ entre chaque sortie. Par exemple, dans l'exemple précédent, il est nécessaire
446 d'itérer au moins 42 fois entre chaque sortie pour suivre une loi uniforme à $10^{-4}$ près.
447 Montrer les sous-séquences de suites chaotiques ainsi générées demeurent chaotiques
448 est l'objectif de la section suivante.
451 \section{Un PRNG basé sur des itérations unaires qui est chaotique }
453 Cette section présente un espace métrique adapté au générateur de nombres pseudo-aléatoires
454 présenté à l'algorithme~\ref{CI Algorithm} et prouve ensuite que la fonction qu'il représente
455 est chaotique sur cet espace.
457 \subsection{Un espace $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ pour le PRNG de l'algorithme~\ref{CI Algorithm}}
461 Introduisons tout d'abord $\mathcal{P} \subset \mathds{N}$ un ensemble fini non vide de cardinalité
462 $\mathsf{p} \in \mathds{N}^\ast$.
463 Intuitivement, c'est le nombre d'itérations qu'il est autorisé de faire.
464 On ordonne les $\mathsf{p}$ éléments de $\mathcal{P}$ comme suit:
465 $\mathcal{P} = \{ p_1, p_2, \hdots, p_\mathsf{p}\}$
466 et $p_1< p_2< \hdots < p_\mathsf{p}$.
467 Dans l'algorithme~\ref{CI Algorithm},
468 $\mathsf{p}$ vaut 1 et $p_1=b$.
471 Cet algorithme peut être vu comme $b$ compostions de la fonction $F_{f_u}$.
472 Ceci peut cependant se généraliser à $p_i$, $p_i \in \mathcal{P}$,
473 compositions fonctionnelles de $F_{f_u}$.
474 Ainsi, pour chaque $p_i \in \mathcal{P}$, on construit la fonction
475 $F_{{f_u},p_i} : \mathds{B}^\mathsf{N} \times \llbracket 1, \mathsf{N} \rrbracket^{p_i}
476 \rightarrow \mathds{B}^\mathsf{N}$ définie par
479 F_{f_u,p_i} (x,(u^0, u^1, \hdots, u^{p_i-1})) \mapsto
480 F_{f_u}(\hdots (F_{f_u}(F_{f_u}(x,u^0), u^1), \hdots), u^{p_i-1}).
484 on construit l'espace
485 $\mathcal{X}_{\mathsf{N},\mathcal{P}}= \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}}$, où
486 $\mathds{S}_{\mathsf{N},\mathcal{P}}=
487 \llbracket 1, \mathsf{N} \rrbracket^{\Nats}\times
488 \mathcal{P}^{\Nats}$.
489 Chaque élément de l'espace est une paire où le premier élément est
490 un $\mathsf{N}$-uplet de $\Bool^{\mathsf{N}}$ (comme dans $\mathcal{X}_u$).
491 Le second élément est aussi une paire $((u^k)_{k \in \Nats},(v^k)_{k \in \Nats})$ de suites infinies.
492 La suite $(v^k)_{k \in \Nats}$ définit combien d'itérations sont exécutées au temps $k$ entre deux sorties.
493 La séquence $(u^k)_{k \in \Nats}$ définit quel élément est modifié (toujours au temps $k$).
495 Définissons la fonction de décalage $\Sigma$ pour chaque élément de $\mathds{S}_{\mathsf{N},\mathcal{P}}$.
496 $$\begin{array}{cccc}
497 \Sigma:&\mathds{S}_{\mathsf{N},\mathcal{P}} &\longrightarrow
498 &\mathds{S}_{\mathsf{N},\mathcal{P}} \\
499 & \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).
502 En d'autres termes, $\Sigma$ reçoit deux suites $u$ et $v$ et
503 effectue $v^0$ décalage vers la droite sur la première et un décalage vers la droite
507 Ainsi, les sorties $(y^0, y^1, \hdots )$ produites par le générateur détaillé dans
508 l'algorithme~\ref{CI Algorithm}
509 sont les premiers composants des itérations $X^0 = (x^0, (u,v))$ et $\forall n \in \mathds{N},
510 X^{n+1} = G_{f_u,\mathcal{P}}(X^n)$ dans $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ où
511 $G_{f_u,\mathcal{P}}$ est définie par:
518 G_{f_u,\mathcal{P}} :& \mathcal{X}_{\mathsf{N},\mathcal{P}} & \longrightarrow & \mathcal{X}_{\mathsf{N},\mathcal{P}}\\
519 & (e,(u,v)) & \longmapsto & \left( F_{f,v^0}\left( e, (u^0, \hdots, u^{v^0-1}\right), \Sigma (u,v) \right) .
525 \subsection{Une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
527 On définit la fonction $d$ sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ comme suit:
528 Soit $x=(e,s)$ et $\check{x}=(\check{e},\check{s})$ dans
529 $\mathcal{X}_{\mathsf{N},\mathcal{P}} = \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}} $,
530 où $s=(u,v)$ et $\check{s}=(\check{u},\check{v})$ sont dans $ \mathds{S}_{\mathsf{N},\mathcal{P}} =
531 \mathcal{S}_{\llbracket 1, \mathsf{N} \rrbracket} \times \mathcal{S}_\mathcal{P}$.
533 \item $e$ et $\check{e}$ sont des entiers appartenant à $\llbracket 0, 2^{\mathsf{N}-1} \rrbracket$.
534 La distance de Hamming $d_{\mathds{B}^\mathsf{N}}$ sur entre les
535 décompositions binaires de $e$ et de $\check{e}$ (\textit{i.e.}, le
536 le nombre de bits qu'elles ont de différent) constitue
537 la partie entière de $d(X,\check{X})$.
538 \item la partie décimale est construite à partir des différences entre
539 $v^0$ et $\check{v}^0$, suivie des différences entre les séquences finies
540 $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$,
541 suivie par les différences entre $u^{v^0}, u^{v^0+1}, \hdots, u^{v^1-1}$ et
542 $\check{u}^{\check{v}^0}, \check{u}^{\check{v}^0+1}, \hdots, \check{u}^{\check{v}^1-1}$, etc.
544 Plus précisément, soit
545 $p = \lfloor \log_{10}{(\max{\mathcal{P}})}\rfloor +1$ et
546 $n = \lfloor \log_{10}{(\mathsf{N})}\rfloor +1$.
548 \item Les $p$ premiers éléments de $d(x,\check{x})$ sont $|v^0-\check{v}^0|$
549 écrits en base 10 et sur $p$ indices;
550 \item les $n\times \max{(\mathcal{P})}$ éléments suivants servent
551 à évaluer de combien $u^0, u^1, \hdots, u^{v^0-1}$ diffère de
552 $\check{u}^0, \check{u}^1, \hdots, \check{u}^{\check{v}^0-1}$.
553 Les $n$ premiers éléments sont $|u^0-\check{u}^0|$. Il sont suivis de
554 $|u^1-\check{u}^1|$ écrits à l'aide de $n$ éléments, etc.
558 alors le processus se continue jusqu'à $|u^{v^0-1}-\check{u}^{\check{v}^0-1}|$ et la
559 partie décimale de $d(X,\check{X})$ est complétée par des 0
561 $p+n\times \max{(\mathcal{P})}$ éléments.
562 \item Si $v^0<\check{v}^0$, alors les $ \max{(\mathcal{P})}$ blocs de $n$
563 éléments sont $|u^0-\check{u}^0|$, ..., $|u^{v^0-1}-\check{u}^{v^0-1}|$,
564 $\check{u}^{v^0}$ (sur $n$ éléments), ..., $\check{u}^{\check{v}^0-1}$ (sur $n$ éléments), suivi par des 0, si besoin.
565 \item Le cas $v^0>\check{v}^0$ est similaire, et donc omis
567 \item Les $p$ suivants sont $|v^1-\check{v}^1|$, etc.
572 La fonction $d$ peut se formaliser comme suit:
573 $$d(x,\check{x})=d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s})+d_{\mathds{B}^\mathsf{N}}(e,\check{e}),$$
574 où: % $p=\max \mathcal{P}$ and:
576 \item $d_{\mathds{B}^\mathsf{N}}$ est la distance de Hamming,
577 \item $\forall s=(u,v), \check{s}=(\check{u},\check{v}) \in \mathcal{S}_{\mathsf{N},\mathcal{P}}$,\newline
579 d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) &= &
580 \sum_{k=0}^\infty \dfrac{1}{10^{(k+1)p+kn\max{(\mathcal{P})}}}
581 \bigg(|v^k - \check{v}^k| \\
582 & & + \left| \sum_{l=0}^{v^k-1}
583 \dfrac{u^{\sum_{m=0}^{k-1} v^m +l}}{ 10^{(l+1)n}} -
584 \sum_{l=0}^{\check{v}^k-1}
585 \dfrac{\check{u}^{\sum_{m=0}^{k-1} \check{v}^m +l}}{ 10^{(l+1)n}} \right| \bigg)
587 $$ %\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)}.$$
593 On considère par exemple
594 $\mathsf{N}=13$, $\mathcal{P}=\{1,2,11\}$ ($\mathsf{p}$ vaut ainsi $3$),
598 u=\underline{6,} ~ \underline{11,5}, ...\\
605 \check{u}=\underline{6,4} ~ \underline{1}, ...\\
610 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.010004000000000000000000011005 ...$
611 En effet, les $p=2$ premiers éléments sont 01, c'est-à-dire
612 $|v^0-\check{v}^0|=1$,
613 et on utilise $p$ éléments pour représenter cette différence
614 (Comme $\mathcal{P}=\{1,2,11\}$, cette différence peut valoir 10).
615 On prend alors le $v^0=1$ premier terme de $u$,
616 chaque terme étant codé sur $n=2$ éléments, soit 06.
617 Comme on itère au plus $\max{(\mathcal{P})}$ fois,
618 on complète cette valeur par des 0 de sorte que
619 la chaîne obtenue a $n\times \max{(\mathcal{P})}=22$ éléments, soit:
620 0600000000000000000000.
621 De manière similaire, les $\check{v}^0=2$ premiers
622 termes de $\check{u}$ sont représentés par
623 0604000000000000000000.
624 LA valeur absolue de leur différence est égale à
625 0004000000000000000000.
626 Ces éléments sont concaténés avec 01. On peut construire alors le reste de
632 On considère à présent que $\mathsf{N}=9$, que $\mathcal{P}=\{2,7\}$ et que
635 u=\underline{6,7,} ~ \underline{4,2,} ...\\
642 \check{u}=\underline{4, 9, 6, 3, 6, 6, 7,} ~ \underline{9, 8}, ...\\
648 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.5173633305600000...$,
650 $|v^0-\check{v}^0|=5$, $|4963667-6700000| = 1736333$, $|v^1-\check{v}^1|=0$,
651 et $|9800000-4200000| = 5600000$.
656 On a la proposition suivante, qui est démontrée en annexes~\ref{anx:generateur}.
658 $d$ est une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$.
662 \subsection{Le graphe $\textsc{giu}_{\mathcal{P}}(f)$ étendant $\textsc{giu}(f)$}
664 A partir de $\mathcal{P}=\{p_1, p_2, \hdots, p_\mathsf{p}\}$, on
665 définit le graphe orienté $\textsc{giu}_{\mathcal{P}}(f)$ de la manière suivante:
667 \item les n{\oe}uds sont les $2^\mathsf{N}$ configurations de $\mathds{B}^\mathsf{N}$,
668 %\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
669 % having their elements in $\llbracket 1, \mathsf{N} \rrbracket $.
670 \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
671 $\mathcal{P}$ (\textit{i.e.}, on peut itérer $p_i$ fois),
672 chaque $u_k$ de la suite appartient à $[\mathsf{N}]$ et
673 $y=F_{f_u,p_i} (x, (u_0, \hdots, u_{p_i-1})) $.
675 Il n'est pas difficile de constater que $\textsc{giu}_{\{1\}}(f)$ est $\textsc{giu}(f)$.
683 \subfigure[$\textsc{giu}_{\{2\}}(h)$]{
684 \begin{minipage}{0.30\textwidth}
686 \includegraphics[height=4cm]{images/h2prng}
691 \subfigure[$\textsc{giu}_{\{3\}}(h)$]{
692 \begin{minipage}{0.40\textwidth}
694 \includegraphics[height=4cm]{images/h3prng}
699 \subfigure[$\textsc{giu}_{\{2,3\}}(h)$]{
700 \begin{minipage}{0.40\textwidth}
702 \includegraphics[height=4cm]{images/h23prng}
709 \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)$}
710 %\label{fig:xplgraphIter}
717 On reprend l'exemple où $\mathsf{N}=2$ et
718 $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$ déjà détaillé
719 à la section~\ref{sub:prng:unif}.
721 Le graphe $\textsc{giu}_{\{1\}}(h)$ a déjà été donné à la figure~\ref{fig:h:iter}.
722 Les graphes $\textsc{giu}_{\{2\}}(h)$, $\textsc{giu}_{\{3\}}(h)$ et
723 $\textsc{giu}_{\{2,3\}}(h)$ sont respectivement donnés aux figure~\ref{fig:h2prng}, ~\ref{fig:h3prng} et ~\ref{fig:h23prng}.
724 Le premier (respectivement le second)
725 illustre le comportement du générateur lorsque qu'on itère exactement
726 2 fois (resp. 3 fois) puis qu'on affiche le résultat.
727 Le dernier donnerait le comportement d'un générateur qui s'autoriserait
728 à itérer en interne systématiquement 2 ou trois fois avant de retourner un résultat.
733 \subsection{le PRNG de l'algorithme~\ref{CI Algorithm} est chaotique sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
735 Le théorème suivant, similaire à celui dans $\mathcal{X}_u$ et dans $\mathcal{X}_g$
736 est prouvé en annexes~\ref{anx:generateur}.
739 La fonction $G_{f_u,\mathcal{P}}$ est chaotique sur
740 $(\mathcal{X}_{\mathsf{N},\mathcal{P}},d)$ si et seulement si
741 graphe d'itération $\textsc{giu}_{\mathcal{P}}(f)$
742 est fortement connexe.
744 On alors corollaire suivant
747 Le générateur de nombre pseudo aléatoire détaillé
748 à l'algorithme~\ref{CI Algorithm}
750 sur $(\mathcal{X}_{\mathsf{N},\{b\}},d)$ pour la fonction négation.
753 Dans cet algorithme, $\mathcal{P}$ est le singleton $\{b\}$.
754 Que $b$ soit pair ou impair, $\textsc{giu}_{\mathcal{b}}(f)$
755 n'est pas fortement connexe.