1 On a vu dans le chapitre précédent que pour avoir
3 uniforme, il est nécessaire que la matrice d'adjacence du graphe d'itération du
4 système soit doublement stochastique. Nous présentons dans cette partie une
5 méthode permettant de générer de telles matrices.
7 Les approches théoriques basées sur la programmation logique par contraintes sur
8 domaines finis ne sont pas envisageables en pratique dès que la taille des
9 matrices considérées devient suffisamment grande.
11 Une approche plus pragmatique consiste à supprimer un cycle hamiltonien dans le
12 graphe d'itérations, ce qui revient à supprimer en chaque n{\oe}ud de ce graphe une
13 arête sortante et une arête entrante.
16 % This aim of this section is to show
17 % that finding DSSC matrices from a hypercube
18 % is a typical finite domain satisfaction
19 % problem, classically denoted as
20 % Constraint Logic Programming on Finite Domains (CLPFD).
21 % This part is addressed in the first section. Next, we analyse the first
22 % results to provide a generation of DSSC matrices with small mixing times.
24 \section{Programmation logique par contraintes sur des domaines finis}\label{sec:plc}
25 Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments.
26 Pour éviter d'avoir à gérer des fractions, on peut considérer que
27 les matrices (d'incidence) à générer ont des lignes et des colonnes dont les
28 sommes valent ${\mathsf{N}}$ à chaque fois.
29 On cherche ainsi toutes les matrices $M$ de taille $2^{\mathsf{N}}\times 2^{\mathsf{N}}$ telles que
32 \item $M_{ij}$ vaut 0 si $j$ n'est pas un voisin de $i$, \textit{i.e.},
33 il n'y a pas d'arc de $i$ à $j$ dans le graphe $\textsc{giu}(f)$;
35 \item $0 \le M_{ii} \le {\mathsf{N}}$: le nombre de boucles autour de chaque
36 configuration $i$ est inférieur à ${\mathsf{N}}$;
38 \item pour $j \neq i$, $0 \le M_{ij} \le 1$: on construit l'arc de $i$ à $j$
39 si et seulement si $M_{ij}$ vaut 1 (et 0 sinon)
40 \item pour chaque indice de ligne $i$, $1 \le i\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le j\le 2^{\mathsf{N}}} M_{ij}$:
41 la matrice est stochastique à droite;
42 \item pour chaque indice de colonne $j$,
43 $1 \le j\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le i\le 2^{\mathsf{N}}} M_{ij}$:
44 la matrice est stochastique à gauche;
45 \item Toutes les éléments de la somme $\sum_{1\le k\le 2^{\mathsf{N}}}M^k$ sont strictement positif, \textit{i.e.}, le graphe $\textsc{giu}(f)$ est fortement connexe;
47 Ce problème s'exprime sur des domaines finis entiers avec des opérateurs
48 arithmétiques simples (sommes et produits). il pourrait théoriquement être
49 traité par des démarches de programmation logique par contrainte
50 sur des domaines finis (comme en PROLOG).
51 L'algorithme donné en Figure~\ref{fig:prolog}
52 est en effet le c{\oe}ur du programme PROLOG
53 qui pourrait être utilisé pour instancier toutes les solutions,
54 ici pour $\mathsf{N} = 2$. Dans ce code,
55 \verb+mmult(+$X,Y,R$\verb+)+ et
56 \verb+summ(+$X,Y,R$\verb+)+
57 valent True si et seulement si $R$
58 est le produit matriciel (ou la somme matricielle)
59 entre $X$ and $Y$ respectivement.
60 il n'est pas difficile d'adapter ce code à n'importe quelle valeur
61 entière naturelle $\mathsf{N}$.
65 \lstset{language=prolog}
68 M=[[M0_0, M0_1, 0, M0_3], [M1_0, M1_1, 0, M1_3],
69 [M2_0, 0, M2_2, M2_3], [0, M3_1, M3_2, M3_3]],
70 [M0_0, M1_1, M2_2, M3_3] ins 0..2,
71 [M0_1, M0_3, M1_0, M1_3, M2_0, M2_3, M3_1, M3_2]
73 M0_0+ M0_1+ M0_2 #=2, M1_0+ M1_1+ M1_3 #=2,
74 M2_0+ M2_2+ M2_3 #=2, M3_1+ M3_2+ M3_3 #=2,
75 M0_0+ M1_0+ M2_0 #=2, M0_1+ M1_1+ M3_1 #=2,
76 M0_2+ M2_2+ M3_2 #=2, M1_3+ M2_3+ M3_3 #=2,
86 \caption{Code PROLOG permettant de trouver toutes les matrices DSSC pour $n=2$}\label{fig:prolog}
89 Enfin, on définit la relation $\mathcal{R}$, qui est établie pour les deux
90 fonctions $f$ et $g$ si leur graphes
91 respectifs $\textsf{giu}(f)$ et $\textsf{giu}(g)$
93 C'est évidemment une relation d'équivalence.
97 %\subsection{Analyse de l'approche}\label{sub:prng:ana}
98 Exécutée sur un ordinateur personnelle, PROLOG trouve
99 en moins d'une seconde les
100 49 solutions pour $n=2$,
101 dont 2 seulement ne sont pas équivalentes,
102 en moins d'une minute les 27642 solutions dont seulement 111 ne
103 sont pas équivalentes pour $n=3$.
104 Cependant, l'approche ne permet pas d'engendrer toutes les solutions
106 Cette approche, basée sur une démarche de type \emph{générer, tester} ne peut
107 pas être retenue pour $n$ de grande taille, même
108 en s'appuyant sur l'efficience de l'algorithme de backtrack natif de PROLOG.
110 Cependant, pour des valeurs de $n$ petites, nous avons
111 comparé les fonctions non équivalentes selon leur proportion
112 à engendrer des temps de mélange petits (cf. équation~\ref{eq:mt:ex}).
117 \begin{xpl}\label{xpl:mixing:3}
118 Le tableau~\ref{table:mixing:3} fournit les 5 fonctions booléennes
119 qui ont les temps de mélange les plus petits pour $\varepsilon=10^{-5}$.
123 \begin{array}{|l|l|l|}
125 \textrm{Name} & \textrm{Image} & \textrm{MT}\\
127 f^a & (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3}) & 16 \\
129 f^* & (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
130 \overline{x_1}.\overline{x_3} + x_1x_2) & 17 \\
132 f^b & (\overline{x_1}(x_2+x_3) + x_2x_3,\overline{x_1}(\overline{x_2}+\overline{x_3}) + \overline{x_2}.\overline{x_3}, & \\
133 & \qquad \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 26 \\
135 f^c & (\overline{x_1}(x_2+x_3) + x_2x_3,\overline{x_1}(\overline{x_2}+\overline{x_3}) + \overline{x_2}.\overline{x_3}, & \\
136 & \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2) & 29 \\
138 f^d & (x_1\oplus x_2,x_3(\overline{x_1}+\overline{x_2}),\overline{x_3}) & 30 \\
140 % [3, 4, 7, 0, 1, 6, 5, 2], #16
141 % [3, 4, 7, 0, 2, 6, 5, 1], #17
142 % [3, 6, 7, 5, 2, 0, 1, 4], #26
143 % [3, 4, 7, 5, 2, 6, 1, 0], #29
144 % [3, 2, 5, 6, 7, 0, 1, 4]] #30
148 \caption{Les 5 fonctions booléennes $n=3$ aux temps de mélange les plus faibles.}\label{table:mixing:3}
152 Une analyse syntaxique de ces fonctions ne permet pas, à priori,
153 de déduire des règles permettant de construire de nouvelles
154 fonction dont le temps de mélange serait faible.
155 Cependant, le graphe $\textsc{giu}(f^*)$
156 (donné à la Figure~\ref{fig:iteration:f*})
157 est le $3$-cube dans lequel le cycle
158 $000,100,101,001,011,111,110,010,000$
159 a été enlevé. Dans cette figure, le le graphe $\textsc{giu}(f)$ est
160 en continu tandis que le cycle est en pointillés.
161 Ce cycle qui visite chaque n{\oe}ud exactement une fois est un
162 \emph{cycle hamiltonien}.
163 La matrice de Markov correspondante est donnée à
164 la figure~\ref{fig:markov:f*}.
165 On s'intéresse par la suite à la génération de ce genre de cycles.
173 \subfigure[Graphe $\textsc{giu}(f^*)$.
174 \label{fig:iteration:f*}]{
175 \begin{minipage}{0.55\linewidth}
177 \includegraphics[width=\columnwidth]{images/iter_f0d}%
180 \subfigure[Matrice de Markov associée à $\textsc{giu}(f^*)$
181 \label{fig:markov:f*}]{%
182 \begin{minipage}{0.35\linewidth}
187 M=\dfrac{1}{3} \left(
188 \begin{array}{llllllll}
203 % $ \dfrac{1}{4} \left(
204 % \begin{array}{cccccccc}
205 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
207 % 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
209 % 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
211 % 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
213 % 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
215 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
217 % 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
219 % 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
221 % \end{array} \right) $
229 \caption{Représentations de $f^*(x_1,x_2,x_3)=
230 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
231 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
241 % fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
248 \section{Suppression des cycles hamiltoniens}
249 \label{sec:hamiltonian}
251 Dans un premier temps, nous montrons %en section~\ref{sub:removing:theory}
253 suppression d'un cycle hamiltonien produit bien des matrices doublement
254 stochastiques. Nous établissons ensuite le lien avec les codes de Gray
257 %\subsubsection{Aspects théoriques}
258 %\label{sub:removing:theory}
260 Nous donnons deux résultats complémentaires, reliant la suppression d'un cycle
261 hamiltonien du $n$-cube, les matrices doublement stochastiques et la forte
262 connexité du graphe d'itérations.
264 \begin{theorem}\label{th:supprCH}
265 La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
266 $n$-cube, produit une matrice doublement stochastique.
270 Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
271 Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
272 une arête entrante $(o,v)$ et une arête sortante $(v,e)$
274 Considérons un autre $n$-cube $C_2$ auquel on ajoute les arêtes
275 pour le rendre complet. La matrice de Markov $M$ correspondante est
276 remplie de $\frac{1}{2^n}$ et est doublement stochastique.
277 Comme on enlève exactement une arête sortante $(v,e)$
278 à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans
279 $C_2$ les $2^{n-1}$ arêtes issues de $v$ et
280 relatives aux parties de $\{1,\ldots,n\}$ qui
281 contiennent $e$. Cela revient à annuler
282 dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter
283 $1/2$ à l'élément $M_{vv}$.
284 La matrice $M$ reste stochastique.
285 On effectue un raisonnement similaire pour les arêtes entrantes:
286 comme on enlève exactement une arête entrante $(o,v)$ pour chaque
287 n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement
288 $2^{n-1}$ arêtes menant à $v$ qui sont enlevées.
289 Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et
290 $M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
291 $M$ est donc doublement stochastique.
296 \begin{theorem}\label{th:grapheFC}
297 Le graphe d'itérations issu du $n$-cube, auquel un cycle hamiltonien est
298 enlevé, est fortement connexe.
303 On considère les deux $n$-cubes $C_1$ et $C_2$ définis
304 dans la preuve du théorème~\ref{th:supprCH}.
305 Dans $C_1$ on considère le cycle inverse $r$ du cycle
307 Aucun arc n'appartient à la fois à $r$ et à $c$:
308 en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
309 Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
310 Le cycle $r$ est évidement un cycle hamiltonien et contient tous les n{\oe}uds.
311 Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles
312 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{giu}$ qui
313 étend le précédent graphe est ainsi fortement connexe.
319 %Les preuves, relativement directes, sont laissées en exercices au lecteur.
320 La génération de cycles hamiltoniens dans le
321 $n$-cube, ce qui revient à trouver des \emph{codes de Gray cycliques}. On
322 rappelle que les codes de Gray sont des séquences de mots binaires de taille
323 fixe ($n$), dont les éléments successifs ne différent que par un seul bit. Un
324 code de Gray est \emph{cyclique} si le premier élément et le dernier ne
325 différent que par un seul bit.
327 \section{Lien avec les codes de Gray cycliques (totalement) équilibrés}
330 La borne inférieure du nombre de codes de Gray ($\left(\frac{n*\log2}{e \log
331 \log n}\times(1 - o(1))\right)^{2^n}$), donnée dans~\cite{Feder2009NTB},
332 indique une explosion combinatoire pour notre recherche. Afin de contourner
333 cette difficulté, nous nous restreignons aux codes induisant un graphe
334 d'itérations $\textsf{giu}(f)$ \emph{uniforme}. Cette uniformité se traduit par des
335 nombres d'arcs équilibrés entre les \emph{dimensions} du graphe, la dimension
336 $i$ correspondant aux seules variations du bit $i$ (parmi les $n$ bits au
337 total). Cette approche revient à chercher des codes de Gray cycliques
340 Un code de Gray équilibré peut être défini de la façon suivante :
342 \begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
343 Soit $L = w_1, w_2, \dots, w_{2^n}$ la séquence d'un code de Gray cyclique à
344 $n$ bits. Soit $S = s_1, s_2, \dots, s_{2^n}$ la séquence des transitions où
345 $s_i$, $1 \le i \le 2^n$ est l'indice du seul bit qui varie entre les mots
346 $w_i$ et $w_{i+1}$. Enfin, soit $\textit{NT}_n : \{1,\dots, n\} \rightarrow
347 \{0, \ldots, 2^n\}$ la fonction qui au paramètre $i$ associe le \emph{nombre
348 de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
349 le nombre d'occurrences de $i$ dans $S$.
351 Le code $L$ est \textbf{équilibré} si $\forall
352 i,j\in\{1,...,n\},~|\textit{NT}_n(i) - \textit{NT}_n(j)| \le 2$. Il est
353 \textbf{totalement équilibré} si $\forall
354 i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
357 On peut donc déjà déduire qu'il ne peut exister des codes de Gray totalement
358 équilibrés que pour les systèmes ayant un nombre d'éléments $n=2^k, k>0$. De
359 plus, comme dans tout code de Gray cyclique, $\textit{NT}_n(i)$ est pair
360 $\forall i\in\{1,...,n\}$, alors les systèmes ayant un nombre d'éléments
361 différent de $2^k$, ne peuvent avoir que des codes de Gray équilibrés avec
362 $\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$ ou
363 $\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil, \forall i\in\{1,...,n\}$ et
364 vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
367 Soit $L^*=000,100,101,001,011,111,110,010$ le code de Gray correspondant au
368 cycle hamiltonien enlevé de $f^*$. Sa séquence des transitions est \linebreak
369 $S=3,1,3,2,3,1,3,2$ et les nombres de transitions sont $\textit{TC}_3(1)=
370 \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
372 Si l'on considère maintenant $L^4=$ 0000, 0010, 0110, 1110, 1111, 0111, 0011,
373 0001, 0101, 0100, 1100, 1101, 1001, 1011, 1010, 1000, un code de Gray
374 cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4,
375 on constate que $\forall
376 i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que
377 ce code est totalement équilibré.
380 \section{Génération de codes de Gray équilibrés par induction}
381 \label{sec:induction}
383 Dans leur article de 2004~\cite{ZanSup04}, Zanten et Suparta proposent un
384 algorithme inductif pour générer des codes de Gray équilibrés de $n$ bits à
385 partir de codes de $n-2$ bits. Cependant, leur méthode n'est pas
386 constructive. En effet, elle effectue des manipulations sur un partitionnement du
387 code de Gray initial de $n-2$ bits pour obtenir un code de Gray sur $n$ bits,
388 mais le résultat n'est pas systématiquement équilibré. Il est donc nécessaire
389 d'évaluer les résultats obtenus à partir de tous les partitionnements réalisables
390 en suivant les contraintes spécifiées. Or, le nombre de possibilités augmente
391 exponentiellement (voir~\cite{Mons14} pour l'évaluation détaillée), ce qui rend
392 déraisonnable tout parcours exhaustif. Une amélioration proposée
393 dans~\cite{Mons14} permet de réduire le nombre de partitionnements considérés,
394 mais l'ordre de grandeur reste similaire. On constate donc clairement ici la
395 nécessité de trouver des algorithmes de génération de codes de Gray équilibrés
396 plus efficaces. Ce problème représente une des voies que nous souhaitons
397 explorer dans la suite de nos travaux.
399 Le tableau~\ref{table:nbFunc} donne le nombre de fonctions différentes
400 compatibles avec les codes de Gray équilibrés générés par l'approche précédente
401 selon le nombre de bits. Il donne donc la taille de la classe des générateurs
402 pouvant être produits. Les cas 7 et 8 ne sont que des bornes minimales basées
403 sur des sous-ensembles des partitionnements possibles.
407 \begin{tabular}{|l|c|c|c|c|c|}
409 $n$ & 4 & 5 & 6 & 7 & 8 \\
411 nb. de fonctions & 1 & 2 & 1332 & $>$ 2300 & $>$ 4500 \\
415 \caption{Nombre de codes de Gray équilibrés selon le nombre de bits.}\label{table:nbFunc}
419 Ces fonctions étant générée, on s'intéresse à étudier à quelle vitesse
420 un générateur les embarquant converge vers la distribution uniforme.
421 C'est l'objectif de la section suivante.
423 \section{Quantifier l'écart par rapport à la distribution uniforme}
424 On considère ici une fonction construite comme à la section précédente.
425 On s'intéresse ici à étudier de manière théorique les
426 itérations définies à l'équation~(\ref{eq:asyn}) pour une
428 Tout d'abord, celles-ci peuvent être interprétées comme une marche le long d'un
429 graphe d'itérations $\textsc{giu}(f)$ tel que le choix de tel ou tel arc est donné par la
431 On remarque que ce graphe d'itération est toujours un sous graphe
432 du ${\mathsf{N}}$-cube augmenté des
433 boucles sur chaque sommet, \textit{i.e.}, les arcs
434 $(v,v)$ pour chaque $v \in \Bool^{\mathsf{N}}$.
435 Ainsi, le travail ci dessous répond à la question de
436 définir la longueur du chemin minimum dans ce graphe pour
437 obtenir une distribution uniforme.
438 Ceci se base sur la théorie des chaînes de Markov.
440 générale à ce sujet on pourra se référer
441 au livre~\cite{LevinPeresWilmer2006},
442 particulièrement au chapitre sur les temps d'arrêt.
448 On considère par exemple le graphe $\textsc{giu}(f)$ donné à la
449 \textsc{Figure~\ref{fig:iteration:f*}.} et la fonction de
450 probabilités $p$ définie sur l'ensemble des arcs comme suit:
454 = \frac{2}{3} \textrm{ si $e=(v,v)$ avec $v \in \Bool^3$,}\\
455 = \frac{1}{6} \textrm{ sinon.}
459 La matrice $P$ de la chaîne de Markov associée à $f^*$
462 P=\dfrac{1}{6} \left(
463 \begin{array}{llllllll}
480 Tout d'abord, soit $\pi$ et $\mu$ deux distributions sur
481 $\Bool^{\mathsf{N}}$.
482 La distance de \og totale variation\fg{} entre $\pi$ et $\mu$
483 est notée $\tv{\pi-\mu}$ et est définie par
484 $$\tv{\pi-\mu}=\max_{A\subset \Bool^{\mathsf{N}}} |\pi(A)-\mu(A)|.$$
486 $$\tv{\pi-\mu}=\frac{1}{2}\sum_{X\in\Bool^{\mathsf{N}}}|\pi(X)-\mu(X)|.$$
488 $\nu$ est une distribution on $\Bool^{\mathsf{N}}$, on a
489 $$\tv{\pi-\mu}\leq \tv{\pi-\nu}+\tv{\nu-\mu}.$$
491 Soit $P$ une matrice d'une chaîne de Markov sur $\Bool^{\mathsf{N}}$.
492 $P(X,\cdot)$ est la distribution induite par la $X^{\textrm{ème}}$ colonne
494 Si la chaîne de Markov induite par
495 $P$ a une distribution stationnaire $\pi$, on définit alors
496 $$d(t)=\max_{X\in\Bool^{\mathsf{N}}}\tv{P^t(X,\cdot)-\pi}$$
500 $$t_{\rm mix}(\varepsilon)=\min\{t \mid d(t)\leq \varepsilon\}.$$
502 Un résultat classique est
504 $$t_{\rm mix}(\varepsilon)\leq \lceil\log_2(\varepsilon^{-1})\rceil t_{\rm mix}(\frac{1}{4})$$
509 Soit $(X_t)_{t\in \mathbb{N}}$ une suite de variables aléatoires de
510 $\Bool^{\mathsf{N}}$.
511 une variable aléatoire $\tau$ dans $\mathbb{N}$ est un
512 \emph{temps d'arrêt} pour la suite
513 $(X_i)$ si pour chaque $t$ il existe $B_t\subseteq
514 (\Bool^{\mathsf{N}})^{t+1}$ tel que
515 $\{\tau=t\}=\{(X_0,X_1,\ldots,X_t)\in B_t\}$.
516 En d'autres termes, l'événement $\{\tau = t \}$ dépend uniquement des valeurs
518 $(X_0,X_1,\ldots,X_t)$, et non de celles de $X_k$ pour $k > t$.
521 Soit $(X_t)_{t\in \mathbb{N}}$ une chaîne de Markov et
522 $f(X_{t-1},Z_t)$ une représentation fonctionnelle de celle-ci.
523 Un \emph{temps d'arrêt aléatoire} pour la chaîne de
524 Markov est un temps d'arrêt pour
525 $(Z_t)_{t\in\mathbb{N}}$.
526 Si la chaîne de Markov est irréductible et a $\pi$
527 comme distribution stationnaire, alors un
528 \emph{temps stationnaire} $\tau$ est temps d'arrêt aléatoire
529 (qui peut dépendre de la configuration initiale $X$),
530 tel que la distribution de $X_\tau$ est $\pi$:
531 $$\P_X(X_\tau=Y)=\pi(Y).$$
534 Un temps d'arrêt $\tau$ est qualifié de \emph{fort} si $X_{\tau}$
535 est indépendant de $\tau$. On a les deux théorèmes suivants, dont les
536 démonstrations sont données en annexes~\ref{anx:generateur}.
540 Si $\tau$ est un temps d'arrêt fort, alors $d(t)\leq \max_{X\in\Bool^{\mathsf{N}}}
544 \begin{theorem} \label{prop:stop}
545 If $\ov{h}$ is bijective et telle que if for every $X\in \Bool^{\mathsf{N}}$,
546 $\ov{h}(\ov{h}(X))\neq X$, alors
547 $E[\ts]\leq 8{\mathsf{N}}^2+ 4{\mathsf{N}}\ln ({\mathsf{N}}+1)$.
550 Sans entrer dans les détails de la preuve, on remarque tout d'abord
552 de cette borne n'intègre pas le fait qu'on préfère enlever des
553 chemins hamiltoniens équilibrés.
554 En intégrant cette contrainte, la borne supérieure pourrait être réduite.
556 On remarque ensuite que la chaîne de Markov proposée ne suit pas exactement
557 l'algorithme~\ref{CI Algorithm}. En effet dans la section présente,
558 la probabilité de rester dans une configuration donnée
559 est fixée à $frac{1}{2}+\frac{1}{2n}$.
560 Dans l'algorithme initial, celle-ci est de ${1}{n}$.
561 Cette version, qui reste davantage sur place que l'algorithme original,
562 a été introduite pour simplifier le calcul de la borne sup
568 \section{Et les itérations généralisées?}
569 Le chaptire précédent a présenté un algorithme de
570 PRNG construit à partir d'itérations unaires.
571 On pourrait penser que cet algorithme est peu efficace puisqu'il
572 dispose d'une fonction $f$ de $\Bool^n$ dans lui même mais il ne modifie à
573 chaque itération qu'un seul élément de $[n]$.
574 On pourrait penser à un algorithme basé sur les itérations généralisées,
575 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque
577 C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
579 \begin{algorithm}[ht]
581 \KwIn{une fonction $f$, un nombre d'itérations $b$,
582 une configuration initiale $x^0$ ($n$ bits)}
583 \KwOut{une configuration $x$ ($n$ bits)}
588 $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$\;
589 $x\leftarrow{F_{f_g}(s,x)}$\;
593 \caption{PRNG basé sur les itérations généralisées.}
594 \label{CI Algorithm:prng:g}
597 Par rapport à l'algorithme~\ref{CI Algorithm} seule
598 la ligne $s\leftarrow{\textit{Set}(\textit{Random}(2^n))}$ est différente.
599 Dans celle-ci la fonction $\textit{Set} : \{1,\ldots,2^n\} \rightarrow
600 \mathcal{P}(\{1,\ldots n\})$ retourne l'ensemble dont la fonction
601 caractéristique serait représentée par le nombre donné en argument.
602 Par exemple, pour $n=3$, l'ensemble $\textit{Set}(6)$ vaudraitt $\{3,2\}$.
603 On remarque aussi que l'argument de la fonction $\textit{Random}$
604 passe de $n$ à $2^n$.
606 On a le théorème suivant qui étend le théorème~\ref{thm:prng:u} aux itérations
609 \begin{theorem}\label{thm:prng:g}
610 Soit $f: \Bool^{n} \rightarrow \Bool^{n}$, $\textsc{gig}(f)$ son
611 graphe des itérations généralisées, $\check{M}$ la matrice d'adjacence
612 correspondante à ce graphe
613 et $M$ une matrice $2^n\times 2^n$
615 $M = \dfrac{1}{2^n} \check{M}$.
616 Si $\textsc{gig}(f)$ est fortement connexe, alors
617 la sortie du générateur de nombres pseudo aléatoires détaillé par
618 l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui
619 tend vers la distribution uniforme si
620 et seulement si $M$ est une matrice doublement stochastique.
623 La preuve de ce théorème est la même que celle du théorème~\ref{thm:prng:u}.
624 Elle n'est donc pas rappelée.
628 On reprend l'exemple donné à la section~\ref{sec:plc}.
629 Dans le $3$-cube, le cycle hamiltonien défini par la séquence
630 $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant
631 la fonction $f^*$ définie par
633 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
634 \overline{x_1}.\overline{x_3} + x_1x_2).
637 Le graphe $\textsc{gig}(f^*)$ est représenté à la
638 Figure~\ref{fig:iteration:f*}.
639 La matrice de Markov $M$ correspondante est donnée à
640 la figure~\ref{fig:markov:f*}.
644 \subfigure[Graphe $\textsc{gig}(f^*)$
645 \label{fig:iteration:f*}]{
646 \begin{minipage}{0.55\linewidth}
648 \includegraphics[width=\columnwidth]{images/iter_f}%
651 \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
652 \label{fig:markov:f*}]{%
653 \begin{minipage}{0.35\linewidth}
656 $ \dfrac{1}{4} \left(
657 \begin{array}{cccccccc}
658 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
660 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
662 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
664 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
666 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
668 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
670 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
672 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
674 \end{array} \right) $
679 \caption{Représentations de $f^*(x_1,x_2,x_3)=
680 (x_2 \oplus x_3, \overline{x_1}.\overline{x_3} + x_1\overline{x_2},
681 \overline{x_1}.\overline{x_3} + x_1x_2)$.}\label{fig1}
691 \begin{tabular}{|c|l|c|c|}
693 fonction & $f(x)$, $f(x)$ pour $x \in [0,1,2,\hdots,2^n-1]$ & $b$ & $b'$ \\
695 $f^{*4}$ & [13,10,9,14,3,11,1,12,15,4,7,5,2,6,0,8] & 17 & 38 \\
697 $f^{*5}$ & [29, 22, 25, 30, 19, 27, 24, 16, 21, 6, 5, 28, 23, 26, 1, & 13 & 48 \\
698 & 17, 31, 12, 15, 8, 10, 14, 13, 9, 3, 2, 7, 20, 11, 18, 0, 4] & & \\
700 $f^{*6}$ & [55, 60, 45, 44, 58, 62, 61, 48, 53, 50, 52, 36, 59, 34, 33, & 11 & 55 \\
701 & 49, 15, 42, 47, 46, 35, 10, 57, 56, 7, 54, 39, 37, 51, 2, 1, & & \\
702 & 40, 63, 26, 25, 30, 19, 27, 17, 28, 31, 20, 23, 21, 18, 22, & & \\
703 & 16, 24, 13, 12, 29, 8, 43, 14, 41, 0, 5, 38, 4, 6, 11, 3, 9, 32] & & \\
705 $f^{*7}$ & [111, 94, 93, 116, 122, 114, 125, 88, 87, 126, 119, 84, 123, & 10 & 63 \\
706 & 98, 81, 120, 109, 106, 105, 110, 99, 107, 104, 108, 101, 70, & & \\
707 & 117, 96, 67, 102, 113, 64, 79, 30, 95, 124, 83, 91, 121, 24, & & \\
708 & 23, 118, 69, 20, 115, 90, 17, 112, 77, 14, 73, 78, 74, 10, 72, & & \\
709 & 76, 103, 6, 71, 100, 75, 82, 97, 0, 127, 54, 57, 62, 51, 59, & & \\
710 & 56, 48, 53, 38, 37, 60, 55, 58, 33, 49, 63, 44, 47, 40, 42, & & \\
711 & 46, 45, 41, 35, 34, 39, 52, 43, 50, 32, 36, 29, 28, 61, 92, & & \\
712 & 26, 18, 89, 25, 19, 86, 85, 4, 27, 2, 16, 80, 31, 12, 15, 8, & & \\
713 & 3, 11, 13, 9, 5, 22, 21, 68, 7, 66, 65, 1] & & \\
715 $f^{*8}$ &[223, 190, 249, 254, 187, 251, 233, 232, 183, 230, 247, 180,& 9 & 72 \\
716 & 227, 178, 240, 248, 237, 236, 253, 172, 203, 170, 201, 168, &&\\
717 & 229, 166, 165, 244, 163, 242, 241, 192, 215, 220, 205, 216, &&\\
718 & 218, 222, 221, 208, 213, 210, 212, 214, 219, 211, 217, 209, &&\\
719 & 239, 202, 207, 140, 139, 234, 193, 204, 135, 196, 199, 132, &&\\
720 & 194, 130, 225, 200, 159, 62, 185, 252, 59, 250, 169, 56, 191,&&\\
721 & 246, 245, 52, 243, 50, 176, 48, 173, 238, 189, 44, 235, 42, &&\\
722 & 137, 184, 231, 38, 37, 228, 35, 226, 177, 224, 151, 156, 141,&&\\
723 & 152, 154, 158, 157, 144, 149, 146, 148, 150, 155, 147, 153, &&\\
724 & 145, 175, 206, 143, 136, 11, 142, 129, 8, 7, 198, 197, 4, 195, &&\\
725 & 2, 161, 160, 255, 124, 109, 108, 122, 126, 125, 112, 117, 114, &&\\
726 & 116, 100, 123, 98, 97, 113, 79, 106, 111, 110, 99, 74, 121, 120,&&\\
727 & 71, 118, 103, 101, 115, 66, 65, 104, 127, 90, 89, 94, 83, 91, 81,&&\\
728 & 92, 95, 84, 87, 85, 82, 86, 80, 88, 77, 76, 93, 72, 107, 78, 105, &&\\
729 & 64, 69, 102, 68, 70, 75, 67, 73, 96, 55, 58, 45, 188, 51, 186, 61, &&\\
730 & 40, 119, 182, 181, 53, 179, 54, 33, 49, 15, 174, 47, 60, 171, && \\
731 & 46, 57, 32, 167, 6, 36, 164, 43, 162, 1, 0, 63, 26, 25, 30, 19,&&\\
732 & 27, 17, 28, 31, 20, 23, 21, 18, 22, 16, 24, 13, 10, 29, 14, 3, &&\\
733 &138, 41, 12, 39, 134, 133, 5, 131, 34, 9, 128]&&\\
738 \label{table:functions}
739 \caption{Fonctions avec matrices DSCC et le plus faible temps de mélange.}
743 Le tableau~\ref{table:functions} reprend une synthèse de
744 fonctions qui ont été générées selon la méthode détaillée
745 à la section~\ref{sec:hamiltonian}.
746 Pour chaque nombre $n=3$, $4$, $5$ et $6$,
747 tous les cycles hamiltoniens non isomorphes ont été générés. Pour les
748 valeur de $n=7$ et $8$, seules $10^{5}$ cycles ont été évalués. Parmi
749 toutes les fonctions obtenues en enlevant du $n$-cube ces cycles, n'ont été
750 retenues que celles qui minimisaient le temps de mélange relatif à une valeur de
751 $\epsilon$ fixée à $10^{-8}$.
752 Ce nombre d'itérations (\textit{i.e.}, ce temps de mélange)
753 est stocké dans la troisième
754 colonne sous la variable $b$.
755 La variable $b'$ reprend le temps de mélange pour
756 l'algorithme~\ref{CI Algorithm}.
758 Un premier résultat est que ce nouvel algorithme réduit grandement le nombre
759 d'itérations suffisant pour obtenir une faible déviation par rapport à une
760 distribution uniforme. On constate de plus que ce nombre décroit avec
761 le nombre d'éléments alors qu'il augmente dans l'approche initiale où
764 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre
765 de configurations qu'on ne peut pas atteindre en une itération est de:
767 \item $2^n-n$ en unaire. Ceci représente un rapport de
768 $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$
769 de toutes les configurations; plus $n$ est grand,
770 plus ce nombre est proche de $1$, et plus grand devient le nombre
771 d'itérations nécessaires pour atteinte une déviation faible;
772 \item $2^n-2^{n-1}$ dans le cas généralisé,
773 soit la moitié de toutes les configurations
774 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.
777 Cependant, dans le cas généralisé, chaque itération a une complexité
778 plus élevée puisqu'il est nécessaire d'invoquer un générateur
779 produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit
780 que celui-ci soit dans $[n]$ dans le cas unaire.
781 Pour comparer les deux approches,
782 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).
784 Dans le cas généralisé, si l'on effectue $b$ itérations,
785 à chacune d'elles, la stratégie génère un nombre entre
786 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
787 On fait donc au total $b*n$ appels pour $n$ bits et
788 donc $b$ appels pour 1 bit généré en moyenne.
789 Dans le cas unaire, si l'on effectue $b'$ itérations,
790 à chacune d'elle, la stratégie génère un nombre entre
792 Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne.
793 La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
794 donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
795 Le tableau~\ref{table:marchevssaute} donne des instances de
796 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions
797 données au tableau~\ref{table:functions}.
798 On constate que le nombre d'appels par bit généré décroit avec $n$ dans le
799 cas des itérations généralisées et est toujours plus faible
800 que celui des itérations unaires.
806 \begin{array}{|l|l|l|l|l|l|}
808 \textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\
810 \textrm{Unaires} & 19.0 & 22.2905097109 & 23.6954895899 & 25.2661942985 & 27.0\\
812 \textrm{Généralisées} & 17 & 13 & 11 & 10 & 9\\
816 \caption{Nombre moyen
817 d'appels à un générateurs binaire par bit généré}\label{table:marchevssaute}
823 \section{Tests statistiques}
825 La qualité des séquences aléatoires produites par
826 le générateur des itérations unaires ainsi que
827 celles issues des itérations généralisées a été évaluée à travers la suite
828 de tests statistiques développée par le
829 \emph{National Institute of Standards and Technology} (NIST).
830 Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
832 qui est plus grande que $1\%$ signifie
833 que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
838 Le tableau~\ref{fig:TEST} donne une vision synthétique de toutes
839 ces expérimentations.
840 L'expérience a montré notamment que toutes ces fonctions
841 passent avec succès cette batterie de tests.
846 %%%%%%%%% Relancer pour n=6, n=7, n=8
847 %%%%%%%%% Recalculer le MT
848 %%%%%%%%% Regenerer les 10^6 bits
849 %%%%%%%%% Evaluer sur NIST
854 \begin{tabular}{|*{5}{c|}}
856 Test & $f^{*4}$ & $f^{*5}$ & $f^{*6}$ & $f^{*7}$ \\ \hline
857 Fréquence (Monobit) & 0.025 (0.99) & 0.066 (1.0) & 0.319 (0.99) & 0.001 (1.0) \\ \hline
858 Fréquence / bloc & 0.401 (0.99) & 0.867 (1.0) & 0.045 (0.99) & 0.085 (0.99) \\ \hline
859 Somme Cumulé* & 0.219 (0.995) & 0.633 (1.0) & 0.635 (1.0) & 0.386 (0.99) \\ \hline
860 Exécution & 0.964 (0.98) & 0.699 (0.99) & 0.181 (0.99) & 0.911 (0.98) \\ \hline
861 Longue exécution dans un bloc & 0.137 (0.99) & 0.964 (1.0) & 0.145 (0.99) & 0.162 (0.98) \\ \hline
862 Rang & 0.616 (0.99) & 0.678 (1.0) & 0.004 (1.0) & 0.816 (1.0) \\ \hline
863 Fourier rapide & 0.048 (0.99) & 0.637 (0.97) & 0.366 (0.99) & 0.162 (0.99) \\ \hline
864 Patron sans superposition* & 0.479 (0.988) & 0.465 (0.989) & 0.535 (0.989) & 0.499 (0.989) \\ \hline
865 Patron avec superposition & 0.897 (1.0) & 0.657 (0.97) & 0.897 (0.98) & 0.236 (0.99) \\ \hline
866 Statistiques universelles & 0.991 (0.98) & 0.657 (0.98) & 0.102 (0.98) & 0.719 (0.98) \\ \hline
867 Entropie approchée (m=10) & 0.455 (1.0) & 0.964 (1.0) & 0.162 (1.0) & 0.897 (0.98) \\ \hline
868 Suite aléatoire * & 0.372 (0.993) & 0.494 (0.986) & 0.243 (0.992) & 0.258 (0.993) \\ \hline
869 Suite aléatoire variante * & 0.496 (0.989) & 0.498 (0.992) & 0.308 (0.983) & 0.310 (0.999) \\ \hline
870 Série* (m=10) & 0.595 (0.995) & 0.289 (0.975) & 0.660 (0.995) & 0.544 (0.99) \\ \hline
871 Complexité linaire & 0.816 (1.0) & 0.897 (0.98) & 0.080 (0.98) & 0.798 (1.0) \\ \hline
876 \caption{Test de NIST réalisé sur les fonctions $f^*$ détaillées au tableau~\label{table:functions}}