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érér 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 chque 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 chque 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 poduits). il pourrait théoriquement être
49 traité par desdémarches de programation 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 pourles 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}
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'éfficience de l'algorithme de backtrack natif de PROLOG.
110 Cependant, pour des valeurs de $n$ petites, nous avons
111 comparé les fonctions non équivalantes selon leur proportion
112 à engendrer des temps de mélange petits (cf. équation~\ref{eq:mt:ex}).
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}
185 $ \dfrac{1}{4} \left(
186 \begin{array}{cccccccc}
187 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
189 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
191 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
193 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
195 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
197 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
199 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
201 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
203 \end{array} \right) $
208 \caption{Représentations de $f^*(x_1,x_2,x_3)=
209 (x_2 \oplus x_3, \overline{x_1}\overline{x_3} + x_1\overline{x_2},
210 \overline{x_1}\overline{x_3} + x_1x_2)$.}\label{fig1}
220 fortement connexes et doublement stochastiques}
226 \subsection{Suppression des cycles hamiltoniens}
227 \label{sec:hamiltonian}
229 Dans un premier temps, nous montrons en section~\ref{sub:removing:theory} que la
230 suppression d'un cycle hamiltonien produit bien des matrices doublement
231 stochastiques. Nous établissons ensuite le lien avec les codes de Gray
234 \subsubsection{Aspects théoriques}
235 \label{sub:removing:theory}
237 Nous donnons deux résultats complémentaires, reliant la suppression d'un cycle
238 hamiltonien du $n$-cube, les matrices doublement stochastiques et la forte
239 connexité du graphe d'itérations.
241 \begin{theorem}\label{th:supprCH}
242 La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
243 $n$-cube, produit une matrice doublement stochastique.
247 Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
248 Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
249 une arête entrante $(o,v)$ et une arête sortante $(v,e)$
251 Considérons un autre $n$-cube $C_2$ auquel on ajoute les arêtes
252 pour le rendre complet. La matrice de Markov $M$ correspondante est
253 remplie de $\frac{1}{2^n}$ et est doublement stochastique.
254 Comme on enlève exactement une arête sortante $(v,e)$
255 à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans
256 $C_2$ les $2^{n-1}$ arêtes issues de $v$ et
257 relatives aux parties de $\{1,\ldots,n\}$ qui
258 contiennent $e$. Cela revient à annuler
259 dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter
260 $1/2$ à l'élément $M_{vv}$.
261 La matrice $M$ reste stochastique.
262 On effectue un raisonnement similaire pour les arêtes entrantes:
263 comme on enlève exactement une arête entrante $(o,v)$ pour chaque
264 n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement
265 $2^{n-1}$ arêtes menant à $v$ qui sont enlevées.
266 Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et
267 $M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
268 $M$ est donc doublement stochastique.
273 \begin{theorem}\label{th:grapheFC}
274 Le graphe d'itérations issu du $n$-cube, auquel un cycle hamiltonien est
275 enlevé, est fortement connexe.
280 On considère les deux $n$-cubes $C_1$ et $C_2$ définis
281 dans la preuve du théorème~\ref{th:supprCH}.
282 Dans $C_1$ on considère le cycle inverse $r$ du cycle
284 Aucun arc n'appartient à la fois à $r$ et à $c$:
285 en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
286 Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
287 Le cycle $r$ est évidement un cycle hamiltonien et contient tous les n{\oe}uds.
288 Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles
289 depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{giu}$ qui
290 étend le précédent graphe est ainsi fortement connexe.
296 Les preuves, relativement directes, sont laissées en exercices au lecteur. Par
297 contre, ce qui est moins aisé est la génération de cycles hamiltoniens dans le
298 $n$-cube, ce qui revient à trouver des \emph{codes de Gray cycliques}. On
299 rappelle que les codes de Gray sont des séquences de mots binaires de taille
300 fixe ($n$), dont les éléments successifs ne différent que par un seul bit. Un
301 code de Gray est \emph{cyclique} si le premier élément et le dernier ne
302 différent que par un seul bit.
304 \subsection{Lien avec les codes de Gray cycliques (totalement) équilibrés}
307 La borne inférieure du nombre de codes de Gray ($\left(\frac{n*\log2}{e \log
308 \log n}\times(1 - o(1))\right)^{2^n}$), donnée dans~\cite{Feder2009NTB},
309 indique une explosion combinatoire pour notre recherche. Afin de contourner
310 cette difficulté, nous nous restreignons aux codes induisant un graphe
311 d'itérations $\textsf{giu}(f)$ \emph{uniforme}. Cette uniformité se traduit par des
312 nombres d'arcs équilibrés entre les \emph{dimensions} du graphe, la dimension
313 $i$ correspondant aux seules variations du bit $i$ (parmi les $n$ bits au
314 total). Cette approche revient à chercher des codes de Gray cycliques
317 Un code de Gray équilibré peut être défini de la façon suivante :
319 \begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
320 Soit $L = w_1, w_2, \dots, w_{2^n}$ la séquence d'un code de Gray cyclique à
321 $n$ bits. Soit $S = s_1, s_2, \dots, s_{2^n}$ la séquence des transitions où
322 $s_i$, $1 \le i \le 2^n$ est l'indice du seul bit qui varie entre les mots
323 $w_i$ et $w_{i+1}$. Enfin, soit $\textit{NT}_n : \{1,\dots, n\} \rightarrow
324 \{0, \ldots, 2^n\}$ la fonction qui au paramètre $i$ associe le \emph{nombre
325 de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
326 le nombre d'occurrences de $i$ dans $S$.
328 Le code $L$ est \textbf{équilibré} si $\forall
329 i,j\in\{1,...,n\},~|\textit{NT}_n(i) - \textit{NT}_n(j)| \le 2$. Il est
330 \textbf{totalement équilibré} si $\forall
331 i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
334 On peut donc déjà déduire qu'il ne peut exister des codes de Gray totalement
335 équilibrés que pour les systèmes ayant un nombre d'éléments $n=2^k, k>0$. De
336 plus, comme dans tout code de Gray cyclique, $\textit{NT}_n(i)$ est pair
337 $\forall i\in\{1,...,n\}$, alors les systèmes ayant un nombre d'éléments
338 différent de $2^k$, ne peuvent avoir que des codes de Gray équilibrés avec
339 $\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$ ou
340 $\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil, \forall i\in\{1,...,n\}$ et
341 vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
344 Soit $L^*=000,100,101,001,011,111,110,010$ le code de Gray correspondant au
345 cycle hamiltonien enlevé de $f^*$. Sa séquence des transitions est \linebreak
346 $S=3,1,3,2,3,1,3,2$ et les nombres de transitions sont $\textit{TC}_3(1)=
347 \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
349 Si l'on considère maintenant $L^4=$ 0000, 0010, 0110, 1110, 1111, 0111, 0011,
350 0001, 0101, 0100, 1100, 1101, 1001, 1011, 1010, 1000, un code de Gray
351 cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4,
352 on constate que $\forall
353 i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que
354 ce code est totalement équilibré.
357 \subsection{Génération de codes de Gray équilibrés par induction}
358 \label{sec:induction}
360 Dans leur article de 2004~\cite{ZanSup04}, Zanten et Suparta proposent un
361 algorithme inductif pour générer des codes de Gray équilibrés de $n$ bits à
362 partir de codes de $n-2$ bits. Cependant, leur méthode n'est pas
363 constructive. En effet, elle effectue des manipulations sur un partitionnement du
364 code de Gray initial de $n-2$ bits pour obtenir un code de Gray sur $n$ bits,
365 mais le résultat n'est pas systématiquement équilibré. Il est donc nécessaire
366 d'évaluer les résultats obtenus à partir de tous les partitionnements réalisables
367 en suivant les contraintes spécifiées. Or, le nombre de possibilités augmente
368 exponentiellement (voir~\cite{Mons14} pour l'évaluation détaillée), ce qui rend
369 déraisonnable tout parcours exhaustif. Une amélioration proposée
370 dans~\cite{Mons14} permet de réduire le nombre de partitionnements considérés,
371 mais l'ordre de grandeur reste similaire. On constate donc clairement ici la
372 nécessité de trouver des algorithmes de génération de codes de Gray équilibrés
373 plus efficaces. Ce problème représente une des voies que nous souhaitons
374 explorer dans la suite de nos travaux.
376 Le tableau~\ref{table:nbFunc} donne le nombre de fonctions différentes
377 compatibles avec les codes de Gray équilibrés générés par l'approche précédente
378 selon le nombre de bits. Il donne donc la taille de la classe des générateurs
379 pouvant être produits. Les cas 7 et 8 ne sont que des bornes minimales basées
380 sur des sous-ensembles des partitionnements possibles.
384 \begin{tabular}{|l|c|c|c|c|c|}
386 $n$ & 4 & 5 & 6 & 7 & 8 \\
388 nb. de fonctions & 1 & 2 & 1332 & > 2300 & > 4500 \\
392 \caption{Nombre de générateurs selon le nombre de bits.}\label{table:nbFunc}
396 \section{Quantifier l'écart par rapport à la distribution uniforme}