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

Private GIT Repository
fin prng
[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 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.
386
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.
405
406 \begin{enumerate}
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  
410 $$
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
412 $$
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}$ 
415   par 
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'$.
422 \end{enumerate} 
423
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. 
427
428
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}$.
437 \end{theorem}
438
439 La preuve de ce théorème est donnée en annexes~\ref{anx:generateur}.
440
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. 
444
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 
449 stratégie donnée.
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 
452 stratégie.
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.
461 Pour une référence 
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.
465
466
467
468
469 \begin{xpl}
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:
473 $$
474 p(e) \left\{
475 \begin{array}{ll}
476 = \frac{2}{3} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
477 = \frac{1}{6} \textrm{ sinon.}
478 \end{array}
479 \right.  
480 $$
481 La matrice $P$ de la chaîne de Markov associée à  $f^*$ 
482 est  
483 \[
484 P=\dfrac{1}{6} \left(
485 \begin{array}{llllllll}
486 4&1&1&0&0&0&0&0 \\
487 1&4&0&0&0&1&0&0 \\
488 0&0&4&1&0&0&1&0 \\
489 0&1&1&4&0&0&0&0 \\
490 1&0&0&0&4&0&1&0 \\
491 0&0&0&0&1&4&0&1 \\
492 0&0&0&0&1&0&4&1 \\
493 0&0&0&1&0&1&0&4 
494 \end{array}
495 \right)
496 \]
497 \end{xpl}
498
499
500
501
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)|.$$ 
507 On sait que 
508 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
509 De plus, si 
510 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a 
511 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
512
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
515 de  $P$. 
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}$$
519
520 et
521
522 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
523
524 Un résultat classique est
525
526 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
527
528
529
530
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 
539 de  
540 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$. 
541  
542
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).$$
554
555
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}.
559
560
561 \begin{theorem}
562 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
563 \P_X(\tau > t)$.
564 \end{theorem}
565
566
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$. 
572
573
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)$. 
578 \end{theorem}
579
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 
588 du temps d'arrêt.   
589
590
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.
598
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.
603
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.
618
619
620 \begin{algorithm}[ht]
621 %\begin{scriptsize}
622 \KwIn{a function $f$, an initial configuration $x^0$ ($\mathsf{N}$ bits)}
623 \KwOut{a number of iterations $\textit{nbit}$}
624
625 $\textit{nbit} \leftarrow 0$\;
626 $x\leftarrow x^0$\;
627 $\textit{fair}\leftarrow\emptyset$\;
628 \While{$\left\vert{\textit{fair}}\right\vert < \mathsf{N} $}
629 {
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]$\;
635           }
636         $\textit{nbit} \leftarrow \textit{nbit}+1$\;
637 }
638 \Return{$\textit{nbit}$}\;
639 %\end{scriptsize}
640 \caption{Pseudo Code of stoping time calculus }
641 \label{algo:stop}
642 \end{algorithm}
643
644
645 \begin{figure}
646 \centering
647 \includegraphics[width=0.49\textwidth]{images/complexityET}
648 \caption{Average Stopping Time Approximation}\label{fig:stopping:moy}
649 \end{figure}
650
651
652
653
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 
662 itération.
663 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
664
665 \begin{algorithm}[ht]
666 %\begin{scriptsize}
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)}
670 $x\leftarrow x^0$\;
671 $k\leftarrow b $\;
672 \For{$i=1,\dots,k$}
673 {
674 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
675 $x\leftarrow{F_{f_g}(s,x)}$\;
676 }
677 return $x$\;
678 %\end{scriptsize}
679 \caption{PRNG basé sur les itérations généralisées.}
680 \label{CI Algorithm:prng:g}
681 \end{algorithm}
682
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$.
691
692 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
693 généralisées.
694
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$  
700   définie par 
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.
707 \end{theorem}
708
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.
711
712 \begin{xpl}
713
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 
718   $$f^*(x_1,x_2,x_3)=
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).
721 $$ 
722
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*}.
727
728 \begin{figure}[ht]
729   \begin{center}
730     \subfigure[Graphe $\textsc{gig}(f^*)$
731     \label{fig:iteration:f*}]{
732       \begin{minipage}{0.55\linewidth}
733         \centering
734         \includegraphics[width=\columnwidth]{images/iter_f}%
735       \end{minipage}
736     }%
737     \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
738     \label{fig:markov:f*}]{%
739       \begin{minipage}{0.35\linewidth}
740         \begin{scriptsize}
741           \begin{center}
742             $ \dfrac{1}{4} \left(
743               \begin{array}{cccccccc}
744                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
745               
746                 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
747               
748                 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
749               
750                 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
751               
752                 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
753               
754                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
755               
756                 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
757               
758                 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
759               
760               \end{array}            \right) $
761           \end{center}
762         \end{scriptsize}
763       \end{minipage}
764     }%
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}
768   \end{center}
769 \end{figure}
770 \end{xpl}
771
772
773
774 \begin{table}[ht]
775   \begin{center}
776     \begin{scriptsize}
777       \begin{tabular}{|c|c|l|c|c|}
778         \hline
779         $n$ & fonction  & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$                 & $b$ & $b'$ \\ 
780         \hline
781         4 & $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8]                          & \textbf{17}  & \textbf{38}   \\
782         \hline
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]     &     &      \\
785         \cline{2-5}
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
788                                                                                            &     &      \\
789         
790         \hline
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] & &\\    
796         \cline{2-5}
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] & & \\
801  \hline
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] & & \\
811         \hline
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,& & \\ 
834 & & 34, 9, 8]&&\\
835         \hline
836       \end{tabular}
837     \end{scriptsize}
838   \end{center}
839 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange}\label{table:functions}
840 \end{table}
841
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
860 (c.f. pour $n=5$).
861
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ù 
866 l'on marche.
867
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: 
870 \begin{itemize}
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.
879 \end{itemize}
880
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).
887
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
895 $1$ et $n$. 
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.
905
906
907
908 \begin{table}[ht]
909 $$
910 \begin{array}{|l|l|l|l|l|l|}
911 \hline
912 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\ 
913 \hline
914 \textrm{Unaires}         &  19.0 & 22.3  & 23.7 & 25.3 & 27.0\\  
915 \hline
916 \textrm{Généralisées}    &  17   & 13    & 11   & 10   & 9\\
917 \hline
918 \end{array}
919 $$
920 \caption{Nombre moyen 
921   d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
922 \end{table}
923
924
925
926
927 \section{Tests statistiques}
928
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.
936
937
938
939
940  Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
941  une  valeur  
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\%$.
944
945
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 
952 générateurs passe 
953 avec succes le test de NIST. 
954
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.
961
962
963
964
965 %%%%%%%%% Relancer pour n=6, n=7, n=8
966 %%%%%%%%% Recalculer le MT
967 %%%%%%%%% Regenerer les 10^6 bits
968 %%%%%%%%% Evaluer sur NIST
969  
970 \begin{table}[ht]
971   \centering
972   \begin{scriptsize}
973
974
975 \begin{tabular}{|l|r|r|r|r|}
976  \hline 
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 
993
994 \end{tabular}
995   \end{scriptsize}
996
997
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}
1000 \end{table}
1001
1002
1003 \begin{table}[ht]
1004   \centering
1005   \begin{scriptsize}
1006 \begin{tabular}{|l|r|r|r|r|}
1007 \hline 
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 
1024
1025 \end{tabular}
1026 \end{scriptsize}
1027
1028
1029 \caption{Test de NIST pour les fonctions 
1030   du tableau~\ref{table:functions} selon les itérations unaires}\label{fig:TEST:unaire}
1031 \end{table}
1032
1033
1034 \begin{table}[ht]
1035   \centering
1036   \begin{scriptsize}
1037
1038 \begin{tabular}{|l|r|r|r|r|}
1039  \hline 
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 
1056
1057 \end{tabular}
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068   \end{scriptsize}
1069
1070
1071 \caption{Test de NIST pour l'algorithme de Mersenne Twister}\label{fig:TEST:Mersenne}
1072 \end{table}
1073
1074
1075 %