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 une
5 méthode permettant de générer de telles matrices.
7 Les approches théoriques basées sur la programmation logique par contraintes sur
8 domaines finis ne sont pas envisageables en pratique dès que la taille des
9 matrices considérées devient suffisamment grande.
11 Une approche plus pragmatique consiste à supprimer un cycle hamiltonien dans le
12 graphe d'itérations, ce qui revient à supprimer en chaque n{\oe}ud de ce graphe une
13 arête sortante et une arête entrante.
16 % This aim of this section is to show
17 % that finding DSSC matrices from a hypercube
18 % is a typical finite domain satisfaction
19 % problem, classically denoted as
20 % Constraint Logic Programming on Finite Domains (CLPFD).
21 % This part is addressed in the first section. Next, we analyse the first
22 % results to provide a generation of DSSC matrices with small mixing times.
24 \section{Programmation logique par contraintes sur des domaines finis}\label{sec:plc}
25 Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments.
26 Pour éviter d'avoir à gérer des fractions, on peut considérer que
27 les matrices (d'incidence) à générer ont des lignes et des colonnes dont les
28 sommes valent ${\mathsf{N}}$ à chaque fois.
29 On cherche ainsi toutes les matrices $M$ de taille $2^{\mathsf{N}}\times 2^{\mathsf{N}}$ telles que
32 \item $M_{ij}$ vaut 0 si $j$ n'est pas un voisin de $i$, \textit{i.e.},
33 il n'y a pas d'arc de $i$ à $j$ dans le graphe $\textsc{giu}(f)$;
35 \item $0 \le M_{ii} \le {\mathsf{N}}$: le nombre de boucles autour de chaque
36 configuration $i$ est inférieur à ${\mathsf{N}}$;
38 \item pour $j \neq i$, $0 \le M_{ij} \le 1$: on construit l'arc de $i$ à $j$
39 si et seulement si $M_{ij}$ vaut 1 (et 0 sinon)
40 \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}$:
41 la matrice est stochastique à droite;
42 \item pour chaque indice de colonne $j$,
43 $1 \le j\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le i\le 2^{\mathsf{N}}} M_{ij}$:
44 la matrice est stochastique à gauche;
45 \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;
47 Ce problème s'exprime sur des domaines finis entiers avec des opérateurs
48 arithmétiques simples (sommes et produits). il pourrait théoriquement être
49 traité par des démarches de programmation logique par contrainte
50 sur des domaines finis (comme en PROLOG).
51 L'algorithme donné en Figure~\ref{fig:prolog}
52 est en effet le c{\oe}ur du programme PROLOG
53 qui pourrait être utilisé pour instancier toutes les solutions,
54 ici pour $\mathsf{N} = 2$. Dans ce code,
55 \verb+mmult(+$X,Y,R$\verb+)+ et
56 \verb+summ(+$X,Y,R$\verb+)+
57 valent True si et seulement si $R$
58 est le produit matriciel (ou la somme matricielle)
59 entre $X$ and $Y$ respectivement.
60 il n'est pas difficile d'adapter ce code à n'importe quelle valeur
61 entière naturelle $\mathsf{N}$.
65 \lstset{language=prolog}
68 M=[[M0_0, M0_1, 0, M0_3], [M1_0, M1_1, 0, M1_3],
69 [M2_0, 0, M2_2, M2_3], [0, M3_1, M3_2, M3_3]],
70 [M0_0, M1_1, M2_2, M3_3] ins 0..2,
71 [M0_1, M0_3, M1_0, M1_3, M2_0, M2_3, M3_1, M3_2]
73 M0_0+ M0_1+ M0_2 #=2, M1_0+ M1_1+ M1_3 #=2,
74 M2_0+ M2_2+ M2_3 #=2, M3_1+ M3_2+ M3_3 #=2,
75 M0_0+ M1_0+ M2_0 #=2, M0_1+ M1_1+ M3_1 #=2,
76 M0_2+ M2_2+ M3_2 #=2, M1_3+ M2_3+ M3_3 #=2,
86 \caption{Code PROLOG permettant de trouver toutes les matrices DSSC pour $n=2$}\label{fig:prolog}
89 Enfin, on définit la relation $\mathcal{R}$, qui est établie pour les deux
90 fonctions $f$ et $g$ si leur graphes
91 respectifs $\textsf{giu}(f)$ et $\textsf{giu}(g)$
93 C'est évidemment une relation d'équivalence.
97 %\subsection{Analyse de l'approche}\label{sub:prng:ana}
98 Exécutée sur un ordinateur personnelle, PROLOG trouve
99 en moins d'une seconde les
100 49 solutions pour $n=2$,
101 dont 2 seulement ne sont pas équivalentes,
102 en moins d'une minute les 27642 solutions dont seulement 111 ne
103 sont pas équivalentes pour $n=3$.
104 Cependant, l'approche ne permet pas d'engendrer toutes les solutions
106 Cette approche, basée sur une démarche de type \emph{générer, tester} ne peut
107 pas être retenue pour $n$ de grande taille, même
108 en s'appuyant sur l'efficience de l'algorithme de backtrack natif de PROLOG.
110 Cependant, pour des valeurs de $n$ petites, nous avons
111 comparé les fonctions non équivalentes selon leur proportion
112 à engendrer des temps de mélange petits (cf. équation~\ref{eq:mt:ex}).
117 \begin{xpl}\label{xpl:mixing:3}
118 Le tableau~\ref{table:mixing:3} fournit les 5 fonctions booléennes
119 qui ont les temps de mélange les plus petits pour $\varepsilon=10^{-5}$.
123 \begin{array}{|l|l|l|}
125 \textrm{Name} & \textrm{Image} & \textrm{MT}\\
127 f^a & (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3}) & 16 \\
129 f^* & (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
130 \overline{x_1}.\overline{x_3} + x_1x_2) & 17 \\
132 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}, & \\
133 & \qquad \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 26 \\
135 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}, & \\
136 & \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 29 \\
138 f^d & (x_1\oplus x_2,x_3(\overline{x_1}+\overline{x_2}),\overline{x_3}) & 30 \\
140 % [3, 4, 7, 0, 1, 6, 5, 2], #16
141 % [3, 4, 7, 0, 2, 6, 5, 1], #17
142 % [3, 6, 7, 5, 2, 0, 1, 4], #26
143 % [3, 4, 7, 5, 2, 6, 1, 0], #29
144 % [3, 2, 5, 6, 7, 0, 1, 4]] #30
148 \caption{Les 5 fonctions booléennes $n=3$ aux temps de mélange les plus faibles.}\label{table:mixing:3}
152 Une analyse syntaxique de ces fonctions ne permet pas, à priori,
153 de déduire des règles permettant de construire de nouvelles
154 fonction dont le temps de mélange serait faible.
155 Cependant, le graphe $\textsc{giu}(f^*)$
156 (donné à la Figure~\ref{fig:iteration:f*})
157 est le $3$-cube dans lequel le cycle
158 $000,100,101,001,011,111,110,010,000$
159 a été enlevé. Dans cette figure, le le graphe $\textsc{giu}(f)$ est
160 en continu tandis que le cycle est en pointillés.
161 Ce cycle qui visite chaque n{\oe}ud exactement une fois est un
162 \emph{cycle hamiltonien}.
163 La matrice de Markov correspondante est donnée à
164 la figure~\ref{fig:markov:f*}.
165 On s'intéresse par la suite à la génération de ce genre de cycles.
173 \subfigure[Graphe $\textsc{giu}(f^*)$.
174 \label{fig:iteration:f*}]{
175 \begin{minipage}{0.55\linewidth}
177 \includegraphics[width=\columnwidth]{images/iter_f0d}%
180 \subfigure[Matrice de Markov associée à $\textsc{giu}(f^*)$
181 \label{fig:markov:f*}]{%
182 \begin{minipage}{0.35\linewidth}
187 M=\dfrac{1}{3} \left(
188 \begin{array}{llllllll}
203 % $ \dfrac{1}{4} \left(
204 % \begin{array}{cccccccc}
205 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
207 % 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
209 % 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
211 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
213 % 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
215 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
217 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
219 % 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
221 % \end{array} \right) $
229 \caption{Représentations de $f^*(x_1,x_2,x_3)=
230 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
231 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
241 % fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
248 \section{Suppression des cycles hamiltoniens}
249 \label{sec:hamiltonian}
251 Dans un premier temps, nous montrons %en section~\ref{sub:removing:theory}
253 suppression d'un cycle hamiltonien produit bien des matrices doublement
254 stochastiques. Nous établissons ensuite le lien avec les codes de Gray
257 %\subsubsection{Aspects théoriques}
258 %\label{sub:removing:theory}
260 Nous donnons deux résultats complémentaires, reliant la suppression d'un cycle
261 hamiltonien du $n$-cube, les matrices doublement stochastiques et la forte
262 connexité du graphe d'itérations.
264 \begin{theorem}\label{th:supprCH}
265 La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
266 $n$-cube, produit une matrice doublement stochastique.
270 Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
271 Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
272 une arête entrante $(o,v)$ et une arête sortante $(v,e)$
274 Considérons un autre $n$-cube $C_2$ auquel on ajoute les arêtes
275 pour le rendre complet. La matrice de Markov $M$ correspondante est
276 remplie de $\frac{1}{2^n}$ et est doublement stochastique.
277 Comme on enlève exactement une arête sortante $(v,e)$
278 à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans
279 $C_2$ les $2^{n-1}$ arêtes issues de $v$ et
280 relatives aux parties de $\{1,\ldots,n\}$ qui
281 contiennent $e$. Cela revient à annuler
282 dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter
283 $1/2$ à l'élément $M_{vv}$.
284 La matrice $M$ reste stochastique.
285 On effectue un raisonnement similaire pour les arêtes entrantes:
286 comme on enlève exactement une arête entrante $(o,v)$ pour chaque
287 n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement
288 $2^{n-1}$ arêtes menant à $v$ qui sont enlevées.
289 Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et
290 $M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
291 $M$ est donc doublement stochastique.
296 \begin{theorem}\label{th:grapheFC}
297 Le graphe d'itérations issu du $n$-cube, auquel un cycle hamiltonien est
298 enlevé, est fortement connexe.
303 On considère les deux $n$-cubes $C_1$ et $C_2$ définis
304 dans la preuve du théorème~\ref{th:supprCH}.
305 Dans $C_1$ on considère le cycle inverse $r$ du cycle
307 Aucun arc n'appartient à la fois à $r$ et à $c$:
308 en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
309 Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
310 Le cycle $r$ est évidement un cycle hamiltonien et contient tous les n{\oe}uds.
311 Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles
312 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{giu}$ qui
313 étend le précédent graphe est ainsi fortement connexe.
319 %Les preuves, relativement directes, sont laissées en exercices au lecteur.
320 La génération de cycles hamiltoniens dans le
321 $n$-cube, ce qui revient à trouver des \emph{codes de Gray cycliques}. On
322 rappelle que les codes de Gray sont des séquences de mots binaires de taille
323 fixe ($n$), dont les éléments successifs ne différent que par un seul bit. Un
324 code de Gray est \emph{cyclique} si le premier élément et le dernier ne
325 différent que par un seul bit.
327 \section{Lien avec les codes de Gray cycliques (totalement) équilibrés}
330 La borne inférieure du nombre de codes de Gray ($\left(\frac{n*\log2}{e \log
331 \log n}\times(1 - o(1))\right)^{2^n}$), donnée dans~\cite{Feder2009NTB},
332 indique une explosion combinatoire pour notre recherche. Afin de contourner
333 cette difficulté, nous nous restreignons aux codes induisant un graphe
334 d'itérations $\textsf{giu}(f)$ \emph{uniforme}. Cette uniformité se traduit par des
335 nombres d'arcs équilibrés entre les \emph{dimensions} du graphe, la dimension
336 $i$ correspondant aux seules variations du bit $i$ (parmi les $n$ bits au
337 total). Cette approche revient à chercher des codes de Gray cycliques
340 Un code de Gray équilibré peut être défini de la façon suivante :
342 \begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
343 Soit $L = w_1, w_2, \dots, w_{2^n}$ la séquence d'un code de Gray cyclique à
344 $n$ bits. Soit $S = s_1, s_2, \dots, s_{2^n}$ la séquence des transitions où
345 $s_i$, $1 \le i \le 2^n$ est l'indice du seul bit qui varie entre les mots
346 $w_i$ et $w_{i+1}$. Enfin, soit $\textit{NT}_n : \{1,\dots, n\} \rightarrow
347 \{0, \ldots, 2^n\}$ la fonction qui au paramètre $i$ associe le \emph{nombre
348 de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
349 le nombre d'occurrences de $i$ dans $S$.
351 Le code $L$ est \textbf{équilibré} si $\forall
352 i,j\in\{1,...,n\},~|\textit{NT}_n(i) - \textit{NT}_n(j)| \le 2$. Il est
353 \textbf{totalement équilibré} si $\forall
354 i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
357 On peut donc déjà déduire qu'il ne peut exister des codes de Gray totalement
358 équilibrés que pour les systèmes ayant un nombre d'éléments $n=2^k, k>0$. De
359 plus, comme dans tout code de Gray cyclique, $\textit{NT}_n(i)$ est pair
360 $\forall i\in\{1,...,n\}$, alors les systèmes ayant un nombre d'éléments
361 différent de $2^k$, ne peuvent avoir que des codes de Gray équilibrés avec
362 $\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$ ou
363 $\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil, \forall i\in\{1,...,n\}$ et
364 vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
367 Soit $L^*=000,100,101,001,011,111,110,010$ le code de Gray correspondant au
368 cycle hamiltonien enlevé de $f^*$. Sa séquence des transitions est \linebreak
369 $S=3,1,3,2,3,1,3,2$ et les nombres de transitions sont $\textit{TC}_3(1)=
370 \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
372 Si l'on considère maintenant $L^4=$ 0000, 0010, 0110, 1110, 1111, 0111, 0011,
373 0001, 0101, 0100, 1100, 1101, 1001, 1011, 1010, 1000, un code de Gray
374 cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4,
375 on constate que $\forall
376 i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que
377 ce code est totalement équilibré.
380 \section{Génération de codes de Gray équilibrés par induction}
381 \label{sec:induction}
383 De nombreuses approches ont été developpées pour résoudre le problème de construire
384 un code de Gray dans un $\mathsf{N}$-cube~\cite{Robinson:1981:CS,DBLP:journals/combinatorics/BhatS96,ZanSup04},
385 selon les propriétés que doit vérifier ce code.
387 Dans les travaux~\cite{Robinson:1981:CS}, les auteurs
388 proposent une approche inductive de construction de code de Gray équilibrés
389 (on passe du $\mathsf{N}-2$ à $\mathsf{N}$)
390 pour peu que l'utilisateur fournisse une sous-séquence possédant certaines
391 propriétés à chaque pas inductif.
392 Ce travail a été renforcé dans ~\cite{DBLP:journals/combinatorics/BhatS96}
393 où les auteurs donnent une manière explicite de construire une telle sous-séquence.
394 Enfin, les autheurs de~\cite{ZanSup04} présentent une extension de l'algorithme de
395 \emph{Robinson-Cohn}. La présentation rigoureuse de cette extension leur permet
396 principalement de prouver que si $\mathsf{N}$ est une puissance de 2,
397 le code de Gray équilibré engendré par l'extension est toujours totalement équilibré et
398 que $S_{\mathsf{N}}$ est la séquence de transition d'un code de Gray de $\mathsf{N}$ bits
399 si $S_{\mathsf{N}-2}$ l'est aussi..
400 Cependant les auteurs ne prouvent pas que leur approche fournit systématiquement
401 un code de Gray (totalement) équilibré.
402 Cette section montre que ceci est vrai en rappelant tout d'abord
403 l'extension de l'algorithme de \emph{Robinson-Cohn} pour un
404 code de Gray avec $\mathsf{N}-2$ bits.
407 \item \label{item:nondet}Soit $l$ un entier positif pair. Trouver des sous-sequences
408 $u_1, u_2, \dots , u_{l-2}, v$ (possiblement vides) de $S_{\mathsf{N}-2}$
409 telles que $S_{\mathsf{N}-2}$ est la concaténation de
411 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
413 où $i_1 = 1$, $i_2 = 2$, et $u_0 = \emptyset$ (la séquence vide).
414 \item\label{item:u'} Remplacer dans $S_{\mathsf{N}-2}$ les sequences $u_0, u_1, u_2, \ldots, u_{l-2}$
416 $\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)$
417 respectivement, où $u'(u,x,y)$ est la séquence $u,x,u^R,y,u$ telle que
418 $u^R$ est $u$, mais dans l'ordre inverse. La séquence obtenue est ensuite notée $U$.
419 \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
420 deux premiers éléments qui ont été intervertis.
421 \item La séquence de transition $S_{\mathsf{N}}$ est la concatenation $U^R, V, W'$.
424 L'étape~(\ref{item:nondet}) n'est pas constructive: il n'est pas précisé
425 comment sélectionner des sous-séquences qui assurent que le code obtenu est équilibré.
426 La théoreme suivante montre que c'est possible et sa preuve explique comment le faire.
429 \begin{theorem}\label{prop:balanced}
430 Soit $\mathsf{N}$ dans $\Nats^*$, et $a_{\mathsf{N}}$ défini par
431 $a_{\mathsf{N}}= 2 \left\lfloor \dfrac{2^{\mathsf{N}}}{2\mathsf{N}} \right\rfloor$.
432 il existe une séquence $l$ dans l'étape~(\ref{item:nondet}) de l'extension
433 de l'algorithme de \emph{Robinson-Cohn} extension telle que
434 le nombres de transitions $\textit{TC}_{\mathsf{N}}(i)$
435 sont tous $a_{\mathsf{N}}$ ou $a_{\mathsf{N}}+2$
436 pour chaque $i$, $1 \le i \le \mathsf{N}$.
439 La preuve de ce théorème est donnée en annexes~\ref{anx:generateur}.
441 Ces fonctions étant générées, on s'intéresse à étudier à quelle vitesse
442 un générateur les embarquant converge vers la distribution uniforme.
443 C'est l'objectif de la section suivante.
445 \section{Quantifier l'écart par rapport à la distribution uniforme}
446 On considère ici une fonction construite comme à la section précédente.
447 On s'intéresse ici à étudier de manière théorique les
448 itérations définies à l'équation~(\ref{eq:asyn}) pour une
450 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un
451 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la
453 On remarque que ce graphe d'itération est toujours un sous graphe
454 du ${\mathsf{N}}$-cube augmenté des
455 boucles sur chaque sommet, \textit{i.e.}, les arcs
456 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$.
457 Ainsi, le travail ci dessous répond à la question de
458 définir la longueur du chemin minimum dans ce graphe pour
459 obtenir une distribution uniforme.
460 Ceci se base sur la théorie des chaînes de Markov.
462 générale à ce sujet on pourra se référer
463 au livre~\cite{LevinPeresWilmer2006},
464 particulièrement au chapitre sur les temps d'arrêt.
470 On considère par exemple le graphe $\textsc{giu}(f)$ donné à la
471 \textsc{Figure~\ref{fig:iteration:f*}.} et la fonction de
472 probabilités $p$ définie sur l'ensemble des arcs comme suit:
476 = \frac{2}{3} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
477 = \frac{1}{6} \textrm{ sinon.}
481 La matrice $P$ de la chaîne de Markov associée à $f^*$
484 P=\dfrac{1}{6} \left(
485 \begin{array}{llllllll}
502 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur
503 $\Bool^{\mathsf{N}}$.
504 La distance de \og totale variation\fg{} entre $\pi$ et $\mu$
505 est notée $\tv{\pi-\mu}$ et est définie par
506 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$
508 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
510 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a
511 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
513 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$.
514 $P(X,\cdot)$ est la distribution induite par la $X^{\textrm{ème}}$ colonne
516 Si la chaîne de Markov induite par
517 $P$ a une distribution stationnaire $\pi$, on définit alors
518 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
522 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
524 Un résultat classique est
526 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
531 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de variables aléatoires de
532 $\Bool^{\mathsf{N}}$.
533 une variable aléatoire $\tau$ dans $\mathbb{N}$ est un
534 \emph{temps d'arrêt} pour la suite
535 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
536 (\Bool^{\mathsf{N}})^{t+1}$ tel que
537 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$.
538 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs
540 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$.
543 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et
544 $f(X_{t-1},Z_t)$ une représentation fonctionnelle de celle-ci.
545 Un \emph{temps d'arrêt aléatoire} pour la chaîne de
546 Markov est un temps d'arrêt pour
547 $(Z_t)_{t\in\mathbb{N}}$.
548 Si la chaîne de Markov est irréductible et a $\pi$
549 comme distribution stationnaire, alors un
550 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
551 (qui peut dépendre de la configuration initiale $X$),
552 tel que la distribution de $X_\tau$ est $\pi$:
553 $$\P_X(X_\tau=Y)=\pi(Y).$$
556 Un temps d'arrêt $\tau$ est qualifié de \emph{fort} si $X_{\tau}$
557 est indépendant de $\tau$. On a les deux théorèmes suivants, dont les
558 démonstrations sont données en annexes~\ref{anx:generateur}.
562 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
567 Soit alors $\ov{h} : \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ la fonction
568 telle que pour $X \in \Bool^{\mathsf{N}} $,
569 $(X,\ov{h}(X)) \in E$ et $X\oplus\ov{h}(X)=0^{{\mathsf{N}}-h(X)}10^{h(X)-1}$.
570 La fonction $\ov{h}$ est dite {\it anti-involutive} si pour tout $X\in \Bool^{\mathsf{N}}$,
571 $\ov{h}(\ov{h}(X))\neq X$.
574 \begin{theorem} \label{prop:stop}
575 Si $\ov{h}$ is bijective et anti involutive
576 $\ov{h}(\ov{h}(X))\neq X$, alors
577 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$.
580 Les détails de la preuve sont donnés en annexes~\ref{anx:generateur}.
581 On remarque tout d'abord que la chaîne de Markov proposée ne suit pas exactement
582 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente,
583 la probabilité de rester dans une configuration donnée
584 est fixée à $frac{1}{2}+\frac{1}{2n}$.
585 Dans l'algorithme initial, celle-ci est de ${1}{n}$.
586 Cette version, qui reste davantage sur place que l'algorithme original,
587 a été introduite pour simplifier le calcul de la borne sup
591 Sans entrer dans les détails de la preuve, on remarque aussi
592 que le calcul de cette borne impose uniquement que
593 pour chaque n{\oe}ud du $\mathsf{N}$-cube
594 un arc entrant et un arc sortant sont supprimés.
595 Le fait qu'on enlève un cycle hamiltonien et que ce dernier
596 soit équilibré n'est pas pris en compte.
597 En intégrant cette contrainte, la borne supérieure pourrait être réduite.
599 En effet, le temps de mixage est en $\Theta(N\ln N)$ lors d'une
600 marche aléatoire classique paresseuse dans le $\mathsf{N}$-cube.
601 On peut ainsi conjecturer que cet ordre de grandeur reste le même
602 dans le contexte du $\mathsf{N}$-cube privé d'un chemin hamiltonien.
604 On peut évaluer ceci pratiquement: pour une fonction
605 $f: \Bool^{\mathsf{N}} \rightarrow \Bool^{\mathsf{N}}$ et une graine initiale
606 $x^0$, le code donné à l'algorithme algorithm~\ref{algo:stop} retourne le
607 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]$
608 en l'instanciant un grand nombre de fois: pour chaque nombre $\mathsf{N}$,
609 $ 3 \le \mathsf{N} \le 16$, 10 fonctionss ont été générées comme dans
610 ce chapitre. Pour chacune d'elle, le calcul d'une approximation de $E[\ts]$
611 est exécuté 10000 fois avec une graine aléatoire.La Figure~\ref{fig:stopping:moy}
612 résume ces resultats. Dans celle-ci, un cercle représente une approximation de
613 $E[\ts]$ pour un $\mathsf{N}$ donné tandis que la courbe est une représentation de
614 la fonction $x \mapsto 2x\ln(2x+8)$.
615 On cosntate que l'approximation de $E[\ts]$ est largement inférieure
616 à la borne quadratique donnée au thérème~\ref{prop:stop} et que la conjecture
617 donnée au paragraphe précédent est sensée.
620 \begin{algorithm}[ht]
622 \KwIn{a function $f$, an initial configuration $x^0$ ($\mathsf{N}$ bits)}
623 \KwOut{a number of iterations $\textit{nbit}$}
625 $\textit{nbit} \leftarrow 0$\;
627 $\textit{fair}\leftarrow\emptyset$\;
628 \While{$\left\vert{\textit{fair}}\right\vert < \mathsf{N} $}
630 $ s \leftarrow \textit{Random}(\mathsf{N})$ \;
631 $\textit{image} \leftarrow f(x) $\;
632 \If{$\textit{Random}(1) \neq 0$ and $x[s] \neq \textit{image}[s]$}{
633 $\textit{fair} \leftarrow \textit{fair} \cup \{s\}$\;
634 $x[s] \leftarrow \textit{image}[s]$\;
636 $\textit{nbit} \leftarrow \textit{nbit}+1$\;
638 \Return{$\textit{nbit}$}\;
640 \caption{Pseudo Code of stoping time calculus }
647 \includegraphics[width=0.49\textwidth]{images/complexityET}
648 \caption{Average Stopping Time Approximation}\label{fig:stopping:moy}
654 \section{Et les itérations généralisées?}
655 Le chaptire précédent a présenté un algorithme de
656 PRNG construit à partir d'itérations unaires.
657 On pourrait penser que cet algorithme est peu efficace puisqu'il
658 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à
659 chaque itération qu'un seul élément de $[n]$.
660 On pourrait penser à un algorithme basé sur les itérations généralisées,
661 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque
663 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
665 \begin{algorithm}[ht]
667 \KwIn{une fonction $f$, un nombre d'itérations $b$,
668 une configuration initiale $x^0$ ($n$ bits)}
669 \KwOut{une configuration $x$ ($n$ bits)}
674 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
675 $x\leftarrow{F_{f_g}(s,x)}$\;
679 \caption{PRNG basé sur les itérations généralisées.}
680 \label{CI Algorithm:prng:g}
683 Par rapport à l'algorithme~\ref{CI Algorithm} seule
684 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
685 Dans celle-ci la fonction $\textit{Set} : \{1,\ldots,2^n\} \rightarrow
686 \mathcal{P}(\{1,\ldots n\})$ retourne l'ensemble dont la fonction
687 caractéristique serait représentée par le nombre donné en argument.
688 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudraitt $\{3,2\}$.
689 On remarque aussi que l'argument de la fonction $\textit{Random}$
690 passe de $n$ à $2^n$.
692 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
695 \begin{theorem}\label{thm:prng:g}
696 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son
697 graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
698 correspondante à ce graphe
699 et $M$ une matrice $2^n\times 2^n$
701 $M = \dfrac{1}{2^n} \check{M}$.
702 Si $\textsc{gig}(f)$ est fortement connexe, alors
703 la sortie du générateur de nombres pseudo aléatoires détaillé par
704 l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui
705 tend vers la distribution uniforme si
706 et seulement si $M$ est une matrice doublement stochastique.
709 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
710 Elle n'est donc pas rappelée.
714 On reprend l'exemple donné à la section~\ref{sec:plc}.
715 Dans le $3$-cube, le cycle hamiltonien défini par la séquence
716 $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant
717 la fonction $f^*$ définie par
719 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
720 \overline{x_1}.\overline{x_3} + x_1x_2).
723 Le graphe $\textsc{gig}(f^*)$ est représenté à la
724 Figure~\ref{fig:iteration:f*}.
725 La matrice de Markov $M$ correspondante est donnée à
726 la figure~\ref{fig:markov:f*}.
730 \subfigure[Graphe $\textsc{gig}(f^*)$
731 \label{fig:iteration:f*}]{
732 \begin{minipage}{0.55\linewidth}
734 \includegraphics[width=\columnwidth]{images/iter_f}%
737 \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
738 \label{fig:markov:f*}]{%
739 \begin{minipage}{0.35\linewidth}
742 $ \dfrac{1}{4} \left(
743 \begin{array}{cccccccc}
744 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
746 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
748 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
750 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
752 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
754 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
756 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
758 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
760 \end{array} \right) $
765 \caption{Représentations de $f^*(x_1,x_2,x_3)=
766 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
767 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
777 \begin{tabular}{|c|c|l|c|c|}
779 $n$ & fonction & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$ & $b$ & $b'$ \\
781 4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8] & \textbf{17} & \textbf{38} \\
783 \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 \\
784 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4] & & \\
786 & $g^{*5}$ & [29, 22, 21, 30, 19, 27, 24, 28, 7, 20, 5, 4, 23, 26, 25, & 15 & \textbf{47} \\
787 & & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 1, 6, 11, 18, 0, 16
791 \multirow{8}{0.5cm}{6}& $f^{*6}$ &
792 [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}\\
793 & & 49, 39, 62, 47, 46, 11, 43, 57, 8, 37, 6, 36, 4, 51, 38, 1, & & \\
794 & & 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
795 & & 16, 24, 13, 12, 29, 44, 10, 14, 41, 0, 15, 2, 7, 5, 35, 3, 9, 32] & &\\
797 &$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}}\\
798 & & 49, 15, 14, 47, 46, 35, 58, 57, 56, 7, 54, 39, 37, 3, 38, 1, & & \\
799 & & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
800 & & 16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 5, 2, 4, 6, 11, 34, 9, 32] & & \\
802 \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}} \\
803 & & 98, 81, 120, 109, 78, 105, 110, 99, 107, 104, 108, 101, 118, & & \\
804 & & 117, 96, 103, 66, 113, 64, 79, 86, 95, 124, 83, 91, 121, 24, & & \\
805 & & 119, 22, 69, 20, 87, 18, 17, 112, 77, 76, 73, 12, 74, 106, 72, & & \\
806 & & 8, 7, 102, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59, & & \\
807 & & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42, & & \\
808 & & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92, & & \\
809 & & 26, 90, 89, 25, 19, 30, 23, 4, 27, 2, 16, 80, 31, 10, 15, 14, & & \\
810 & & 3, 11, 13, 9, 5, 70, 21, 68, 67, 6, 65, 1] & & \\
812 \multirow{20}{0.5cm}{8} & $f^{*8}$ &
813 [223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,&
814 \multirow{20}{0.5cm}{9}&
815 \multirow{20}{0.5cm}{71}\\
816 & & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168,& & \\
817 & & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216,& & \\
818 & & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209,& & \\
819 & & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132,& & \\
820 & & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,& & \\
821 & & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42,& & \\
822 & & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,& & \\
823 & & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153,& & \\
824 & & 145, 175, 206, 143, 12, 11, 142, 129, 128, 7, 198, 197, 4, 195,& & \\
825 & & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114,& & \\
826 & & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121,& & \\
827 & & 120, 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83,& & \\
828 & & 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72,& & \\
829 & & 107, 78, 105, 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45,& & \\
830 & & 188, 51, 186, 61, 40, 119, 182, 181, 53, 179, 54, 33, 49, 15,& & \\
831 & & 174, 47, 60, 171, 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0,& & \\
832 & & 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16,& & \\
833 & & 24, 13, 10, 29, 14, 3, 138, 41, 136, 39, 134, 133, 5, 131,& & \\
839 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
842 Le tableau~\ref{table:functions} reprend une synthèse de
843 fonctions qui ont été générées selon la méthode détaillée
844 à la section~\ref{sec:hamiltonian}.
845 Pour chaque nombre $n=3$, $4$, $5$ et $6$,
846 tous les cycles hamiltoniens non isomorphes ont été générés. Pour les
847 valeur de $n=7$ et $8$, seules $10^{5}$ cycles ont été évalués. Parmi
848 toutes les fonctions obtenues en enlevant du $n$-cube ces cycles, n'ont été
849 retenues que celles qui minimisaient le temps de mélange relatif à une valeur de
850 $\epsilon$ fixée à $10^{-8}$ et pour un mode donné.
851 Ce nombre d'itérations (\textit{i.e.}, ce temps de mélange)
852 est stocké dans la troisième
853 colonne sous la variable $b$.
854 La variable $b'$ reprend le temps de mélange pour
855 l'algorithme~\ref{CI Algorithm}.
856 On note que pour un nombre $n$ de bits fixé et un mode donné d'itérations,
857 il peut avoir plusieurs fonctions minimisant ce temps de mélange. De plus, comme ce temps
858 de mélange est construit à partir de la matrice de Markov et que celle-ci dépend
859 du mode, une fonction peut être optimale pour un mode et ne pas l'être pour l'autre
862 Un second résultat est que ce nouvel algorithme réduit grandement le nombre
863 d'itérations suffisant pour obtenir une faible déviation par rapport à une
864 distribution uniforme. On constate de plus que ce nombre décroit avec
865 le nombre d'éléments alors qu'il augmente dans l'approche initiale où
868 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre
869 de configurations qu'on ne peut pas atteindre en une itération est de:
871 \item $2^n-n$ en unaire. Ceci représente un rapport de
872 $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$
873 de toutes les configurations; plus $n$ est grand,
874 plus ce nombre est proche de $1$, et plus grand devient le nombre
875 d'itérations nécessaires pour atteinte une déviation faible;
876 \item $2^n-2^{n-1}$ dans le cas généralisé,
877 soit la moitié de toutes les configurations
878 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.
881 Cependant, dans le cas généralisé, chaque itération a une complexité
882 plus élevée puisqu'il est nécessaire d'invoquer un générateur
883 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit
884 que celui-ci soit dans $[n]$ dans le cas unaire.
885 Pour comparer les deux approches,
886 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).
888 Dans le cas généralisé, si l'on effectue $b$ itérations,
889 à chacune d'elles, la stratégie génère un nombre entre
890 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
891 On fait donc au total $b*n$ appels pour $n$ bits et
892 donc $b$ appels pour 1 bit généré en moyenne.
893 Dans le cas unaire, si l'on effectue $b'$ itérations,
894 à chacune d'elle, la stratégie génère un nombre entre
896 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne.
897 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
898 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
899 Le tableau~\ref{table:marchevssaute} donne des instances de
900 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions
901 données au tableau~\ref{table:functions}.
902 On constate que le nombre d'appels par bit généré décroit avec $n$ dans le
903 cas des itérations généralisées et est toujours plus faible
904 que celui des itérations unaires.
910 \begin{array}{|l|l|l|l|l|l|}
912 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\
914 \textrm{Unaires} & 19.0 & 22.3 & 23.7 & 25.3 & 27.0\\
916 \textrm{Généralisées} & 17 & 13 & 11 & 10 & 9\\
920 \caption{Nombre moyen
921 d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
927 \section{Tests statistiques}
929 La qualité des séquences aléatoires produites par
930 le générateur des itérations unaires ainsi que
931 celles issues des itérations généralisées a été évaluée à travers la suite
932 de tests statistiques développée par le
933 \emph{National Institute of Standards and Technology} (NIST).
934 En interne, c'est l'implantation de l'algorithme de Mersenne Twister qui
935 permet de générer la stratégie aléatoire.
940 Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
942 qui est plus grande que $1\%$ signifie
943 que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
946 Les tableau~\ref{fig:TEST:generalise} donnent
947 une vision synthétique de ces expérimentations.
948 Nous avons évalué les fonctions préfixées par
949 $f$ (respecitvement $g$) avec les générateurs issus des itérations
950 généralisées (resp. unaires).
951 Quelle que soit la méthode utilisée, on constate que chacun des
953 avec succes le test de NIST.
955 Interpréter ces resultats en concluant que ces générateurs sont
956 tous équivalents serait erroné: la meilleur des
957 méthodes basées sur le mode des itérations
958 généralisées (pour $n=8$ par exemple)
959 est au moins deux fois plus rapide que la meilleur de celles qui
960 sont basées sur les itérations unaires.
965 %%%%%%%%% Relancer pour n=6, n=7, n=8
966 %%%%%%%%% Recalculer le MT
967 %%%%%%%%% Regenerer les 10^6 bits
968 %%%%%%%%% Evaluer sur NIST
975 \begin{tabular}{|l|r|r|r|r|}
977 Test & $f^{*5}$ &$f^{*6}$ &$f^{*7}$ &$f^{*8}$ \\ \hline
978 Fréquence (Monobit)& 0.401 (0.97)& 0.924 (1.0)& 0.779 (0.98)& 0.883 (0.99)\\ \hline
979 Fréquence ds un bloc& 0.574 (0.98)& 0.062 (1.0)& 0.978 (0.98)& 0.964 (0.98)\\ \hline
980 Somme Cumulé*& 0.598 (0.975)& 0.812 (1.0)& 0.576 (0.99)& 0.637 (0.99)\\ \hline
981 Exécution& 0.998 (0.99)& 0.213 (0.98)& 0.816 (0.98)& 0.494 (1.0)\\ \hline
982 Longue exécution dans un bloc& 0.085 (0.99)& 0.971 (0.99)& 0.474 (1.0)& 0.574 (0.99)\\ \hline
983 Rang& 0.994 (0.96)& 0.779 (1.0)& 0.191 (0.99)& 0.883 (0.99)\\ \hline
984 Fourier rapide& 0.798 (1.0)& 0.595 (0.99)& 0.739 (0.99)& 0.595 (1.0)\\ \hline
985 Patron sans superposition*& 0.521 (0.987)& 0.494 (0.989)& 0.530 (0.990)& 0.520 (0.989)\\ \hline
986 Patron avec superposition& 0.066 (0.99)& 0.040 (0.99)& 0.304 (1.0)& 0.249 (0.98)\\ \hline
987 Statistiques universelles& 0.851 (0.99)& 0.911 (0.99)& 0.924 (0.96)& 0.066 (1.0)\\ \hline
988 Entropie approchée (m=10)& 0.637 (0.99)& 0.102 (0.99)& 0.115 (0.99)& 0.350 (0.98)\\ \hline
989 Suite aléatoire *& 0.573 (0.981)& 0.144 (0.989)& 0.422 (1.0)& 0.314 (0.984)\\ \hline
990 Suite aléatoire variante *& 0.359 (0.968)& 0.401 (0.982)& 0.378 (0.989)& 0.329 (0.985)\\ \hline
991 Série* (m=10)& 0.469 (0.98)& 0.475 (0.995)& 0.473 (0.985)& 0.651 (0.995)\\ \hline
992 Complexité linaire& 0.129 (1.0)& 0.494 (1.0)& 0.062 (1.0)& 0.739 (1.0)\\ \hline
998 \caption{Test de NIST pour les fonctions
999 du tableau~\ref{table:functions} selon les itérations généralisées}\label{fig:TEST:generalise}
1006 \begin{tabular}{|l|r|r|r|r|}
1008 Test & $g^{*5}$& $g^{*6}$& $f^{*7}$& $f^{*8}$\\ \hline
1009 Fréquence (Monobit)& 0.236 (1.0)& 0.867 (0.99)& 0.437 (0.99)& 0.911 (1.0)\\ \hline
1010 Fréquence ds un bloc& 0.129 (0.98)& 0.350 (0.99)& 0.366 (0.96)& 0.657 (1.0)\\ \hline
1011 Somme Cumulé*& 0.903 (0.995)& 0.931 (0.985)& 0.863 (0.995)& 0.851 (0.995)\\ \hline
1012 Exécution& 0.699 (0.98)& 0.595 (0.99)& 0.181 (1.0)& 0.437 (0.99)\\ \hline
1013 Longue exécution dans un bloc& 0.009 (0.99)& 0.474 (0.97)& 0.816 (1.0)& 0.051 (1.0)\\ \hline
1014 Rang& 0.946 (0.96)& 0.637 (0.98)& 0.494 (1.0)& 0.946 (1.0)\\ \hline
1015 Fourier rapide& 0.383 (0.99)& 0.437 (1.0)& 0.616 (0.98)& 0.924 (0.99)\\ \hline
1016 Patron sans superposition*& 0.466 (0.990)& 0.540 (0.989)& 0.505 (0.990)& 0.529 (0.991)\\ \hline
1017 Patron avec superposition& 0.202 (0.96)& 0.129 (0.98)& 0.851 (0.99)& 0.319 (0.98)\\ \hline
1018 Statistiques universelles& 0.319 (0.97)& 0.534 (0.99)& 0.759 (1.0)& 0.657 (0.99)\\ \hline
1019 Entropie approchée (m=10)& 0.075 (0.97)& 0.181 (0.99)& 0.213 (0.98)& 0.366 (0.98)\\ \hline
1020 Suite aléatoire *& 0.357 (0.986)& 0.569 (0.991)& 0.539 (0.987)& 0.435 (0.992)\\ \hline
1021 Suite aléatoire variante *& 0.398 (0.989)& 0.507 (0.986)& 0.668 (0.991)& 0.514 (0.994)\\ \hline
1022 Série* (m=10)& 0.859 (0.995)& 0.768 (0.99)& 0.427 (0.995)& 0.637 (0.98)\\ \hline
1023 Complexité linaire& 0.897 (0.99)& 0.366 (0.98)& 0.153 (1.0)& 0.437 (1.0)\\ \hline
1029 \caption{Test de NIST pour les fonctions
1030 du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
1038 \begin{tabular}{|l|r|r|r|r|}
1040 Test & 5 bits& 6 bits & 7 bits & 8bits \\ \hline
1041 Fréquence (Monobit)& 0.289 (1.0)& 0.437 (1.0)& 0.678 (1.0)& 0.153 (0.99)\\ \hline
1042 Fréquence ds un bloc& 0.419 (1.0)& 0.971 (0.98)& 0.419 (0.99)& 0.275 (1.0)\\ \hline
1043 Somme Cumulé*& 0.607 (0.99)& 0.224 (0.995)& 0.645 (0.995)& 0.901 (0.99)\\ \hline
1044 Exécution& 0.129 (0.99)& 0.005 (0.99)& 0.935 (0.98)& 0.699 (0.98)\\ \hline
1045 Longue exécution dans un bloc& 0.514 (1.0)& 0.739 (0.99)& 0.994 (1.0)& 0.834 (0.99)\\ \hline
1046 Rang& 0.455 (0.97)& 0.851 (0.99)& 0.554 (1.0)& 0.964 (0.99)\\ \hline
1047 Fourier rapide& 0.096 (0.98)& 0.955 (0.99)& 0.851 (0.97)& 0.037 (1.0)\\ \hline
1048 Patron sans superposition*& 0.534 (0.990)& 0.524 (0.990)& 0.508 (0.987)& 0.515 (0.99)\\ \hline
1049 Patron avec superposition& 0.699 (0.99)& 0.616 (0.95)& 0.071 (1.0)& 0.058 (1.0)\\ \hline
1050 Statistiques universelles& 0.062 (0.99)& 0.071 (1.0)& 0.637 (1.0)& 0.494 (0.98)\\ \hline
1051 Entropie approchée (m=10)& 0.897 (0.99)& 0.383 (0.99)& 0.366 (1.0)& 0.911 (0.99)\\ \hline
1052 Suite aléatoire *& 0.365 (0.983)& 0.442 (0.994)& 0.579 (0.992)& 0.296 (0.993)\\ \hline
1053 Suite aléatoire variante *& 0.471 (0.978)& 0.559 (0.992)& 0.519 (0.987)& 0.340 (0.995)\\ \hline
1054 Série* (m=10)& 0.447 (0.985)& 0.298 (0.995)& 0.648 (1.0)& 0.352 (0.995)\\ \hline
1055 Complexité linaire& 0.005 (0.98)& 0.534 (0.99)& 0.085 (0.97)& 0.996 (1.0)\\ \hline
1071 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}