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
68 Cet algorithme est utilisée dans notre générateur pour construire la longueur
69 de la stratégie ainsi que les éléments qui la composent.
70 Pratiquement, il retourne des entiers dans $\llbracket 1 ; l \rrbracket$
71 selon une distribution uniforme et utilise
72 \textit{XORshift} qui est une classe de générateurs de
73 nombres pseudo aléatoires conçus par George Marsaglia.
76 L'algorithme \textit{XORshift}
77 exploite itérativement l'opérateur $\oplus$
78 sur des nombres obtenus grâce à des décalages de bits.
79 Cet opérateur, défini dans $\Bool^{n}$,
80 applique la fonction \og xor \fg{}
81 aux bits de même rang de ses deux opérandes (\og opération bit à bit \fg{}).
82 Une instance de cette classe est donnée dans l'algorithme~\ref{XORshift} donné
87 \KwIn{la configuration interne $z$ (un mot de 32-bit)}
88 \KwOut{$y$ (un mot de 32-bits)}
89 $z\leftarrow{z\oplus{(z\ll13)}}$\;
90 $z\leftarrow{z\oplus{(z\gg17)}}$\;
91 $z\leftarrow{z\oplus{(z\ll5)}}$\;
95 \caption{Une boucle de l'algorithme de \textit{XORshift}}
100 Nous avons vu au chapitre~\ref{chap:carachaos} que
101 $G_{f_u}$ est chaotique dans l'espace $\mathcal{X}_u$
102 si et seulement le graphe d'itérations $\textsc{giu}(f)$
103 doit être fortement connexe.
104 Pour $b=1$, l'algorithme itère la fonction $F_{f_u}$.
105 Regardons comment l'uniformité de la distribution a
106 contraint la fonction.
108 \subsection{Un générateur à sortie uniformément distribuée}\label{sub:prng:unif}
110 Une matrice stochastique est une matrice carrée
111 dont tous les éléments sont positifs ou nuls et dont
112 la somme de chaque ligne
114 Une matrice stochastique l'est doublement si la somme de chaque colonne est 1.
115 Enfin, une matrice stochastique de taille $n \times n$ est régulière
116 si la propriété suivante est établie:
117 $$\exists k \in \mathds{N}^\ast, \forall i,j \in \llbracket 1; n \rrbracket, M_{ij}^k>0.$$
119 On énonce enfin le théorème suivant liant les
120 vecteur de probabilités
121 et les chaînes de Markov.
126 \begin{theorem}\label{th}
127 Si $M$ est une matrice stochastique régulière, alors $M$
128 possède un unique vecteur stationnaire de probabilités $\pi$
130 De plus, si $\pi^0$ est un {vecteur de probabilités}
132 la suite $(\pi^{k})^{k \in \Nats}$ par
133 $\pi^{k+1} = \pi^k.M $ pour $k = 0, 1,\dots$
134 alors la {chaîne de Markov} $\pi^k$
135 converge vers $\pi$ lorsque $k$ tend vers l'infini.
139 Montrons sur un exemple jouet à deux éléments
140 que ce théorème permet de vérifier si la sortie d'un générateur de
141 nombres pseudo aléatoires est uniformément distribuée ou non.
142 Soit alors $g$ et $h$ deux fonctions de $\Bool^2$
143 définies par $g(x_1,x_2)=(\overline{x_1},x_1.\overline{x_2}) $
144 et $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$.
145 Leurs graphes d'interactions donnés en figure \ref{fig:g:inter} et \ref{fig:h:inter}
146 vérifient les hypothèses du théorème~\ref{th:Adrien}.
147 Leurs graphes d'itérations
148 sont donc fortement connexes, ce que l'on peut vérifier aux figures~\ref{fig:g:iter}
150 \textit{A priori}, ces deux fonctions pourraient être intégrées
151 dans un générateur de nombres pseudo aléatoires. Montrons que ce n'est pas le cas pour $g$ et
152 que cela l'est pour $h$.
164 \subfigure[$g(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}) $]{
165 \begin{minipage}{0.40\textwidth}
167 \includegraphics[height=4cm]{images/g.pdf}
172 \subfigure[$h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$]{
173 \begin{minipage}{0.40\textwidth}
175 \includegraphics[height=4cm]{images/h.pdf}
180 \caption{Graphes des itérations unaires
181 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 de manière similaire 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 énonce directement le théorème suivant dont la preuve est donnée en annexes~\ref{anx:generateur}.
298 \begin{theorem}\label{thm:prng:u}
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$
303 $M = \dfrac{1}{n} \check{M}$.
304 Si $\textsc{giu}(f)$ est fortement connexe, alors
305 la sortie du générateur de nombres pseudo aléatoires détaillé par
306 l'algorithme~\ref{CI Algorithm} suit une loi qui
307 tend vers la distribution uniforme si
308 et seulement si $M$ est une matrice doublement stochastique.
312 \subsection{Quelques exemples}
314 On reprend le graphe d'interactions $\Gamma(f)$ donné en figure~\ref{fig:G} à la section~\ref{sec:11FCT}.
315 On a vu qu'il y avait 520 fonctions $f$ non isomorphes de graphe d'interactions $\Gamma(f)$,
316 dont seulement 16 d'entre elles possèdent une matrice doublement stochastique.
318 La figure~\ref{fig:listfonction} explicite ces 16 fonctions en
319 définissant les images des éléments de la liste
320 0, 1, 2,\ldots, 14, 15 en respectant l'ordre.
321 Expliquons enfin comment a été calculé le nombre de la troisième
322 colonne utilisé comme le paramètre $b$
323 dans l'algorithme~\ref{CI Algorithm}.
325 Soit $e_i$ le $i^{\textrm{ème}}$ vecteur la base canonique de $\R^{2^{n}}$.
326 Chacun des éléments $v_j$, $1 \le j \le 2^n$,
327 du vecteur $e_i M_f^t$ représente la probabilité
328 d'être dans la configuration $j$ après $t$ étapes du processus de Markov
329 associé à $\textsc{giu}(f)$ en partant de la configuration $i$.
331 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
332 \}$ représente le plus petit nombre d'itérations où la distance de
333 ce vecteur au vecteur $\pi=(\frac{1}{2^n},\ldots,\frac{1}{2^n})$
334 -- autrement dit, où la déviation par rapport à la distribution uniforme --
336 à $10^{-4}$. En prenant le max pour tous les $e_i$, on obtient une valeur pour
340 b = \max\limits_{i \in \llbracket 1, 2^n \rrbracket}
343 t \mid t \in \Nats, \vectornorm{e_i M_f^t - \pi} < 10^{-4}
349 \noindent Par la suite, ce nombre sera appelé \emph{temps de mélange}.
355 \subfigure[Graphe d'interactions]{
356 \begin{minipage}{0.20\textwidth}
358 \includegraphics[width=3.5cm]{images/Gi.pdf}
363 \subfigure[Fonctions doublement stochastiques]{
364 \begin{minipage}{0.75\textwidth}
367 \begin{tabular}{|c|c|c|}
369 {Nom}& {Définition}&{$b$} \\
371 $\mathcal{F}_1$ & 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 1, 0 & 206\\
373 $\mathcal{F}_2$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 0, 1
376 $\mathcal{F}_3$ &14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 5, 4, 3, 2, 1, 0
379 $\mathcal{F}_4$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 0, 1
382 $\mathcal{F}_5$ &14, 15, 12, 13, 10, 11, 9, 8, 6, 7, 5, 4, 3, 2, 1, 0
385 $\mathcal{F}_6$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 0, 1
388 $\mathcal{F}_7$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 2, 3, 1, 0
391 $\mathcal{F}_8$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 4, 5, 3, 2, 1, 0
394 $\mathcal{F}_9$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
397 $\mathcal{F}_{10}$ &14, 15, 12, 13, 10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
400 $\mathcal{F}_{11}$ &14, 15, 12, 13, 11, 10, 9, 8, 7, 6, 5, 4, 2, 3, 1, 0
403 $\mathcal{F}_{12}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 2, 3, 1, 0
406 $\mathcal{F}_{13}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 4, 5, 3, 2, 1, 0
409 $\mathcal{F}_{14}$ &14, 15, 13, 12, 11, 10, 8, 9, 7, 6, 5, 4, 3, 2, 1, 0
412 $\mathcal{F}_{15}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1
415 $\mathcal{F}_{16}$ &14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
422 \label{fig:listfonction}
425 \caption{Candidates pour le générateur avec $n=4$}
429 La qualité des séquences aléatoires a été évaluée à travers la suite
430 de tests statistiques développée pour les générateurs de nombres
431 pseudo aléatoires par le
432 \emph{National Institute of Standards and Technology} (NIST).
433 L'expérience a montré notamment que toutes ces fonctions
434 passent avec succès cette batterie de tests.
436 Pour conclure cette section, on remarque que le générateur de nombres pseudo-aléatoires
437 a été prouvé chaotique pour $b=1$, \textit{i.e.}, lorsqu'il y a une sortie pour chaque itération.
438 Ceci est difficilement compatible avec la volonté d'avoir une sortie uniformément distribuée:
439 se rapprocher de cette distribution nécessite en effet un nombre plus élevé
440 d'itérations $b$ entre chaque sortie. Par exemple, dans l'exemple précédent, il est nécessaire
441 d'itérer au moins 42 fois entre chaque sortie pour suivre une loi uniforme à $10^{-4}$ près.
442 Montrer les sous-séquences de suites chaotiques ainsi générées demeurent chaotiques
443 est l'objectif de la section suivante.
446 \section{Un PRNG basé sur des itérations unaires qui est chaotique }
448 Cette section présente un espace métrique adapté au générateur de nombres pseudo-aléatoires
449 présenté à l'algorithme~\ref{CI Algorithm} et prouve ensuite que la fonction qu'il représente
450 est chaotique sur cet espace.
452 \subsection{Un espace $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ pour le PRNG de l'algorithme~\ref{CI Algorithm}}
456 Introduisons tout d'abord $\mathcal{P} \subset \mathds{N}$ un ensemble fini non vide de cardinalité
457 $\mathsf{p} \in \mathds{N}^\ast$.
458 Intuitivement, c'est le nombre d'itérations qu'il est autorisé de faire.
459 On ordonne les $\mathsf{p}$ éléments de $\mathcal{P}$ comme suit:
460 $\mathcal{P} = \{ p_1, p_2, \hdots, p_\mathsf{p}\}$
461 et $p_1< p_2< \hdots < p_\mathsf{p}$.
462 Dans l'algorithme~\ref{CI Algorithm},
463 $\mathsf{p}$ vaut 1 et $p_1=b$.
466 Cet algorithme peut être vu comme $b$ compostions de la fonction $F_{f_u}$.
467 Ceci peut cependant se généraliser à $p_i$, $p_i \in \mathcal{P}$,
468 compositions fonctionnelles de $F_{f_u}$.
469 Ainsi, pour chaque $p_i \in \mathcal{P}$, on construit la fonction
470 $F_{{f_u},p_i} : \mathds{B}^\mathsf{N} \times \llbracket 1, \mathsf{N} \rrbracket^{p_i}
471 \rightarrow \mathds{B}^\mathsf{N}$ définie par
474 F_{f_u,p_i} (x,(u^0, u^1, \hdots, u^{p_i-1})) \mapsto
475 F_{f_u}(\hdots (F_{f_u}(F_{f_u}(x,u^0), u^1), \hdots), u^{p_i-1}).
479 on construit l'espace
480 $\mathcal{X}_{\mathsf{N},\mathcal{P}}= \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}}$, où
481 $\mathds{S}_{\mathsf{N},\mathcal{P}}=
482 \llbracket 1, \mathsf{N} \rrbracket^{\Nats}\times
483 \mathcal{P}^{\Nats}$.
484 Chaque élément de l'espace est une paire où le premier élément est
485 un $\mathsf{N}$-uplet de $\Bool^{\mathsf{N}}$ (comme dans $\mathcal{X}_u$).
486 Le second élément est aussi une paire $((u^k)_{k \in \Nats},(v^k)_{k \in \Nats})$ de suites infinies.
487 La suite $(v^k)_{k \in \Nats}$ définit combien d'itérations sont exécutées au temps $k$ entre deux sorties.
488 La séquence $(u^k)_{k \in \Nats}$ définit quel élément est modifié (toujours au temps $k$).
490 Définissons la fonction de décalage $\Sigma$ pour chaque élément de $\mathds{S}_{\mathsf{N},\mathcal{P}}$.
491 $$\begin{array}{cccc}
492 \Sigma:&\mathds{S}_{\mathsf{N},\mathcal{P}} &\longrightarrow
493 &\mathds{S}_{\mathsf{N},\mathcal{P}} \\
494 & \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).
497 En d'autres termes, $\Sigma$ reçoit deux suites $u$ et $v$ et
498 effectue $v^0$ décalage vers la droite sur la première et un décalage vers la droite
502 Ainsi, les sorties $(y^0, y^1, \hdots )$ produites par le générateur détaillé dans
503 l'algorithme~\ref{CI Algorithm}
504 sont les premiers composants des itérations $X^0 = (x^0, (u,v))$ et $\forall n \in \mathds{N},
505 X^{n+1} = G_{f_u,\mathcal{P}}(X^n)$ dans $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ où
506 $G_{f_u,\mathcal{P}}$ est définie par:
513 G_{f_u,\mathcal{P}} :& \mathcal{X}_{\mathsf{N},\mathcal{P}} & \longrightarrow & \mathcal{X}_{\mathsf{N},\mathcal{P}}\\
514 & (e,(u,v)) & \longmapsto & \left( F_{f,v^0}\left( e, (u^0, \hdots, u^{v^0-1}\right), \Sigma (u,v) \right) .
520 \subsection{Une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
522 On définit la fonction $d$ sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$ comme suit:
523 Soit $x=(e,s)$ et $\check{x}=(\check{e},\check{s})$ dans
524 $\mathcal{X}_{\mathsf{N},\mathcal{P}} = \mathds{B}^\mathsf{N} \times \mathds{S}_{\mathsf{N},\mathcal{P}} $,
525 où $s=(u,v)$ et $\check{s}=(\check{u},\check{v})$ sont dans $ \mathds{S}_{\mathsf{N},\mathcal{P}} =
526 \mathcal{S}_{\llbracket 1, \mathsf{N} \rrbracket} \times \mathcal{S}_\mathcal{P}$.
528 \item $e$ et $\check{e}$ sont des entiers appartenant à $\llbracket 0, 2^{\mathsf{N}-1} \rrbracket$.
529 La distance de Hamming $d_{\mathds{B}^\mathsf{N}}$ sur entre les
530 décompositions binaires de $e$ et de $\check{e}$ (\textit{i.e.}, le
531 le nombre de bits qu'elles ont de différent) constitue
532 la partie entière de $d(X,\check{X})$.
533 \item la partie décimale est construite à partir des différences entre
534 $v^0$ et $\check{v}^0$, suivie des différences entre les séquences finies
535 $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$,
536 suivie par les différences entre $u^{v^0}, u^{v^0+1}, \hdots, u^{v^1-1}$ et
537 $\check{u}^{\check{v}^0}, \check{u}^{\check{v}^0+1}, \hdots, \check{u}^{\check{v}^1-1}$, etc.
539 Plus précisément, soit
540 $p = \lfloor \log_{10}{(\max{\mathcal{P}})}\rfloor +1$ et
541 $n = \lfloor \log_{10}{(\mathsf{N})}\rfloor +1$.
543 \item Les $p$ premiers éléments de $d(x,\check{x})$ sont $|v^0-\check{v}^0|$
544 écrits en base 10 et sur $p$ indices;
545 \item les $n\times \max{(\mathcal{P})}$ éléments suivants servent
546 à évaluer de combien $u^0, u^1, \hdots, u^{v^0-1}$ diffère de
547 $\check{u}^0, \check{u}^1, \hdots, \check{u}^{\check{v}^0-1}$.
548 Les $n$ premiers éléments sont $|u^0-\check{u}^0|$. Il sont suivis de
549 $|u^1-\check{u}^1|$ écrits à l'aide de $n$ éléments, etc.
553 alors le processus se continue jusqu'à $|u^{v^0-1}-\check{u}^{\check{v}^0-1}|$ et la
554 partie décimale de $d(X,\check{X})$ est complétée par des 0
556 $p+n\times \max{(\mathcal{P})}$ éléments.
557 \item Si $v^0<\check{v}^0$, alors les $ \max{(\mathcal{P})}$ blocs de $n$
558 éléments sont $|u^0-\check{u}^0|$, ..., $|u^{v^0-1}-\check{u}^{v^0-1}|$,
559 $\check{u}^{v^0}$ (sur $n$ éléments), ..., $\check{u}^{\check{v}^0-1}$ (sur $n$ éléments), suivi par des 0, si besoin.
560 \item Le cas $v^0>\check{v}^0$ est similaire, et donc omis
562 \item Les $p$ suivants sont $|v^1-\check{v}^1|$, etc.
567 La fonction $d$ peut se formaliser comme suit:
568 $$d(x,\check{x})=d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s})+d_{\mathds{B}^\mathsf{N}}(e,\check{e}),$$
569 où: % $p=\max \mathcal{P}$ and:
571 \item $d_{\mathds{B}^\mathsf{N}}$ est la distance de Hamming,
572 \item $\forall s=(u,v), \check{s}=(\check{u},\check{v}) \in \mathcal{S}_{\mathsf{N},\mathcal{P}}$,\newline
574 d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) &= &
575 \sum_{k=0}^\infty \dfrac{1}{10^{(k+1)p+kn\max{(\mathcal{P})}}}
576 \bigg(|v^k - \check{v}^k| \\
577 & & + \left| \sum_{l=0}^{v^k-1}
578 \dfrac{u^{\sum_{m=0}^{k-1} v^m +l}}{ 10^{(l+1)n}} -
579 \sum_{l=0}^{\check{v}^k-1}
580 \dfrac{\check{u}^{\sum_{m=0}^{k-1} \check{v}^m +l}}{ 10^{(l+1)n}} \right| \bigg)
582 $$ %\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)}.$$
588 On considère par exemple
589 $\mathsf{N}=13$, $\mathcal{P}=\{1,2,11\}$ ($\mathsf{p}$ vaut ainsi $3$),
593 u=\underline{6,} ~ \underline{11,5}, ...\\
600 \check{u}=\underline{6,4} ~ \underline{1}, ...\\
605 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.010004000000000000000000011005 ...$
606 En effet, les $p=2$ premiers éléments sont 01, c'est-à-dire
607 $|v^0-\check{v}^0|=1$,
608 et on utilise $p$ éléments pour représenter cette différence
609 (Comme $\mathcal{P}=\{1,2,11\}$, cette différence peut valoir 10).
610 On prend alors le $v^0=1$ premier terme de $u$,
611 chaque terme étant codé sur $n=2$ éléments, soit 06.
612 Comme on itère au plus $\max{(\mathcal{P})}$ fois,
613 on complète cette valeur par des 0 de sorte que
614 la chaîne obtenue a $n\times \max{(\mathcal{P})}=22$ éléments, soit:
615 0600000000000000000000.
616 De manière similaire, les $\check{v}^0=2$ premiers
617 termes de $\check{u}$ sont représentés par
618 0604000000000000000000.
619 LA valeur absolue de leur différence est égale à
620 0004000000000000000000.
621 Ces éléments sont concaténés avec 01. On peut construire alors le reste de
627 On considère à présent que $\mathsf{N}=9$, que $\mathcal{P}=\{2,7\}$ et que
630 u=\underline{6,7,} ~ \underline{4,2,} ...\\
637 \check{u}=\underline{4, 9, 6, 3, 6, 6, 7,} ~ \underline{9, 8}, ...\\
643 Ainsi $d_{\mathds{S}_{\mathsf{N},\mathcal{P}}}(s,\check{s}) = 0.5173633305600000...$,
645 $|v^0-\check{v}^0|=5$, $|4963667-6700000| = 1736333$, $|v^1-\check{v}^1|=0$,
646 et $|9800000-4200000| = 5600000$.
651 On a la proposition suivante, qui est démontrée en annexes~\ref{anx:generateur}.
653 $d$ est une distance sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$.
657 \subsection{Le graphe $\textsc{giu}_{\mathcal{P}}(f)$ étendant $\textsc{giu}(f)$}
659 A partir de $\mathcal{P}=\{p_1, p_2, \hdots, p_\mathsf{p}\}$, on
660 définit le graphe orienté $\textsc{giu}_{\mathcal{P}}(f)$ de la manière suivante:
662 \item les n{\oe}uds sont les $2^\mathsf{N}$ configurations de $\mathds{B}^\mathsf{N}$,
663 %\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
664 % having their elements in $\llbracket 1, \mathsf{N} \rrbracket $.
665 \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
666 $\mathcal{P}$ (\textit{i.e.}, on peut itérer $p_i$ fois),
667 chaque $u_k$ de la suite appartient à $[\mathsf{N}]$ et
668 $y=F_{f_u,p_i} (x, (u_0, \hdots, u_{p_i-1})) $.
670 Il n'est pas difficile de constater que $\textsc{giu}_{\{1\}}(f)$ est $\textsc{giu}(f)$.
678 \subfigure[$\textsc{giu}_{\{2\}}(h)$]{
679 \begin{minipage}{0.30\textwidth}
681 \includegraphics[height=4cm]{images/h2prng}
686 \subfigure[$\textsc{giu}_{\{3\}}(h)$]{
687 \begin{minipage}{0.40\textwidth}
689 \includegraphics[height=4cm]{images/h3prng}
694 \subfigure[$\textsc{giu}_{\{2,3\}}(h)$]{
695 \begin{minipage}{0.40\textwidth}
697 \includegraphics[height=4cm]{images/h23prng}
704 \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)$}
705 %\label{fig:xplgraphIter}
712 On reprend l'exemple où $\mathsf{N}=2$ et
713 $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$ déjà détaillé
714 à la section~\ref{sub:prng:unif}.
716 Le graphe $\textsc{giu}_{\{1\}}(h)$ a déjà été donné à la figure~\ref{fig:h:iter}.
717 Les graphes $\textsc{giu}_{\{2\}}(h)$, $\textsc{giu}_{\{3\}}(h)$ et
718 $\textsc{giu}_{\{2,3\}}(h)$ sont respectivement donnés aux figure~\ref{fig:h2prng}, ~\ref{fig:h3prng} et ~\ref{fig:h23prng}.
719 Le premier (respectivement le second)
720 illustre le comportement du générateur lorsque qu'on itère exactement
721 2 fois (resp. 3 fois) puis qu'on affiche le résultat.
722 Le dernier donnerait le comportement d'un générateur qui s'autoriserait
723 à itérer en interne systématiquement 2 ou trois fois avant de retourner un résultat.
728 \subsection{le PRNG de l'algorithme~\ref{CI Algorithm} est chaotique sur $\mathcal{X}_{\mathsf{N},\mathcal{P}}$}
730 Le théorème suivant, similaire à celui dans $\mathcal{X}_u$ et dans $\mathcal{X}_g$
731 est prouvé en annexes~\ref{anx:generateur}.
734 La fonction $G_{f_u,\mathcal{P}}$ est chaotique sur
735 $(\mathcal{X}_{\mathsf{N},\mathcal{P}},d)$ si et seulement si
736 graphe d'itération $\textsc{giu}_{\mathcal{P}}(f)$
737 est fortement connexe.
739 On alors corollaire suivant
742 Le générateur de nombre pseudo aléatoire détaillé
743 à l'algorithme~\ref{CI Algorithm}
745 sur $(\mathcal{X}_{\mathsf{N},\{b\}},d)$ pour la fonction négation.
748 Dans cet algorithme, $\mathcal{P}$ est le singleton $\{b\}$.
749 Que $b$ soit pair ou impair, $\textsc{giu}_{\mathcal{b}}(f)$
750 n'est pas fortement connexe.