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 distributionuniforme
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{Algorithme de génération de nombres pseudo aléatoires
50 à l'aide de la fonction chaotique $G_f$}
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 assure que le nombre d'itérations
61 est compris entre $b+1 $ et $2b+1$ (et donc supérieur à $b$)
62 et une configuration initiale $x^0$.
63 Il retourne une nouvelle configuration $x$ en appliquant
64 la fonction $F_{f_u}$ 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
69 Cet algorithme est utilisée dans notre générateur pour construire la longueur
70 de la stratégie ainsi que les éléments qui la composent.
71 Pratiquement, il retourne des entiers dans $\llbracket 1 ; l \rrbracket$
72 selon une distributionuniforme et utilise
73 \textit{XORshift} qui est une classe de générateurs de
74 nombres pseudo aléatoires conçus par George Marsaglia.
77 L'algorithme \textit{XORshift}
78 exploite itérativement l'opérateur $\oplus$
79 sur des nombres obtenus grâce à des decalages de bits.
80 Cet opérateur, défini dans $\Bool^{n}$,
81 applique la fonction \og xor \fg{}
82 aux bits de même rang de ses deux opérandes (\og opération bit à bit \fg{}).
83 Une instance de cette classe est donnée dans l'algorithme~\ref{XORshift} donné
88 \KwIn{la configuration interne $z$ (un mot de 32-bit)}
89 \KwOut{$y$ (un mot de 32-bits)}
90 $z\leftarrow{z\oplus{(z\ll13)}}$\;
91 $z\leftarrow{z\oplus{(z\gg17)}}$\;
92 $z\leftarrow{z\oplus{(z\ll5)}}$\;
96 \caption{Une boucle de l'algorithme de \textit{XORshift}}
101 Nous avons vu au chapitre~\ref{chap:carachaos} que
102 $G_{f_u}$ est chaotique dans l'espace $\mathcal{X}_u$
103 si et seulement le graphe d'itérations $\textsc{giu}(f)$
104 doit être fortement connexe.
105 Pour $b=1$, l'algorithme itère la fonction $F_{f_u}$.
106 Regardons comment l'uniformité de la distribution a
107 contraint la fonction.
109 \subsection{Un générateur à sortie uniformément distribuée}\label{sub:prng:unif}
111 Une matrice stochastique est une matrice carrée
112 dont tous les éléments sont positifs ou nuls et dont
113 la somme de chaque ligne
115 Une matrice stochastique l'est doublement si la somme de chaque colonne est 1.
116 Enfin, une matrice stochastique de taille $n \times n$ est régulière
117 si la propriété suivante est établie:
118 $$\exists k \in \mathds{N}^\ast, \forall i,j \in \llbracket 1; n \rrbracket, M_{ij}^k>0.$$
120 On énonce enfin le théorème suivant liant les
121 vecteur de probabilite
122 et les chaines de Markov.
127 \begin{theorem}\label{th}
128 Si $M$ est une matrice stochastique régulière, alors $M$
129 possède un unique vecteur stationnaire de probabilités $\pi$
131 De plus, si $\pi^0$ est un {vecteurDeProbabilite}
133 la suite $(\pi^{k})^{k \in \Nats}$ par
134 $\pi^{k+1} = \pi^k.M $ pour $k = 0, 1,\dots$
135 alors la {chaineDeMarkov} $\pi^k$
136 converge vers $\pi$ lorsque $k$ tend vers l'infini.
140 Montrons sur un exemple jouet à deux éléments
141 que ce théorème permet de vérifier si la sortie d'un générateur de
142 nombres pseudo aléatoires est uniformément distribuée ou non.
143 Soit alors $g$ et $h$ deux fonctions de $\Bool^2$
144 définies par $g(x_1,x_2)=(\overline{x_1},x_1.\overline{x_2}) $
145 et $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$.
146 Leurs graphes d'interactions donnés en figure \ref{fig:g:inter} et \ref{fig:h:inter}
147 vérifient les hypothèses du théorème~\ref{th:Adrien}.
148 Leurs graphes d'itérations
149 sont donc fortement connexes, ce que l'on peut vérifier aux figures~\ref{fig:g:iter}
151 \textit{A priori}, ces deux fonctions pourraient être intégrées
152 dans un générateur de nombres pseudo aléatoires. Montrons que ce n'est pas le cas pour $g$ et
153 que cela l'est pour $h$.
165 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
166 \begin{minipage}{0.40\textwidth}
168 \includegraphics[height=4cm]{images/g.pdf}
173 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
174 \begin{minipage}{0.40\textwidth}
176 \includegraphics[height=4cm]{images/h.pdf}
181 \caption{Graphes d'itérations de fonctions booléennes dans $\Bool^2$}
182 \label{fig:xplgraphIter}
195 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
196 \begin{minipage}{0.40\textwidth}
198 \includegraphics[height=3cm]{images/gp.pdf}
203 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
204 \begin{minipage}{0.40\textwidth}
206 \includegraphics[height=3cm]{images/hp.pdf}
211 \caption{Graphes d'interactions de fonctions booléennes dans $\Bool^2$}
212 \label{fig:xplgraphInter}
220 Comme le générateur \textit{Random} possède une sortie uniformément
221 distribuée, la stratégie est uniforme sur $\llbracket 1, 2 \rrbracket$,
223 pour tout sommet de $\textsc{giu}(g)$ et de $\textsc{giu}(h)$,
224 chaque arc sortant de ce sommet a, parmi l'ensemble des arcs sortant
225 de ce sommet, une probabilité $1/2$ d’être celui qui sera traversé.
226 En d'autres mots, $\textsc{giu}(g)$ est le graphe orienté d'une chaîne de Markov.
227 Il est facile de vérifier que la matrice de transitions
229 est $M_g = \frac{1}{2} \check{M}_g$,
230 où $\check{M}_g$ est la matrice d' adjacence donnée en
231 figure~\ref{fig:g:incidence} (voir ci-après), et similairement pour $M_h$.
235 \subfigure[$\check{M}_g $.]{
236 \begin{minipage}{0.25\textwidth}
250 \label{fig:g:incidence}
252 \subfigure[$\check{M}_h $.]{
253 \begin{minipage}{0.25\textwidth}
266 \label{fig:h:incidence}
269 \caption{Graphe des fonctions candidates avec $n=2$}
273 Les deux matrices $M_g$ et $M_h$ sont stochastiques. Pour
274 montrer qu'elles sont régulières il suffit de constater qu'aucun élément de
275 $M^5_g$ ni de $M^3_h$ n'est nul.
276 De plus, les vecteurs de probabilités
277 $\pi_g=(\frac{4}{10}, \frac{1}{10},\frac{3}{10},\frac{2}{10})$ et
278 $\pi_h=(\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4})$
279 vérifient $\pi_g M_g = \pi_g$ et
281 Alors d'après le théorème~\ref{th},
282 pour n'importe quel vecteur initial de probabilités $\pi^0$, on a
283 $\lim_{k \to \infty} \pi^0 M^k_g = \pi_g$ et
284 $\lim_{k \to \infty} \pi^0 M^k_h = \pi_h$.
285 Ainsi la chaîne de Markov associé à $h$ tend vers une
286 distribution uniforme, contrairement à celle associée à $g$.
287 On en déduit que $g$ ne devrait pas être itérée dans
288 un générateur de nombres pseudo aléatoires.
290 $h$ devrait pouvoir être embarquée dans l'algorithme~\ref{CI Algorithm},
291 pour peu que le nombre $b$ d'itérations entre deux mesures successives
292 de valeurs soit suffisamment grand de sorte que
293 le vecteur d’état de la chaîne de Markov
294 ait une distribution suffisamment proche de la distribution uniforme.
296 On énnonce directement le théorème suivant dont la preuve est donnée en annexes~\ref{anx:generateur}.
299 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{giu}(f)$ son
300 graphe d'itérations , $\check{M}$ sa matrice d'adjacence
301 et $M$ une matrice $2^n\times 2^n$ définie comme dans le lemme précédent.
302 Si $\textsc{giu}(f)$ est fortement connexe, alors
303 la sortie du générateur de nombres pseudo aléatoires détaillé par
304 l'algorithme~\ref{CI Algorithm} suit une loi qui
305 tend vers la distribution uniforme si
306 et seulement si $M$ est une matrice doublement stochastique.
310 \subsection{Quelques exemples}
312 On reprend le graphe d'interactions $\Gamma(f)$ donné en figure~\ref{fig:G} à la section~\ref{sec:11FCT}.
313 On a vu qu'il y avait 520 fonctions $f$ non isomorphes de graphe d'interactions $\Gamma(f)$,
314 dont seulement 16 d'entre elles possédent une matrice doublement stochastique.
316 La figure~\ref{fig:listfonction} explicite ces 16 fonctions en
317 définissant les images des éléments de la liste
318 0, 1, 2,\ldots, 14, 15 en respectant l'ordre.
319 Expliquons enfin comment a été calculé le nombre de la troisième
320 colonne utilisé comme le paramètre $b$
321 dans l'algorithme~\ref{CI Algorithm}.
323 Soit $e_i$ le $i^{\textrm{ème}}$ vecteur la base canonique de $\R^{2^{n}}$.
324 Chacun des éléments $v_j$, $1 \le j \le 2^n$,
325 du vecteur $e_i M_f^t$ représente la probabilité
326 d'être dans la configuration $j$ après $t$ étapes du processus de Markov
327 associé à $\textsc{giu}(f)$ en partant de la configuration $i$.
329 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
330 \}$ représente le plus petit nombre d'itérations où la distance de
331 ce vecteur au vecteur $\pi=(\frac{1}{2^n},\ldots,\frac{1}{2^n})$
332 -- autrement dit, où la déviation par rapport à la distribution uniforme --
334 à $10^{-4}$. En prenant le max pour tous les $e_i$, on obtient une valeur pour
337 b = \max\limits_{i \in \llbracket 1, 2^n \rrbracket}
340 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
347 \subfigure[Graphe d'interactions]{
348 \begin{minipage}{0.20\textwidth}
350 \includegraphics[width=3.5cm]{images/Gi.pdf}
355 \subfigure[Fonctions doublement stochastiques]{
356 \begin{minipage}{0.75\textwidth}
359 \begin{tabular}{|c|c|c|}
361 {Nom}& {Définition}&{$b$} \\
363 $\mathcal{F}_1$ & 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 1, 0 & 206\\
365 $\mathcal{F}_2$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 0, 1
368 $\mathcal{F}_3$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 1, 0
371 $\mathcal{F}_4$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 0, 1
374 $\mathcal{F}_5$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0
377 $\mathcal{F}_6$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 0, 1
380 $\mathcal{F}_7$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 1, 0
383 $\mathcal{F}_8$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0
386 $\mathcal{F}_9$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
389 $\mathcal{F}_{10}$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
392 $\mathcal{F}_{11}$ &14, 15, 12, 13, 11, 10, 9, 8, 7, 6, 5, 4, 2, 3, 1, 0
395 $\mathcal{F}_{12}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 2, 3, 1, 0
398 $\mathcal{F}_{13}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 3, 2, 1, 0
401 $\mathcal{F}_{14}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 5, 4, 3, 2, 1, 0
404 $\mathcal{F}_{15}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
407 $\mathcal{F}_{16}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
414 \label{fig:listfonction}
417 \caption{Candidates pour le générateur avec $n=4$}
421 La qualité des séquences aléatoires a été évaluée à travers la suite
422 de tests statistiques développée pour les générateurs de nombres
423 pseudo aléatoires par le
424 \emph{National Institute of Standards and Technology} (NIST).
425 L'expérience a montré notamment que toutes ces fonctions
426 passent avec succès cette batterie de tests.
428 Pour conclure cette section, on remarque que le générateur de nombres pseudo-aléatoires
429 a été prouvé chaotique pour $b=1$, \textit{i.e.}, lorqu'il y a une sortie pour chaque itération.
430 Ceci est difficilement compatible avec la volonté d'avoir une sortie uniformémement distribuée:
431 se rapprocher de cette distribution nécessite en effet un nombre plus élevé
432 d'itérations $b$ entre chaque sortie. Par exemple, dans l'exemple précédent, il est nécessaire
433 d'itérer au moins 42 fois entre chaque sortie pour suivre une loi uniforme à $10^{-4}$ près.
434 Montrer les sous-séquences de suites chaotiques ainsi générées demeurent chaotiques
435 est l'objectif de la section suivante.
438 \section{Un PRNG basé sur des itérations unaires qui est chaotique }
440 Cette section présente un espace métrique adapté au générateur de nombres pseudo-aléatoires
441 pésenté à l'algorithme~\ref{CI Algorithm} et prouve ensuite que la fonction qu'il représente
442 est chaotique sur cet espace.
444 \subsection{Un espace $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ pour le PRNG de l'algorithme~\ref{CI Algorithm}}
448 Introduisons tout d'abord $\mathcal{P} \subset \mathds{N}$ un ensemble fini non vide de cardinalité
449 $\mathsf{p} \in \mathds{N}^\ast$.
450 Intuitivement, c'est le nombre d'itérations qu'il est autorisé de faire.
451 On ordonne les $\mathsf{p}$ éléments de $\mathcal{P}$ comme suit:
452 $\mathcal{P} = \{ p_1, p_2, \hdots, p_\mathsf{p}\}$
453 et $p_1< p_2< \hdots < p_\mathsf{p}$.
454 Dans l'algorithme~\ref{CI Algorithm},
455 $\mathsf{p}$ vaut 1 et $p_1=b$.
458 Cet algorithme peut être vu comme $b$ compostions de la function $F_{f_u}$.
459 Ceci peut cependant se généraliser à $p_i$, $p_i \in \mathcal{P}$,
460 compositions fonctionnelles de $F_{f_u}$.
461 Ainsi, pour chaque $p_i \in \mathcal{P}$, on construit la fonction
462 $F_{{f_u},p_i} : \mathds{B}^\mathsf{N} \times \llbracket 1, \mathsf{N} \rrbracket^{p_i}
463 \rightarrow \mathds{B}^\mathsf{N}$ définie par
466 F_{f_u,p_i} (x,(u^0, u^1, \hdots, u^{p_i-1})) \mapsto
467 F_{f_u}(\hdots (F_{f_u}(F_{f_u}(x,u^0), u^1), \hdots), u^{p_i-1}).
471 on construit l'espace
472 $\mathcal{X}_{\mathsf{N},\mathcal{P}}= \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}}$, où
473 $\mathds{S}_{\mathsf{N},\mathcal{P}}=
474 \llbracket 1, \mathsf{N} \rrbracket^{\Nats}\times
475 \mathcal{P}^{\Nats}$.
476 Chaque élément de l'espace est une paire où le premier élément est
477 un $\mathsf{N}$-uplet de $\Bool^{\mathsf{N}}$ (comme dans $\mathcal{X}_u$).
478 Le second élément est aussi une paire $((u^k)_{k \in \Nats},(v^k)_{k \in \Nats})$ de suites infinies.
479 La suite $(v^k)_{k \in \Nats}$ définit combien d'itérations sont exécutées au temps $k$ entre deux sorties.
480 La séquence $(u^k)_{k \in \Nats}$ définit quel élément est modifié (toujours au temps $k$).
482 Définissons la fonction de décallage $\Sigma$ pour chaque élément de $\mathds{S}_{\mathsf{N},\mathcal{P}}$.
483 $$\begin{array}{cccc}
484 \Sigma:&\mathds{S}_{\mathsf{N},\mathcal{P}} &\longrightarrow
485 &\mathds{S}_{\mathsf{N},\mathcal{P}} \\
486 & \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).
489 En d'autres termes, $\Sigma$ reçoit deux suites $u$ et $v$ et
490 effectue $v^0$ décallage vers la droite sur la première et un décallage vers la droite
494 Ainsi, les sorties $(y^0, y^1, \hdots )$ produites par le générateur détaillé dans
495 l'algorithme~\ref{CI Algorithm}
496 sont les premiers composants des itérations $X^0 = (x^0, (u,v))$ et $\forall n \in \mathds{N},
497 X^{n+1} = G_{f_u,\mathcal{P}}(X^n)$ dans $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ où
498 $G_{f_u,\mathcal{P}}$ est définie par:
505 G_{f_u,\mathcal{P}} :& \mathcal{X}_{\mathsf{N},\mathcal{P}} & \longrightarrow & \mathcal{X}_{\mathsf{N},\mathcal{P}}\\
506 & (e,(u,v)) & \longmapsto & \left( F_{f,v^0}\left( e, (u^0, \hdots, u^{v^0-1}\right), \Sigma (u,v) \right) .
512 \subsection{Une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
514 On définit la fonction $d$ sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ comme suit:
515 Soit $x=(e,s)$ et $\check{x}=(\check{e},\check{s})$ dans
516 $\mathcal{X}_{\mathsf{N},\mathcal{P}} = \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}} $,
517 où $s=(u,v)$ et $\check{s}=(\check{u},\check{v})$ sont dans $ \mathds{S}_{\mathsf{N},\mathcal{P}} =
518 \mathcal{S}_{\llbracket 1, \mathsf{N} \rrbracket} \times \mathcal{S}_\mathcal{P}$.
520 \item $e$ et $\check{e}$ sont des entiers appartenant à $\llbracket 0, 2^{\mathsf{N}-1} \rrbracket$.
521 La distance de Hamming $d_{\mathds{B}^\mathsf{N}}$ sur entre les
522 décompositions binaires de $e$ et de $\check{e}$ (\textit{i.e.}, le
523 le nombre de bits qu'elles ont de différent) constitue
524 la partie entière de $d(X,\check{X})$.
525 \item la partie décimale est construite à partir des différences entre
526 $v^0$ et $\check{v}^0$, suivie des différences entre les séquences finies
527 $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$,
528 suivie par les différences entre $u^{v^0}, u^{v^0+1}, \hdots, u^{v^1-1}$ et
529 $\check{u}^{\check{v}^0}, \check{u}^{\check{v}^0+1}, \hdots, \check{u}^{\check{v}^1-1}$, etc.
531 Plus précisemment, soit
532 $p = \lfloor \log_{10}{(\max{\mathcal{P}})}\rfloor +1$ et
533 $n = \lfloor \log_{10}{(\mathsf{N})}\rfloor +1$.
535 \item Les $p$ premiers éléments de $d(x,\check{x})$ sont $|v^0-\check{v}^0|$
536 écrits en base 10 et sur $p$ indices;
537 \item les $n\times \max{(\mathcal{P})}$ éléments suivants servent
538 à évaluer de combien $u^0, u^1, \hdots, u^{v^0-1}$ diffère de
539 $\check{u}^0, \check{u}^1, \hdots, \check{u}^{\check{v}^0-1}$.
540 Les $n$ premiers éléments sont $|u^0-\check{u}^0|$. Il sont suivis de
541 $|u^1-\check{u}^1|$ écrits à l'aide de $n$ éléments, etc.
545 alors le processus se continue jusqu'à $|u^{v^0-1}-\check{u}^{\check{v}^0-1}|$ et la
546 partie décimale de $d(X,\check{X})$ est complétée par des 0
548 $p+n\times \max{(\mathcal{P})}$ éléments.
549 \item Si $v^0<\check{v}^0$, alors les $ \max{(\mathcal{P})}$ blocs de $n$
550 éléments sont $|u^0-\check{u}^0|$, ..., $|u^{v^0-1}-\check{u}^{v^0-1}|$,
551 $\check{u}^{v^0}$ (sur $n$ éléments), ..., $\check{u}^{\check{v}^0-1}$ (sur $n$ éléments), suivi par des 0, si besoin.
552 \item Le cas $v^0>\check{v}^0$ est similaire, et donc omis
554 \item Les $p$ suivants sont $|v^1-\check{v}^1|$, etc.
559 La fonction $d$ peut se formaliser comme suit:
560 $$d(x,\check{x})=d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s})+d_{\mathds{B}^\mathsf{N}}(e,\check{e}),$$
561 où: % $p=\max \mathcal{P}$ and:
563 \item $d_{\mathds{B}^\mathsf{N}}$ est la distance de Hamming,
564 \item $\forall s=(u,v), \check{s}=(\check{u},\check{v}) \in \mathcal{S}_{\mathsf{N},\mathcal{P}}$,\newline
566 d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) &= &
567 \sum_{k=0}^\infty \dfrac{1}{10^{(k+1)p+kn\max{(\mathcal{P})}}}
568 \bigg(|v^k - \check{v}^k| \\
569 & & + \left| \sum_{l=0}^{v^k-1}
570 \dfrac{u^{\sum_{m=0}^{k-1} v^m +l}}{ 10^{(l+1)n}} -
571 \sum_{l=0}^{\check{v}^k-1}
572 \dfrac{\check{u}^{\sum_{m=0}^{k-1} \check{v}^m +l}}{ 10^{(l+1)n}} \right| \bigg)
574 $$ %\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)}.$$
580 On considère par exemple
581 $\mathsf{N}=13$, $\mathcal{P}=\{1,2,11\}$ ($\mathsf{p}$ vaut ainsi $3$),
585 u=\underline{6,} ~ \underline{11,5}, ...\\
592 \check{u}=\underline{6,4} ~ \underline{1}, ...\\
597 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.010004000000000000000000011005 ...$
598 En effet, les $p=2$ premiers éléments sont 01, c'est-à-dire
599 $|v^0-\check{v}^0|=1$,
600 et on utilise $p$ éléments pour représenter cette différence
601 (Comme $\mathcal{P}=\{1,2,11\}$, cette différence peut valoir 10).
602 On prend alors le $v^0=1$ premier terme de $u$,
603 chaque terme étant codé sur $n=2$ éléments, soit 06.
604 Comme on itère au plus $\max{(\mathcal{P})}$ fois,
605 on complète cette valeur par des 0 de sorte que
606 la chaine obtenue a $n\times \max{(\mathcal{P})}=22$ éléments, soit:
607 0600000000000000000000.
608 De manière similaire, les $\check{v}^0=2$ premiers
609 termes de $\check{u}$ sont représentés par
610 0604000000000000000000.
611 LA valeur absolue de leur différence est égale à
612 0004000000000000000000.
613 Ces éléments sont concaténés avec 01. On peut construire alors le reste de
619 On considère à présent que $\mathsf{N}=9$, que $\mathcal{P}=\{2,7\}$ et que
622 u=\underline{6,7,} ~ \underline{4,2,} ...\\
629 \check{u}=\underline{4, 9, 6, 3, 6, 6, 7,} ~ \underline{9, 8}, ...\\
635 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.5173633305600000...$,
637 $|v^0-\check{v}^0|=5$, $|4963667-6700000| = 1736333$, $|v^1-\check{v}^1|=0$,
638 et $|9800000-4200000| = 5600000$.
643 On a la proposition suivante, qui est démontrée en annexes~\ref{anx:generateur}.
645 $d$ est une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$.
649 \subsection{Le graphe $\textsc{giu}_{\mathcal{P}}(f)$ étendant $\textsc{giu}(f)$}
651 A partir de $\mathcal{P}=\{p_1, p_2, \hdots, p_\mathsf{p}\}$, on
652 definit le graphe orienté $\textsc{giu}_{\mathcal{P}}(f)$ de la manière suivante:
654 \item les n{\oe}uds sont les $2^\mathsf{N}$ configurations de $\mathds{B}^\mathsf{N}$,
655 %\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
656 % having their elements in $\llbracket 1, \mathsf{N} \rrbracket $.
657 \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
658 $\mathcal{P}$ (\textit{i.e.}, on peut itérer $p_i$ fois),
659 chaque $u_k$ de la suite appartient à $[\mathsf{N}]$ et
660 $y=F_{f_u,p_i} (x, (u_0, \hdots, u_{p_i-1})) $.
662 Il n'est pas difficile de constater que $\textsc{giu}_{\{1\}}(f)$ est $\textsc{giu}(f)$.
670 \subfigure[$\textsc{giu}_{\{2\}}(h)$]{
671 \begin{minipage}{0.30\textwidth}
673 \includegraphics[height=4cm]{images/h2prng}
678 \subfigure[$\textsc{giu}_{\{3\}}(h)$]{
679 \begin{minipage}{0.40\textwidth}
681 \includegraphics[height=4cm]{images/h3prng}
686 \subfigure[$\textsc{giu}_{\{2,3\}}(h)$]{
687 \begin{minipage}{0.40\textwidth}
689 \includegraphics[height=4cm]{images/h23prng}
696 \caption{Graphes d'iterations $\textsc{giu}_{\mathcal{P}}(h)$ pour $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$}
697 \label{fig:xplgraphIter}
704 On reprend l'exemple où $\mathsf{N}=2$ et
705 $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$ déjà détaillé
706 à la section~\ref{sub:prng:unif}.
708 Le graphe $\textsc{giu}_{\{1\}}(h)$ a déjà été donné à la figure~\ref{fig:h:iter}.
709 Les graphes $\textsc{giu}_{\{2\}}(h)$, $\textsc{giu}_{\{3\}}(h)$ et
710 $\textsc{giu}_{\{2,3\}}(h)$ sont respectivement donnés aux figure~\ref{fig:h2prng}, ~\ref{fig:h3prng} et ~\ref{fig:h23prng}.
711 Le premier (repsectivement le second)
712 illustre le comportement du générateur lorsque qu'on itère exactement
713 2 fois (resp. 3 fois) puis qu'on affiche le résultat.
714 Le dernier donnerait le comportement d'un générateur qui s'autoriserait
715 à itérer en interne systématiquement 2 ou trois fois avant de retourner un résultat.
720 \subsection{le PRNG de l'algorithme~\ref{CI Algorithm} est chaotique sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
722 Le théorème suivant, similaire à celui dans $\mathcal{X}_u$ et dans $\mathcal{X}_g$
723 est prouvé en annexes~\ref{anx:generateur}.
726 La fonction $G_{f_u,\mathcal{P}}$ est chaotique sur
727 $(\mathcal{X}_{\mathsf{N},\mathcal{P}},d)$ si et seulement si
728 graphe d'itération $\textsc{giu}_{\mathcal{P}}(f)$
729 est fortement connexe.
731 On alors corollaire suivant
734 Le générateur de nombre pseudo aléatoire détaillé
735 à l'algorithme~\ref{CI Algorithm}
737 sur $(\mathcal{X}_{\mathsf{N},\{b\}},d)$ pour la fonction négation.
740 Dans cet algorithme, $\mathcal{P}$ est le singleton $\{b\}$.
741 Que $b$ soit pair ou impair, $\textsc{giu}_{\mathcal{b}}(f)$
742 n'est pas fortement connexe.