1 On a vu dans le chapitre précédent que pour avoir
3 uniforme, il est nécessaire que la matrice d'adjacence du graphe d'itération du
4 système soit doublement stochastique. Nous présentons dans cette partie
5 des méthodes effectives permettant de générer de telles matrices.
6 La première est basée sur la programmation logique par contraintes
7 (Section~\ref{sec:plc}).
8 Cependant celle-ci souffre de ne pas passer à l'échelle et ne fournit pas
9 une solution en un temps raisonnable dès que la fonction à engendrer
10 porte sur un grand nombre de bits.
11 Une approche plus pragmatique consiste à supprimer un cycle hamiltonien dans le
12 graphe d'itérations $\textsc{giu}(\neg)$ (section~\ref{sec:hamiltonian}).
13 Pour obtenir plus rapidement une distribution uniforme, l'idéal serait
14 de supprimer un cycle hamiltonien qui nierait autant de fois chaque bit.
15 Cette forme de cycle est dite équilibré. La section~\ref{sub:gray} établit le
16 lien avec les codes de Gray équilibrés, étudiés dans la littérature.
17 La section suivante présente une démarche de génération automatique de code de Gray équilibré (section~\ref{sec:induction}).
18 La vitesse avec laquelle l'algorithme de PRNG converge en interne vers
19 une distribution uniforme est étudiée théoriquement et pratiquement à la
20 section~\ref{sec:mixing}.
21 L'extension du travail aux itérations généralisées est présentée à la
22 section~\ref{sec:prng:gray:general}.
23 Finalement, des instances de PRNGS engendrés selon les méthodes détaillées dans
24 ce chapitre sont présentés en section~\ref{sec:prng;gray:tests}.
25 Les sections~\ref{sec:plc} à~\ref{sub:gray} ont été publiées
29 % This aim of this section is to show
30 % that finding DSSC matrices from a hypercube
31 % is a typical finite domain satisfaction
32 % problem, classically denoted as
33 % Constraint Logic Programming on Finite Domains (CLPFD).
34 % This part is addressed in the first section. Next, we analyse the first
35 % results to provide a generation of DSSC matrices with small mixing times.
37 \section{Programmation logique par contraintes sur des domaines finis}\label{sec:plc}
38 Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments.
39 Pour éviter d'avoir à gérer des fractions, on peut considérer que
40 les matrices (d'incidence) à générer ont des lignes et des colonnes dont les
41 sommes valent ${\mathsf{N}}$ à chaque fois.
42 On cherche ainsi toutes les matrices $M$ de taille $2^{\mathsf{N}}\times 2^{\mathsf{N}}$ telles que
45 \item $M_{ij}$ vaut 0 si $j$ n'est pas un voisin de $i$, \textit{i.e.},
46 il n'y a pas d'arc de $i$ à $j$ dans le graphe $\textsc{giu}(f)$;
48 \item $0 \le M_{ii} \le {\mathsf{N}}$: le nombre de boucles autour de chaque
49 configuration $i$ est inférieur à ${\mathsf{N}}$;
51 \item pour $j \neq i$, $0 \le M_{ij} \le 1$: on construit l'arc de $i$ à $j$
52 si et seulement si $M_{ij}$ vaut 1 (et 0 sinon)
53 \item pour chaque indice de ligne $i$, $1 \le i\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le j\le 2^{\mathsf{N}}} M_{ij}$:
54 la matrice est stochastique à droite;
55 \item pour chaque indice de colonne $j$,
56 $1 \le j\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le i\le 2^{\mathsf{N}}} M_{ij}$:
57 la matrice est stochastique à gauche;
58 \item Tous les éléments de la somme $\sum_{1\le k\le 2^{\mathsf{N}}}M^k$ sont strictement positifs, \textit{i.e.}, le graphe $\textsc{giu}(f)$ est fortement connexe;
60 Ce problème s'exprime sur des domaines finis entiers avec des opérateurs
61 arithmétiques simples (sommes et produits). Il pourrait théoriquement être
62 traité par des démarches de programmation logique par contrainte
63 sur des domaines finis (comme en PROLOG).
64 L'algorithme donné en Figure~\ref{fig:prolog}
65 est en effet le c{\oe}ur du programme PROLOG
66 qui pourrait être utilisé pour instancier toutes les solutions,
67 ici pour $\mathsf{N} = 2$. Dans ce code,
68 \verb+mmult(+$X,Y,R$\verb+)+ et
69 \verb+summ(+$X,Y,R$\verb+)+
70 valent True si et seulement si $R$
71 est le produit matriciel (ou la somme matricielle)
72 entre $X$ et $Y$ respectivement.
73 Il n'est pas difficile d'adapter ce code à n'importe quelle valeur
74 entière naturelle $\mathsf{N}$.
78 \lstset{language=prolog}
81 M=[[M0_0, M0_1, 0, M0_3], [M1_0, M1_1, 0, M1_3],
82 [M2_0, 0, M2_2, M2_3], [0, M3_1, M3_2, M3_3]],
83 [M0_0, M1_1, M2_2, M3_3] ins 0..2,
84 [M0_1, M0_3, M1_0, M1_3, M2_0, M2_3, M3_1, M3_2]
86 M0_0+ M0_1+ M0_2 #=2, M1_0+ M1_1+ M1_3 #=2,
87 M2_0+ M2_2+ M2_3 #=2, M3_1+ M3_2+ M3_3 #=2,
88 M0_0+ M1_0+ M2_0 #=2, M0_1+ M1_1+ M3_1 #=2,
89 M0_2+ M2_2+ M3_2 #=2, M1_3+ M2_3+ M3_3 #=2,
99 \caption{Code PROLOG permettant de trouver toutes les matrices DSSC pour $n=2$}\label{fig:prolog}
102 Enfin, on définit la relation $\mathcal{R}$, qui est établie pour les deux
103 fonctions $f$ et $g$ si leurs graphes
104 respectifs $\textsc{giu}(f)$ et $\textsc{giu}(g)$
106 C'est évidemment une relation d'équivalence.
110 %\subsection{Analyse de l'approche}\label{sub:prng:ana}
111 Exécutée sur un ordinateur personnel, PROLOG trouve
112 en moins d'une seconde les
113 49 solutions pour $n=2$,
114 dont 2 seulement ne sont pas équivalentes,
115 en moins d'une minute les 27642 solutions dont seulement 111 ne
116 sont pas équivalentes pour $n=3$.
117 Cependant, l'approche ne permet pas d'engendrer toutes les solutions
119 Cette approche, basée sur une démarche de type \emph{générer, tester} ne peut
120 pas être retenue pour $n$ de grande taille, même
121 en s'appuyant sur l'efficience de l'algorithme de backtrack natif de PROLOG.
123 Cependant, pour des petites valeurs de $n$, nous avons
124 comparé les fonctions non équivalentes selon leur proportion
125 à engendrer des temps de mélange petits (cf. équation~(\ref{eq:mt:ex})).
130 \begin{xpl}\label{xpl:mixing:3}
131 Le tableau~\ref{table:mixing:3} fournit les 5 fonctions booléennes
132 qui ont les temps de mélange les plus petits pour $\varepsilon=10^{-5}$.
136 \begin{array}{|l|l|l|}
138 \textrm{Name} & \textrm{Image} & \textrm{MT}\\
140 f^a & (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3}) & 16 \\
142 f^* & (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
143 \overline{x_1}.\overline{x_3} + x_1x_2) & 17 \\
145 f^b & (\overline{x_1}(x_2+x_3) + x_2x_3,\overline{x_1}(\overline{x_2}+\overline{x_3}) + \overline{x_2}.\overline{x_3}, & \\
146 & \qquad \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 26 \\
148 f^c & (\overline{x_1}(x_2+x_3) + x_2x_3,\overline{x_1}(\overline{x_2}+\overline{x_3}) + \overline{x_2}.\overline{x_3}, & \\
149 & \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 29 \\
151 f^d & (x_1\oplus x_2,x_3(\overline{x_1}+\overline{x_2}),\overline{x_3}) & 30 \\
153 % [3, 4, 7, 0, 1, 6, 5, 2], #16
154 % [3, 4, 7, 0, 2, 6, 5, 1], #17
155 % [3, 6, 7, 5, 2, 0, 1, 4], #26
156 % [3, 4, 7, 5, 2, 6, 1, 0], #29
157 % [3, 2, 5, 6, 7, 0, 1, 4]] #30
161 \caption{Les 5 fonctions booléennes $n=3$ aux temps de mélange les plus faibles.}\label{table:mixing:3}
165 Une analyse syntaxique de ces fonctions ne permet pas, a priori,
166 de déduire des règles permettant de construire de nouvelles
167 fonctions dont le temps de mélange serait faible.
168 Cependant, le graphe $\textsc{giu}(f^*)$
169 (donné à la Figure~\ref{fig:iteration:f*})
170 est le $3$-cube dans lequel le cycle
171 $000,100,101,001,011,111,110,010,000$
172 a été enlevé. Dans cette figure, le graphe $\textsc{giu}(f)$ est
173 en continu tandis que le cycle est en pointillés.
174 Ce cycle qui visite chaque n{\oe}ud exactement une fois est un
175 \emph{cycle hamiltonien}.
176 La matrice de Markov correspondante est donnée à
177 la figure~\ref{fig:markov:f*}.
178 On s'intéresse par la suite à la génération de ce genre de cycles.
186 \subfigure[Graphe $\textsc{giu}(f^*)$.
187 \label{fig:iteration:f*}]{
188 \begin{minipage}{0.55\linewidth}
190 \includegraphics[width=\columnwidth]{images/iter_f0d}%
193 \subfigure[Matrice de Markov associée à $\textsc{giu}(f^*)$
194 \label{fig:markov:f*}]{%
195 \begin{minipage}{0.35\linewidth}
200 M=\dfrac{1}{3} \left(
201 \begin{array}{llllllll}
216 % $ \dfrac{1}{4} \left(
217 % \begin{array}{cccccccc}
218 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
220 % 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
222 % 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
224 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
226 % 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
228 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
230 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
232 % 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
234 % \end{array} \right) $
242 \caption{Représentations de $f^*(x_1,x_2,x_3)=
243 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
244 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
254 % fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
261 \section{Suppression des cycles hamiltoniens}
262 \label{sec:hamiltonian}
264 Dans un premier temps, nous montrons %en section~\ref{sub:removing:theory}
266 suppression d'un cycle hamiltonien produit bien des matrices doublement
267 stochastiques. Nous établissons ensuite le lien avec les codes de Gray
270 %\subsubsection{Aspects théoriques}
271 %\label{sub:removing:theory}
273 Nous donnons deux résultats complémentaires, reliant la suppression d'un cycle
274 hamiltonien du $n$-cube, les matrices doublement stochastiques et la forte
275 connexité du graphe d'itérations.
277 \begin{theorem}\label{th:supprCH}
278 La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
279 $n$-cube, produit une matrice doublement stochastique.
283 Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
284 Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
285 une arête entrante $(o,v)$ et une arête sortante $(v,e)$
287 Considérons un autre $n$-cube $C_2$ auquel on ajoute les arêtes
288 pour le rendre complet. La matrice de Markov $M$ correspondante est
289 remplie de $\frac{1}{2^n}$ et est doublement stochastique.
290 Comme on enlève exactement une arête sortante $(v,e)$
291 à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans
292 $C_2$ les $2^{n-1}$ arêtes issues de $v$ et
293 relatives aux parties de $\{1,\ldots,n\}$ qui
294 contiennent $e$. Cela revient à annuler
295 dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter
296 $1/2$ à l'élément $M_{vv}$.
297 La matrice $M$ reste stochastique.
298 On effectue un raisonnement similaire pour les arêtes entrantes:
299 comme on enlève exactement une arête entrante $(o,v)$ pour chaque
300 n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement
301 $2^{n-1}$ arêtes menant à $v$ qui sont enlevées.
302 Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et
303 $M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
304 $M$ est donc doublement stochastique.
309 \begin{theorem}\label{th:grapheFC}
310 Le graphe d'itérations issu du $n$-cube, auquel un cycle hamiltonien est
311 enlevé, est fortement connexe.
316 On considère les deux $n$-cubes $C_1$ et $C_2$ définis
317 dans la preuve du théorème~\ref{th:supprCH}.
318 Dans $C_1$ on considère le cycle inverse $r$ du cycle
320 Aucun arc n'appartient à la fois à $r$ et à $c$:
321 en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
322 Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
323 Le cycle $r$ est évidemment un cycle hamiltonien et contient tous les n{\oe}uds.
324 Tous les n{\oe}uds de $C_1$ dans lesquels $c$ a été enlevé sont accessibles
325 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsc{giu}$ qui
326 étend le précédent graphe est ainsi fortement connexe.
332 %Les preuves, relativement directes, sont laissées en exercices au lecteur.
333 Générer un cycle hamiltonien dans le
334 $n$-cube revient à trouver un \emph{code de Gray cyclique}. On
335 rappelle qu'un code de Gray est une séquence de mots binaires de taille
336 fixe ($\mathsf{N}$), dont les éléments successifs ne différent que par un seul bit. Un
337 code de Gray est \emph{cyclique} si le premier élément et le dernier ne
338 différent que par un seul bit.
340 \section{Lien avec les codes de Gray cycliques (totalement) équilibrés}
343 Un minorant du nombre de codes de Gray ($\left(\frac{n*\log2}{e \log
344 \log n}\times(1 - o(1))\right)^{2^n}$), donnée dans~\cite{Feder2009NTB},
345 indique une explosion combinatoire pour notre recherche. Afin de contourner
346 cette difficulté, nous nous restreignons aux codes induisant un graphe
347 d'itérations $\textsc{giu}(f)$ \emph{uniforme}. Cette uniformité se traduit par des
348 nombres d'arcs équilibrés entre les \emph{dimensions} du graphe, la dimension
349 $i$ correspondant aux seules variations du bit $i$ (parmi les $n$ bits au
350 total). Cette approche revient à chercher des codes de Gray cycliques
353 On formalise un code de Gray équilibré comme suit.
354 Soit $L = w_1, w_2, \dots, w_{2^n}$ la séquence d'un code de Gray cyclique à
355 $n$ bits. Soit $S = s_1, s_2, \dots, s_{2^n}$ la séquence des transitions où
356 $s_i$, $1 \le i \le 2^n$ est l'indice du seul bit qui varie entre les mots
357 $w_i$ et $w_{i+1}$. Enfin, soit $\textit{TC}_n : \{1,\dots, n\} \rightarrow
358 \{0, \ldots, 2^n\}$ la fonction qui au paramètre $i$ associe le \emph{nombre
359 de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
360 le nombre d'occurrences de $i$ dans $S$.
362 Le code $L$ est \textbf{équilibré} si $\forall
363 i,j\in\{1,...,n\},~|\textit{TC}_n(i) - \textit{TC}_n(j)| \le 2$. Il est
364 \textbf{totalement équilibré} si $\forall
365 i\in\{1,...,n\},~\textit{TC}_n(i)=\frac{2^n}{n}$.
368 On peut donc déjà déduire qu'il ne peut exister des codes de Gray totalement
369 équilibrés que pour les systèmes ayant un nombre d'éléments $n=2^k, k>0$. De
370 plus, comme dans tout code de Gray cyclique, $\textit{TC}_n(i)$ est pair
371 $\forall i\in\{1,...,n\}$, alors les systèmes ayant un nombre d'éléments
372 différent de $2^k$, ne peuvent avoir que des codes de Gray équilibrés avec
373 $\textit{TC}_n(i)=\lfloor\frac{2^n}{n}\rfloor$ ou
374 $\textit{TC}_n(i)=\lceil\frac{2^n}{n}\rceil, \forall i\in\{1,...,n\}$ et
375 vérifiant $\sum_{i=1}^n\textit{TC}_n(i) = 2^n$.
378 Soit $L^*=000,100,101,001,011,111,110,010$ le code de Gray correspondant au
379 cycle hamiltonien enlevé de $f^*$. Sa séquence des transitions est \linebreak
380 $S=3,1,3,2,3,1,3,2$ et les nombres de transitions sont $\textit{TC}_3(1)=
381 \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
383 Si l'on considère maintenant $L^4=$ 0000, 0010, 0110, 1110, 1111, 0111, 0011,
384 0001, 0101, 0100, 1100, 1101, 1001, 1011, 1010, 1000, un code de Gray
385 cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4,
386 on constate que $\forall
387 i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que
388 ce code est totalement équilibré.
391 \section{Génération de codes de Gray équilibrés par induction}
392 \label{sec:induction}
394 De nombreuses approches ont été développées pour résoudre le problème de construire
395 un code de Gray dans un $\mathsf{N}$-cube~\cite{Robinson:1981:CS,DBLP:journals/combinatorics/BhatS96,ZanSup04},
396 selon les propriétés que doit vérifier ce code.
398 Dans les travaux~\cite{Robinson:1981:CS}, les auteurs
399 proposent une approche inductive de construction de code de Gray équilibrés
400 (on passe du $\mathsf{N}-2$ à $\mathsf{N}$)
401 pour peu que l'utilisateur fournisse une sous-séquence possédant certaines
402 propriétés à chaque pas inductif.
403 Ce travail a été renforcé dans ~\cite{DBLP:journals/combinatorics/BhatS96}
404 où les auteurs donnent une manière explicite de construire une telle sous-séquence.
405 Enfin, les auteurs de~\cite{ZanSup04} présentent une extension de l'algorithme de
406 \emph{Robinson-Cohn}. La présentation rigoureuse de cette extension leur permet
407 principalement de prouver que si $\mathsf{N}$ est une puissance de 2,
408 le code de Gray équilibré engendré par l'extension est toujours totalement équilibré et
409 que $S_{\mathsf{N}}$ est la séquence de transition d'un code de Gray de $\mathsf{N}$ bits
410 si $S_{\mathsf{N}-2}$ l'est aussi..
411 Cependant les auteurs ne prouvent pas que leur approche fournit systématiquement
412 un code de Gray (totalement) équilibré.
413 Cette section montre que ceci est vrai en rappelant tout d'abord
414 l'extension de l'algorithme de \emph{Robinson-Cohn} pour un
415 code de Gray avec $\mathsf{N}-2$ bits
416 défini à partir de la séquence $S_{\mathsf{N}-2}$.
419 \item \label{item:nondet}Soit $l$ un entier positif pair. Trouver des sous-séquences
420 $u_1, u_2, \dots , u_{l-2}, v$ (possiblement vides) de $S_{\mathsf{N}-2}$
421 telles que $S_{\mathsf{N}-2}$ est la concaténation de
423 s_{i_1}, u_0, s_{i_2}, u_1, s_{i_3}, u_2, \dots , s_{i_l-1}, u_{l-2}, s_{i_l}, v
425 où $i_1 = 1$, $i_2 = 2$, et $u_0 = \emptyset$ (la séquence vide).
426 \item\label{item:u'} Remplacer dans $S_{\mathsf{N}-2}$ les séquences $u_0, u_1, u_2, \ldots, u_{l-2}$
428 $\mathsf{N} - 1, u'(u_1,\mathsf{N} - 1, \mathsf{N}) , u'(u_2,\mathsf{N}, \mathsf{N} - 1), u'(u_3,\mathsf{N} - 1,\mathsf{N}), \dots, u'(u_{l-2},\mathsf{N}, \mathsf{N} - 1)$
429 respectivement, où $u'(u,x,y)$ est la séquence $u,x,u^R,y,u$ telle que
430 $u^R$ est $u$, mais dans l'ordre inverse. La séquence obtenue est ensuite notée $U$.
431 \item\label{item:VW} Construire les séquences $V=v^R,\mathsf{N},v$, $W=\mathsf{N}-1,S_{\mathsf{N}-2},\mathsf{N}$. Soit alors $W'$ définie comme étant égale à $W$ sauf pour les
432 deux premiers éléments qui ont été intervertis.
433 \item La séquence de transition $S_{\mathsf{N}}$ est la concaténation $U^R, V, W'$.
436 L'étape~(\ref{item:nondet}) n'est pas constructive: il n'est pas précisé
437 comment sélectionner des sous-séquences qui assurent que le code obtenu est équilibré.
438 Le théorème suivant montre que c'est possible et sa preuve,
439 donnée en annexe~\ref{anx:generateur}, explique comment le faire.
441 \begin{restatable}[Existence d'un code de Gray équilibré]{theorem}{theograyequilibre}
442 \label{prop:balanced}
443 Soit $\mathsf{N}$ dans $\Nats^*$, et $a_{\mathsf{N}}$ défini par
444 $a_{\mathsf{N}}= 2 \left\lfloor \dfrac{2^{\mathsf{N}}}{2\mathsf{N}} \right\rfloor$.
445 Il existe une séquence $l$ dans l'étape~(\ref{item:nondet}) de l'extension
446 de l'algorithme de \emph{Robinson-Cohn} telle que
447 les nombres de transitions $\textit{TC}_{\mathsf{N}}(i)$
448 valent tous $a_{\mathsf{N}}$ ou $a_{\mathsf{N}}+2$
449 pour chaque $i$, $1 \le i \le \mathsf{N}$.
452 Ces fonctions étant générées, on s'intéresse à étudier à quelle vitesse
453 un générateur les embarquant converge vers la distribution uniforme.
454 C'est l'objectif de la section suivante.
456 \section{Quantifier l'écart par rapport à la distribution uniforme}\label{sec:mixing}
457 On considère ici une fonction construite comme à la section précédente.
458 On s'intéresse ici à étudier de manière théorique les
459 itérations définies à l'équation~(\ref{eq:asyn}) pour une
461 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un
462 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la
464 On remarque que ce graphe d'itérations est toujours un sous graphe
465 du ${\mathsf{N}}$-cube augmenté des
466 boucles sur chaque sommet, \textit{i.e.}, les arcs
467 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$.
468 Ainsi, le travail ci-dessous répond à la question de
469 définir la longueur du chemin minimum dans ce graphe pour
470 obtenir une distribution uniforme.
471 Ceci se base sur la théorie des chaînes de Markov.
473 générale à ce sujet on pourra se référer
474 au livre~\cite{LevinPeresWilmer2006},
475 particulièrement au chapitre sur les temps d'arrêt.
483 On considère par exemple le graphe $\textsc{giu}(f)$ donné à la
484 \textsc{Figure~\ref{fig:iteration:f*}.} et la fonction de
485 probabilités $p$ définie sur l'ensemble des arcs comme suit:
489 = \frac{1}{2} + \frac{1}{6} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
490 = \frac{1}{6} \textrm{ sinon.}
494 La matrice $P$ de la chaîne de Markov associée à $f^*$
497 P=\dfrac{1}{6} \left(
498 \begin{array}{llllllll}
512 On remarque que dans cette marche on reste sur place avec une probabilité égale
513 à $\frac{1}{2}+\frac{1}{2\mathsf{N}}$ et l'on passe d'un sommet à son voisin
514 lorsque c'est possible avec une probabilité $\frac{1}{2\mathsf{N}}$.
515 Les probabilités usuelles que l'on appliquerait aux transitions de
516 l'algorithme~\ref{CI Algorithm} seraient quant à elles uniformément égales
517 à $\frac{1}{\mathsf{N}}$.
518 Cette manière paresseuse d'itérer (puisqu'on reste plus souvent sur place) n'est donc pas équivalente à celle issue de l'algorithme.
520 Cependant, l'étude théorique de référence~\cite{LevinPeresWilmer2006}
521 considère cette marche comme cadre. S'inspirant de
522 celle-ci, le travail suivant se replace donc dans ce cadre théorique.
525 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur
526 $\Bool^{\mathsf{N}}$.
527 La distance de \og totale variation\fg{} entre $\pi$ et $\mu$
528 est notée $\tv{\pi-\mu}$ et est définie par
529 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$
531 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
533 $\nu$ est une distribution sur $\Bool^{\mathsf{N}}$, on a
534 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
536 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$.
537 $P(X,\cdot)$ est la distribution induite par la $X^{\textrm{ème}}$ colonne
539 Si la chaîne de Markov induite par
540 $P$ a une distribution stationnaire $\pi$, on définit alors
541 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
545 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
547 Intuitivement, $t_{\rm mix}(\varepsilon)$ est le nombre d'itérations nécessaire
548 pour être proche de la distribution stationnaire à $\varepsilon$ près,
549 peu importe la configuration de départ. On a le théorème suivant démontré en annexe~\ref{anx:generateur}.
552 \begin{restatable}[Temps de mixage sans chemin hamiltonien]{theorem}{theotpsmix}
553 \label{theo:tmps:mix}
554 On considère un $\mathsf{N}$-cube dans lequel un chemin hamiltonien a été supprimé et la fonction de
555 probabilités $p$ définie sur l'ensemble des arcs comme suit:
559 = \frac{1}{2} + \frac{1}{2\mathsf{N}} \textrm{ si $e=(v,v)$ avec $v \in \Bool^{\mathsf{N}}$,}\\
560 = \frac{1}{2\mathsf{N}} \textrm{ sinon.}
565 La chaîne de Markov associée converge vers la distribution uniforme et
568 \forall \varepsilon >0,\, t_{\rm mix}(\varepsilon) \le 32 {\mathsf{N}}^2+ 16{\mathsf{N}}\ln ({\mathsf{N}}+1) = O(N^2).
574 Sans entrer dans les détails de la preuve, on remarque aussi
575 que le calcul de ce majorant impose uniquement que
576 pour chaque n{\oe}ud du $\mathsf{N}$-cube
577 un arc entrant et un arc sortant sont supprimés.
578 Le fait qu'on enlève un cycle hamiltonien et que ce dernier
579 soit équilibré n'est pas pris en compte.
580 En intégrant cette contrainte, ce majorant pourrait être réduit.
582 En effet, le temps de mixage est en $\Theta(N\ln N)$ lors d'une
583 marche aléatoire classique paresseuse dans le $\mathsf{N}$-cube.
584 On peut ainsi conjecturer que cet ordre de grandeur reste le même
585 dans le contexte du $\mathsf{N}$-cube privé d'un chemin hamiltonien.
587 On peut évaluer ceci pratiquement: pour une fonction
588 $f: \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ et une graine initiale
589 $x^0$, le code donné à l'algorithme~\ref{algo:stop} retourne le
590 nombre d'itérations suffisant tel que tous les éléments $\ell\in \llbracket 1,{\mathsf{N}} \rrbracket$ sont équitables. Il permet de déduire une approximation de $E[\ts]$
591 en l'instanciant un grand nombre de fois: pour chaque nombre $\mathsf{N}$,
592 $ 3 \le \mathsf{N} \le 16$, 10 fonctions ont été générées comme dans
593 ce chapitre. Pour chacune d'elle, le calcul d'une approximation de $E[\ts]$
594 est exécuté 10000 fois avec une graine aléatoire. La Figure~\ref{fig:stopping:moy}
595 résume ces résultats. Dans celle-ci, un cercle représente une approximation de
596 $E[\ts]$ pour un $\mathsf{N}$ donné tandis que la courbe est une représentation de
597 la fonction $x \mapsto 2x\ln(2x+8)$.
598 On constate que l'approximation de $E[\ts]$ est largement inférieure
599 au majorant quadratique donné au théorème~\ref{prop:stop} et que la conjecture
600 donnée au paragraphe précédent est sensée.
603 \begin{algorithm}[ht]
605 \KwIn{a function $f$, an initial configuration $x^0$ ($\mathsf{N}$ bits)}
606 \KwOut{a number of iterations $\textit{nbit}$}
608 $\textit{nbit} \leftarrow 0$\;
610 $\textit{fair}\leftarrow\emptyset$\;
611 \While{$\left\vert{\textit{fair}}\right\vert < \mathsf{N} $}
613 $ s \leftarrow \textit{Random}(\mathsf{N})$ \;
614 $\textit{image} \leftarrow f(x) $\;
615 \If{$\textit{Random}(1) \neq 0$ and $x[s] \neq \textit{image}[s]$}{
616 $\textit{fair} \leftarrow \textit{fair} \cup \{s\}$\;
617 $x[s] \leftarrow \textit{image}[s]$\;
619 $\textit{nbit} \leftarrow \textit{nbit}+1$\;
621 \Return{$\textit{nbit}$}\;
623 \caption{Pseudo Code pour évaluer le temps d'arrêt}
630 \includegraphics[width=0.49\textwidth]{images/complexityET}
631 \caption{Interpolation du temps d'arrêt}\label{fig:stopping:moy}
637 \section{Et les itérations généralisées?}\label{sec:prng:gray:general}
638 Le chapitre précédent a présenté un algorithme de
639 PRNG construit à partir d'itérations unaires.
640 On pourrait penser que cet algorithme est peu efficace puisqu'il
641 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à
642 chaque itération qu'un seul élément de $[n]$.
643 On pourrait penser à un algorithme basé sur les itérations généralisées,
644 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque
646 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
648 \begin{algorithm}[ht]
650 \KwIn{une fonction $f$, un nombre d'itérations $b$,
651 une configuration initiale $x^0$ ($n$ bits)}
652 \KwOut{une configuration $x$ ($n$ bits)}
657 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
658 $x\leftarrow{F_{f_g}(s,x)}$\;
662 \caption{PRNG basé sur les itérations généralisées.}
663 \label{CI Algorithm:prng:g}
666 Par rapport à l'algorithme~\ref{CI Algorithm} seule
667 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
668 Dans celle-ci la fonction $\textit{Set} : \{1,\ldots,2^n\} \rightarrow
669 \mathcal{P}(\{1,\ldots n\})$ retourne l'ensemble dont la fonction
670 caractéristique serait représentée par le nombre donné en argument.
671 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudrait $\{3,2\}$.
672 On remarque aussi que l'argument de la fonction $\textit{Random}$
673 passe de $n$ à $2^n$.
675 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
678 \begin{theorem}\label{thm:prng:g}
679 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son
680 graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
681 correspondante à ce graphe
682 et $M$ une matrice $2^n\times 2^n$
684 $M = \dfrac{1}{2^n} \check{M}$.
685 Si $\textsc{gig}(f)$ est fortement connexe, alors
686 la sortie du générateur de nombres pseudo aléatoires détaillé par
687 l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui
688 tend vers la distribution uniforme si
689 et seulement si $M$ est une matrice doublement stochastique.
692 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
693 Elle n'est donc pas rappelée.
697 On reprend l'exemple donné à la section~\ref{sec:plc}.
698 On considère le cycle hamiltonien défini par la séquence
699 $000,100,101,001,011,111,110,010,000$. En supprimant celui-ci dans
700 le $3$-cube, cela engendre
701 la fonction $f^*$ définie par
703 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
704 \overline{x_1}.\overline{x_3} + x_1x_2).
707 Le graphe $\textsc{gig}(f^*)$ est représenté à la
708 Figure~\ref{fig:iteration:f*}.
709 La matrice de Markov $M$ correspondante est donnée à
710 la figure~\ref{fig:markov:f*}.
714 \subfigure[Graphe $\textsc{gig}(f^*)$
715 \label{fig:iteration:f*}]{
716 \begin{minipage}{0.55\linewidth}
718 \includegraphics[width=\columnwidth]{images/iter_f}%
721 \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
722 \label{fig:markov:f*}]{%
723 \begin{minipage}{0.35\linewidth}
726 $ \dfrac{1}{4} \left(
727 \begin{array}{cccccccc}
728 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
730 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
732 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
734 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
736 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
738 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
740 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
742 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
744 \end{array} \right) $
749 \caption{Représentations de $f^*(x_1,x_2,x_3)=
750 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
751 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
761 \begin{tabular}{|c|c|l|c|c|}
763 $n$ & fonction & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$ & $b$ & $b'$ \\
765 4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8] & \textbf{17} & \textbf{38} \\
767 \multirow{4}{0.5cm}{5}& $f^{*5}$ & [29, 22, 25, 30, 19, 27, 24, 16, 21, 6, 5, 28, 23, 26, 1, & \textbf{13} & 48 \\
768 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4] & & \\
770 & $g^{*5}$ & [29, 22, 21, 30, 19, 27, 24, 28, 7, 20, 5, 4, 23, 26, 25, & 15 & \textbf{47} \\
771 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 1, 6, 11, 18, 0, 16
775 \multirow{8}{0.5cm}{6}& $f^{*6}$ &
776 [55, 60, 45, 56, 58, 42, 61, 40, 53, 50, 52, 54, 59, 34, 33, & \multirow{4}{0.5cm}{\textbf{11}}& \multirow{4}{0.5cm}{55}\\
777 & & 49, 39, 62, 47, 46, 11, 43, 57, 8, 37, 6, 36, 4, 51, 38, 1, & & \\
778 & & 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
779 & & 16, 24, 13, 12, 29, 44, 10, 14, 41, 0, 15, 2, 7, 5, 35, 3, 9, 32] & &\\
781 &$g^{*6}$ & [55, 60, 45, 44, 43, 62, 61, 48, 53, 50, 52, 36, 59, 51, 33, & \multirow{4}{0.5cm}{12}& \multirow{4}{0.5cm}{\textbf{54}}\\
782 & & 49, 15, 14, 47, 46, 35, 58, 57, 56, 7, 54, 39, 37, 3, 38, 1, & & \\
783 & & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
784 & & 16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 5, 2, 4, 6, 11, 34, 9, 32] & & \\
786 \multirow{9}{0.5cm}{7} &$f^{*7}$ & [111, 94, 93, 116, 122, 114, 125, 88, 115, 126, 85, 84, 123, & \multirow{9}{0.5cm}{\textbf{10}} & \multirow{9}{0.5cm}{\textbf{63}} \\
787 & & 98, 81, 120, 109, 78, 105, 110, 99, 107, 104, 108, 101, 118, & & \\
788 & & 117, 96, 103, 66, 113, 64, 79, 86, 95, 124, 83, 91, 121, 24, & & \\
789 & & 119, 22, 69, 20, 87, 18, 17, 112, 77, 76, 73, 12, 74, 106, 72, & & \\
790 & & 8, 7, 102, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59, & & \\
791 & & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42, & & \\
792 & & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92, & & \\
793 & & 26, 90, 89, 25, 19, 30, 23, 4, 27, 2, 16, 80, 31, 10, 15, 14, & & \\
794 & & 3, 11, 13, 9, 5, 70, 21, 68, 67, 6, 65, 1] & & \\
796 \multirow{20}{0.5cm}{8} & $f^{*8}$ &
797 [223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,&
798 \multirow{20}{0.5cm}{9}&
799 \multirow{20}{0.5cm}{71}\\
800 & & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168,& & \\
801 & & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216,& & \\
802 & & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209,& & \\
803 & & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132,& & \\
804 & & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,& & \\
805 & & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42,& & \\
806 & & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,& & \\
807 & & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153,& & \\
808 & & 145, 175, 206, 143, 12, 11, 142, 129, 128, 7, 198, 197, 4, 195,& & \\
809 & & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114,& & \\
810 & & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121,& & \\
811 & & 120, 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83,& & \\
812 & & 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72,& & \\
813 & & 107, 78, 105, 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45,& & \\
814 & & 188, 51, 186, 61, 40, 119, 182, 181, 53, 179, 54, 33, 49, 15,& & \\
815 & & 174, 47, 60, 171, 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0,& & \\
816 & & 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16,& & \\
817 & & 24, 13, 10, 29, 14, 3, 138, 41, 136, 39, 134, 133, 5, 131,& & \\
823 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
826 Le tableau~\ref{table:functions} reprend une synthèse de
827 fonctions qui ont été générées selon la méthode détaillée
828 à la section~\ref{sec:hamiltonian}.
829 Pour chaque nombre $n=3$, $4$, $5$ et $6$,
830 tous les cycles hamiltoniens non isomorphes ont été générés. Pour les
831 valeur de $n=7$ et $8$, seuls $10^{5}$ cycles ont été évalués. Parmi
832 toutes les fonctions obtenues en enlevant du $n$-cube ces cycles, n'ont été
833 retenues que celles qui minimisaient le temps de mélange relatif à une valeur de
834 $\epsilon$ fixée à $10^{-8}$ et pour un mode donné.
835 Ce nombre d'itérations (\textit{i.e.}, ce temps de mélange)
836 est stocké dans la troisième
837 colonne sous la variable $b$.
838 La variable $b'$ reprend le temps de mélange pour
839 l'algorithme~\ref{CI Algorithm}.
840 On note que pour un nombre $n$ de bits fixé et un mode donné d'itérations,
841 il peut y avoir plusieurs fonctions minimisant ce temps de mélange. De plus, comme ce temps
842 de mélange est construit à partir de la matrice de Markov et que celle-ci dépend
843 du mode, une fonction peut être optimale pour un mode et ne pas l'être pour l'autre
846 Un second résultat est que ce nouvel algorithme réduit grandement le nombre
847 d'itérations suffisant pour obtenir une faible déviation par rapport à une
848 distribution uniforme. On constate de plus que ce nombre décroît avec
849 le nombre d'éléments alors qu'il augmente dans l'approche initiale où
852 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre
853 de configurations qu'on ne peut pas atteindre en une itération est de:
855 \item $2^n-n$ en unaire. Ceci représente un rapport de
856 $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$
857 de toutes les configurations; plus $n$ est grand,
858 plus ce nombre est proche de $1$, et plus grand devient le nombre
859 d'itérations nécessaires pour atteinte une déviation faible;
860 \item $2^n-2^{n-1}$ dans le cas généralisé,
861 soit la moitié de toutes les configurations
862 quel que soit $n$; seul 1 bit reste constant tandis que tous les autres peuvent changer. Plus $n$ grandit, plus la proportion de bits constants diminue.
865 Cependant, dans le cas généralisé, chaque itération a une complexité
866 plus élevée puisqu'il est nécessaire d'invoquer un générateur
867 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit
868 que celui-ci soit dans $[n]$ dans le cas unaire.
869 Pour comparer les deux approches,
870 on considère que le générateur aléatoire embarqué est binaire, \textit{i.e.} ne génère qu'un bit (0 ou 1).
872 Dans le cas généralisé, si l'on effectue $b$ itérations,
873 à chacune d'elles, la stratégie génère un nombre entre
874 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
875 On fait donc au total $b*n$ appels pour $n$ bits et
876 donc $b$ appels pour 1 bit généré en moyenne.
877 Dans le cas unaire, si l'on effectue $b'$ itérations,
878 à chacune d'elle, la stratégie génère un nombre entre
880 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne.
881 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
882 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
883 Le tableau~\ref{table:marchevssaute} donne des instances de
884 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions
885 données au tableau~\ref{table:functions}.
886 On constate que le nombre d'appels par bit généré décroît avec $n$ dans le
887 cas des itérations généralisées et est toujours plus faible
888 que celui des itérations unaires.
894 \begin{array}{|l|l|l|l|l|l|}
896 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\
898 \textrm{Unaires} & 19.0 & 22.3 & 23.7 & 25.3 & 27.0\\
900 \textrm{Généralisées} & 17 & 13 & 11 & 10 & 9\\
904 \caption{Nombre moyen
905 d'appels à un générateur binaire par bit généré}\label{table:marchevssaute}
911 \section{Tests statistiques}\label{sec:prng;gray:tests}
913 La qualité des séquences aléatoires produites par
914 le générateur des itérations unaires ainsi que
915 celles issues des itérations généralisées a été évaluée à travers la suite
916 de tests statistiques développée par le
917 \emph{National Institute of Standards and Technology} (NIST).
918 En interne, c'est l'implantation de l'algorithme de Mersenne Twister qui
919 permet de générer la stratégie aléatoire.
924 Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
926 qui est plus grande que $1\%$ signifie
927 que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
930 Les tableaux~\ref{fig:TEST:generalise} donnent
931 une vision synthétique de ces expérimentations.
932 Nous avons évalué les fonctions préfixées par
933 $f$ (respectivement $g$) avec les générateurs issus des itérations
934 généralisées (resp. unaires).
935 Quelle que soit la méthode utilisée, on constate que chacun des
937 avec succès le test de NIST.
939 Interpréter ces résultats en concluant que ces générateurs sont
940 tous équivalents serait erroné: la meilleure des
941 méthodes basées sur le mode des itérations
942 généralisées (pour $n=8$ par exemple)
943 est au moins deux fois plus rapide que la meilleure de celles qui
944 sont basées sur les itérations unaires.
949 %%%%%%%%% Relancer pour n=6, n=7, n=8
950 %%%%%%%%% Recalculer le MT
951 %%%%%%%%% Regenerer les 10^6 bits
952 %%%%%%%%% Evaluer sur NIST
959 \begin{tabular}{|l|r|r|r|r|}
961 Test & $f^{*5}$ &$f^{*6}$ &$f^{*7}$ &$f^{*8}$ \\ \hline
962 Fréquence (Monobit)& 0.401 (0.97)& 0.924 (1.0)& 0.779 (0.98)& 0.883 (0.99)\\ \hline
963 Fréquence ds un bloc& 0.574 (0.98)& 0.062 (1.0)& 0.978 (0.98)& 0.964 (0.98)\\ \hline
964 Somme Cumulé*& 0.598 (0.975)& 0.812 (1.0)& 0.576 (0.99)& 0.637 (0.99)\\ \hline
965 Exécution& 0.998 (0.99)& 0.213 (0.98)& 0.816 (0.98)& 0.494 (1.0)\\ \hline
966 Longue exécution dans un bloc& 0.085 (0.99)& 0.971 (0.99)& 0.474 (1.0)& 0.574 (0.99)\\ \hline
967 Rang& 0.994 (0.96)& 0.779 (1.0)& 0.191 (0.99)& 0.883 (0.99)\\ \hline
968 Fourier rapide& 0.798 (1.0)& 0.595 (0.99)& 0.739 (0.99)& 0.595 (1.0)\\ \hline
969 Patron sans superposition*& 0.521 (0.987)& 0.494 (0.989)& 0.530 (0.990)& 0.520 (0.989)\\ \hline
970 Patron avec superposition& 0.066 (0.99)& 0.040 (0.99)& 0.304 (1.0)& 0.249 (0.98)\\ \hline
971 Statistiques universelles& 0.851 (0.99)& 0.911 (0.99)& 0.924 (0.96)& 0.066 (1.0)\\ \hline
972 Entropie approchée (m=10)& 0.637 (0.99)& 0.102 (0.99)& 0.115 (0.99)& 0.350 (0.98)\\ \hline
973 Suite aléatoire *& 0.573 (0.981)& 0.144 (0.989)& 0.422 (1.0)& 0.314 (0.984)\\ \hline
974 Suite aléatoire variante *& 0.359 (0.968)& 0.401 (0.982)& 0.378 (0.989)& 0.329 (0.985)\\ \hline
975 Série* (m=10)& 0.469 (0.98)& 0.475 (0.995)& 0.473 (0.985)& 0.651 (0.995)\\ \hline
976 Complexité linaire& 0.129 (1.0)& 0.494 (1.0)& 0.062 (1.0)& 0.739 (1.0)\\ \hline
982 \caption{Test de NIST pour les fonctions
983 du tableau~\ref{table:functions} selon les itérations généralisées}\label{fig:TEST:generalise}
990 \begin{tabular}{|l|r|r|r|r|}
992 Test & $g^{*5}$& $g^{*6}$& $f^{*7}$& $f^{*8}$\\ \hline
993 Fréquence (Monobit)& 0.236 (1.0)& 0.867 (0.99)& 0.437 (0.99)& 0.911 (1.0)\\ \hline
994 Fréquence ds un bloc& 0.129 (0.98)& 0.350 (0.99)& 0.366 (0.96)& 0.657 (1.0)\\ \hline
995 Somme Cumulé*& 0.903 (0.995)& 0.931 (0.985)& 0.863 (0.995)& 0.851 (0.995)\\ \hline
996 Exécution& 0.699 (0.98)& 0.595 (0.99)& 0.181 (1.0)& 0.437 (0.99)\\ \hline
997 Longue exécution dans un bloc& 0.009 (0.99)& 0.474 (0.97)& 0.816 (1.0)& 0.051 (1.0)\\ \hline
998 Rang& 0.946 (0.96)& 0.637 (0.98)& 0.494 (1.0)& 0.946 (1.0)\\ \hline
999 Fourier rapide& 0.383 (0.99)& 0.437 (1.0)& 0.616 (0.98)& 0.924 (0.99)\\ \hline
1000 Patron sans superposition*& 0.466 (0.990)& 0.540 (0.989)& 0.505 (0.990)& 0.529 (0.991)\\ \hline
1001 Patron avec superposition& 0.202 (0.96)& 0.129 (0.98)& 0.851 (0.99)& 0.319 (0.98)\\ \hline
1002 Statistiques universelles& 0.319 (0.97)& 0.534 (0.99)& 0.759 (1.0)& 0.657 (0.99)\\ \hline
1003 Entropie approchée (m=10)& 0.075 (0.97)& 0.181 (0.99)& 0.213 (0.98)& 0.366 (0.98)\\ \hline
1004 Suite aléatoire *& 0.357 (0.986)& 0.569 (0.991)& 0.539 (0.987)& 0.435 (0.992)\\ \hline
1005 Suite aléatoire variante *& 0.398 (0.989)& 0.507 (0.986)& 0.668 (0.991)& 0.514 (0.994)\\ \hline
1006 Série* (m=10)& 0.859 (0.995)& 0.768 (0.99)& 0.427 (0.995)& 0.637 (0.98)\\ \hline
1007 Complexité linaire& 0.897 (0.99)& 0.366 (0.98)& 0.153 (1.0)& 0.437 (1.0)\\ \hline
1013 \caption{Test de NIST pour les fonctions
1014 du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
1022 \begin{tabular}{|l|r|r|r|r|}
1024 Test & 5 bits& 6 bits & 7 bits & 8bits \\ \hline
1025 Fréquence (Monobit)& 0.289 (1.0)& 0.437 (1.0)& 0.678 (1.0)& 0.153 (0.99)\\ \hline
1026 Fréquence ds un bloc& 0.419 (1.0)& 0.971 (0.98)& 0.419 (0.99)& 0.275 (1.0)\\ \hline
1027 Somme Cumulé*& 0.607 (0.99)& 0.224 (0.995)& 0.645 (0.995)& 0.901 (0.99)\\ \hline
1028 Exécution& 0.129 (0.99)& 0.005 (0.99)& 0.935 (0.98)& 0.699 (0.98)\\ \hline
1029 Longue exécution dans un bloc& 0.514 (1.0)& 0.739 (0.99)& 0.994 (1.0)& 0.834 (0.99)\\ \hline
1030 Rang& 0.455 (0.97)& 0.851 (0.99)& 0.554 (1.0)& 0.964 (0.99)\\ \hline
1031 Fourier rapide& 0.096 (0.98)& 0.955 (0.99)& 0.851 (0.97)& 0.037 (1.0)\\ \hline
1032 Patron sans superposition*& 0.534 (0.990)& 0.524 (0.990)& 0.508 (0.987)& 0.515 (0.99)\\ \hline
1033 Patron avec superposition& 0.699 (0.99)& 0.616 (0.95)& 0.071 (1.0)& 0.058 (1.0)\\ \hline
1034 Statistiques universelles& 0.062 (0.99)& 0.071 (1.0)& 0.637 (1.0)& 0.494 (0.98)\\ \hline
1035 Entropie approchée (m=10)& 0.897 (0.99)& 0.383 (0.99)& 0.366 (1.0)& 0.911 (0.99)\\ \hline
1036 Suite aléatoire *& 0.365 (0.983)& 0.442 (0.994)& 0.579 (0.992)& 0.296 (0.993)\\ \hline
1037 Suite aléatoire variante *& 0.471 (0.978)& 0.559 (0.992)& 0.519 (0.987)& 0.340 (0.995)\\ \hline
1038 Série* (m=10)& 0.447 (0.985)& 0.298 (0.995)& 0.648 (1.0)& 0.352 (0.995)\\ \hline
1039 Complexité linaire& 0.005 (0.98)& 0.534 (0.99)& 0.085 (0.97)& 0.996 (1.0)\\ \hline
1055 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}
1059 \section{Conclusion}
1060 Ce chapitre a montré comment construire un PRNG chaotique, notamment à partir
1061 de codes de Gray équilibrés. Une méthode complètement automatique de
1062 construction de ce type de codes a été présentée étendant les méthodes
1064 Dans le cas des itérations unaires,
1065 l'algorithme qui en découle a un temps de mélange qui a
1066 un majorant quadratique de convergence vers la distribution uniforme.
1067 Pratiquement, ce temps de mélange se rapproche de $N\ln N$.
1068 Les expérimentations au travers de la batterie de test de NIST ont montré
1069 que toutes les propriétés statistiques sont obtenues pour
1070 $\mathsf{N} = 4, 5, 6, 7, 8$.