]> AND Private Git Repository - hdrcouchot.git/blob - 14Secrypt.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
fin de iihmsp13
[hdrcouchot.git] / 14Secrypt.tex
1 On  a vu  dans  le chapitre précédent  que  pour avoir
2 un  générateur à  sortie
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.
6
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.
10
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.
14
15
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. 
23
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 
30   
31 \begin{enumerate}
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)$;
34
35 \item $0 \le M_{ii} \le {\mathsf{N}}$: le nombre de boucles autour de chaque 
36 configuration $i$ est inférieur à ${\mathsf{N}}$;
37
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;
46 \end{enumerate}
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}$.  
62
63 \begin{figure}[ht]
64 \begin{scriptsize}
65 \lstset{language=prolog}
66 \begin{lstlisting}
67 bistoc(X):-
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] 
72      ins 0..1,
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,
77   mmult(M,M,M2),
78   mmult(M,M2,M3),
79   mmult(M,M3,M4),
80   summ(M,M2,S2),
81   summ(S2,M3,S3),
82   summ(S3,M4,S4),
83   allpositive(S4).
84 \end{lstlisting}
85 \end{scriptsize}
86 \caption{Code PROLOG permettant de trouver toutes les matrices DSSC pour $n=2$}\label{fig:prolog}
87 \end{figure}
88
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)$ 
92 sont isomorphes.
93 C'est évidemment une relation d'équivalence.
94
95
96
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 
105 pour $n=4$.
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.
109
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}).
113
114
115
116
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}$. 
120 \begin{table}[ht]
121 \begin{small}
122 $$
123 \begin{array}{|l|l|l|}
124 \hline
125 \textrm{Name} & \textrm{Image} & \textrm{MT}\\
126 \hline
127 f^a &  (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3})  &  16   \\
128 \hline
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   \\
131 \hline
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   \\
134 \hline
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   \\
137 \hline
138 f^d  &  (x_1\oplus x_2,x_3(\overline{x_1}+\overline{x_2}),\overline{x_3})  &  30   \\
139 \hline
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
145 \end{array}
146 $$
147 \end{small}
148 \caption{Les 5 fonctions booléennes $n=3$ aux temps de mélange les plus faibles.}\label{table:mixing:3}
149 \end{table}
150 \end{xpl}
151
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.
166
167
168
169
170
171 \begin{figure}[ht]
172   \begin{center}
173     \subfigure[Graphe $\textsc{giu}(f^*)$.
174     \label{fig:iteration:f*}]{
175       \begin{minipage}{0.55\linewidth}
176         \centering
177         \includegraphics[width=\columnwidth]{images/iter_f0d}%
178       \end{minipage}
179     }%
180     \subfigure[Matrice de Markov associée à $\textsc{giu}(f^*)$
181     \label{fig:markov:f*}]{%
182       \begin{minipage}{0.35\linewidth}
183         \begin{scriptsize}
184           \begin{center}
185
186 \[
187 M=\dfrac{1}{3} \left(
188 \begin{array}{llllllll}
189 1&1&1&0&0&0&0&0 \\
190 1&1&0&0&0&1&0&0 \\
191 0&0&1&1&0&0&1&0 \\
192 0&1&1&1&0&0&0&0 \\
193 1&0&0&0&1&0&1&0 \\
194 0&0&0&0&1&1&0&1 \\
195 0&0&0&0&1&0&1&1 \\
196 0&0&0&1&0&1&0&1 
197 \end{array}
198 \right)
199 \]
200
201
202
203             % $ \dfrac{1}{4} \left(
204             %   \begin{array}{cccccccc}
205             %     1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
206               
207             %     1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
208               
209             %     0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
210               
211             %     1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
212               
213             %     1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
214               
215             %     0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
216               
217             %     0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
218               
219             %     0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
220               
221             %   \end{array}            \right) $
222
223
224
225           \end{center}
226         \end{scriptsize}
227       \end{minipage}
228     }%
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}
232   \end{center}
233 \end{figure}
234
235
236
237
238 % section{Graphes 
239 %   $\textsc{giu}(f)$ 
240 %   $\textsc{gig}(f)$ 
241 %   fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
242 % %
243 %Secrypt 14
244
245
246
247
248 \section{Suppression des cycles hamiltoniens}
249 \label{sec:hamiltonian}
250
251 Dans un premier temps, nous montrons %en section~\ref{sub:removing:theory} 
252 que la
253 suppression  d'un  cycle  hamiltonien   produit  bien  des  matrices  doublement
254 stochastiques.   Nous  établissons  ensuite  le  lien avec  les  codes  de  Gray
255 équilibrés.
256
257 %\subsubsection{Aspects théoriques}
258 %\label{sub:removing:theory}
259
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.
263
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.
267 \end{theorem}
268 \begin{Proof}
269
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)$ 
273 est ainsi enlevé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.
292 \end{Proof}
293
294
295
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.
299 \end{theorem}
300
301
302 \begin{Proof}
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
306 hamiltonien $c$.
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. 
314
315 \end{Proof}
316
317
318
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.
326
327 \section{Lien avec les codes de Gray cycliques (totalement) équilibrés}
328 \label{sub:gray}
329
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
338 \emph{équilibrés}.
339
340 Un code de Gray équilibré peut être défini de la façon suivante :
341
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$.
350   
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}$.
355 \end{Def}
356
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$.
365
366 \begin{xpl}
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é.
371
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é.
378 \end{xpl}
379
380 \section{Génération de codes de Gray équilibrés par induction}
381 \label{sec:induction}
382
383 Dans  leur  article de  2004~\cite{ZanSup04},  Zanten  et  Suparta proposent  un
384 algorithme inductif  pour générer  des codes  de Gray équilibrés  de $n$  bits à
385 partir   de  codes   de  $n-2$   bits.   Cependant,   leur  méthode   n'est  pas
386 constructive. En effet, elle effectue  des manipulations sur un partitionnement du
387 code de Gray  initial de $n-2$ bits pour  obtenir un code de Gray  sur $n$ bits,
388 mais le  résultat n'est pas  systématiquement équilibré. Il est  donc nécessaire
389 d'évaluer les résultats obtenus à  partir de tous les partitionnements réalisables
390 en suivant les  contraintes spécifiées.  Or, le nombre  de possibilités augmente
391 exponentiellement (voir~\cite{Mons14} pour  l'évaluation détaillée), ce qui rend
392 déraisonnable    tout   parcours    exhaustif.    Une    amélioration   proposée
393 dans~\cite{Mons14} permet  de réduire le nombre  de partitionnements considérés,
394 mais l'ordre  de grandeur  reste similaire. On  constate donc clairement  ici la
395 nécessité de trouver  des algorithmes de génération de  codes de Gray équilibrés
396 plus  efficaces.  Ce  problème  représente  une des  voies  que nous  souhaitons
397 explorer dans la suite de nos travaux.
398
399 Le   tableau~\ref{table:nbFunc}  donne  le   nombre  de   fonctions  différentes
400 compatibles avec les codes de  Gray équilibrés générés par l'approche précédente
401 selon le nombre  de bits. Il donne  donc la taille de la  classe des générateurs
402 pouvant être produits.  Les  cas 7 et 8 ne sont que  des bornes minimales basées
403 sur des sous-ensembles des partitionnements possibles.
404
405 \begin{table}[ht]
406   \begin{center}
407     \begin{tabular}{|l|c|c|c|c|c|}
408       \hline
409       $n$              & 4 & 5 & 6    & 7      & 8      \\
410       \hline
411       nb. de fonctions & 1 & 2 & 1332 & $>$ 2300 & $>$ 4500 \\
412       \hline
413     \end{tabular}
414   \end{center}
415 \caption{Nombre de codes de Gray équilibrés selon le nombre de bits.}\label{table:nbFunc}
416 \end{table}
417
418
419 Ces fonctions étant générée, on s'intéresse à étudier à quelle vitesse 
420 un générateur les embarquant converge vers la distribution uniforme.
421 C'est l'objectif de la section suivante. 
422
423 \section{Quantifier l'écart par rapport à la distribution uniforme} 
424 On considère ici une fonction construite comme à la section précédente.
425 On s'intéresse ici à étudier de manière théorique les 
426 itérations définies à l'équation~(\ref{eq:asyn}) pour une 
427 stratégie donnée.
428 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un 
429 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la 
430 stratégie.
431 On remarque que ce graphe d'itération est toujours un sous graphe 
432 du   ${\mathsf{N}}$-cube augmenté des 
433 boucles sur chaque sommet, \textit{i.e.}, les arcs
434 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$. 
435 Ainsi, le travail ci dessous répond à la question de 
436 définir la longueur du chemin minimum dans ce graphe pour 
437 obtenir une distribution uniforme.
438 Ceci se base sur la théorie des chaînes de Markov.
439 Pour une référence 
440 générale à ce sujet on pourra se référer 
441 au livre~\cite{LevinPeresWilmer2006},
442 particulièrement au chapitre sur les temps d'arrêt.
443
444
445
446
447 \begin{xpl}
448 On considère par exemple le graphe $\textsc{giu}(f)$ donné à la 
449 \textsc{Figure~\ref{fig:iteration:f*}.} et la fonction de 
450 probabilités $p$ définie sur l'ensemble des arcs comme suit:
451 $$
452 p(e) \left\{
453 \begin{array}{ll}
454 = \frac{2}{3} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
455 = \frac{1}{6} \textrm{ sinon.}
456 \end{array}
457 \right.  
458 $$
459 La matrice $P$ de la chaîne de Markov associée à  $f^*$ 
460 est  
461 \[
462 P=\dfrac{1}{6} \left(
463 \begin{array}{llllllll}
464 4&1&1&0&0&0&0&0 \\
465 1&4&0&0&0&1&0&0 \\
466 0&0&4&1&0&0&1&0 \\
467 0&1&1&4&0&0&0&0 \\
468 1&0&0&0&4&0&1&0 \\
469 0&0&0&0&1&4&0&1 \\
470 0&0&0&0&1&0&4&1 \\
471 0&0&0&1&0&1&0&4 
472 \end{array}
473 \right)
474 \]
475 \end{xpl}
476
477
478
479
480 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur 
481 $\Bool^{\mathsf{N}}$. 
482 La distance de \og totale variation\fg{} entre  $\pi$ et $\mu$ 
483 est notée  $\tv{\pi-\mu}$ et est définie par 
484 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$ 
485 On sait que 
486 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
487 De plus, si 
488 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a 
489 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
490
491 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$. 
492 $P(X,\cdot)$ est la distribution induite par la  $X^{\textrm{ème}}$ colonne
493 de  $P$. 
494 Si la chaîne de  Markov induite par 
495 $P$ a une  distribution stationnaire $\pi$, on définit alors 
496 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
497
498 et
499
500 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
501
502 Un résultat classique est
503
504 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
505
506
507
508
509 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de  variables aléatoires de 
510 $\Bool^{\mathsf{N}}$.
511 une variable aléatoire $\tau$ dans $\mathbb{N}$ est un  
512 \emph{temps d'arrêt} pour la suite
513 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
514 (\Bool^{\mathsf{N}})^{t+1}$ tel que 
515 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$. 
516 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs 
517 de  
518 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$. 
519  
520
521 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et 
522 $f(X_{t-1},Z_t)$  une représentation fonctionnelle de celle-ci. 
523 Un \emph{temps d'arrêt aléatoire} pour la chaîne de 
524 Markov  est un temps d'arrêt pour 
525 $(Z_t)_{t\in\mathbb{N}}$.
526 Si la chaîne de Markov  est irréductible et a $\pi$
527 comme distribution stationnaire, alors un 
528 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
529 (qui peut dépendre de la configuration initiale $X$),
530 tel que la distribution de $X_\tau$ est $\pi$:
531 $$\P_X(X_\tau=Y)=\pi(Y).$$
532
533
534 Un temps d'arrêt  $\tau$ est qualifié de  \emph{fort} si  $X_{\tau}$ 
535 est indépendant de  $\tau$.  On a les deux théorèmes suivants, dont les 
536 démonstrations sont données en annexes~\ref{anx:generateur}.
537
538
539 \begin{theorem}
540 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
541 \P_X(\tau > t)$.
542 \end{theorem}
543
544 \begin{theorem} \label{prop:stop}
545 If $\ov{h}$ is bijective et telle que if for every $X\in \Bool^{\mathsf{N}}$,
546 $\ov{h}(\ov{h}(X))\neq X$, alors
547 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$. 
548 \end{theorem}
549
550 Sans entrer dans les détails de la preuve, on remarque tout d'abord 
551 que le calcul 
552 de cette borne n'intègre pas le fait qu'on préfère enlever des 
553 chemins hamiltoniens équilibrés. 
554 En intégrant cette contrainte, la borne supérieure pourrait être réduite.
555
556 On remarque ensuite que la chaîne de Markov proposée ne suit pas exactement
557 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente, 
558 la probabilité de rester dans une configuration donnée 
559 est fixée à $frac{1}{2}+\frac{1}{2n}$.
560 Dans l'algorithme initial, celle-ci est de ${1}{n}$.
561 Cette version, qui reste davantage sur place que l'algorithme original,
562 a été introduite pour simplifier le calcul de la borne sup 
563 du temps d'arrêt.   
564
565
566
567
568 \section{Et les itérations généralisées?}
569 Le chaptire précédent a présenté un algorithme de 
570 PRNG construit à partir d'itérations unaires. 
571 On pourrait penser que cet algorithme est peu efficace puisqu'il 
572 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à 
573 chaque itération qu'un seul élément de $[n]$.
574 On pourrait penser à un algorithme basé sur les itérations généralisées, 
575 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque 
576 itération.
577 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
578
579 \begin{algorithm}[ht]
580 %\begin{scriptsize}
581 \KwIn{une fonction $f$, un nombre d'itérations $b$, 
582 une configuration initiale $x^0$ ($n$ bits)}
583 \KwOut{une configuration $x$ ($n$ bits)}
584 $x\leftarrow x^0$\;
585 $k\leftarrow b $\;
586 \For{$i=1,\dots,k$}
587 {
588 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
589 $x\leftarrow{F_{f_g}(s,x)}$\;
590 }
591 return $x$\;
592 %\end{scriptsize}
593 \caption{PRNG basé sur les itérations généralisées.}
594 \label{CI Algorithm:prng:g}
595 \end{algorithm}
596
597 Par rapport à l'algorithme~\ref{CI Algorithm} seule 
598 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
599 Dans celle-ci la fonction  $\textit{Set}   :    \{1,\ldots,2^n\}   \rightarrow
600 \mathcal{P}(\{1,\ldots   n\})$   retourne  l'ensemble   dont   la   fonction
601 caractéristique  serait  représentée par  le  nombre  donné  en argument.
602 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudraitt $\{3,2\}$.
603 On remarque aussi que l'argument de la fonction  $\textit{Random}$
604 passe de $n$ à $2^n$.
605
606 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
607 généralisées.
608
609 \begin{theorem}\label{thm:prng:g}
610   Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son 
611   graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
612   correspondante à ce graphe 
613   et $M$ une matrice  $2^n\times 2^n$  
614   définie par 
615   $M = \dfrac{1}{2^n} \check{M}$.
616   Si $\textsc{gig}(f)$ est fortement connexe, alors 
617   la sortie du générateur de nombres pseudo aléatoires détaillé par 
618   l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui 
619   tend vers la distribution uniforme si 
620   et seulement si  $M$ est une matrice doublement stochastique.
621 \end{theorem}
622
623 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
624 Elle n'est donc pas rappelée.
625
626 \begin{xpl}
627
628   On reprend l'exemple donné à la section~\ref{sec:plc}.
629   Dans le $3$-cube, le cycle hamiltonien défini par la séquence
630   $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant 
631   la fonction $f^*$ définie par 
632   $$f^*(x_1,x_2,x_3)=
633   (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
634 \overline{x_1}.\overline{x_3} + x_1x_2).
635 $$ 
636
637 Le graphe  $\textsc{gig}(f^*)$  est représenté à la 
638 Figure~\ref{fig:iteration:f*}.
639 La matrice de Markov $M$ correspondante est donnée à 
640 la figure~\ref{fig:markov:f*}.
641
642 \begin{figure}[ht]
643   \begin{center}
644     \subfigure[Graphe $\textsc{gig}(f^*)$
645     \label{fig:iteration:f*}]{
646       \begin{minipage}{0.55\linewidth}
647         \centering
648         \includegraphics[width=\columnwidth]{images/iter_f}%
649       \end{minipage}
650     }%
651     \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
652     \label{fig:markov:f*}]{%
653       \begin{minipage}{0.35\linewidth}
654         \begin{scriptsize}
655           \begin{center}
656             $ \dfrac{1}{4} \left(
657               \begin{array}{cccccccc}
658                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
659               
660                 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
661               
662                 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
663               
664                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
665               
666                 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
667               
668                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
669               
670                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
671               
672                 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
673               
674               \end{array}            \right) $
675           \end{center}
676         \end{scriptsize}
677       \end{minipage}
678     }%
679     \caption{Représentations de $f^*(x_1,x_2,x_3)=
680       (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
681       \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
682   \end{center}
683 \end{figure}
684 \end{xpl}
685
686
687
688 \begin{table}[ht]
689   \begin{center}
690     \begin{scriptsize}
691       \begin{tabular}{|c|c|l|c|c|}
692         \hline
693         $n$ & fonction  & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$                 & $b$ & $b'$ \\ 
694         \hline
695         4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8]                          & \textbf{17}  & \textbf{38}   \\
696         \hline
697          \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   \\
698             &   & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4]     &     &      \\
699         \cline{2-5}
700          & $g^{*5}$  & [29, 22, 21, 30, 19, 27, 24, 28, 7, 20, 5, 4, 23, 26, 25,                                                                                        & 15  & \textbf{47}   \\
701             &   & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 1, 6, 11, 18, 0, 16
702                                                                                            &     &      \\
703         
704         \hline
705         \multirow{8}{0.5cm}{6}& $f^{*6}$  & 
706      [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}\\
707 & & 49, 39, 62, 47, 46, 11, 43, 57, 8, 37, 6, 36, 4, 51, 38, 1, & & \\
708 & & 48, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
709 & & 16, 24, 13, 12, 29, 44, 10, 14, 41, 0, 15, 2, 7, 5, 35, 3, 9, 32] & &\\    
710         \cline{2-5}
711 &$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}}\\
712     & & 49, 15, 14, 47, 46, 35, 58, 57, 56, 7, 54, 39, 37, 3, 38, 1, & & \\
713     & &  40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22,  & & \\
714     & &  16, 24, 13, 12, 29, 8, 10, 42, 41, 0, 5, 2, 4, 6, 11, 34, 9, 32] & & \\
715  \hline
716          \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}}     \\ 
717                  & & 98, 81, 120, 109, 78, 105, 110, 99, 107, 104, 108, 101, 118,     &     &      \\ 
718                  & & 117, 96, 103, 66, 113, 64, 79, 86, 95, 124, 83, 91, 121, 24,     &     &      \\ 
719                  & & 119, 22, 69, 20, 87, 18, 17, 112, 77, 76, 73, 12, 74, 106, 72,   &     &      \\ 
720                  & & 8, 7, 102, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59,     &     &      \\ 
721                  & & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42,     &     &      \\ 
722                  & & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92,     &     &      \\ 
723                  & & 26, 90, 89, 25, 19, 30, 23, 4, 27, 2, 16, 80, 31, 10, 15, 14,     &     &      \\ 
724                  & & 3, 11, 13, 9, 5, 70, 21, 68, 67, 6, 65, 1] & & \\
725         \hline
726          \multirow{20}{0.5cm}{8}   &        $f^{*8}$  &
727 [223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,& 
728 \multirow{20}{0.5cm}{9}& 
729 \multirow{20}{0.5cm}{71}\\ 
730 & & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168,& & \\ 
731 & & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216,& & \\ 
732 & & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209,& & \\ 
733 & & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132,& & \\ 
734 & & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,& & \\ 
735 & & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42,& & \\ 
736 & & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,& & \\ 
737 & & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153,& & \\ 
738 & & 145, 175, 206, 143, 12, 11, 142, 129, 128, 7, 198, 197, 4, 195,& & \\ 
739 & & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114,& & \\ 
740 & & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121,& & \\ 
741 & & 120, 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83,& & \\ 
742 & & 91, 81, 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72,& & \\ 
743 & & 107, 78, 105, 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45,& & \\ 
744 & & 188, 51, 186, 61, 40, 119, 182, 181, 53, 179, 54, 33, 49, 15,& & \\ 
745 & & 174, 47, 60, 171, 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0,& & \\ 
746 & & 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, 16,& & \\ 
747 & & 24, 13, 10, 29, 14, 3, 138, 41, 136, 39, 134, 133, 5, 131,& & \\ 
748 & & 34, 9, 8]&&\\
749         \hline
750       \end{tabular}
751     \end{scriptsize}
752   \end{center}
753 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
754 \end{table}
755
756 Le  tableau~\ref{table:functions} reprend  une synthèse de 
757 fonctions qui  ont été  générées selon  la méthode détaillée  
758 à la  section~\ref{sec:hamiltonian}.
759 Pour  chaque nombre $n=3$,  $4$, $5$ et $6$,
760 tous  les cycles  hamiltoniens non isomorphes  ont été générés.   Pour les
761 valeur de $n=7$ et $8$,  seules $10^{5}$ cycles ont été évalués.  Parmi
762 toutes  les fonctions  obtenues en  enlevant du  $n$-cube ces  cycles,  n'ont été
763 retenues que celles  qui minimisaient le temps de mélange relatif  à une valeur de
764 $\epsilon$ fixée à $10^{-8}$ et pour un mode donné.  
765 Ce  nombre d'itérations (\textit{i.e.}, ce temps de mélange) 
766 est stocké dans la troisième
767 colonne sous la variable $b$.  
768 La variable $b'$ reprend le temps de mélange pour
769 l'algorithme~\ref{CI Algorithm}. 
770 On note que pour un nombre $n$ de bits fixé et un mode donné d'itérations, 
771 il peut avoir plusieurs fonctions minimisant ce temps de mélange. De plus, comme ce temps 
772 de mélange est construit à partir de la matrice de Markov et que celle-ci dépend 
773 du mode, une fonction peut être optimale pour un mode et  ne pas l'être pour l'autre
774 (c.f. pour $n=5$).
775
776 Un second  résultat est  que ce nouvel  algorithme réduit grandement  le nombre
777 d'itérations  suffisant pour  obtenir une  faible  déviation par  rapport à  une
778 distribution uniforme.  On constate de  plus que ce nombre décroit avec
779 le nombre d'éléments alors qu'il augmente dans l'approche initiale où 
780 l'on marche.
781
782 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre 
783 de configurations qu'on ne peut pas atteindre en une itération est de: 
784 \begin{itemize}
785 \item $2^n-n$ en unaire. Ceci représente un rapport de 
786   $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$ 
787   de toutes les configurations; plus $n$ est grand, 
788   plus ce nombre est proche de $1$, et plus grand devient le nombre 
789   d'itérations nécessaires pour atteinte une déviation faible;
790 \item $2^n-2^{n-1}$ dans le cas généralisé,
791   soit la moitié de toutes les configurations 
792   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.
793 \end{itemize}
794
795 Cependant, dans le cas généralisé, chaque itération a une complexité 
796 plus élevée puisqu'il est nécessaire d'invoquer un générateur
797 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit 
798 que celui-ci soit dans $[n]$ dans le cas unaire.
799 Pour comparer les deux approches, 
800 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).
801
802 Dans le cas généralisé, si l'on effectue $b$ itérations, 
803 à chacune d'elles, la stratégie génère un nombre entre
804 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
805 On fait donc au total $b*n$ appels pour $n$ bits et
806 donc $b$ appels pour 1 bit généré en moyenne.
807 Dans le cas unaire, si l'on effectue $b'$ itérations, 
808 à chacune d'elle, la stratégie génère un nombre entre
809 $1$ et $n$. 
810 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne. 
811 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
812 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
813 Le tableau~\ref{table:marchevssaute} donne des instances de 
814 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions  
815 données au tableau~\ref{table:functions}.
816 On constate que le nombre d'appels par bit généré décroit avec $n$ dans le 
817 cas des itérations généralisées et est toujours plus faible
818 que celui des itérations unaires.
819
820
821
822 \begin{table}[ht]
823 $$
824 \begin{array}{|l|l|l|l|l|l|}
825 \hline
826 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\ 
827 \hline
828 \textrm{Unaires}         &  19.0 & 22.3  & 23.7 & 25.3 & 27.0\\  
829 \hline
830 \textrm{Généralisées}    &  17   & 13    & 11   & 10   & 9\\
831 \hline
832 \end{array}
833 $$
834 \caption{Nombre moyen 
835   d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
836 \end{table}
837
838
839
840
841 \section{Tests statistiques}
842
843 La qualité des séquences aléatoires produites par 
844 le générateur des itérations unaires ainsi que 
845 celles issues des itérations généralisées a été évaluée à travers la suite 
846 de tests statistiques développée par le 
847 \emph{National Institute of Standards and Technology} (NIST).
848 En interne, c'est l'implantation de l'algorithme de Mersenne Twister qui
849 permet de générer la stratégie aléatoire.
850
851
852
853
854  Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
855  une  valeur  
856  qui est plus grande que $1\%$  signifie 
857  que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
858
859
860 Les tableau~\ref{fig:TEST:generalise} donnent
861 une vision synthétique de ces expérimentations. 
862 Nous avons évalué les fonctions préfixées par 
863 $f$ (respecitvement $g$) avec les générateurs issus des itérations 
864 généralisées (resp. unaires).
865 Quelle que soit la méthode utilisée, on constate que chacun des 
866 générateurs passe 
867 avec succes le test de NIST. 
868
869 Interpréter ces resultats en concluant que ces générateurs sont 
870 tous équivalents serait erroné: la meilleur des 
871 méthodes basées sur le mode des itérations
872 généralisées (pour $n=8$ par exemple) 
873 est au moins deux fois plus rapide que la meilleur de celles qui 
874 sont basées sur les itérations unaires.
875
876
877
878
879 %%%%%%%%% Relancer pour n=6, n=7, n=8
880 %%%%%%%%% Recalculer le MT
881 %%%%%%%%% Regenerer les 10^6 bits
882 %%%%%%%%% Evaluer sur NIST
883  
884 \begin{table}[ht]
885   \centering
886   \begin{scriptsize}
887
888
889 \begin{tabular}{|l|r|r|r|r|}
890  \hline 
891 Test & $f^{*5}$ &$f^{*6}$ &$f^{*7}$ &$f^{*8}$ \\ \hline 
892 Fréquence (Monobit)& 0.401 (0.97)& 0.924 (1.0)& 0.779 (0.98)& 0.883 (0.99)\\ \hline 
893 Fréquence ds un bloc& 0.574 (0.98)& 0.062 (1.0)& 0.978 (0.98)& 0.964 (0.98)\\ \hline 
894 Somme Cumulé*& 0.598 (0.975)& 0.812 (1.0)& 0.576 (0.99)& 0.637 (0.99)\\ \hline 
895 Exécution& 0.998 (0.99)& 0.213 (0.98)& 0.816 (0.98)& 0.494 (1.0)\\ \hline 
896 Longue exécution dans un bloc& 0.085 (0.99)& 0.971 (0.99)& 0.474 (1.0)& 0.574 (0.99)\\ \hline 
897 Rang& 0.994 (0.96)& 0.779 (1.0)& 0.191 (0.99)& 0.883 (0.99)\\ \hline 
898 Fourier rapide& 0.798 (1.0)& 0.595 (0.99)& 0.739 (0.99)& 0.595 (1.0)\\ \hline 
899 Patron sans superposition*& 0.521 (0.987)& 0.494 (0.989)& 0.530 (0.990)& 0.520 (0.989)\\ \hline 
900 Patron avec superposition& 0.066 (0.99)& 0.040 (0.99)& 0.304 (1.0)& 0.249 (0.98)\\ \hline 
901 Statistiques universelles& 0.851 (0.99)& 0.911 (0.99)& 0.924 (0.96)& 0.066 (1.0)\\ \hline 
902 Entropie approchée (m=10)& 0.637 (0.99)& 0.102 (0.99)& 0.115 (0.99)& 0.350 (0.98)\\ \hline 
903 Suite aléatoire *& 0.573 (0.981)& 0.144 (0.989)& 0.422 (1.0)& 0.314 (0.984)\\ \hline 
904 Suite aléatoire variante *& 0.359 (0.968)& 0.401 (0.982)& 0.378 (0.989)& 0.329 (0.985)\\ \hline 
905 Série* (m=10)& 0.469 (0.98)& 0.475 (0.995)& 0.473 (0.985)& 0.651 (0.995)\\ \hline 
906 Complexité linaire& 0.129 (1.0)& 0.494 (1.0)& 0.062 (1.0)& 0.739 (1.0)\\ \hline 
907
908 \end{tabular}
909   \end{scriptsize}
910
911
912 \caption{Test de NIST pour les fonctions 
913   du tableau~\ref{table:functions} selon les itérations généralisées}\label{fig:TEST:generalise}
914 \end{table}
915
916
917 \begin{table}[ht]
918   \centering
919   \begin{scriptsize}
920 \begin{tabular}{|l|r|r|r|r|}
921 \hline 
922 Test & $g^{*5}$& $g^{*6}$& $f^{*7}$& $f^{*8}$\\ \hline 
923 Fréquence (Monobit)& 0.236 (1.0)& 0.867 (0.99)& 0.437 (0.99)& 0.911 (1.0)\\ \hline 
924 Fréquence ds un bloc& 0.129 (0.98)& 0.350 (0.99)& 0.366 (0.96)& 0.657 (1.0)\\ \hline 
925 Somme Cumulé*& 0.903 (0.995)& 0.931 (0.985)& 0.863 (0.995)& 0.851 (0.995)\\ \hline 
926 Exécution& 0.699 (0.98)& 0.595 (0.99)& 0.181 (1.0)& 0.437 (0.99)\\ \hline 
927 Longue exécution dans un bloc& 0.009 (0.99)& 0.474 (0.97)& 0.816 (1.0)& 0.051 (1.0)\\ \hline 
928 Rang& 0.946 (0.96)& 0.637 (0.98)& 0.494 (1.0)& 0.946 (1.0)\\ \hline 
929 Fourier rapide& 0.383 (0.99)& 0.437 (1.0)& 0.616 (0.98)& 0.924 (0.99)\\ \hline 
930 Patron sans superposition*& 0.466 (0.990)& 0.540 (0.989)& 0.505 (0.990)& 0.529 (0.991)\\ \hline 
931 Patron avec superposition& 0.202 (0.96)& 0.129 (0.98)& 0.851 (0.99)& 0.319 (0.98)\\ \hline 
932 Statistiques universelles& 0.319 (0.97)& 0.534 (0.99)& 0.759 (1.0)& 0.657 (0.99)\\ \hline 
933 Entropie approchée (m=10)& 0.075 (0.97)& 0.181 (0.99)& 0.213 (0.98)& 0.366 (0.98)\\ \hline 
934 Suite aléatoire *& 0.357 (0.986)& 0.569 (0.991)& 0.539 (0.987)& 0.435 (0.992)\\ \hline 
935 Suite aléatoire variante *& 0.398 (0.989)& 0.507 (0.986)& 0.668 (0.991)& 0.514 (0.994)\\ \hline 
936 Série* (m=10)& 0.859 (0.995)& 0.768 (0.99)& 0.427 (0.995)& 0.637 (0.98)\\ \hline 
937 Complexité linaire& 0.897 (0.99)& 0.366 (0.98)& 0.153 (1.0)& 0.437 (1.0)\\ \hline 
938
939 \end{tabular}
940 \end{scriptsize}
941
942
943 \caption{Test de NIST pour les fonctions 
944   du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
945 \end{table}
946
947
948 \begin{table}[ht]
949   \centering
950   \begin{scriptsize}
951
952 \begin{tabular}{|l|r|r|r|r|}
953  \hline 
954 Test & 5 bits& 6 bits & 7 bits & 8bits  \\ \hline 
955 Fréquence (Monobit)& 0.289 (1.0)& 0.437 (1.0)& 0.678 (1.0)& 0.153 (0.99)\\ \hline 
956 Fréquence ds un bloc& 0.419 (1.0)& 0.971 (0.98)& 0.419 (0.99)& 0.275 (1.0)\\ \hline 
957 Somme Cumulé*& 0.607 (0.99)& 0.224 (0.995)& 0.645 (0.995)& 0.901 (0.99)\\ \hline 
958 Exécution& 0.129 (0.99)& 0.005 (0.99)& 0.935 (0.98)& 0.699 (0.98)\\ \hline 
959 Longue exécution dans un bloc& 0.514 (1.0)& 0.739 (0.99)& 0.994 (1.0)& 0.834 (0.99)\\ \hline 
960 Rang& 0.455 (0.97)& 0.851 (0.99)& 0.554 (1.0)& 0.964 (0.99)\\ \hline 
961 Fourier rapide& 0.096 (0.98)& 0.955 (0.99)& 0.851 (0.97)& 0.037 (1.0)\\ \hline 
962 Patron sans superposition*& 0.534 (0.990)& 0.524 (0.990)& 0.508 (0.987)& 0.515 (0.99)\\ \hline 
963 Patron avec superposition& 0.699 (0.99)& 0.616 (0.95)& 0.071 (1.0)& 0.058 (1.0)\\ \hline 
964 Statistiques universelles& 0.062 (0.99)& 0.071 (1.0)& 0.637 (1.0)& 0.494 (0.98)\\ \hline 
965 Entropie approchée (m=10)& 0.897 (0.99)& 0.383 (0.99)& 0.366 (1.0)& 0.911 (0.99)\\ \hline 
966 Suite aléatoire *& 0.365 (0.983)& 0.442 (0.994)& 0.579 (0.992)& 0.296 (0.993)\\ \hline 
967 Suite aléatoire variante *& 0.471 (0.978)& 0.559 (0.992)& 0.519 (0.987)& 0.340 (0.995)\\ \hline 
968 Série* (m=10)& 0.447 (0.985)& 0.298 (0.995)& 0.648 (1.0)& 0.352 (0.995)\\ \hline 
969 Complexité linaire& 0.005 (0.98)& 0.534 (0.99)& 0.085 (0.97)& 0.996 (1.0)\\ \hline 
970
971 \end{tabular}
972
973
974
975
976
977
978
979
980
981
982   \end{scriptsize}
983
984
985 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}
986 \end{table}
987
988
989 %