]> AND Private Git Repository - hdrcouchot.git/blobdiff - 14Secrypt.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
resolution conflit
[hdrcouchot.git] / 14Secrypt.tex
index 0465fcf11ad89af128d3156c80e11744b5fdccc0..435e7392f7351f0ff443b0be53ee991e63900206 100644 (file)
@@ -21,7 +21,7 @@ arête sortante et une arête entrante.
 % 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. 
 
 % 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}
+\section{Programmation logique par contraintes sur des domaines finis}\label{sec:plc}
 Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments. 
 Pour éviter d'avoir à gérer des fractions, on peut considérer que 
 les matrices (d'incidence) à générer ont des lignes et des colonnes dont les 
 Tout d'abord, soit ${\mathsf{N}}$ le nombre d'éléments. 
 Pour éviter d'avoir à gérer des fractions, on peut considérer que 
 les matrices (d'incidence) à générer ont des lignes et des colonnes dont les 
@@ -94,7 +94,7 @@ C'est évidemment une relation d'équivalence.
 
 
 
 
 
 
-\subsection{Analyse de l'approche}\label{sub:prng:ana}
+%\subsection{Analyse de l'approche}\label{sub:prng:ana}
 Exécutée sur un ordinateur personnelle, PROLOG trouve 
 en moins d'une seconde les
 49 solutions pour  $n=2$, 
 Exécutée sur un ordinateur personnelle, PROLOG trouve 
 en moins d'une seconde les
 49 solutions pour  $n=2$, 
@@ -235,25 +235,27 @@ M=\dfrac{1}{3} \left(
 
 
 
 
 
 
-\section{Graphes 
-  $\textsc{giu}(f)$ 
-  $\textsc{gig}(f)$ 
-  fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
-% Secrypt 14
+% section{Graphes 
+%   $\textsc{giu}(f)$ 
+%   $\textsc{gig}(f)$ 
+%   fortement connexes et doublement stochastiques}\label{sec:gen:dblstc}
+% %
+%Secrypt 14
 
 
 
 
 
 
 
 
-\subsection{Suppression des cycles hamiltoniens}
+\section{Suppression des cycles hamiltoniens}
 \label{sec:hamiltonian}
 
 \label{sec:hamiltonian}
 
-Dans un premier temps, nous montrons en section~\ref{sub:removing:theory} que la
+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.
 
 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}
+%\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
 
 Nous donnons  deux résultats complémentaires, reliant la  suppression d'un cycle
 hamiltonien  du $n$-cube,  les matrices  doublement stochastiques  et  la forte
@@ -322,7 +324,7 @@ fixe ($n$),  dont les éléments successifs ne  différent que par un  seul bit.
 code  de  Gray est  \emph{cyclique}  si  le premier  élément  et  le dernier  ne
 différent que par un seul bit.
 
 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}
+\section{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
 \label{sub:gray}
 
 La borne  inférieure du  nombre de codes  de Gray  ($\left(\frac{n*\log2}{e \log
@@ -375,7 +377,7 @@ vérifiant $\sum_{i=1}^nNT_n(i) = 2^n$.
   ce code est totalement équilibré.
 \end{xpl}
 
   ce code est totalement équilibré.
 \end{xpl}
 
-\subsection{Génération de codes de Gray équilibrés par induction}
+\section{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
 \label{sec:induction}
 
 Dans  leur  article de  2004~\cite{ZanSup04},  Zanten  et  Suparta proposent  un
@@ -572,9 +574,9 @@ chaque itération qu'un seul élément de $[n]$.
 On pourrait penser à un algorithme basé sur les itérations généralisées, 
 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque 
 itération.
 On pourrait penser à un algorithme basé sur les itérations généralisées, 
 c'est-à-dire qui modifierait une partie des éléments de $[n]$ à chaque 
 itération.
-C'est l'algorithme~\ref{CI Algorithm:prng:g}.
+C'est l'algorithme~\ref{CI Algorithm:prng:g} donné ci-après.
 
 
-\begin{algorithm}[h]
+\begin{algorithm}[ht]
 %\begin{scriptsize}
 \KwIn{une fonction $f$, un nombre d'itérations $b$, 
 une configuration initiale $x^0$ ($n$ bits)}
 %\begin{scriptsize}
 \KwIn{une fonction $f$, un nombre d'itérations $b$, 
 une configuration initiale $x^0$ ($n$ bits)}
@@ -610,10 +612,10 @@ généralisées.
   correspondante à ce graphe 
   et $M$ une matrice  $2^n\times 2^n$  
   définie par 
   correspondante à ce graphe 
   et $M$ une matrice  $2^n\times 2^n$  
   définie par 
-  $M = \dfrac{1}{n} \check{M}$.
+  $M = \dfrac{1}{2^n} \check{M}$.
   Si $\textsc{gig}(f)$ est fortement connexe, alors 
   la sortie du générateur de nombres pseudo aléatoires détaillé par 
   Si $\textsc{gig}(f)$ est fortement connexe, alors 
   la sortie du générateur de nombres pseudo aléatoires détaillé par 
-  l'algorithme~\ref{CI Algorithm} suit une loi qui 
+  l'algorithme~\ref{CI Algorithm:prng:g} suit une loi qui 
   tend vers la distribution uniforme si 
   et seulement si  $M$ est une matrice doublement stochastique.
 \end{theorem}
   tend vers la distribution uniforme si 
   et seulement si  $M$ est une matrice doublement stochastique.
 \end{theorem}
@@ -623,8 +625,8 @@ Elle n'est donc pas rappelée.
 
 \begin{xpl}
 
 
 \begin{xpl}
 
-  On reprend l'exemple donné à la section~\ref{sub:prng:ana}:
-  Dans le $3$-cube   cycle hamiltonien défini par la séquence
+  On reprend l'exemple donné à la section~\ref{sec:plc}.
+  Dans le $3$-cube, le cycle hamiltonien défini par la séquence
   $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant 
   la fonction $f^*$ définie par 
   $$f^*(x_1,x_2,x_3)=
   $000,100,101,001,011,111,110,010,000$ a été supprimé engendrant 
   la fonction $f^*$ définie par 
   $$f^*(x_1,x_2,x_3)=
@@ -639,15 +641,15 @@ la figure~\ref{fig:markov:f*}.
 
 \begin{figure}[ht]
   \begin{center}
 
 \begin{figure}[ht]
   \begin{center}
-    \subfigure[Graphe des itérations chaotiques de $f^*$.
+    \subfigure[Graphe $\textsc{gig}(f^*)$
     \label{fig:iteration:f*}]{
       \begin{minipage}{0.55\linewidth}
         \centering
         \includegraphics[width=\columnwidth]{images/iter_f}%
       \end{minipage}
     }%
     \label{fig:iteration:f*}]{
       \begin{minipage}{0.55\linewidth}
         \centering
         \includegraphics[width=\columnwidth]{images/iter_f}%
       \end{minipage}
     }%
-    \subfigure[Matrice de Markov du graphe d'itérations chaotiques de 
-    $f^*$\label{fig:markov:f*}]{%
+    \subfigure[Matrice de Markov associée au $\textsc{gig}(f^*)$
+    \label{fig:markov:f*}]{%
       \begin{minipage}{0.35\linewidth}
         \begin{scriptsize}
           \begin{center}
       \begin{minipage}{0.35\linewidth}
         \begin{scriptsize}
           \begin{center}
@@ -675,15 +677,15 @@ la figure~\ref{fig:markov:f*}.
       \end{minipage}
     }%
     \caption{Représentations de $f^*(x_1,x_2,x_3)=
       \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}
+      (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}
 \end{xpl}
 
 
 
   \end{center}
 \end{figure}
 \end{xpl}
 
 
 
-\begin{table}[table:functions]{Fonctions avec matrices DSCC et le plus faible temps de mélange.}
+\begin{table}[ht]
   \begin{center}
     \begin{scriptsize}
       \begin{tabular}{|c|l|c|c|}
   \begin{center}
     \begin{scriptsize}
       \begin{tabular}{|c|l|c|c|}
@@ -733,14 +735,17 @@ la figure~\ref{fig:markov:f*}.
       \end{tabular}
     \end{scriptsize}
   \end{center}
       \end{tabular}
     \end{scriptsize}
   \end{center}
+\label{table:functions}
+\caption{Fonctions avec matrices DSCC et le plus faible temps de mélange.}
+
 \end{table}
 
 Le  tableau~\ref{table:functions} reprend  une synthèse de 
 fonctions qui  ont été  générées selon  la méthode détaillée  
 \end{table}
 
 Le  tableau~\ref{table:functions} reprend  une synthèse de 
 fonctions qui  ont été  générées selon  la méthode détaillée  
-à la  section~\ref{sec:gen:dblstc}.
-Pour  chaque nombre $n=3$,  $4$, $5$
-,$6$, tous  les cycles  hamiltoniens non isomorphes  ont été générés.   Pour les
-valeur de $n=7$ et $8$,  seules $10^{5}$ configurations ont été évaluées.  Parmi
+à la  section~\ref{sec:hamiltonian}.
+Pour  chaque nombre $n=3$,  $4$, $5$ et $6$,
+tous  les cycles  hamiltoniens non isomorphes  ont été générés.   Pour les
+valeur de $n=7$ et $8$,  seules $10^{5}$ cycles ont été évalués.  Parmi
 toutes  les fonctions  obtenues en  enlevant du  $n$-cube ces  cycles,  n'ont été
 retenues que celles  qui minimisaient le temps de mélange relatif  à une valeur de
 $\epsilon$ fixée à $10^{-8}$.  
 toutes  les fonctions  obtenues en  enlevant du  $n$-cube ces  cycles,  n'ont été
 retenues que celles  qui minimisaient le temps de mélange relatif  à une valeur de
 $\epsilon$ fixée à $10^{-8}$.  
@@ -757,51 +762,54 @@ le nombre d'éléments alors qu'il augmente dans l'approche initiale où
 l'on marche.
 
 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre 
 l'on marche.
 
 Cela s'explique assez simplement. Depuis une configuration initiale, le nombre 
-de configurations qu'on ne peut pas atteindre en une itération est de 
+de configurations qu'on ne peut pas atteindre en une itération est de: 
 \begin{itemize}
 \begin{itemize}
-\item $2^n-n$ en marchant, ce qui représente $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$ 
+\item $2^n-n$ en unaire. Ceci représente un rapport de 
+  $\dfrac{2^n-n}{2^n} = 1-\dfrac{n}{2^n}$ 
   de toutes les configurations; plus $n$ est grand, 
   plus ce nombre est proche de $1$, et plus grand devient le nombre 
   de toutes les configurations; plus $n$ est grand, 
   plus ce nombre est proche de $1$, et plus grand devient le nombre 
-  d'itérations suffisantes pour atteinte une déviation faible;
-\item $2^n-2^{n-1}$ en sautant, soit la moitié de toutes les configurations 
+  d'itérations nécessaires pour atteinte une déviation faible;
+\item $2^n-2^{n-1}$ dans le cas généralisé,
+  soit la moitié de toutes les configurations 
   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.
 \end{itemize}
 
   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.
 \end{itemize}
 
-Cependant, dans le cas où l'on saute, chaque itération a une complexité 
-plus élevée puisqu'il est nécessaire d'invoquer un générateur 
-de nombres pseudo-aléatoires entre 1 et $2^{n}$ tandis qu'il suffit 
-d'avoir un générateur entre 1 et $n$ dans le premier cas.
+Cependant, dans le cas généralisé, chaque itération a une complexité 
+plus élevée puisqu'il est nécessaire d'invoquer un générateur
+produisant un nombre pseudo-aléatoire dans $[2^{n}]$ tandis qu'il suffit 
+que celui-ci soit dans $[n]$ dans le cas unaire.
+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).
 
 
-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).
-
-Lorsqu'on marche et qu'on effectue $i$ itérations, 
-à chaque itération, la stratégie génère un nombre entre
-$1$ et $n$. 
-Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur en moyenne. 
-La démarche fait donc au total $i*\ln(n)/\ln(2)$ appels pour $n$ bits et
-donc $i*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
-Lorsqu'on saute et qu'on effectue $i'$ itérations, 
-à chaque itération, la stratégie génère un nombre entre
+Dans le cas généralisé, si l'on effectue $b$ itérations, 
+à chacune d'elles, la stratégie génère un nombre entre
 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
 $1$ et $2^n$. Elle fait donc $n$ appels à ce générateur.
-On fait donc au total $i'*n$ appels pour $n$ bits et
-donc $i'$ appels pour 1 bit généré en moyenne.
+On fait donc au total $b*n$ appels pour $n$ bits et
+donc $b$ appels pour 1 bit généré en moyenne.
+Dans le cas unaire, si l'on effectue $b'$ itérations, 
+à chacune d'elle, la stratégie génère un nombre entre
+$1$ et $n$. 
+Elle fait donc $\ln(n)/\ln(2)$ appels à ce générateur binaire en moyenne. 
+La démarche fait donc au total $b'*\ln(n)/\ln(2)$ appels pour $n$ bits et
+donc $b'*\ln(n)/(n*\ln(2))$ appels pour 1 bit généré en moyenne.
 Le tableau~\ref{table:marchevssaute} donne des instances de 
 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions  
 Le tableau~\ref{table:marchevssaute} donne des instances de 
 ces valeurs pour $n \in\{4,5,6,7,8\}$ et les fonctions  
-données au tableau~\ref{table:fonctions}.
-On constate que le nombre d'appels par bit généré décroit avec $n$ dans la 
-seconde démarche et est toujours plus faible que celui de la première.   
+données au tableau~\ref{table:functions}.
+On constate que le nombre d'appels par bit généré décroit avec $n$ dans le 
+cas des itérations généralisées et est toujours plus faible
+que celui des itérations unaires.
 
 
 
 
 
 
-\begin{table}
+\begin{table}[ht]
 $$
 \begin{array}{|l|l|l|l|l|l|}
 \hline
 $$
 \begin{array}{|l|l|l|l|l|l|}
 \hline
-\textrm{Algorithme} & 4 & 5 & 6 & 7 & 8 \\ 
+\textrm{Itérations} & 4 & 5 & 6 & 7 & 8 \\ 
 \hline
 \hline
-\textrm{marchant}         &  19.0 & 22.2905097109  & 23.6954895899 & 25.2661942985 & 27.0\\  
+\textrm{Unaires}         &  19.0 & 22.2905097109  & 23.6954895899 & 25.2661942985 & 27.0\\  
 \hline
 \hline
-\textrm{sautant}          &  17   & 13             & 11            & 10 & 9\\
+\textrm{Généralisées}          &  17   & 13             & 11            & 10 & 9\\
 \hline
 \end{array}
 $$
 \hline
 \end{array}
 $$
@@ -812,25 +820,35 @@ $$
 
 
 
 
 
 
-La qualité des séquences aléatoires a été évaluée à travers la suite 
-de tests statistiques développée pour les générateurs de nombres 
-pseudo-aléatoires par le 
+\section{Tests statistiques}
+
+La qualité des séquences aléatoires produites par 
+le générateur des itérations unaires ainsi que 
+celles issues des itérations généralisées a été évaluée à travers la suite 
+de tests statistiques développée par le 
 \emph{National Institute of Standards and Technology} (NIST).
  Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
  une  valeur  
  qui est plus grande que $1\%$  signifie 
  que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
 \emph{National Institute of Standards and Technology} (NIST).
  Pour les 15 tests, le seuil $\alpha$ est fixé à $1\%$:
  une  valeur  
  qui est plus grande que $1\%$  signifie 
  que la chaîne est considérée comme aléatoire avec une confiance de $99\%$.
+
+
+
+
  Le tableau~\ref{fig:TEST} donne une vision synthétique de toutes 
  Le tableau~\ref{fig:TEST} donne une vision synthétique de toutes 
les expérimentations. 
ces expérimentations. 
 L'expérience a montré notamment que toutes ces fonctions
 passent avec succès cette batterie de tests. 
 
 L'expérience a montré notamment que toutes ces fonctions
 passent avec succès cette batterie de tests. 
 
+
+
+
 %%%%%%%%% Relancer pour n=6, n=7, n=8
 %%%%%%%%% Recalculer le MT
 %%%%%%%%% Regenerer les 10^6 bits
 %%%%%%%%% Evaluer sur NIST
  
 %%%%%%%%% Relancer pour n=6, n=7, n=8
 %%%%%%%%% Recalculer le MT
 %%%%%%%%% Regenerer les 10^6 bits
 %%%%%%%%% Evaluer sur NIST
  
-\begin{table}[fig:TEST]{Test de NIST réalisé sur les fonctions $f^*$ détaillées au tableau~\label{table:functions}.}
+\begin{table}[ht]
   \centering
   \begin{scriptsize}
     \begin{tabular}{|*{5}{c|}}
   \centering
   \begin{scriptsize}
     \begin{tabular}{|*{5}{c|}}
@@ -853,6 +871,9 @@ Série* (m=10)                 & 0.595 (0.995) & 0.289 (0.975) & 0.660 (0.995) &
 Complexité linaire            & 0.816 (1.0)   & 0.897 (0.98)  & 0.080 (0.98)  & 0.798 (1.0)   \\ \hline
     \end{tabular}
   \end{scriptsize}
 Complexité linaire            & 0.816 (1.0)   & 0.897 (0.98)  & 0.080 (0.98)  & 0.798 (1.0)   \\ \hline
     \end{tabular}
   \end{scriptsize}
+
+\label{fig:TEST}
+\caption{Test de NIST réalisé sur les fonctions $f^*$ détaillées au tableau~\label{table:functions}}
 \end{table}
 
 %
 \end{table}
 
 %