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