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

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