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