]> AND Private Git Repository - hdrcouchot.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout de 14secrypt
authorJean-François Couchot <couchot@bilbo.iut-bm.univ-fcomte.fr>
Tue, 21 Jul 2015 14:13:25 +0000 (16:13 +0200)
committerJean-François Couchot <couchot@bilbo.iut-bm.univ-fcomte.fr>
Tue, 21 Jul 2015 14:13:25 +0000 (16:13 +0200)
14Secrypt.tex [new file with mode: 0644]

diff --git a/14Secrypt.tex b/14Secrypt.tex
new file mode 100644 (file)
index 0000000..b7cb0d3
--- /dev/null
@@ -0,0 +1,396 @@
+On  a vu  dans  le chapitre précédent  que  pour avoir
+un  générateur à  sortie
+uniforme, il est nécessaire que  la matrice d'adjacence du graphe d'itération du
+système  soit doublement stochastique.   Nous présentons  dans cette  partie une
+méthode permettant de générer de telles matrices.
+
+Les approches théoriques basées sur la programmation logique par contraintes sur
+domaines  finis ne  sont pas  envisageables en  pratique dès  que la  taille des
+matrices considérées devient suffisamment grande.
+
+Une approche plus pragmatique consiste  à supprimer un cycle hamiltonien dans le
+graphe d'itérations, ce qui revient à supprimer en chaque n{\oe}ud de ce graphe une
+arête sortante et une arête entrante.
+
+
+This aim of this section is to show 
+that finding DSSC matrices from a hypercube
+is a typical finite domain satisfaction 
+problem, classically denoted as 
+Constraint Logic Programming on Finite Domains (CLPFD). 
+This part is addressed in the first section. Next, we analyse the first
+results to provide a generation of DSSC matrices with small mixing times. 
+
+\section{Programmation logique par contraintes sur des domaines finis}
+Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments. 
+Pour éviter d'avoir à gérér des fractions, on peut considérer que 
+les matrices (d'incidence) à générer ont des lignes et des colonnes dont les 
+sommes valent ${\mathsf{N}}$ à chaque fois.  
+On cherche ainsi toutes les matrices $M$ de taille  $2^{\mathsf{N}}\times 2^{\mathsf{N}}$ telles que 
+  
+\begin{enumerate}
+\item $M_{ij}$ vaut 0 si $j$ n'est pas un voisin de $i$, \textit{i.e.},
+  il n'y a pas d'arc de $i$ à $j$ dans le graphe $\textsc{giu}(f)$;
+
+\item $0 \le M_{ii} \le {\mathsf{N}}$: le nombre de boucles autour de chaque 
+configuration $i$ est inférieur à ${\mathsf{N}}$;
+
+\item pour $j \neq i$,  $0 \le M_{ij} \le 1$: on construit l'arc de $i$ à $j$ 
+si et seulement si $M_{ij}$ vaut 1 (et 0 sinon)
+\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}$: 
+la matrice est stochastique à droite; 
+\item pour chque indice de colonne $j$, 
+  $1 \le j\le 2^{\mathsf{N}}$, ${\mathsf{N}} = \sum_{1 \le i\le 2^{\mathsf{N}}} M_{ij}$: 
+  la matrice est stochastique à gauche;
+\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;
+\end{enumerate}
+Ce problème s'exprime sur des domaines finis entiers avec des opérateurs  
+arithmétiques simples (sommes et poduits). il pourrait théoriquement être 
+traité par desdémarches de programation logique par contrainte
+sur des domaines finis (comme en PROLOG).
+L'algorithme donné en Figure~\ref{fig:prolog}
+est en effet le c{\oe}ur du programme PROLOG 
+qui pourrait être utilisé pour instancier toutes les solutions,
+ici pour  $\mathsf{N} = 2$. Dans ce code, 
+\verb+mmult(+$X,Y,R$\verb+)+ et 
+\verb+summ(+$X,Y,R$\verb+)+ 
+valent True si et seulement si $R$ 
+est le produit matriciel  (ou la somme matricielle) 
+entre  $X$ and $Y$ respectivement. 
+il n'est pas difficile d'adapter ce code à n'importe quelle valeur 
+entière naturelle  $\mathsf{N}$.  
+
+\begin{figure}[ht]
+\begin{scriptsize}
+\lstset{language=prolog}
+\begin{lstlisting}
+bistoc(X):-
+  M=[[M0_0, M0_1, 0, M0_3], [M1_0, M1_1, 0, M1_3], 
+     [M2_0, 0, M2_2, M2_3], [0, M3_1, M3_2, M3_3]],
+  [M0_0, M1_1, M2_2, M3_3] ins 0..2,
+  [M0_1, M0_3, M1_0, M1_3, M2_0, M2_3, M3_1, M3_2] 
+     ins 0..1,
+  M0_0+ M0_1+ M0_2 #=2, M1_0+ M1_1+ M1_3 #=2,
+  M2_0+ M2_2+ M2_3 #=2, M3_1+ M3_2+ M3_3 #=2,
+  M0_0+ M1_0+ M2_0 #=2, M0_1+ M1_1+ M3_1 #=2, 
+  M0_2+ M2_2+ M3_2 #=2, M1_3+ M2_3+ M3_3 #=2,
+  mmult(M,M,M2),
+  mmult(M,M2,M3),
+  mmult(M,M3,M4),
+  summ(M,M2,S2),
+  summ(S2,M3,S3),
+  summ(S3,M4,S4),
+  allpositive(S4).
+\end{lstlisting}
+\end{scriptsize}
+\caption{Prolog Problem to Find DSSC Matrix when $n=2$}\label{fig:prolog}
+\end{figure}
+
+Enfin, on définit la relation $\mathcal{R}$, qui est établie pourles deux 
+fonctions  $f$ et $g$ si leur graphes 
+respectifs  $\textsf{giu}(f)$ et $\textsf{giu}(g)$ 
+sont isomorphes.
+C'est évidemment une relation d'équivalence.
+
+
+
+\subsection{Analyse de l'approche}
+Exécutée sur un ordinateur personnelle, PROLOG trouve 
+en moins d'une seconde les
+49 solutions pour  $n=2$, 
+dont 2 seulement ne sont pas équivalentes, 
+en moins d'une minute les 27642 solutions dont seulement 111 ne 
+sont pas équivalentes pour $n=3$.
+Cependant, l'approche ne permet pas d'engendrer toutes les solutions 
+pour $n=4$.
+Cette approche, basée sur une démarche de type \emph{générer, tester} ne peut 
+pas être retenue pour $n$ de grande taille, même 
+en s'appuyant sur l'éfficience de l'algorithme de backtrack natif de PROLOG.
+
+Cependant, pour des valeurs de $n$ petites, nous avons 
+comparé les fonctions non équivalantes selon leur proportion
+à engendrer des temps de mélange petits (cf. équation~\ref{eq:mt:ex}).
+
+
+
+
+\begin{xpl}
+Le tableau~\ref{table:mixing:3} fournit les 5 fonctions booléennes 
+qui ont les temps de mélange les plus petits pour $\varepsilon=10^{-5}$. 
+\begin{table}[ht]
+\begin{small}
+$$
+\begin{array}{|l|l|l|}
+\hline
+\textrm{Name} & \textrm{Image} & \textrm{MT}\\
+\hline
+f^a &  (x_2 \oplus x_3, x_1 \oplus \overline{x_3},\overline{x_3})  &  16   \\
+\hline
+f^*  &  (x_2 \oplus x_3, \overline{x_1}\overline{x_3} + x_1\overline{x_2},
+\overline{x_1}\overline{x_3} + x_1x_2)  &  17   \\
+\hline
+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}, &  \\
+& \qquad \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2)  &  26   \\
+\hline
+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}, & \\
+& \overline{x_3}(\overline{x_1}+x_2) + \overline{x_1}x_2)  &  29   \\
+\hline
+f^d  &  (x_1\oplus x_2,x_3(\overline{x_1}+\overline{x_2}),\overline{x_3})  &  30   \\
+\hline
+% [3, 4, 7, 0, 1, 6, 5, 2], #16
+% [3, 4, 7, 0, 2, 6, 5, 1], #17
+% [3, 6, 7, 5, 2, 0, 1, 4], #26 
+% [3, 4, 7, 5, 2, 6, 1, 0], #29
+% [3, 2, 5, 6, 7, 0, 1, 4]] #30
+\end{array}
+$$
+\end{small}
+\caption{Les 5 fonctions booléennes $n=3$ aux temps de mélange les plus faibles.}\label{table:mixing:3}
+\end{table}
+\end{xpl}
+
+Une analyse syntaxique de ces fonctions ne permet pas, à priori, 
+de déduire des règles permettant de construire de nouvelles
+fonction dont le temps de mélange serait faible.
+Cependant, le graphe $\textsc{giu}(f^*)$ 
+(donné à la Figure~\ref{fig:iteration:f*})
+est le $3$-cube dans lequel le cycle 
+$000,100,101,001,011,111,110,010,000$ 
+a été enlevé.
+Ce cycle qui visite chaque n{\oe}ud exactement une fois est un  
+\emph{cycle hamiltonien}.
+La matrice de Markov correspondante est donnée à 
+la figure~\ref{fig:markov:f*}.
+On s'intéresse  par la suite à la génération de ce genre de cycles.
+
+
+
+
+
+\begin{figure}[ht]
+  \begin{center}
+    \subfigure[Graphe $\textsc{giu}(f^*)$.
+    \label{fig:iteration:f*}]{
+      \begin{minipage}{0.55\linewidth}
+        \centering
+        \includegraphics[width=\columnwidth]{images/iter_f0c}%
+      \end{minipage}
+    }%
+    \subfigure[Matrice de Markov associée à $\textsc{giu}(f^*)$
+    \label{fig:markov:f*}]{%
+      \begin{minipage}{0.35\linewidth}
+        \begin{scriptsize}
+          \begin{center}
+            $ \dfrac{1}{4} \left(
+              \begin{array}{cccccccc}
+                1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
+              
+                1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
+              
+                0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
+              
+                1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
+              
+                1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
+              
+                0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
+              
+                0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
+              
+                0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
+              
+              \end{array}            \right) $
+          \end{center}
+        \end{scriptsize}
+      \end{minipage}
+    }%
+    \caption{Représentations de $f^*(x_1,x_2,x_3)=
+      (x_2 \oplus x_3, \overline{x_1}\overline{x_3} + x_1\overline{x_2},
+      \overline{x_1}\overline{x_3} + x_1x_2)$.}\label{fig1}
+  \end{center}
+\end{figure}
+
+
+
+
+\section{Graphes 
+  $\textsc{giu}(f)$ 
+  $\textsc{gig}(f)$ 
+  fortement connexes et doublement stochastiques}
+% Secrypt 14
+
+
+
+
+\subsection{Suppression des cycles hamiltoniens}
+\label{sec:hamiltonian}
+
+Dans un premier temps, nous montrons en section~\ref{sub:removing:theory} que la
+suppression  d'un  cycle  hamiltonien   produit  bien  des  matrices  doublement
+stochastiques.   Nous  établissons  ensuite  le  lien avec  les  codes  de  Gray
+équilibrés.
+
+\subsubsection{Aspects théoriques}
+\label{sub:removing:theory}
+
+Nous donnons  deux résultats complémentaires, reliant la  suppression d'un cycle
+hamiltonien  du $n$-cube,  les matrices  doublement stochastiques  et  la forte
+connexité du graphe d'itérations.
+
+\begin{theorem}\label{th:supprCH}
+  La suppression d'un cycle hamiltonien dans une matrice de Markov $M$, issue du
+  $n$-cube, produit une matrice doublement stochastique.
+\end{theorem}
+\begin{Proof}
+
+Un cycle hamiltonien passe par chaque n{\oe}ud une et une seule fois.
+Pour chaque n{\oe}ud $v$ dans le $n$-cube $C_1$,
+une arête entrante $(o,v)$ et une arête sortante $(v,e)$ 
+est ainsi enlevée.
+Considérons un autre  $n$-cube $C_2$ auquel on ajoute les arêtes 
+pour le rendre complet. La matrice de Markov $M$ correspondante est
+remplie de $\frac{1}{2^n}$ et est doublement stochastique.
+Comme on enlève exactement une arête sortante $(v,e)$ 
+à chaque n{\oe}ud $v$ dans $C_1$, on enlève ainsi dans 
+$C_2$ les $2^{n-1}$ arêtes issues de $v$ et 
+relatives aux parties de $\{1,\ldots,n\}$ qui
+contiennent $e$. Cela revient à annuler 
+dans la matrice $M$ les $2^{n-1}$ coefficients correspondants et ajouter 
+$1/2$ à l'élément $M_{vv}$.
+La matrice $M$ reste stochastique.
+On effectue un raisonnement similaire pour les arêtes entrantes:
+comme on enlève exactement une arête entrante $(o,v)$ pour chaque 
+n{\oe}ud $v$ dans $C_1$, dans $C_2$, ce sont exactement 
+$2^{n-1}$ arêtes menant à $v$ qui sont enlevées. 
+Dans $M$ les $2^{n-1}$ coefficients correspondants sont mis à 0 et 
+$M_{vv}$ vaut alors $\frac{2^{n-1} +1}{2}$.
+$M$ est donc doublement stochastique.
+\end{Proof}
+
+
+
+\begin{theorem}\label{th:grapheFC}
+  Le  graphe d'itérations  issu du  $n$-cube,  auquel un  cycle hamiltonien  est
+  enlevé, est fortement connexe.
+\end{theorem}
+
+
+\begin{Proof}
+On considère les deux $n$-cubes $C_1$ et $C_2$ définis 
+dans la preuve du théorème~\ref{th:supprCH}.
+Dans $C_1$ on considère le cycle inverse $r$ du cycle
+hamiltonien $c$.
+Aucun arc n'appartient à la fois  à $r$ et à $c$: 
+en effet, sinon $c$ contiendrait un n{\oe}ud deux fois.
+Ainsi aucune arête de $r$ n'est enlevée dans $C_1$.
+Le cycle $r$ est évidement un cycle hamiltonien et contient tous les n{\oe}uds.
+Tous les n{\oe}uds de $C_1$ dans lequel $c$ a été enlevé sont accessibles 
+depuis n'importe quel n{\oe}ud. Le graphe des itérations $\textsf{giu}$ qui
+étend le précédent graphe est ainsi fortement connexe. 
+
+\end{Proof}
+
+
+
+Les preuves, relativement directes, sont  laissées en exercices au lecteur.  Par
+contre, ce qui  est moins aisé est la génération de  cycles hamiltoniens dans le
+$n$-cube,  ce qui  revient à  trouver des  \emph{codes de  Gray  cycliques}.  On
+rappelle que  les codes de  Gray sont des  séquences de mots binaires  de taille
+fixe ($n$),  dont les éléments successifs ne  différent que par un  seul bit. Un
+code  de  Gray est  \emph{cyclique}  si  le premier  élément  et  le dernier  ne
+différent que par un seul bit.
+
+\subsection{Lien avec les codes de Gray cycliques (totalement) équilibrés}
+\label{sub:gray}
+
+La borne  inférieure du  nombre de codes  de Gray  ($\left(\frac{n*\log2}{e \log
+    \log   n}\times(1  -  o(1))\right)^{2^n}$),   donnée  dans~\cite{Feder2009NTB},
+indique  une explosion combinatoire  pour notre  recherche.  Afin  de contourner
+cette  difficulté,  nous  nous   restreignons  aux  codes  induisant  un  graphe
+d'itérations $\textsf{giu}(f)$  \emph{uniforme}.  Cette uniformité se  traduit par des
+nombres d'arcs  équilibrés entre les  \emph{dimensions} du graphe,  la dimension
+$i$  correspondant aux  seules variations  du  bit $i$  (parmi les  $n$ bits  au
+total).   Cette  approche  revient  à  chercher  des  codes  de  Gray  cycliques
+\emph{équilibrés}.
+
+Un code de Gray équilibré peut être défini de la façon suivante :
+
+\begin{Def}[Code de Gray cyclique équilibré]\label{def:grayequ}
+  Soit $L = w_1,  w_2, \dots, w_{2^n}$ la séquence d'un code  de Gray cyclique à
+  $n$ bits.  Soit $S = s_1,  s_2, \dots, s_{2^n}$ la séquence des transitions où
+  $s_i$, $1  \le i \le 2^n$  est l'indice du seul  bit qui varie  entre les mots
+  $w_i$ et  $w_{i+1}$. Enfin, soit  $\textit{NT}_n : \{1,\dots,  n\} \rightarrow
+  \{0, \ldots, 2^n\}$  la fonction qui au paramètre  $i$ associe le \emph{nombre
+    de transitions} présentes dans la séquence $L$ pour le bit $i$, c'est-à-dire
+  le nombre d'occurrences de $i$ dans $S$.
+  
+  Le      code       $L$      est      \textbf{équilibré}       si      $\forall
+  i,j\in\{1,...,n\},~|\textit{NT}_n(i)  -  \textit{NT}_n(j)|  \le  2$.   Il  est
+  \textbf{totalement             équilibré}             si             $\forall
+  i\in\{1,...,n\},~\textit{NT}_n(i)=\frac{2^n}{n}$.
+\end{Def}
+
+On peut  donc déjà déduire  qu'il ne peut  exister des codes de  Gray totalement
+équilibrés que  pour les  systèmes ayant un  nombre d'éléments $n=2^k,  k>0$. De
+plus,  comme  dans tout  code  de  Gray  cyclique, $\textit{NT}_n(i)$  est  pair
+$\forall  i\in\{1,...,n\}$,  alors  les  systèmes  ayant  un  nombre  d'éléments
+différent  de $2^k$,  ne peuvent  avoir  que des  codes de  Gray équilibrés  avec
+$\textit{NT}_n(i)=\lfloor\frac{2^n}{n}\rfloor$                                 ou
+$\textit{NT}_n(i)=\lceil\frac{2^n}{n}\rceil,    \forall    i\in\{1,...,n\}$   et
+vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
+
+\begin{xpl}
+  Soit  $L^*=000,100,101,001,011,111,110,010$ le code  de Gray  correspondant au
+  cycle hamiltonien enlevé de $f^*$.  Sa séquence des transitions est \linebreak
+  $S=3,1,3,2,3,1,3,2$  et  les nombres  de  transitions sont  $\textit{TC}_3(1)=
+  \textit{TC}_3(2)=2$ et $\textit{TC}_3(3)=4$. Un tel code est équilibré.
+
+  Si l'on  considère maintenant $L^4=$ 0000,  0010, 0110, 1110, 1111,  0111, 0011,
+  0001,  0101, 0100,  1100, 1101,  1001,  1011, 1010,  1000,  un  code de  Gray
+  cyclique. En construisant la séquence $S=$ 2,3,4,1,4,3,2,3,1,4,1,3,2,1,2,4, 
+  on constate que  $\forall
+  i\in\{1,..,4\},~\textit{TC}_4(i)=4$ et donc que 
+  ce code est totalement équilibré.
+\end{xpl}
+
+\subsection{Génération de codes de Gray équilibrés par induction}
+\label{sec:induction}
+
+Dans  leur  article de  2004~\cite{ZanSup04},  Zanten  et  Suparta proposent  un
+algorithme inductif  pour générer  des codes  de Gray équilibrés  de $n$  bits à
+partir   de  codes   de  $n-2$   bits.   Cependant,   leur  méthode   n'est  pas
+constructive. En effet, elle effectue  des manipulations sur un partitionnement du
+code de Gray  initial de $n-2$ bits pour  obtenir un code de Gray  sur $n$ bits,
+mais le  résultat n'est pas  systématiquement équilibré. Il est  donc nécessaire
+d'évaluer les résultats obtenus à  partir de tous les partitionnements réalisables
+en suivant les  contraintes spécifiées.  Or, le nombre  de possibilités augmente
+exponentiellement (voir~\cite{Mons14} pour  l'évaluation détaillée), ce qui rend
+déraisonnable    tout   parcours    exhaustif.    Une    amélioration   proposée
+dans~\cite{Mons14} permet  de réduire le nombre  de partitionnements considérés,
+mais l'ordre  de grandeur  reste similaire. On  constate donc clairement  ici la
+nécessité de trouver  des algorithmes de génération de  codes de Gray équilibrés
+plus  efficaces.  Ce  problème  représente  une des  voies  que nous  souhaitons
+explorer dans la suite de nos travaux.
+
+Le   tableau~\ref{table:nbFunc}  donne  le   nombre  de   fonctions  différentes
+compatibles avec les codes de  Gray équilibrés générés par l'approche précédente
+selon le nombre  de bits. Il donne  donc la taille de la  classe des générateurs
+pouvant être produits.  Les  cas 7 et 8 ne sont que  des bornes minimales basées
+sur des sous-ensembles des partitionnements possibles.
+
+\begin{table}[ht]
+  %\begin{center}
+    \begin{tabular}{|l|c|c|c|c|c|}
+      \hline
+      $n$              & 4 & 5 & 6    & 7      & 8      \\
+      \hline
+      nb. de fonctions & 1 & 2 & 1332 & > 2300 & > 4500 \\
+      \hline
+    \end{tabular}
+  %\end{center}
+\caption{Nombre de générateurs selon le nombre de bits.}\label{table:nbFunc}
+\end{table}
+
+
+\section{Quantifier l'écart par rapport à la distribution uniforme} 
+%15 Rairo
\ No newline at end of file