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 lité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 unifiorme est étduié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é à 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 leur graphes
104 respectifs $\textsf{giu}(f)$ et $\textsf{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 personnelle, 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 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 La génération de cycles hamiltoniens dans le
334 $n$-cube, ce qui revient à trouver des \emph{codes de Gray cycliques}. On
335 rappelle que les codes de Gray sont des séquences de mots binaires de taille
336 fixe ($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 La borne inférieure 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 $\textsf{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 Un code de Gray équilibré peut être défini de la façon suivante :
355 \begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
356 Soit $L = w_1, w_2, \dots, w_{2^n}$ la séquence d'un code de Gray cyclique à
357 $n$ bits. Soit $S = s_1, s_2, \dots, s_{2^n}$ la séquence des transitions où
358 $s_i$, $1 \le i \le 2^n$ est l'indice du seul bit qui varie entre les mots
359 $w_i$ et $w_{i+1}$. Enfin, soit $\textit{NT}_n : \{1,\dots, n\} \rightarrow
360 \{0, \ldots, 2^n\}$ la fonction qui au paramètre $i$ associe le \emph{nombre
361 de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
362 le nombre d'occurrences de $i$ dans $S$.
364 Le code $L$ est \textbf{équilibré} si $\forall
365 i,j\in\{1,...,n\},~|\textit{NT}_n(i) - \textit{NT}_n(j)| \le 2$. Il est
366 \textbf{totalement équilibré} si $\forall
367 i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
370 On peut donc déjà déduire qu'il ne peut exister des codes de Gray totalement
371 équilibrés que pour les systèmes ayant un nombre d'éléments $n=2^k, k>0$. De
372 plus, comme dans tout code de Gray cyclique, $\textit{NT}_n(i)$ est pair
373 $\forall i\in\{1,...,n\}$, alors les systèmes ayant un nombre d'éléments
374 différent de $2^k$, ne peuvent avoir que des codes de Gray équilibrés avec
375 $\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$ ou
376 $\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil, \forall i\in\{1,...,n\}$ et
377 vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
380 Soit $L^*=000,100,101,001,011,111,110,010$ le code de Gray correspondant au
381 cycle hamiltonien enlevé de $f^*$. Sa séquence des transitions est \linebreak
382 $S=3,1,3,2,3,1,3,2$ et les nombres de transitions sont $\textit{TC}_3(1)=
383 \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
385 Si l'on considère maintenant $L^4=$ 0000, 0010, 0110, 1110, 1111, 0111, 0011,
386 0001, 0101, 0100, 1100, 1101, 1001, 1011, 1010, 1000, un code de Gray
387 cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4,
388 on constate que $\forall
389 i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que
390 ce code est totalement équilibré.
393 \section{Génération de codes de Gray équilibrés par induction}
394 \label{sec:induction}
396 De nombreuses approches ont été developpées pour résoudre le problème de construire
397 un code de Gray dans un $\mathsf{N}$-cube~\cite{Robinson:1981:CS,DBLP:journals/combinatorics/BhatS96,ZanSup04},
398 selon les propriétés que doit vérifier ce code.
400 Dans les travaux~\cite{Robinson:1981:CS}, les auteurs
401 proposent une approche inductive de construction de code de Gray équilibrés
402 (on passe du $\mathsf{N}-2$ à $\mathsf{N}$)
403 pour peu que l'utilisateur fournisse une sous-séquence possédant certaines
404 propriétés à chaque pas inductif.
405 Ce travail a été renforcé dans ~\cite{DBLP:journals/combinatorics/BhatS96}
406 où les auteurs donnent une manière explicite de construire une telle sous-séquence.
407 Enfin, les autheurs de~\cite{ZanSup04} présentent une extension de l'algorithme de
408 \emph{Robinson-Cohn}. La présentation rigoureuse de cette extension leur permet
409 principalement de prouver que si $\mathsf{N}$ est une puissance de 2,
410 le code de Gray équilibré engendré par l'extension est toujours totalement équilibré et
411 que $S_{\mathsf{N}}$ est la séquence de transition d'un code de Gray de $\mathsf{N}$ bits
412 si $S_{\mathsf{N}-2}$ l'est aussi..
413 Cependant les auteurs ne prouvent pas que leur approche fournit systématiquement
414 un code de Gray (totalement) équilibré.
415 Cette section montre que ceci est vrai en rappelant tout d'abord
416 l'extension de l'algorithme de \emph{Robinson-Cohn} pour un
417 code de Gray avec $\mathsf{N}-2$ bits.
420 \item \label{item:nondet}Soit $l$ un entier positif pair. Trouver des sous-sequences
421 $u_1, u_2, \dots , u_{l-2}, v$ (possiblement vides) de $S_{\mathsf{N}-2}$
422 telles que $S_{\mathsf{N}-2}$ est la concaténation de
424 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
426 où $i_1 = 1$, $i_2 = 2$, et $u_0 = \emptyset$ (la séquence vide).
427 \item\label{item:u'} Remplacer dans $S_{\mathsf{N}-2}$ les sequences $u_0, u_1, u_2, \ldots, u_{l-2}$
429 $\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)$
430 respectivement, où $u'(u,x,y)$ est la séquence $u,x,u^R,y,u$ telle que
431 $u^R$ est $u$, mais dans l'ordre inverse. La séquence obtenue est ensuite notée $U$.
432 \item\label{item:VW} Contruire les séquences $V=v^R,\mathsf{N},v$, $W=\mathsf{N}-1,S_{\mathsf{N}-2},\mathsf{N}$. Soit alors $W'$ définie commé étant égale à $W$ sauf pour les
433 deux premiers éléments qui ont été intervertis.
434 \item La séquence de transition $S_{\mathsf{N}}$ est la concatenation $U^R, V, W'$.
437 L'étape~(\ref{item:nondet}) n'est pas constructive: il n'est pas précisé
438 comment sélectionner des sous-séquences qui assurent que le code obtenu est équilibré.
439 La théoreme suivante montre que c'est possible et sa preuve explique comment le faire.
442 \begin{theorem}\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 La preuve de ce théorème est donnée en annexes~\ref{anx:generateur}.
454 Ces fonctions étant générées, on s'intéresse à étudier à quelle vitesse
455 un générateur les embarquant converge vers la distribution uniforme.
456 C'est l'objectif de la section suivante.
458 \section{Quantifier l'écart par rapport à la distribution uniforme}\label{sec:mixing}
459 On considère ici une fonction construite comme à la section précédente.
460 On s'intéresse ici à étudier de manière théorique les
461 itérations définies à l'équation~(\ref{eq:asyn}) pour une
463 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un
464 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la
466 On remarque que ce graphe d'itération est toujours un sous graphe
467 du ${\mathsf{N}}$-cube augmenté des
468 boucles sur chaque sommet, \textit{i.e.}, les arcs
469 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$.
470 Ainsi, le travail ci dessous répond à la question de
471 définir la longueur du chemin minimum dans ce graphe pour
472 obtenir une distribution uniforme.
473 Ceci se base sur la théorie des chaînes de Markov.
475 générale à ce sujet on pourra se référer
476 au livre~\cite{LevinPeresWilmer2006},
477 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{2}{3} \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}
515 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur
516 $\Bool^{\mathsf{N}}$.
517 La distance de \og totale variation\fg{} entre $\pi$ et $\mu$
518 est notée $\tv{\pi-\mu}$ et est définie par
519 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$
521 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
523 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a
524 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
526 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$.
527 $P(X,\cdot)$ est la distribution induite par la $X^{\textrm{ème}}$ colonne
529 Si la chaîne de Markov induite par
530 $P$ a une distribution stationnaire $\pi$, on définit alors
531 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
535 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
537 Un résultat classique est
539 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
544 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de variables aléatoires de
545 $\Bool^{\mathsf{N}}$.
546 une variable aléatoire $\tau$ dans $\mathbb{N}$ est un
547 \emph{temps d'arrêt} pour la suite
548 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
549 (\Bool^{\mathsf{N}})^{t+1}$ tel que
550 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$.
551 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs
553 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$.
556 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et
557 $f(X_{t-1},Z_t)$ une représentation fonctionnelle de celle-ci.
558 Un \emph{temps d'arrêt aléatoire} pour la chaîne de
559 Markov est un temps d'arrêt pour
560 $(Z_t)_{t\in\mathbb{N}}$.
561 Si la chaîne de Markov est irréductible et a $\pi$
562 comme distribution stationnaire, alors un
563 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
564 (qui peut dépendre de la configuration initiale $X$),
565 tel que la distribution de $X_\tau$ est $\pi$:
566 $$\P_X(X_\tau=Y)=\pi(Y).$$
569 Un temps d'arrêt $\tau$ est qualifié de \emph{fort} si $X_{\tau}$
570 est indépendant de $\tau$. On a les deux théorèmes suivants, dont les
571 démonstrations sont données en annexes~\ref{anx:generateur}.
575 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
580 Soit alors $\ov{h} : \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ la fonction
581 telle que pour $X \in \Bool^{\mathsf{N}} $,
582 $(X,\ov{h}(X)) \in E$ et $X\oplus\ov{h}(X)=0^{{\mathsf{N}}-h(X)}10^{h(X)-1}$.
583 La fonction $\ov{h}$ est dite {\it anti-involutive} si pour tout $X\in \Bool^{\mathsf{N}}$,
584 $\ov{h}(\ov{h}(X))\neq X$.
587 \begin{theorem} \label{prop:stop}
588 Si $\ov{h}$ is bijective et anti involutive
589 $\ov{h}(\ov{h}(X))\neq X$, alors
590 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$.
593 Les détails de la preuve sont donnés en annexes~\ref{anx:generateur}.
594 On remarque tout d'abord que la chaîne de Markov proposée ne suit pas exactement
595 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente,
596 la probabilité de rester dans une configuration donnée
597 est fixée à $frac{1}{2}+\frac{1}{2n}$.
598 Dans l'algorithme initial, celle-ci est de ${1}{n}$.
599 Cette version, qui reste davantage sur place que l'algorithme original,
600 a été introduite pour simplifier le calcul de la borne sup
604 Sans entrer dans les détails de la preuve, on remarque aussi
605 que le calcul de cette borne impose uniquement que
606 pour chaque n{\oe}ud du $\mathsf{N}$-cube
607 un arc entrant et un arc sortant sont supprimés.
608 Le fait qu'on enlève un cycle hamiltonien et que ce dernier
609 soit équilibré n'est pas pris en compte.
610 En intégrant cette contrainte, la borne supérieure pourrait être réduite.
612 En effet, le temps de mixage est en $\Theta(N\ln N)$ lors d'une
613 marche aléatoire classique paresseuse dans le $\mathsf{N}$-cube.
614 On peut ainsi conjecturer que cet ordre de grandeur reste le même
615 dans le contexte du $\mathsf{N}$-cube privé d'un chemin hamiltonien.
617 On peut évaluer ceci pratiquement: pour une fonction
618 $f: \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ et une graine initiale
619 $x^0$, le code donné à l'algorithme algorithm~\ref{algo:stop} retourne le
620 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]$
621 en l'instanciant un grand nombre de fois: pour chaque nombre $\mathsf{N}$,
622 $ 3 \le \mathsf{N} \le 16$, 10 fonctionss ont été générées comme dans
623 ce chapitre. Pour chacune d'elle, le calcul d'une approximation de $E[\ts]$
624 est exécuté 10000 fois avec une graine aléatoire.La Figure~\ref{fig:stopping:moy}
625 résume ces resultats. Dans celle-ci, un cercle représente une approximation de
626 $E[\ts]$ pour un $\mathsf{N}$ donné tandis que la courbe est une représentation de
627 la fonction $x \mapsto 2x\ln(2x+8)$.
628 On cosntate que l'approximation de $E[\ts]$ est largement inférieure
629 à la borne quadratique donnée au thérème~\ref{prop:stop} et que la conjecture
630 donnée au paragraphe précédent est sensée.
633 \begin{algorithm}[ht]
635 \KwIn{a function $f$, an initial configuration $x^0$ ($\mathsf{N}$ bits)}
636 \KwOut{a number of iterations $\textit{nbit}$}
638 $\textit{nbit} \leftarrow 0$\;
640 $\textit{fair}\leftarrow\emptyset$\;
641 \While{$\left\vert{\textit{fair}}\right\vert < \mathsf{N} $}
643 $ s \leftarrow \textit{Random}(\mathsf{N})$ \;
644 $\textit{image} \leftarrow f(x) $\;
645 \If{$\textit{Random}(1) \neq 0$ and $x[s] \neq \textit{image}[s]$}{
646 $\textit{fair} \leftarrow \textit{fair} \cup \{s\}$\;
647 $x[s] \leftarrow \textit{image}[s]$\;
649 $\textit{nbit} \leftarrow \textit{nbit}+1$\;
651 \Return{$\textit{nbit}$}\;
653 \caption{Pseudo Code of stoping time calculus }
660 \includegraphics[width=0.49\textwidth]{images/complexityET}
661 \caption{Average Stopping Time Approximation}\label{fig:stopping:moy}
667 \section{Et les itérations généralisées?}\label{sec:prng:gray:general}
668 Le chaptire précédent a présenté un algorithme de
669 PRNG construit à partir d'itérations unaires.
670 On pourrait penser que cet algorithme est peu efficace puisqu'il
671 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à
672 chaque itération qu'un seul élément de $[n]$.
673 On pourrait penser à un algorithme basé sur les itérations généralisées,
674 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque
676 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
678 \begin{algorithm}[ht]
680 \KwIn{une fonction $f$, un nombre d'itérations $b$,
681 une configuration initiale $x^0$ ($n$ bits)}
682 \KwOut{une configuration $x$ ($n$ bits)}
687 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
688 $x\leftarrow{F_{f_g}(s,x)}$\;
692 \caption{PRNG basé sur les itérations généralisées.}
693 \label{CI Algorithm:prng:g}
696 Par rapport à l'algorithme~\ref{CI Algorithm} seule
697 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
698 Dans celle-ci la fonction $\textit{Set} : \{1,\ldots,2^n\} \rightarrow
699 \mathcal{P}(\{1,\ldots n\})$ retourne l'ensemble dont la fonction
700 caractéristique serait représentée par le nombre donné en argument.
701 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudraitt $\{3,2\}$.
702 On remarque aussi que l'argument de la fonction $\textit{Random}$
703 passe de $n$ à $2^n$.
705 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
708 \begin{theorem}\label{thm:prng:g}
709 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son
710 graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
711 correspondante à ce graphe
712 et $M$ une matrice $2^n\times 2^n$
714 $M = \dfrac{1}{2^n} \check{M}$.
715 Si $\textsc{gig}(f)$ est fortement connexe, alors
716 la sortie du générateur de nombres pseudo aléatoires détaillé par
717 l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui
718 tend vers la distribution uniforme si
719 et seulement si $M$ est une matrice doublement stochastique.
722 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
723 Elle n'est donc pas rappelée.
727 On reprend l'exemple donné à la section~\ref{sec:plc}.
728 Dans le $3$-cube, le cycle hamiltonien défini par la séquence
729 $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant
730 la fonction $f^*$ définie par
732 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
733 \overline{x_1}.\overline{x_3} + x_1x_2).
736 Le graphe $\textsc{gig}(f^*)$ est représenté à la
737 Figure~\ref{fig:iteration:f*}.
738 La matrice de Markov $M$ correspondante est donnée à
739 la figure~\ref{fig:markov:f*}.
743 \subfigure[Graphe $\textsc{gig}(f^*)$
744 \label{fig:iteration:f*}]{
745 \begin{minipage}{0.55\linewidth}
747 \includegraphics[width=\columnwidth]{images/iter_f}%
750 \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
751 \label{fig:markov:f*}]{%
752 \begin{minipage}{0.35\linewidth}
755 $ \dfrac{1}{4} \left(
756 \begin{array}{cccccccc}
757 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
759 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
761 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
763 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
765 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
767 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
769 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
771 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
773 \end{array} \right) $
778 \caption{Représentations de $f^*(x_1,x_2,x_3)=
779 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
780 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
790 \begin{tabular}{|c|c|l|c|c|}
792 $n$ & fonction & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$ & $b$ & $b'$ \\
794 4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8] & \textbf{17} & \textbf{38} \\
796 \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 \\
797 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4] & & \\
799 & $g^{*5}$ & [29, 22, 21, 30, 19, 27, 24, 28, 7, 20, 5, 4, 23, 26, 25, & 15 & \textbf{47} \\
800 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 1, 6, 11, 18, 0, 16
804 \multirow{8}{0.5cm}{6}& $f^{*6}$ &
805 [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}\\
806 & & 49, 39, 62, 47, 46, 11, 43, 57, 8, 37, 6, 36, 4, 51, 38, 1, & & \\
807 & & 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
808 & & 16, 24, 13, 12, 29, 44, 10, 14, 41, 0, 15, 2, 7, 5, 35, 3, 9, 32] & &\\
810 &$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}}\\
811 & & 49, 15, 14, 47, 46, 35, 58, 57, 56, 7, 54, 39, 37, 3, 38, 1, & & \\
812 & & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
813 & & 16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 5, 2, 4, 6, 11, 34, 9, 32] & & \\
815 \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}} \\
816 & & 98, 81, 120, 109, 78, 105, 110, 99, 107, 104, 108, 101, 118, & & \\
817 & & 117, 96, 103, 66, 113, 64, 79, 86, 95, 124, 83, 91, 121, 24, & & \\
818 & & 119, 22, 69, 20, 87, 18, 17, 112, 77, 76, 73, 12, 74, 106, 72, & & \\
819 & & 8, 7, 102, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59, & & \\
820 & & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42, & & \\
821 & & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92, & & \\
822 & & 26, 90, 89, 25, 19, 30, 23, 4, 27, 2, 16, 80, 31, 10, 15, 14, & & \\
823 & & 3, 11, 13, 9, 5, 70, 21, 68, 67, 6, 65, 1] & & \\
825 \multirow{20}{0.5cm}{8} & $f^{*8}$ &
826 [223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,&
827 \multirow{20}{0.5cm}{9}&
828 \multirow{20}{0.5cm}{71}\\
829 & & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168,& & \\
830 & & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216,& & \\
831 & & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209,& & \\
832 & & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132,& & \\
833 & & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,& & \\
834 & & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42,& & \\
835 & & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,& & \\
836 & & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153,& & \\
837 & & 145, 175, 206, 143, 12, 11, 142, 129, 128, 7, 198, 197, 4, 195,& & \\
838 & & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114,& & \\
839 & & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121,& & \\
840 & & 120, 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83,& & \\
841 & & 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72,& & \\
842 & & 107, 78, 105, 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45,& & \\
843 & & 188, 51, 186, 61, 40, 119, 182, 181, 53, 179, 54, 33, 49, 15,& & \\
844 & & 174, 47, 60, 171, 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0,& & \\
845 & & 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16,& & \\
846 & & 24, 13, 10, 29, 14, 3, 138, 41, 136, 39, 134, 133, 5, 131,& & \\
852 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
855 Le tableau~\ref{table:functions} reprend une synthèse de
856 fonctions qui ont été générées selon la méthode détaillée
857 à la section~\ref{sec:hamiltonian}.
858 Pour chaque nombre $n=3$, $4$, $5$ et $6$,
859 tous les cycles hamiltoniens non isomorphes ont été générés. Pour les
860 valeur de $n=7$ et $8$, seules $10^{5}$ cycles ont été évalués. Parmi
861 toutes les fonctions obtenues en enlevant du $n$-cube ces cycles, n'ont été
862 retenues que celles qui minimisaient le temps de mélange relatif à une valeur de
863 $\epsilon$ fixée à $10^{-8}$ et pour un mode donné.
864 Ce nombre d'itérations (\textit{i.e.}, ce temps de mélange)
865 est stocké dans la troisième
866 colonne sous la variable $b$.
867 La variable $b'$ reprend le temps de mélange pour
868 l'algorithme~\ref{CI Algorithm}.
869 On note que pour un nombre $n$ de bits fixé et un mode donné d'itérations,
870 il peut avoir plusieurs fonctions minimisant ce temps de mélange. De plus, comme ce temps
871 de mélange est construit à partir de la matrice de Markov et que celle-ci dépend
872 du mode, une fonction peut être optimale pour un mode et ne pas l'être pour l'autre
875 Un second résultat est que ce nouvel algorithme réduit grandement le nombre
876 d'itérations suffisant pour obtenir une faible déviation par rapport à une
877 distribution uniforme. On constate de plus que ce nombre décroit avec
878 le nombre d'éléments alors qu'il augmente dans l'approche initiale où
881 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre
882 de configurations qu'on ne peut pas atteindre en une itération est de:
884 \item $2^n-n$ en unaire. Ceci représente un rapport de
885 $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$
886 de toutes les configurations; plus $n$ est grand,
887 plus ce nombre est proche de $1$, et plus grand devient le nombre
888 d'itérations nécessaires pour atteinte une déviation faible;
889 \item $2^n-2^{n-1}$ dans le cas généralisé,
890 soit la moitié de toutes les configurations
891 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.
894 Cependant, dans le cas généralisé, chaque itération a une complexité
895 plus élevée puisqu'il est nécessaire d'invoquer un générateur
896 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit
897 que celui-ci soit dans $[n]$ dans le cas unaire.
898 Pour comparer les deux approches,
899 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).
901 Dans le cas généralisé, si l'on effectue $b$ itérations,
902 à chacune d'elles, la stratégie génère un nombre entre
903 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
904 On fait donc au total $b*n$ appels pour $n$ bits et
905 donc $b$ appels pour 1 bit généré en moyenne.
906 Dans le cas unaire, si l'on effectue $b'$ itérations,
907 à chacune d'elle, la stratégie génère un nombre entre
909 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne.
910 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
911 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
912 Le tableau~\ref{table:marchevssaute} donne des instances de
913 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions
914 données au tableau~\ref{table:functions}.
915 On constate que le nombre d'appels par bit généré décroit avec $n$ dans le
916 cas des itérations généralisées et est toujours plus faible
917 que celui des itérations unaires.
923 \begin{array}{|l|l|l|l|l|l|}
925 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\
927 \textrm{Unaires} & 19.0 & 22.3 & 23.7 & 25.3 & 27.0\\
929 \textrm{Généralisées} & 17 & 13 & 11 & 10 & 9\\
933 \caption{Nombre moyen
934 d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
940 \section{Tests statistiques}\label{sec:prng;gray:tests}
942 La qualité des séquences aléatoires produites par
943 le générateur des itérations unaires ainsi que
944 celles issues des itérations généralisées a été évaluée à travers la suite
945 de tests statistiques développée par le
946 \emph{National Institute of Standards and Technology} (NIST).
947 En interne, c'est l'implantation de l'algorithme de Mersenne Twister qui
948 permet de générer la stratégie aléatoire.
953 Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
955 qui est plus grande que $1\%$ signifie
956 que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
959 Les tableau~\ref{fig:TEST:generalise} donnent
960 une vision synthétique de ces expérimentations.
961 Nous avons évalué les fonctions préfixées par
962 $f$ (respecitvement $g$) avec les générateurs issus des itérations
963 généralisées (resp. unaires).
964 Quelle que soit la méthode utilisée, on constate que chacun des
966 avec succes le test de NIST.
968 Interpréter ces resultats en concluant que ces générateurs sont
969 tous équivalents serait erroné: la meilleur des
970 méthodes basées sur le mode des itérations
971 généralisées (pour $n=8$ par exemple)
972 est au moins deux fois plus rapide que la meilleur de celles qui
973 sont basées sur les itérations unaires.
978 %%%%%%%%% Relancer pour n=6, n=7, n=8
979 %%%%%%%%% Recalculer le MT
980 %%%%%%%%% Regenerer les 10^6 bits
981 %%%%%%%%% Evaluer sur NIST
988 \begin{tabular}{|l|r|r|r|r|}
990 Test & $f^{*5}$ &$f^{*6}$ &$f^{*7}$ &$f^{*8}$ \\ \hline
991 Fréquence (Monobit)& 0.401 (0.97)& 0.924 (1.0)& 0.779 (0.98)& 0.883 (0.99)\\ \hline
992 Fréquence ds un bloc& 0.574 (0.98)& 0.062 (1.0)& 0.978 (0.98)& 0.964 (0.98)\\ \hline
993 Somme Cumulé*& 0.598 (0.975)& 0.812 (1.0)& 0.576 (0.99)& 0.637 (0.99)\\ \hline
994 Exécution& 0.998 (0.99)& 0.213 (0.98)& 0.816 (0.98)& 0.494 (1.0)\\ \hline
995 Longue exécution dans un bloc& 0.085 (0.99)& 0.971 (0.99)& 0.474 (1.0)& 0.574 (0.99)\\ \hline
996 Rang& 0.994 (0.96)& 0.779 (1.0)& 0.191 (0.99)& 0.883 (0.99)\\ \hline
997 Fourier rapide& 0.798 (1.0)& 0.595 (0.99)& 0.739 (0.99)& 0.595 (1.0)\\ \hline
998 Patron sans superposition*& 0.521 (0.987)& 0.494 (0.989)& 0.530 (0.990)& 0.520 (0.989)\\ \hline
999 Patron avec superposition& 0.066 (0.99)& 0.040 (0.99)& 0.304 (1.0)& 0.249 (0.98)\\ \hline
1000 Statistiques universelles& 0.851 (0.99)& 0.911 (0.99)& 0.924 (0.96)& 0.066 (1.0)\\ \hline
1001 Entropie approchée (m=10)& 0.637 (0.99)& 0.102 (0.99)& 0.115 (0.99)& 0.350 (0.98)\\ \hline
1002 Suite aléatoire *& 0.573 (0.981)& 0.144 (0.989)& 0.422 (1.0)& 0.314 (0.984)\\ \hline
1003 Suite aléatoire variante *& 0.359 (0.968)& 0.401 (0.982)& 0.378 (0.989)& 0.329 (0.985)\\ \hline
1004 Série* (m=10)& 0.469 (0.98)& 0.475 (0.995)& 0.473 (0.985)& 0.651 (0.995)\\ \hline
1005 Complexité linaire& 0.129 (1.0)& 0.494 (1.0)& 0.062 (1.0)& 0.739 (1.0)\\ \hline
1011 \caption{Test de NIST pour les fonctions
1012 du tableau~\ref{table:functions} selon les itérations généralisées}\label{fig:TEST:generalise}
1019 \begin{tabular}{|l|r|r|r|r|}
1021 Test & $g^{*5}$& $g^{*6}$& $f^{*7}$& $f^{*8}$\\ \hline
1022 Fréquence (Monobit)& 0.236 (1.0)& 0.867 (0.99)& 0.437 (0.99)& 0.911 (1.0)\\ \hline
1023 Fréquence ds un bloc& 0.129 (0.98)& 0.350 (0.99)& 0.366 (0.96)& 0.657 (1.0)\\ \hline
1024 Somme Cumulé*& 0.903 (0.995)& 0.931 (0.985)& 0.863 (0.995)& 0.851 (0.995)\\ \hline
1025 Exécution& 0.699 (0.98)& 0.595 (0.99)& 0.181 (1.0)& 0.437 (0.99)\\ \hline
1026 Longue exécution dans un bloc& 0.009 (0.99)& 0.474 (0.97)& 0.816 (1.0)& 0.051 (1.0)\\ \hline
1027 Rang& 0.946 (0.96)& 0.637 (0.98)& 0.494 (1.0)& 0.946 (1.0)\\ \hline
1028 Fourier rapide& 0.383 (0.99)& 0.437 (1.0)& 0.616 (0.98)& 0.924 (0.99)\\ \hline
1029 Patron sans superposition*& 0.466 (0.990)& 0.540 (0.989)& 0.505 (0.990)& 0.529 (0.991)\\ \hline
1030 Patron avec superposition& 0.202 (0.96)& 0.129 (0.98)& 0.851 (0.99)& 0.319 (0.98)\\ \hline
1031 Statistiques universelles& 0.319 (0.97)& 0.534 (0.99)& 0.759 (1.0)& 0.657 (0.99)\\ \hline
1032 Entropie approchée (m=10)& 0.075 (0.97)& 0.181 (0.99)& 0.213 (0.98)& 0.366 (0.98)\\ \hline
1033 Suite aléatoire *& 0.357 (0.986)& 0.569 (0.991)& 0.539 (0.987)& 0.435 (0.992)\\ \hline
1034 Suite aléatoire variante *& 0.398 (0.989)& 0.507 (0.986)& 0.668 (0.991)& 0.514 (0.994)\\ \hline
1035 Série* (m=10)& 0.859 (0.995)& 0.768 (0.99)& 0.427 (0.995)& 0.637 (0.98)\\ \hline
1036 Complexité linaire& 0.897 (0.99)& 0.366 (0.98)& 0.153 (1.0)& 0.437 (1.0)\\ \hline
1042 \caption{Test de NIST pour les fonctions
1043 du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
1051 \begin{tabular}{|l|r|r|r|r|}
1053 Test & 5 bits& 6 bits & 7 bits & 8bits \\ \hline
1054 Fréquence (Monobit)& 0.289 (1.0)& 0.437 (1.0)& 0.678 (1.0)& 0.153 (0.99)\\ \hline
1055 Fréquence ds un bloc& 0.419 (1.0)& 0.971 (0.98)& 0.419 (0.99)& 0.275 (1.0)\\ \hline
1056 Somme Cumulé*& 0.607 (0.99)& 0.224 (0.995)& 0.645 (0.995)& 0.901 (0.99)\\ \hline
1057 Exécution& 0.129 (0.99)& 0.005 (0.99)& 0.935 (0.98)& 0.699 (0.98)\\ \hline
1058 Longue exécution dans un bloc& 0.514 (1.0)& 0.739 (0.99)& 0.994 (1.0)& 0.834 (0.99)\\ \hline
1059 Rang& 0.455 (0.97)& 0.851 (0.99)& 0.554 (1.0)& 0.964 (0.99)\\ \hline
1060 Fourier rapide& 0.096 (0.98)& 0.955 (0.99)& 0.851 (0.97)& 0.037 (1.0)\\ \hline
1061 Patron sans superposition*& 0.534 (0.990)& 0.524 (0.990)& 0.508 (0.987)& 0.515 (0.99)\\ \hline
1062 Patron avec superposition& 0.699 (0.99)& 0.616 (0.95)& 0.071 (1.0)& 0.058 (1.0)\\ \hline
1063 Statistiques universelles& 0.062 (0.99)& 0.071 (1.0)& 0.637 (1.0)& 0.494 (0.98)\\ \hline
1064 Entropie approchée (m=10)& 0.897 (0.99)& 0.383 (0.99)& 0.366 (1.0)& 0.911 (0.99)\\ \hline
1065 Suite aléatoire *& 0.365 (0.983)& 0.442 (0.994)& 0.579 (0.992)& 0.296 (0.993)\\ \hline
1066 Suite aléatoire variante *& 0.471 (0.978)& 0.559 (0.992)& 0.519 (0.987)& 0.340 (0.995)\\ \hline
1067 Série* (m=10)& 0.447 (0.985)& 0.298 (0.995)& 0.648 (1.0)& 0.352 (0.995)\\ \hline
1068 Complexité linaire& 0.005 (0.98)& 0.534 (0.99)& 0.085 (0.97)& 0.996 (1.0)\\ \hline
1084 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}
1088 \section{Conclusion}
1089 Ce chaptitre a montré comment construire un PRNG chaotique, notamment à partir
1090 de codes de Gray équilibrés. Une méthode completement automatique de
1091 construction de ce type de codes a été présentée étendant les méthodes
1093 Dans le cas des itérations unaires,
1094 l'algorithme qui en découle a un temps de mélange qui a
1095 une borne sup quadratique de convergence vers la distribution uniforme.
1096 Pratiquement, ce temps de mélange se rapproche de $N\ln N$.
1097 Les expérimentations au travers de la batterie de test de NIST ont montré
1098 que toutes les propriétés statistiques sont obtenues pour
1099 $\mathsf{N} = 4, 5, 6, 7, 8$.