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 dit é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 Toutes les éléments de la somme $\sum_{1\le k\le 2^{\mathsf{N}}}M^k$ sont strictement positif, \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$ and $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 valeurs de $n$ petites, 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, à priori,
166 de déduire des règles permettant de construire de nouvelles
167 fonction 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 évidement un cycle hamiltonien et contient tous les n{\oe}uds.
324 Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles
325 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{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{NT}_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 La théorème suivante montre que c'est possible et sa preuve,
439 donnée en annexes~\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} extension telle que
447 le nombres de transitions $\textit{TC}_{\mathsf{N}}(i)$
448 sont 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ération 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é
518 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur
519 $\Bool^{\mathsf{N}}$.
520 La distance de \og totale variation\fg{} entre $\pi$ et $\mu$
521 est notée $\tv{\pi-\mu}$ et est définie par
522 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$
524 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
526 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a
527 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
529 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$.
530 $P(X,\cdot)$ est la distribution induite par la $X^{\textrm{ème}}$ colonne
532 Si la chaîne de Markov induite par
533 $P$ a une distribution stationnaire $\pi$, on définit alors
534 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
538 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
540 Un résultat classique est
542 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
547 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de variables aléatoires de
548 $\Bool^{\mathsf{N}}$.
549 Une variable aléatoire $\tau$ dans $\mathbb{N}$ est un
550 \emph{temps d'arrêt} pour la suite
551 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
552 (\Bool^{\mathsf{N}})^{t+1}$ tel que
553 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$.
554 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs
556 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$.
559 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et
560 $f(X_{t-1},Z_t)$ une représentation fonctionnelle de celle-ci.
561 Un \emph{temps d'arrêt aléatoire} pour la chaîne de
562 Markov est un temps d'arrêt pour
563 $(Z_t)_{t\in\mathbb{N}}$.
564 Si la chaîne de Markov est irréductible et a $\pi$
565 comme distribution stationnaire, alors un
566 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
567 (qui peut dépendre de la configuration initiale $X$),
568 tel que la distribution de $X_\tau$ est $\pi$:
569 $$\P_X(X_\tau=Y)=\pi(Y).$$
572 Un temps d'arrêt $\tau$ est qualifié de \emph{fort} si $X_{\tau}$
573 est indépendant de $\tau$. On a les deux théorèmes suivants, dont les
574 démonstrations sont données en annexes~\ref{anx:generateur}.
578 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
583 Soit alors $\ov{h} : \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ la fonction
584 telle que pour $X \in \Bool^{\mathsf{N}} $,
585 $(X,\ov{h}(X)) \in E$ et $X\oplus\ov{h}(X)=0^{{\mathsf{N}}-h(X)}10^{h(X)-1}$.
586 La fonction $\ov{h}$ est dite {\it anti-involutive} si pour tout $X\in \Bool^{\mathsf{N}}$,
587 $\ov{h}(\ov{h}(X))\neq X$.
590 \begin{restatable}[Majoration du temps d'arrêt]{theorem}{theostopmajorant}
592 Si $\ov{h}$ est bijective et anti involutive
593 $\ov{h}(\ov{h}(X))\neq X$, alors
594 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$.
597 Les détails de la preuve sont donnés en annexes~\ref{anx:generateur}.
598 On remarque tout d'abord que la chaîne de Markov proposée ne suit pas exactement
599 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente,
600 la probabilité de rester dans une configuration donnée
601 est fixée à $\frac{1}{2}+\frac{1}{2n}$.
602 Dans l'algorithme initial, celle-ci est de $\frac{1}{n}$.
603 Cette version, qui reste davantage sur place que l'algorithme original,
604 a été introduite pour simplifier le calcul d'un majorant
608 Sans entrer dans les détails de la preuve, on remarque aussi
609 que le calcul de ce majorant impose uniquement que
610 pour chaque n{\oe}ud du $\mathsf{N}$-cube
611 un arc entrant et un arc sortant sont supprimés.
612 Le fait qu'on enlève un cycle hamiltonien et que ce dernier
613 soit équilibré n'est pas pris en compte.
614 En intégrant cette contrainte, ce majorant pourrait être réduite.
616 En effet, le temps de mixage est en $\Theta(N\ln N)$ lors d'une
617 marche aléatoire classique paresseuse dans le $\mathsf{N}$-cube.
618 On peut ainsi conjecturer que cet ordre de grandeur reste le même
619 dans le contexte du $\mathsf{N}$-cube privé d'un chemin hamiltonien.
621 On peut évaluer ceci pratiquement: pour une fonction
622 $f: \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ et une graine initiale
623 $x^0$, le code donné à l'algorithme ~\ref{algo:stop} retourne le
624 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]$
625 en l'instanciant un grand nombre de fois: pour chaque nombre $\mathsf{N}$,
626 $ 3 \le \mathsf{N} \le 16$, 10 fonctions ont été générées comme dans
627 ce chapitre. Pour chacune d'elle, le calcul d'une approximation de $E[\ts]$
628 est exécuté 10000 fois avec une graine aléatoire. La Figure~\ref{fig:stopping:moy}
629 résume ces résultats. Dans celle-ci, un cercle représente une approximation de
630 $E[\ts]$ pour un $\mathsf{N}$ donné tandis que la courbe est une représentation de
631 la fonction $x \mapsto 2x\ln(2x+8)$.
632 On constate que l'approximation de $E[\ts]$ est largement inférieure
633 à le majorant quadratique donné au théorème~\ref{prop:stop} et que la conjecture
634 donnée au paragraphe précédent est sensée.
637 \begin{algorithm}[ht]
639 \KwIn{a function $f$, an initial configuration $x^0$ ($\mathsf{N}$ bits)}
640 \KwOut{a number of iterations $\textit{nbit}$}
642 $\textit{nbit} \leftarrow 0$\;
644 $\textit{fair}\leftarrow\emptyset$\;
645 \While{$\left\vert{\textit{fair}}\right\vert < \mathsf{N} $}
647 $ s \leftarrow \textit{Random}(\mathsf{N})$ \;
648 $\textit{image} \leftarrow f(x) $\;
649 \If{$\textit{Random}(1) \neq 0$ and $x[s] \neq \textit{image}[s]$}{
650 $\textit{fair} \leftarrow \textit{fair} \cup \{s\}$\;
651 $x[s] \leftarrow \textit{image}[s]$\;
653 $\textit{nbit} \leftarrow \textit{nbit}+1$\;
655 \Return{$\textit{nbit}$}\;
657 \caption{Pseudo Code pour évaluer le temps d'arrêt}
664 \includegraphics[width=0.49\textwidth]{images/complexityET}
665 \caption{Interpolation du temps d'arrêt}\label{fig:stopping:moy}
671 \section{Et les itérations généralisées?}\label{sec:prng:gray:general}
672 Le chapitre précédent a présenté un algorithme de
673 PRNG construit à partir d'itérations unaires.
674 On pourrait penser que cet algorithme est peu efficace puisqu'il
675 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à
676 chaque itération qu'un seul élément de $[n]$.
677 On pourrait penser à un algorithme basé sur les itérations généralisées,
678 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque
680 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
682 \begin{algorithm}[ht]
684 \KwIn{une fonction $f$, un nombre d'itérations $b$,
685 une configuration initiale $x^0$ ($n$ bits)}
686 \KwOut{une configuration $x$ ($n$ bits)}
691 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
692 $x\leftarrow{F_{f_g}(s,x)}$\;
696 \caption{PRNG basé sur les itérations généralisées.}
697 \label{CI Algorithm:prng:g}
700 Par rapport à l'algorithme~\ref{CI Algorithm} seule
701 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
702 Dans celle-ci la fonction $\textit{Set} : \{1,\ldots,2^n\} \rightarrow
703 \mathcal{P}(\{1,\ldots n\})$ retourne l'ensemble dont la fonction
704 caractéristique serait représentée par le nombre donné en argument.
705 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudrait $\{3,2\}$.
706 On remarque aussi que l'argument de la fonction $\textit{Random}$
707 passe de $n$ à $2^n$.
709 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
712 \begin{theorem}\label{thm:prng:g}
713 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son
714 graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
715 correspondante à ce graphe
716 et $M$ une matrice $2^n\times 2^n$
718 $M = \dfrac{1}{2^n} \check{M}$.
719 Si $\textsc{gig}(f)$ est fortement connexe, alors
720 la sortie du générateur de nombres pseudo aléatoires détaillé par
721 l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui
722 tend vers la distribution uniforme si
723 et seulement si $M$ est une matrice doublement stochastique.
726 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
727 Elle n'est donc pas rappelée.
731 On reprend l'exemple donné à la section~\ref{sec:plc}.
732 Dans le $3$-cube, le cycle hamiltonien défini par la séquence
733 $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant
734 la fonction $f^*$ définie par
736 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
737 \overline{x_1}.\overline{x_3} + x_1x_2).
740 Le graphe $\textsc{gig}(f^*)$ est représenté à la
741 Figure~\ref{fig:iteration:f*}.
742 La matrice de Markov $M$ correspondante est donnée à
743 la figure~\ref{fig:markov:f*}.
747 \subfigure[Graphe $\textsc{gig}(f^*)$
748 \label{fig:iteration:f*}]{
749 \begin{minipage}{0.55\linewidth}
751 \includegraphics[width=\columnwidth]{images/iter_f}%
754 \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
755 \label{fig:markov:f*}]{%
756 \begin{minipage}{0.35\linewidth}
759 $ \dfrac{1}{4} \left(
760 \begin{array}{cccccccc}
761 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
763 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
765 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
767 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
769 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
771 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
773 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
775 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
777 \end{array} \right) $
782 \caption{Représentations de $f^*(x_1,x_2,x_3)=
783 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
784 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
794 \begin{tabular}{|c|c|l|c|c|}
796 $n$ & fonction & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$ & $b$ & $b'$ \\
798 4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8] & \textbf{17} & \textbf{38} \\
800 \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 \\
801 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4] & & \\
803 & $g^{*5}$ & [29, 22, 21, 30, 19, 27, 24, 28, 7, 20, 5, 4, 23, 26, 25, & 15 & \textbf{47} \\
804 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 1, 6, 11, 18, 0, 16
808 \multirow{8}{0.5cm}{6}& $f^{*6}$ &
809 [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}\\
810 & & 49, 39, 62, 47, 46, 11, 43, 57, 8, 37, 6, 36, 4, 51, 38, 1, & & \\
811 & & 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
812 & & 16, 24, 13, 12, 29, 44, 10, 14, 41, 0, 15, 2, 7, 5, 35, 3, 9, 32] & &\\
814 &$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}}\\
815 & & 49, 15, 14, 47, 46, 35, 58, 57, 56, 7, 54, 39, 37, 3, 38, 1, & & \\
816 & & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
817 & & 16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 5, 2, 4, 6, 11, 34, 9, 32] & & \\
819 \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}} \\
820 & & 98, 81, 120, 109, 78, 105, 110, 99, 107, 104, 108, 101, 118, & & \\
821 & & 117, 96, 103, 66, 113, 64, 79, 86, 95, 124, 83, 91, 121, 24, & & \\
822 & & 119, 22, 69, 20, 87, 18, 17, 112, 77, 76, 73, 12, 74, 106, 72, & & \\
823 & & 8, 7, 102, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59, & & \\
824 & & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42, & & \\
825 & & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92, & & \\
826 & & 26, 90, 89, 25, 19, 30, 23, 4, 27, 2, 16, 80, 31, 10, 15, 14, & & \\
827 & & 3, 11, 13, 9, 5, 70, 21, 68, 67, 6, 65, 1] & & \\
829 \multirow{20}{0.5cm}{8} & $f^{*8}$ &
830 [223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,&
831 \multirow{20}{0.5cm}{9}&
832 \multirow{20}{0.5cm}{71}\\
833 & & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168,& & \\
834 & & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216,& & \\
835 & & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209,& & \\
836 & & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132,& & \\
837 & & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,& & \\
838 & & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42,& & \\
839 & & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,& & \\
840 & & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153,& & \\
841 & & 145, 175, 206, 143, 12, 11, 142, 129, 128, 7, 198, 197, 4, 195,& & \\
842 & & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114,& & \\
843 & & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121,& & \\
844 & & 120, 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83,& & \\
845 & & 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72,& & \\
846 & & 107, 78, 105, 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45,& & \\
847 & & 188, 51, 186, 61, 40, 119, 182, 181, 53, 179, 54, 33, 49, 15,& & \\
848 & & 174, 47, 60, 171, 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0,& & \\
849 & & 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16,& & \\
850 & & 24, 13, 10, 29, 14, 3, 138, 41, 136, 39, 134, 133, 5, 131,& & \\
856 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
859 Le tableau~\ref{table:functions} reprend une synthèse de
860 fonctions qui ont été générées selon la méthode détaillée
861 à la section~\ref{sec:hamiltonian}.
862 Pour chaque nombre $n=3$, $4$, $5$ et $6$,
863 tous les cycles hamiltoniens non isomorphes ont été générés. Pour les
864 valeur de $n=7$ et $8$, seules $10^{5}$ cycles ont été évalués. Parmi
865 toutes les fonctions obtenues en enlevant du $n$-cube ces cycles, n'ont été
866 retenues que celles qui minimisaient le temps de mélange relatif à une valeur de
867 $\epsilon$ fixée à $10^{-8}$ et pour un mode donné.
868 Ce nombre d'itérations (\textit{i.e.}, ce temps de mélange)
869 est stocké dans la troisième
870 colonne sous la variable $b$.
871 La variable $b'$ reprend le temps de mélange pour
872 l'algorithme~\ref{CI Algorithm}.
873 On note que pour un nombre $n$ de bits fixé et un mode donné d'itérations,
874 il peut avoir plusieurs fonctions minimisant ce temps de mélange. De plus, comme ce temps
875 de mélange est construit à partir de la matrice de Markov et que celle-ci dépend
876 du mode, une fonction peut être optimale pour un mode et ne pas l'être pour l'autre
879 Un second résultat est que ce nouvel algorithme réduit grandement le nombre
880 d'itérations suffisant pour obtenir une faible déviation par rapport à une
881 distribution uniforme. On constate de plus que ce nombre décroît avec
882 le nombre d'éléments alors qu'il augmente dans l'approche initiale où
885 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre
886 de configurations qu'on ne peut pas atteindre en une itération est de:
888 \item $2^n-n$ en unaire. Ceci représente un rapport de
889 $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$
890 de toutes les configurations; plus $n$ est grand,
891 plus ce nombre est proche de $1$, et plus grand devient le nombre
892 d'itérations nécessaires pour atteinte une déviation faible;
893 \item $2^n-2^{n-1}$ dans le cas généralisé,
894 soit la moitié de toutes les configurations
895 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.
898 Cependant, dans le cas généralisé, chaque itération a une complexité
899 plus élevée puisqu'il est nécessaire d'invoquer un générateur
900 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit
901 que celui-ci soit dans $[n]$ dans le cas unaire.
902 Pour comparer les deux approches,
903 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).
905 Dans le cas généralisé, si l'on effectue $b$ itérations,
906 à chacune d'elles, la stratégie génère un nombre entre
907 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
908 On fait donc au total $b*n$ appels pour $n$ bits et
909 donc $b$ appels pour 1 bit généré en moyenne.
910 Dans le cas unaire, si l'on effectue $b'$ itérations,
911 à chacune d'elle, la stratégie génère un nombre entre
913 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne.
914 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
915 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
916 Le tableau~\ref{table:marchevssaute} donne des instances de
917 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions
918 données au tableau~\ref{table:functions}.
919 On constate que le nombre d'appels par bit généré décroît avec $n$ dans le
920 cas des itérations généralisées et est toujours plus faible
921 que celui des itérations unaires.
927 \begin{array}{|l|l|l|l|l|l|}
929 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\
931 \textrm{Unaires} & 19.0 & 22.3 & 23.7 & 25.3 & 27.0\\
933 \textrm{Généralisées} & 17 & 13 & 11 & 10 & 9\\
937 \caption{Nombre moyen
938 d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
944 \section{Tests statistiques}\label{sec:prng;gray:tests}
946 La qualité des séquences aléatoires produites par
947 le générateur des itérations unaires ainsi que
948 celles issues des itérations généralisées a été évaluée à travers la suite
949 de tests statistiques développée par le
950 \emph{National Institute of Standards and Technology} (NIST).
951 En interne, c'est l'implantation de l'algorithme de Mersenne Twister qui
952 permet de générer la stratégie aléatoire.
957 Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
959 qui est plus grande que $1\%$ signifie
960 que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
963 Les tableau~\ref{fig:TEST:generalise} donnent
964 une vision synthétique de ces expérimentations.
965 Nous avons évalué les fonctions préfixées par
966 $f$ (respectivement $g$) avec les générateurs issus des itérations
967 généralisées (resp. unaires).
968 Quelle que soit la méthode utilisée, on constate que chacun des
970 avec succès le test de NIST.
972 Interpréter ces résultats en concluant que ces générateurs sont
973 tous équivalents serait erroné: la meilleur des
974 méthodes basées sur le mode des itérations
975 généralisées (pour $n=8$ par exemple)
976 est au moins deux fois plus rapide que la meilleur de celles qui
977 sont basées sur les itérations unaires.
982 %%%%%%%%% Relancer pour n=6, n=7, n=8
983 %%%%%%%%% Recalculer le MT
984 %%%%%%%%% Regenerer les 10^6 bits
985 %%%%%%%%% Evaluer sur NIST
992 \begin{tabular}{|l|r|r|r|r|}
994 Test & $f^{*5}$ &$f^{*6}$ &$f^{*7}$ &$f^{*8}$ \\ \hline
995 Fréquence (Monobit)& 0.401 (0.97)& 0.924 (1.0)& 0.779 (0.98)& 0.883 (0.99)\\ \hline
996 Fréquence ds un bloc& 0.574 (0.98)& 0.062 (1.0)& 0.978 (0.98)& 0.964 (0.98)\\ \hline
997 Somme Cumulé*& 0.598 (0.975)& 0.812 (1.0)& 0.576 (0.99)& 0.637 (0.99)\\ \hline
998 Exécution& 0.998 (0.99)& 0.213 (0.98)& 0.816 (0.98)& 0.494 (1.0)\\ \hline
999 Longue exécution dans un bloc& 0.085 (0.99)& 0.971 (0.99)& 0.474 (1.0)& 0.574 (0.99)\\ \hline
1000 Rang& 0.994 (0.96)& 0.779 (1.0)& 0.191 (0.99)& 0.883 (0.99)\\ \hline
1001 Fourier rapide& 0.798 (1.0)& 0.595 (0.99)& 0.739 (0.99)& 0.595 (1.0)\\ \hline
1002 Patron sans superposition*& 0.521 (0.987)& 0.494 (0.989)& 0.530 (0.990)& 0.520 (0.989)\\ \hline
1003 Patron avec superposition& 0.066 (0.99)& 0.040 (0.99)& 0.304 (1.0)& 0.249 (0.98)\\ \hline
1004 Statistiques universelles& 0.851 (0.99)& 0.911 (0.99)& 0.924 (0.96)& 0.066 (1.0)\\ \hline
1005 Entropie approchée (m=10)& 0.637 (0.99)& 0.102 (0.99)& 0.115 (0.99)& 0.350 (0.98)\\ \hline
1006 Suite aléatoire *& 0.573 (0.981)& 0.144 (0.989)& 0.422 (1.0)& 0.314 (0.984)\\ \hline
1007 Suite aléatoire variante *& 0.359 (0.968)& 0.401 (0.982)& 0.378 (0.989)& 0.329 (0.985)\\ \hline
1008 Série* (m=10)& 0.469 (0.98)& 0.475 (0.995)& 0.473 (0.985)& 0.651 (0.995)\\ \hline
1009 Complexité linaire& 0.129 (1.0)& 0.494 (1.0)& 0.062 (1.0)& 0.739 (1.0)\\ \hline
1015 \caption{Test de NIST pour les fonctions
1016 du tableau~\ref{table:functions} selon les itérations généralisées}\label{fig:TEST:generalise}
1023 \begin{tabular}{|l|r|r|r|r|}
1025 Test & $g^{*5}$& $g^{*6}$& $f^{*7}$& $f^{*8}$\\ \hline
1026 Fréquence (Monobit)& 0.236 (1.0)& 0.867 (0.99)& 0.437 (0.99)& 0.911 (1.0)\\ \hline
1027 Fréquence ds un bloc& 0.129 (0.98)& 0.350 (0.99)& 0.366 (0.96)& 0.657 (1.0)\\ \hline
1028 Somme Cumulé*& 0.903 (0.995)& 0.931 (0.985)& 0.863 (0.995)& 0.851 (0.995)\\ \hline
1029 Exécution& 0.699 (0.98)& 0.595 (0.99)& 0.181 (1.0)& 0.437 (0.99)\\ \hline
1030 Longue exécution dans un bloc& 0.009 (0.99)& 0.474 (0.97)& 0.816 (1.0)& 0.051 (1.0)\\ \hline
1031 Rang& 0.946 (0.96)& 0.637 (0.98)& 0.494 (1.0)& 0.946 (1.0)\\ \hline
1032 Fourier rapide& 0.383 (0.99)& 0.437 (1.0)& 0.616 (0.98)& 0.924 (0.99)\\ \hline
1033 Patron sans superposition*& 0.466 (0.990)& 0.540 (0.989)& 0.505 (0.990)& 0.529 (0.991)\\ \hline
1034 Patron avec superposition& 0.202 (0.96)& 0.129 (0.98)& 0.851 (0.99)& 0.319 (0.98)\\ \hline
1035 Statistiques universelles& 0.319 (0.97)& 0.534 (0.99)& 0.759 (1.0)& 0.657 (0.99)\\ \hline
1036 Entropie approchée (m=10)& 0.075 (0.97)& 0.181 (0.99)& 0.213 (0.98)& 0.366 (0.98)\\ \hline
1037 Suite aléatoire *& 0.357 (0.986)& 0.569 (0.991)& 0.539 (0.987)& 0.435 (0.992)\\ \hline
1038 Suite aléatoire variante *& 0.398 (0.989)& 0.507 (0.986)& 0.668 (0.991)& 0.514 (0.994)\\ \hline
1039 Série* (m=10)& 0.859 (0.995)& 0.768 (0.99)& 0.427 (0.995)& 0.637 (0.98)\\ \hline
1040 Complexité linaire& 0.897 (0.99)& 0.366 (0.98)& 0.153 (1.0)& 0.437 (1.0)\\ \hline
1046 \caption{Test de NIST pour les fonctions
1047 du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
1055 \begin{tabular}{|l|r|r|r|r|}
1057 Test & 5 bits& 6 bits & 7 bits & 8bits \\ \hline
1058 Fréquence (Monobit)& 0.289 (1.0)& 0.437 (1.0)& 0.678 (1.0)& 0.153 (0.99)\\ \hline
1059 Fréquence ds un bloc& 0.419 (1.0)& 0.971 (0.98)& 0.419 (0.99)& 0.275 (1.0)\\ \hline
1060 Somme Cumulé*& 0.607 (0.99)& 0.224 (0.995)& 0.645 (0.995)& 0.901 (0.99)\\ \hline
1061 Exécution& 0.129 (0.99)& 0.005 (0.99)& 0.935 (0.98)& 0.699 (0.98)\\ \hline
1062 Longue exécution dans un bloc& 0.514 (1.0)& 0.739 (0.99)& 0.994 (1.0)& 0.834 (0.99)\\ \hline
1063 Rang& 0.455 (0.97)& 0.851 (0.99)& 0.554 (1.0)& 0.964 (0.99)\\ \hline
1064 Fourier rapide& 0.096 (0.98)& 0.955 (0.99)& 0.851 (0.97)& 0.037 (1.0)\\ \hline
1065 Patron sans superposition*& 0.534 (0.990)& 0.524 (0.990)& 0.508 (0.987)& 0.515 (0.99)\\ \hline
1066 Patron avec superposition& 0.699 (0.99)& 0.616 (0.95)& 0.071 (1.0)& 0.058 (1.0)\\ \hline
1067 Statistiques universelles& 0.062 (0.99)& 0.071 (1.0)& 0.637 (1.0)& 0.494 (0.98)\\ \hline
1068 Entropie approchée (m=10)& 0.897 (0.99)& 0.383 (0.99)& 0.366 (1.0)& 0.911 (0.99)\\ \hline
1069 Suite aléatoire *& 0.365 (0.983)& 0.442 (0.994)& 0.579 (0.992)& 0.296 (0.993)\\ \hline
1070 Suite aléatoire variante *& 0.471 (0.978)& 0.559 (0.992)& 0.519 (0.987)& 0.340 (0.995)\\ \hline
1071 Série* (m=10)& 0.447 (0.985)& 0.298 (0.995)& 0.648 (1.0)& 0.352 (0.995)\\ \hline
1072 Complexité linaire& 0.005 (0.98)& 0.534 (0.99)& 0.085 (0.97)& 0.996 (1.0)\\ \hline
1088 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}
1092 \section{Conclusion}
1093 Ce chaptitre a montré comment construire un PRNG chaotique, notamment à partir
1094 de codes de Gray équilibrés. Une méthode complètement automatique de
1095 construction de ce type de codes a été présentée étendant les méthodes
1097 Dans le cas des itérations unaires,
1098 l'algorithme qui en découle a un temps de mélange qui a
1099 un majorant quadratique de convergence vers la distribution uniforme.
1100 Pratiquement, ce temps de mélange se rapproche de $N\ln N$.
1101 Les expérimentations au travers de la batterie de test de NIST ont montré
1102 que toutes les propriétés statistiques sont obtenues pour
1103 $\mathsf{N} = 4, 5, 6, 7, 8$.