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

Private GIT Repository
avant les expé
[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}
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 % Secrypt 14
243
244
245
246
247 \subsection{Suppression des cycles hamiltoniens}
248 \label{sec:hamiltonian}
249
250 Dans un premier temps, nous montrons en section~\ref{sub:removing:theory} que la
251 suppression  d'un  cycle  hamiltonien   produit  bien  des  matrices  doublement
252 stochastiques.   Nous  établissons  ensuite  le  lien avec  les  codes  de  Gray
253 équilibrés.
254
255 \subsubsection{Aspects théoriques}
256 \label{sub:removing:theory}
257
258 Nous donnons  deux résultats complémentaires, reliant la  suppression d'un cycle
259 hamiltonien  du $n$-cube,  les matrices  doublement stochastiques  et  la forte
260 connexité du graphe d'itérations.
261
262 \begin{theorem}\label{th:supprCH}
263   La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
264   $n$-cube, produit une matrice doublement stochastique.
265 \end{theorem}
266 \begin{Proof}
267
268 Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
269 Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
270 une arête entrante $(o,v)$ et une arête sortante $(v,e)$ 
271 est ainsi enlevée.
272 Considérons un autre  $n$-cube $C_2$ auquel on ajoute les arêtes 
273 pour le rendre complet. La matrice de Markov $M$ correspondante est
274 remplie de $\frac{1}{2^n}$ et est doublement stochastique.
275 Comme on enlève exactement une arête sortante $(v,e)$ 
276 à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans 
277 $C_2$ les $2^{n-1}$ arêtes issues de $v$ et 
278 relatives aux parties de $\{1,\ldots,n\}$ qui
279 contiennent $e$. Cela revient à annuler 
280 dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter 
281 $1/2$ à l'élément $M_{vv}$.
282 La matrice $M$ reste stochastique.
283 On effectue un raisonnement similaire pour les arêtes entrantes:
284 comme on enlève exactement une arête entrante $(o,v)$ pour chaque 
285 n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement 
286 $2^{n-1}$ arêtes menant à $v$ qui sont enlevées. 
287 Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et 
288 $M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
289 $M$ est donc doublement stochastique.
290 \end{Proof}
291
292
293
294 \begin{theorem}\label{th:grapheFC}
295   Le  graphe d'itérations  issu du  $n$-cube,  auquel un  cycle hamiltonien  est
296   enlevé, est fortement connexe.
297 \end{theorem}
298
299
300 \begin{Proof}
301 On considère les deux $n$-cubes $C_1$ et $C_2$ définis 
302 dans la preuve du théorème~\ref{th:supprCH}.
303 Dans $C_1$ on considère le cycle inverse $r$ du cycle
304 hamiltonien $c$.
305 Aucun arc n'appartient à la fois  à $r$ et à $c$: 
306 en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
307 Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
308 Le cycle $r$ est évidement un cycle hamiltonien et contient tous les n{\oe}uds.
309 Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles 
310 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{giu}$ qui
311 étend le précédent graphe est ainsi fortement connexe. 
312
313 \end{Proof}
314
315
316
317 %Les preuves, relativement directes, sont  laissées en exercices au lecteur.  
318 La génération de  cycles hamiltoniens dans le
319 $n$-cube,  ce qui  revient à  trouver des  \emph{codes de  Gray  cycliques}.  On
320 rappelle que  les codes de  Gray sont des  séquences de mots binaires  de taille
321 fixe ($n$),  dont les éléments successifs ne  différent que par un  seul bit. Un
322 code  de  Gray est  \emph{cyclique}  si  le premier  élément  et  le dernier  ne
323 différent que par un seul bit.
324
325 \subsection{Lien avec les codes de Gray cycliques (totalement) équilibrés}
326 \label{sub:gray}
327
328 La borne  inférieure du  nombre de codes  de Gray  ($\left(\frac{n*\log2}{e \log
329     \log   n}\times(1  -  o(1))\right)^{2^n}$),   donnée  dans~\cite{Feder2009NTB},
330 indique  une explosion combinatoire  pour notre  recherche.  Afin  de contourner
331 cette  difficulté,  nous  nous   restreignons  aux  codes  induisant  un  graphe
332 d'itérations $\textsf{giu}(f)$  \emph{uniforme}.  Cette uniformité se  traduit par des
333 nombres d'arcs  équilibrés entre les  \emph{dimensions} du graphe,  la dimension
334 $i$  correspondant aux  seules variations  du  bit $i$  (parmi les  $n$ bits  au
335 total).   Cette  approche  revient  à  chercher  des  codes  de  Gray  cycliques
336 \emph{équilibrés}.
337
338 Un code de Gray équilibré peut être défini de la façon suivante :
339
340 \begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
341   Soit $L = w_1,  w_2, \dots, w_{2^n}$ la séquence d'un code  de Gray cyclique à
342   $n$ bits.  Soit $S = s_1,  s_2, \dots, s_{2^n}$ la séquence des transitions où
343   $s_i$, $1  \le i \le 2^n$  est l'indice du seul  bit qui varie  entre les mots
344   $w_i$ et  $w_{i+1}$. Enfin, soit  $\textit{NT}_n : \{1,\dots,  n\} \rightarrow
345   \{0, \ldots, 2^n\}$  la fonction qui au paramètre  $i$ associe le \emph{nombre
346     de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
347   le nombre d'occurrences de $i$ dans $S$.
348   
349   Le      code       $L$      est      \textbf{équilibré}       si      $\forall
350   i,j\in\{1,...,n\},~|\textit{NT}_n(i)  -  \textit{NT}_n(j)|  \le  2$.   Il  est
351   \textbf{totalement             équilibré}             si             $\forall
352   i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
353 \end{Def}
354
355 On peut  donc déjà déduire  qu'il ne peut  exister des codes de  Gray totalement
356 équilibrés que  pour les  systèmes ayant un  nombre d'éléments $n=2^k,  k>0$. De
357 plus,  comme  dans tout  code  de  Gray  cyclique, $\textit{NT}_n(i)$  est  pair
358 $\forall  i\in\{1,...,n\}$,  alors  les  systèmes  ayant  un  nombre  d'éléments
359 différent  de $2^k$,  ne peuvent  avoir  que des  codes de  Gray équilibrés  avec
360 $\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$                                 ou
361 $\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil,    \forall    i\in\{1,...,n\}$   et
362 vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
363
364 \begin{xpl}
365   Soit  $L^*=000,100,101,001,011,111,110,010$ le code  de Gray  correspondant au
366   cycle hamiltonien enlevé de $f^*$.  Sa séquence des transitions est \linebreak
367   $S=3,1,3,2,3,1,3,2$  et  les nombres  de  transitions sont  $\textit{TC}_3(1)=
368   \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
369
370   Si l'on  considère maintenant $L^4=$ 0000,  0010, 0110, 1110, 1111,  0111, 0011,
371   0001,  0101, 0100,  1100, 1101,  1001,  1011, 1010,  1000,  un  code de  Gray
372   cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4, 
373   on constate que  $\forall
374   i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que 
375   ce code est totalement équilibré.
376 \end{xpl}
377
378 \subsection{Génération de codes de Gray équilibrés par induction}
379 \label{sec:induction}
380
381 Dans  leur  article de  2004~\cite{ZanSup04},  Zanten  et  Suparta proposent  un
382 algorithme inductif  pour générer  des codes  de Gray équilibrés  de $n$  bits à
383 partir   de  codes   de  $n-2$   bits.   Cependant,   leur  méthode   n'est  pas
384 constructive. En effet, elle effectue  des manipulations sur un partitionnement du
385 code de Gray  initial de $n-2$ bits pour  obtenir un code de Gray  sur $n$ bits,
386 mais le  résultat n'est pas  systématiquement équilibré. Il est  donc nécessaire
387 d'évaluer les résultats obtenus à  partir de tous les partitionnements réalisables
388 en suivant les  contraintes spécifiées.  Or, le nombre  de possibilités augmente
389 exponentiellement (voir~\cite{Mons14} pour  l'évaluation détaillée), ce qui rend
390 déraisonnable    tout   parcours    exhaustif.    Une    amélioration   proposée
391 dans~\cite{Mons14} permet  de réduire le nombre  de partitionnements considérés,
392 mais l'ordre  de grandeur  reste similaire. On  constate donc clairement  ici la
393 nécessité de trouver  des algorithmes de génération de  codes de Gray équilibrés
394 plus  efficaces.  Ce  problème  représente  une des  voies  que nous  souhaitons
395 explorer dans la suite de nos travaux.
396
397 Le   tableau~\ref{table:nbFunc}  donne  le   nombre  de   fonctions  différentes
398 compatibles avec les codes de  Gray équilibrés générés par l'approche précédente
399 selon le nombre  de bits. Il donne  donc la taille de la  classe des générateurs
400 pouvant être produits.  Les  cas 7 et 8 ne sont que  des bornes minimales basées
401 sur des sous-ensembles des partitionnements possibles.
402
403 \begin{table}[ht]
404   \begin{center}
405     \begin{tabular}{|l|c|c|c|c|c|}
406       \hline
407       $n$              & 4 & 5 & 6    & 7      & 8      \\
408       \hline
409       nb. de fonctions & 1 & 2 & 1332 & $>$ 2300 & $>$ 4500 \\
410       \hline
411     \end{tabular}
412   \end{center}
413 \caption{Nombre de codes de Gray équilibrés selon le nombre de bits.}\label{table:nbFunc}
414 \end{table}
415
416
417 Ces fonctions étant générée, on s'intéresse à étudier à quelle vitesse 
418 un générateur les embarquant converge vers la distribution uniforme.
419 C'est l'objectif de la section suivante. 
420
421 \section{Quantifier l'écart par rapport à la distribution uniforme} 
422 On considère ici une fonction construite comme à la section précédente.
423 On s'intéresse ici à étudier de manière théorique les 
424 itérations définies à l'équation~(\ref{eq:asyn}) pour une 
425 stratégie donnée.
426 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un 
427 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la 
428 stratégie.
429 On remarque que ce graphe d'itération est toujours un sous graphe 
430 du   ${\mathsf{N}}$-cube augmenté des 
431 boucles sur chaque sommet, \textit{i.e.}, les arcs
432 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$. 
433 Ainsi, le travail ci dessous répond à la question de 
434 définir la longueur du chemin minimum dans ce graphe pour 
435 obtenir une distribution uniforme.
436 Ceci se base sur la théorie des chaînes de Markov.
437 Pour une référence 
438 générale à ce sujet on pourra se référer 
439 au livre~\cite{LevinPeresWilmer2006},
440 particulièrement au chapitre sur les temps d'arrêt.
441
442
443
444
445 \begin{xpl}
446 On considère par exemple le graphe $\textsc{giu}(f)$ donné à la 
447 \textsc{Figure~\ref{fig:iteration:f*}.} et la fonction de 
448 probabilités $p$ définie sur l'ensemble des arcs comme suit:
449 $$
450 p(e) \left\{
451 \begin{array}{ll}
452 = \frac{2}{3} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
453 = \frac{1}{6} \textrm{ sinon.}
454 \end{array}
455 \right.  
456 $$
457 La matrice $P$ de la chaîne de Markov associée à  $f^*$ 
458 est  
459 \[
460 P=\dfrac{1}{6} \left(
461 \begin{array}{llllllll}
462 4&1&1&0&0&0&0&0 \\
463 1&4&0&0&0&1&0&0 \\
464 0&0&4&1&0&0&1&0 \\
465 0&1&1&4&0&0&0&0 \\
466 1&0&0&0&4&0&1&0 \\
467 0&0&0&0&1&4&0&1 \\
468 0&0&0&0&1&0&4&1 \\
469 0&0&0&1&0&1&0&4 
470 \end{array}
471 \right)
472 \]
473 \end{xpl}
474
475
476
477
478 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur 
479 $\Bool^{\mathsf{N}}$. 
480 La distance de \og totale variation\fg{} entre  $\pi$ et $\mu$ 
481 est notée  $\tv{\pi-\mu}$ et est définie par 
482 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$ 
483 On sait que 
484 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
485 De plus, si 
486 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a 
487 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
488
489 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$. 
490 $P(X,\cdot)$ est la distribution induite par la  $X^{\textrm{ème}}$ colonne
491 de  $P$. 
492 Si la chaîne de  Markov induite par 
493 $P$ a une  distribution stationnaire $\pi$, on définit alors 
494 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
495
496 et
497
498 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
499
500 Un résultat classique est
501
502 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
503
504
505
506
507 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de  variables aléatoires de 
508 $\Bool^{\mathsf{N}}$.
509 une variable aléatoire $\tau$ dans $\mathbb{N}$ est un  
510 \emph{temps d'arrêt} pour la suite
511 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
512 (\Bool^{\mathsf{N}})^{t+1}$ tel que 
513 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$. 
514 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs 
515 de  
516 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$. 
517  
518
519 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et 
520 $f(X_{t-1},Z_t)$  une représentation fonctionnelle de celle-ci. 
521 Un \emph{temps d'arrêt aléatoire} pour la chaîne de 
522 Markov  est un temps d'arrêt pour 
523 $(Z_t)_{t\in\mathbb{N}}$.
524 Si la chaîne de Markov  est irréductible et a $\pi$
525 comme distribution stationnaire, alors un 
526 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
527 (qui peut dépendre de la configuration initiale $X$),
528 tel que la distribution de $X_\tau$ est $\pi$:
529 $$\P_X(X_\tau=Y)=\pi(Y).$$
530
531
532 Un temps d'arrêt  $\tau$ est qualifié de  \emph{fort} si  $X_{\tau}$ 
533 est indépendant de  $\tau$.  On a les deux théorèmes suivants, dont les 
534 démonstrations sont données en annexes~\ref{anx:generateur}.
535
536
537 \begin{theorem}
538 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
539 \P_X(\tau > t)$.
540 \end{theorem}
541
542 \begin{theorem} \label{prop:stop}
543 If $\ov{h}$ is bijective et telle que if for every $X\in \Bool^{\mathsf{N}}$,
544 $\ov{h}(\ov{h}(X))\neq X$, alors
545 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$. 
546 \end{theorem}
547
548 Sans entrer dans les détails de la preuve, on remarque tout d'abord 
549 que le calcul 
550 de cette borne n'intègre pas le fait qu'on préfère enlever des 
551 chemins hamiltoniens équilibrés. 
552 En intégrant cette contrainte, la borne supérieure pourrait être réduite.
553
554 On remarque ensuite que la chaîne de Markov proposée ne suit pas exactement
555 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente, 
556 la probabilité de rester dans une configuration donnée 
557 est fixée à $frac{1}{2}+\frac{1}{2n}$.
558 Dans l'algorithme initial, celle-ci est de ${1}{n}$.
559 Cette version, qui reste davantage sur place que l'algorithme original,
560 a été introduite pour simplifier le calcul de la borne sup 
561 du temps d'arrêt.   
562
563
564
565
566 \section{Et les itérations généralisées?}
567 Le chaptire précédent a présenté un algorithme de 
568 PRNG construit à partir d'itérations unaires. 
569 On pourrait penser que cet algorithme est peu efficace puisqu'il 
570 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à 
571 chaque itération qu'un seul élément de $[n]$.
572 On pourrait penser à un algorithme basé sur les itérations généralisées, 
573 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque 
574 itération.
575 C'est l'algorithme~\ref{CI Algorithm:prng:g}.
576
577 \begin{algorithm}[ht]
578 %\begin{scriptsize}
579 \KwIn{une fonction $f$, un nombre d'itérations $b$, 
580 une configuration initiale $x^0$ ($n$ bits)}
581 \KwOut{une configuration $x$ ($n$ bits)}
582 $x\leftarrow x^0$\;
583 $k\leftarrow b $\;
584 \For{$i=1,\dots,k$}
585 {
586 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
587 $x\leftarrow{F_{f_g}(s,x)}$\;
588 }
589 return $x$\;
590 %\end{scriptsize}
591 \caption{PRNG basé sur les itérations généralisées.}
592 \label{CI Algorithm:prng:g}
593 \end{algorithm}
594
595 Par rapport à l'algorithme~\ref{CI Algorithm} seule 
596 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
597 Dans celle-ci la fonction  $\textit{Set}   :    \{1,\ldots,2^n\}   \rightarrow
598 \mathcal{P}(\{1,\ldots   n\})$   retourne  l'ensemble   dont   la   fonction
599 caractéristique  serait  représentée par  le  nombre  donné  en argument.
600 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudraitt $\{3,2\}$.
601 On remarque aussi que l'argument de la fonction  $\textit{Random}$
602 passe de $n$ à $2^n$.
603
604 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
605 généralisées.
606
607 \begin{theorem}\label{thm:prng:g}
608   Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son 
609   graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
610   correspondante à ce graphe 
611   et $M$ une matrice  $2^n\times 2^n$  
612   définie par 
613   $M = \dfrac{1}{n} \check{M}$.
614   Si $\textsc{gig}(f)$ est fortement connexe, alors 
615   la sortie du générateur de nombres pseudo aléatoires détaillé par 
616   l'algorithme~\ref{CI Algorithm} suit une loi qui 
617   tend vers la distribution uniforme si 
618   et seulement si  $M$ est une matrice doublement stochastique.
619 \end{theorem}
620
621 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
622 Elle n'est donc pas rappelée.
623
624 \begin{xpl}
625
626   On reprend l'exemple donné à la section~\ref{sub:prng:ana}:
627   Dans le $3$-cube   cycle hamiltonien défini par la séquence
628   $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant 
629   la fonction $f^*$ définie par 
630   $$f^*(x_1,x_2,x_3)=
631   (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
632 \overline{x_1}.\overline{x_3} + x_1x_2).
633 $$ 
634
635 Le graphe  $\textsc{gig}(f^*)$  est représenté à la 
636 Figure~\ref{fig:iteration:f*}.
637 La matrice de Markov $M$ correspondante est donnée à 
638 la figure~\ref{fig:markov:f*}.
639
640 \begin{figure}[ht]
641   \begin{center}
642     \subfigure[Graphe des itérations chaotiques de $f^*$.
643     \label{fig:iteration:f*}]{
644       \begin{minipage}{0.55\linewidth}
645         \centering
646         \includegraphics[width=\columnwidth]{images/iter_f}%
647       \end{minipage}
648     }%
649     \subfigure[Matrice de Markov du graphe d'itérations chaotiques de 
650     $f^*$\label{fig:markov:f*}]{%
651       \begin{minipage}{0.35\linewidth}
652         \begin{scriptsize}
653           \begin{center}
654             $ \dfrac{1}{4} \left(
655               \begin{array}{cccccccc}
656                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
657               
658                 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
659               
660                 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
661               
662                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
663               
664                 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
665               
666                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
667               
668                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
669               
670                 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
671               
672               \end{array}            \right) $
673           \end{center}
674         \end{scriptsize}
675       \end{minipage}
676     }%
677     \caption{Représentations de $f^*(x_1,x_2,x_3)=
678       (x_2 \oplus x_3, \overline{x_1}\overline{x_3} + x_1\overline{x_2},
679       \overline{x_1}\overline{x_3} + x_1x_2)$.}\label{fig1}
680   \end{center}
681 \end{figure}
682 \end{xpl}
683
684
685
686 \begin{table}[ht]
687   \begin{center}
688     \begin{scriptsize}
689       \begin{tabular}{|c|l|c|c|}
690         \hline
691         fonction  & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$                 & $b$ & $b'$ \\ 
692         \hline
693         $f^{*4}$  & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8]                          & 17  & 38   \\
694         \hline
695         $f^{*5}$  & [29, 22, 25, 30, 19, 27, 24, 16, 21, 6, 5, 28, 23, 26, 1,        & 13  & 48   \\
696                   & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4]     &     &      \\
697         \hline
698         $f^{*6}$  & [55, 60, 45, 44, 58, 62, 61, 48, 53, 50, 52, 36, 59, 34, 33,     & 11   & 55   \\
699                   & 49, 15, 42, 47, 46, 35, 10, 57, 56, 7, 54, 39, 37, 51, 2, 1,     &     &      \\
700                   & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22,      &     &      \\
701                   & 16, 24, 13, 12, 29, 8, 43, 14, 41, 0, 5, 38, 4, 6, 11, 3, 9, 32] &     &      \\
702          \hline
703          $f^{*7}$ & [111, 94, 93, 116, 122, 114, 125, 88, 87, 126, 119, 84, 123,     & 10   & 63   \\
704                   & 98, 81, 120, 109, 106, 105, 110, 99, 107, 104, 108, 101, 70,     &     &      \\ 
705                   & 117, 96, 67, 102, 113, 64, 79, 30, 95, 124, 83, 91, 121, 24,     &     &      \\ 
706                   & 23, 118, 69, 20, 115, 90, 17, 112, 77, 14, 73, 78, 74, 10, 72,   &     &      \\ 
707                   & 76, 103, 6, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59,     &     &      \\ 
708                   & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42,      &     &      \\ 
709                   & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92,      &     &      \\ 
710                   & 26, 18, 89, 25, 19, 86, 85, 4, 27, 2, 16, 80, 31, 12, 15, 8,     &     &      \\ 
711                   & 3, 11, 13, 9, 5, 22, 21, 68, 7, 66, 65, 1]                       &     &      \\
712         \hline
713         $f^{*8}$  &[223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,&        9 & 72    \\
714                  & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168, &&\\
715                  & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216, &&\\
716                  & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209, &&\\
717                  & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132, &&\\
718                  & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,&&\\
719                  & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42, &&\\
720                  & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,&&\\
721                  & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153, &&\\
722                  & 145, 175, 206, 143, 136, 11, 142, 129, 8, 7, 198, 197, 4, 195, &&\\
723                  & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114, &&\\
724                  & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121, 120,&&\\
725                  & 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83, 91, 81,&&\\
726                  & 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72, 107, 78, 105, &&\\
727                  & 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45, 188, 51, 186, 61, &&\\
728                  & 40, 119, 182, 181, 53, 179, 54, 33, 49, 15, 174, 47, 60, 171, && \\
729                  & 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0, 63, 26, 25, 30, 19,&&\\
730                  & 27, 17, 28, 31, 20, 23, 21, 18, 22, 16, 24, 13, 10, 29, 14, 3, &&\\
731                  &138, 41, 12, 39, 134, 133, 5, 131, 34, 9, 128]&&\\
732         \hline
733       \end{tabular}
734     \end{scriptsize}
735   \end{center}
736 \label{table:functions}\caption{Fonctions avec matrices DSCC et le plus faible temps de mélange.}
737 \end{table}
738
739 Le  tableau~\ref{table:functions} reprend  une synthèse de 
740 fonctions qui  ont été  générées selon  la méthode détaillée  
741 à la  section~\ref{sec:gen:dblstc}.
742 Pour  chaque nombre $n=3$,  $4$, $5$
743 ,$6$, tous  les cycles  hamiltoniens non isomorphes  ont été générés.   Pour les
744 valeur de $n=7$ et $8$,  seules $10^{5}$ configurations ont été évaluées.  Parmi
745 toutes  les fonctions  obtenues en  enlevant du  $n$-cube ces  cycles,  n'ont été
746 retenues que celles  qui minimisaient le temps de mélange relatif  à une valeur de
747 $\epsilon$ fixée à $10^{-8}$.  
748 Ce  nombre d'itérations (\textit{i.e.}, ce temps de mélange) 
749 est stocké dans la troisième
750 colonne sous la variable $b$.  
751 La variable $b'$ reprend le temps de mélange pour
752 l'algorithme~\ref{CI Algorithm}.
753
754 Un premier  résultat est  que ce nouvel  algorithme réduit grandement  le nombre
755 d'itérations  suffisant pour  obtenir une  faible  déviation par  rapport à  une
756 distribution uniforme.  On constate de  plus que ce nombre décroit avec
757 le nombre d'éléments alors qu'il augmente dans l'approche initiale où 
758 l'on marche.
759
760 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre 
761 de configurations qu'on ne peut pas atteindre en une itération est de 
762 \begin{itemize}
763 \item $2^n-n$ en marchant, ce qui représente $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$ 
764   de toutes les configurations; plus $n$ est grand, 
765   plus ce nombre est proche de $1$, et plus grand devient le nombre 
766   d'itérations suffisantes pour atteinte une déviation faible;
767 \item $2^n-2^{n-1}$ en sautant, soit la moitié de toutes les configurations 
768   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.
769 \end{itemize}
770
771 Cependant, dans le cas où l'on saute, chaque itération a une complexité 
772 plus élevée puisqu'il est nécessaire d'invoquer un générateur 
773 de nombres pseudo-aléatoires entre 1 et $2^{n}$ tandis qu'il suffit 
774 d'avoir un générateur entre 1 et $n$ dans le premier cas.
775
776 Pour comparer les deux approches, 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).
777
778 Lorsqu'on marche et qu'on effectue $i$ itérations, 
779 à chaque itération, la stratégie génère un nombre entre
780 $1$ et $n$. 
781 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur en moyenne. 
782 La démarche fait donc au total $i*\ln(n)/\ln(2)$ appels pour $n$ bits et
783 donc $i*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
784 Lorsqu'on saute et qu'on effectue $i'$ itérations, 
785 à chaque itération, la stratégie génère un nombre entre
786 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
787 On fait donc au total $i'*n$ appels pour $n$ bits et
788 donc $i'$ appels pour 1 bit généré en moyenne.
789 Le tableau~\ref{table:marchevssaute} donne des instances de 
790 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions  
791 données au tableau~\ref{table:functions}.
792 On constate que le nombre d'appels par bit généré décroit avec $n$ dans la 
793 seconde démarche et est toujours plus faible que celui de la première.   
794
795
796
797 \begin{table}[ht]
798 $$
799 \begin{array}{|l|l|l|l|l|l|}
800 \hline
801 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\ 
802 \hline
803 \textrm{Unaires}         &  19.0 & 22.2905097109  & 23.6954895899 & 25.2661942985 & 27.0\\  
804 \hline
805 \textrm{Généralisées}          &  17   & 13             & 11            & 10 & 9\\
806 \hline
807 \end{array}
808 $$
809 \caption{Nombre moyen 
810   d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
811 \end{table}
812
813
814
815
816 La qualité des séquences aléatoires a été évaluée à travers la suite 
817 de tests statistiques développée pour les générateurs de nombres 
818 pseudo-aléatoires par le 
819 \emph{National Institute of Standards and Technology} (NIST).
820  Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
821  une  valeur  
822  qui est plus grande que $1\%$  signifie 
823  que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
824  Le tableau~\ref{fig:TEST} donne une vision synthétique de toutes 
825  ces expérimentations. 
826 L'expérience a montré notamment que toutes ces fonctions
827 passent avec succès cette batterie de tests. 
828
829 %%%%%%%%% Relancer pour n=6, n=7, n=8
830 %%%%%%%%% Recalculer le MT
831 %%%%%%%%% Regenerer les 10^6 bits
832 %%%%%%%%% Evaluer sur NIST
833  
834 \begin{table}[ht]
835   \centering
836   \begin{scriptsize}
837     \begin{tabular}{|*{5}{c|}}
838       \hline
839 Test                          & $f^{*4}$      & $f^{*5}$      & $f^{*6}$      & $f^{*7}$      \\ \hline
840 Fréquence (Monobit)           & 0.025 (0.99)  & 0.066 (1.0)   & 0.319 (0.99)  & 0.001 (1.0)   \\ \hline  
841 Fréquence / bloc              & 0.401 (0.99)  & 0.867 (1.0)   & 0.045 (0.99)  & 0.085 (0.99)  \\ \hline
842 Somme Cumulé*                 & 0.219 (0.995) & 0.633 (1.0)   & 0.635 (1.0)   & 0.386 (0.99)  \\ \hline 
843 Exécution                     & 0.964 (0.98)  & 0.699 (0.99)  & 0.181 (0.99)  & 0.911 (0.98)  \\ \hline 
844 Longue exécution dans un bloc & 0.137 (0.99)  & 0.964 (1.0)   & 0.145 (0.99)  & 0.162 (0.98)  \\ \hline 
845 Rang                          & 0.616 (0.99)  & 0.678 (1.0)   & 0.004 (1.0)   & 0.816 (1.0)   \\ \hline 
846 Fourier rapide                & 0.048 (0.99)  & 0.637 (0.97)  & 0.366 (0.99)  & 0.162 (0.99)  \\ \hline 
847 Patron sans superposition*    & 0.479 (0.988) & 0.465 (0.989) & 0.535 (0.989) & 0.499 (0.989) \\ \hline 
848 Patron avec superposition     & 0.897 (1.0)   & 0.657 (0.97)  & 0.897 (0.98)  & 0.236 (0.99)  \\ \hline 
849 Statistiques universelles     & 0.991 (0.98)  & 0.657 (0.98)  & 0.102 (0.98)  & 0.719 (0.98)  \\ \hline 
850 Entropie approchée (m=10)     & 0.455 (1.0)   & 0.964 (1.0)   & 0.162 (1.0)   & 0.897 (0.98)  \\ \hline 
851 Suite aléatoire *             & 0.372 (0.993) & 0.494 (0.986) & 0.243 (0.992) & 0.258 (0.993) \\ \hline 
852 Suite aléatoire variante *    & 0.496 (0.989) & 0.498 (0.992) & 0.308 (0.983) & 0.310 (0.999) \\ \hline 
853 Série* (m=10)                 & 0.595 (0.995) & 0.289 (0.975) & 0.660 (0.995) & 0.544 (0.99)  \\ \hline 
854 Complexité linaire            & 0.816 (1.0)   & 0.897 (0.98)  & 0.080 (0.98)  & 0.798 (1.0)   \\ \hline
855     \end{tabular}
856   \end{scriptsize}
857 \label{fig:TEST}\caption{Test de NIST réalisé sur les fonctions $f^*$ détaillées au tableau~\label{table:functions}}
858 \end{table}
859
860 %