reorganisation

This commit is contained in:
Amaury
2023-07-03 14:32:03 +02:00
parent f1b1dc40ca
commit b00fc6acbe
46 changed files with 856 additions and 1 deletions

View File

@ -0,0 +1,33 @@
\begin{frame}
\frametitle{Les Types de données abstraits}
Pour communiquer entre eux, les processus doivent utiliser des objets partagés. \\
Pour spécifier la notion d'objets partagés nous allons d'abord cerner la notion de type de donnée abstrait :
\begin{block}{Définition}
Un type de donnée abstrait peut être défini par un automate tel que : $T = (A, B, Z, \zeta_0, \tau, \delta)$ \\
Tel que :
\begin{itemize}
\item A est un ensemble dénombrable (alphabet d'entrée)
\item B est un ensemble dénombrable (alphabet de sortie)
\item Z est un ensemble dénombrable d'états abstraits
\item $\zeta_0 \in Z$ est l'état initial
\item $\tau$ est la fonction de transition ($Z \times A \rightarrow Z$)
\item $\delta$ est la fonction de sortie ($Z \times A \rightarrow B$)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Les flux fenêtrés (Work in Progress)}
\end{frame}
\begin{frame}
\frametitle{Les ensembles (Work in Progress)}
\end{frame}

View File

@ -0,0 +1,7 @@
\input{définition/intro.tex}
\subsection{Objets partagés}
\include{définition/adt}
\subsection{Définition du modèle}
\include{définition/modele}

View File

@ -0,0 +1,50 @@
\begin{frame}
\frametitle{Problématique (Work in Progress)}
\begin{block}{Système distribué}
Ce dit d'un système informatique dont les nœuds sont indépendant et reliés par un réseau informatique. Travaillant sur une tâche commune.
\end{block}
\begin{columns}
\column{0.4\textwidth}
\begin{block}{Avantages}
\begin{itemize}
\item une répartition de la charge de travail entre plusieurs acteurs
\item une meilleure tolérance aux pannes
\end{itemize}
\end{block}
\column{0.4\textwidth}
\begin{block}{Inconvénients}
\begin{itemize}
\item Introduit une notion de concurrence dans les tâches.
\item Il faut définir ce qu'on considère acceptable.
\end{itemize}
\end{block}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Problématique (Work in Progress)}
\begin{columns}
\column{0.6\textwidth}
\resizebox{\columnwidth}{!}{
\includegraphics{images/carte_criteres.png}
}
\column{0.4\textwidth}
\begin{block}{Les classes de cohérences}
\begin{itemize}
\item Introduites par PERRIN
\item Objectifs :
\begin{itemize}
\item Classer les histoires créées par un algorithme.
\item Créer une relation de dépendance entre les classes.
\end{itemize}
\end{itemize}
\end{block}
\end{columns}
\end{frame}

View File

@ -0,0 +1,291 @@
\begin{frame}
\frametitle{Modèle}
\begin{columns}
\column{0.4\textwidth}
\resizebox{\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
]
\node[roundnode] (p0) {};
\node[left] at (p0.west) {$p_0$};
\node[roundnode] (p1) [below=of p0] {};
\node[left] at (p1.west) {$p_1$};
\node[roundnode] (p2) [right=of p1] {};
\node[right] at (p2.east) {$p_2$};
\node[roundnode] (p3) [right=of p0] {};
\node[right] at (p3.east) {$p_3$};
\draw (p0) -- (p1);
\draw (p0) -- (p2);
\draw (p0) -- (p3);
\draw (p1) -- (p2);
\draw (p1) -- (p3);
\draw (p2) -- (p3);
\end{tikzpicture}
}
\column{0.6\textwidth}
\begin{block}{Prérequis}
\begin{itemize}
\item Tous les nœuds du système sont fortement connectés
\item Le système n'est pas partitionnable
\item Les nœuds sont asynchrones
\item Les nœuds ne peuvent pas être défaillants
\item Les nœuds ne peuvent pas être malicieux
\end{itemize}
\end{block}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Modèle}
\begin{columns}
\column{0.4\textwidth}
\centering
\resizebox{0.75\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
]
\node[roundnode] (p0) {};
\node[left] at (p0.west) {$p_0$};
\onslide<3> {
\node[above] at (p0.north) {$\textcolor{red}{w(1)}$};
}
\onslide<7> {
\node[above] at (p0.north) {$\textcolor{red}{r/(1,2)^w}$};
}
\node[roundnode] (p1) [below=of p0] {};
\node[left] at (p1.west) {$p_1$};
\onslide<2> {
\node[below] at (p1.south) {$\textcolor{red}{r/(0,0)}$};
}
\onslide<5> {
\node[below] at (p1.south) {$\textcolor{red}{w(2)}$};
}
\onslide<6> {
\node[below] at (p1.south) {$\textcolor{red}{r/(1,2)}$};
}
\onslide<7> {
\node[below] at (p1.south) {$\textcolor{red}{r/(1,2)^w}$};
}
\node[roundnode] (p2) [right=of p1] {};
\node[right] at (p2.east) {$p_2$};
\onslide<4> {
\node[below] at (p2.south) {$\textcolor{red}{r/(0,1)}$};
}
\onslide<6> {
\node[below] at (p2.south) {$\textcolor{red}{r/(1,2)}$};
}
\onslide<7> {
\node[below] at (p2.south) {$\textcolor{red}{r/(1,2)^w}$};
}
\node[roundnode] (p3) [right=of p0] {};
\node[right] at (p3.east) {$p_3$};
\onslide<4> {
\node[above] at (p3.north) {$\textcolor{red}{r/(0,1)}$};
}
\onslide<5> {
\node[above] at (p3.north) {$\textcolor{red}{w(1)}$};
}
\onslide<6> {
\node[above] at (p3.north) {$\textcolor{red}{r/(1,1)}$};
}
\onslide<7> {
\node[above] at (p3.north) {$\textcolor{red}{r/(1,2)^w}$};
}
\draw (p0) -- (p1);
\draw (p0) -- (p2);
\draw (p0) -- (p3);
\draw (p1) -- (p2);
\draw (p1) -- (p3);
\draw (p2) -- (p3);
\end{tikzpicture}
}
\column{\textheight}
\begin{tabular}{l}
$p_0 = \onslide<3->{w(1)} \onslide<7->{\bullet r/(1,2)^w}$ \\
$p_1 = \onslide<2->{r/(0,0)} \onslide<5->{\bullet w(2)} \onslide<6->{\bullet r/(1,2)} \onslide<7->{\bullet r/(1,2)^w}$ \\
$p_2 = \onslide<4->{r/(0,1)} \onslide<6->{\bullet r/(1,2)} \onslide<7->{\bullet r/(1,2)^w}$ \\
$p_3 = \onslide<4->{r/(0,1)} \onslide<5->{\bullet w(1)} \onslide<6->{\bullet r/(1,1)} \onslide<7->{\bullet r/(1,2)^w}$ \\
\end{tabular}
\end{columns}
\centering
\resizebox{!}{\height}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
invisiblenode/.style={circle, draw=white, fill=white, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (p00) {};
\node[left] at (p00.west) {$p_0$};
\node[above] at (p00.north) {$\{0\}$};
\node[roundnode] (p10) [below=20pt of p00] {};
\node[left] at (p10.west) {$p_1$};
\node[above] at (p10.north) {$\{0\}$};
\node[roundnode] (p20) [below=20pt of p10] {};
\node[left] at (p20.west) {$p_2$};
\node[above] at (p20.north) {$\{0\}$};
\node[roundnode] (p30) [below=20pt of p20] {};
\node[left] at (p30.west) {$p_3$};
\node[above] at (p30.north) {$\{0\}$};
\pause
\node[roundnode] (p01) [right=of p00] {};
\node[above] at (p01.north) {$\{1\}$};
\draw[arrow] (p00) -- node[above] {tata} (p01);
% \onslide<3->{
% \node[roundnode] (11) {};
% \node[left] at (11.west) {$p_0$};
% \node[above] at (11.north) {$w(1)$};
% }
% \onslide<7-> {
% \node[roundnode] (12) [right=of 11] {};
% \node[above] at (12.north) {$r/(1,2)^w$};
% \draw[arrow] (11) -- (12);
% }
% \onslide<2-> {
% \node[roundnode] (21) [below=20pt of 11] {};
% \node[left] at (21.west) {$p_1$};
% \node[above] at (21.north) {$r/(0,0)$};
% }
% \onslide<5-> {
% \node[roundnode] (22) [right=of 21] {};
% \node[above] at (22.north) {$w(2)$};
% \draw[arrow] (21) -- (22);
% }
% \onslide<6-> {
% \node[roundnode] (23) [right=of 22] {};
% \node[above] at (23.north) {$r/(1,2)$};
% \draw[arrow] (21) -- (23);
% }
% \onslide<7-> {
% \node[roundnode] (24) [right=of 23] {};
% \node[above] at (24.north) {$r/(1,2)^w$};
% \draw[arrow] (21) -- (24);
% }
% \onslide<4-> {
% \node[roundnode] (31) [below=20pt of 21] {};
% \node[left] at (31.west) {$p_2$};
% \node[above] at (31.north) {$r/(0,1)$};
% }
% \onslide<6-> {
% \node[roundnode] (32) [right=of 31] {};
% \node[above] at (32.north) {$r/(1,2)$};
% \draw[arrow] (31) -- (32);
% }
% \onslide<7-> {
% \node[roundnode] (33) [right=of 32] {};
% \node[above] at (33.north) {$r/(1,2)^w$};
% \draw[arrow] (31) -- (33);
% }
% \onslide<4-> {
% \node[roundnode] (41) [below=20pt of 31] {};
% \node[left] at (41.west) {$p_3$};
% \node[above] at (41.north) {$r/(0,1)$};
% }
% \onslide<5-> {
% \node[roundnode] (42) [right=of 41] {};
% \node[above] at (42.north) {$w(1)$};
% \draw[arrow] (41) -- (42);
% }
% \onslide<6-> {
% \node[roundnode] (43) [right=of 42] {};
% \node[above] at (43.north) {$r/(1,1)$};
% \draw[arrow] (41) -- (43);
% }
% \onslide<7-> {
% \node[roundnode] (44) [right=of 43] {};
% \node[above] at (44.north) {$r/(1,2)^w$};
% \draw[arrow] (41) -- (44);
% }
\end{tikzpicture}
}
\end{frame}
\begin{frame}
\frametitle{Modèle}
\resizebox{\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$I(a)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,1)$};
\node[roundnode] (14) [right=of 13] {};
\node[above] at (14.north) {$r/(1,2)^w$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\draw[arrow] (13) -- (14);
\node[roundnode] (21) [below=of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$R/\emptyset$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,2)$};
\node[roundnode] (24) [right=of 23] {};
\node[below] at (24.south) {$r/(1,2)^w$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[arrow] (23) -- (24);
\end{tikzpicture}
}
\end{frame}

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -0,0 +1,52 @@
\documentclass{beamer}
\usetheme{Boadilla}
\usecolortheme{orchid}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{stackengine}
\addtobeamertemplate{navigation symbols}{}{%
\usebeamerfont{footline}%
\usebeamercolor[fg]{footline}%
\hspace{1em}%
\insertframenumber/\inserttotalframenumber
}
\usepackage{ulem}
\usepackage{tkz-tab}
\setbeamertemplate{blocks}[rounded]%
[shadow=true]
\AtBeginSection{%
\begin{frame}
\tableofcontents[sections=\value{section}]
\end{frame}
}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\title[bwconsistency]{Cohérence faible byzantine appliquée au cloud}
\subtitle{Présentation intermédiaire : Cohérence faible}
\author[JOLY Amaury]{JOLY Amaury\\ \textbf{Encadrants :} GODARD Emmanuel, TRAVERS Corentin }
% \\[2ex] \includegraphics[scale=0.1]{./img/amu.png}
\institute[LIS, Scille]{LIS-LAB, Scille}
\date{\today}
\begin{document}
\maketitle
\begin{frame}{Table des matières}
\tableofcontents
\end{frame}
\section{Introduction}
\input{définition/index.tex}
\section{Les propriétés de la Cohérence Faible}
\input{wconsistence_properties/index.tex}
\end{document}

View File

@ -0,0 +1,27 @@
# Script présentation Cohérence Faible
## Plan
1. Présenter un processus séquentiel classique
- exemple : processeur monocœur
2. Introduire le concept de cohérence via la cohérence forte (le plus intuitif)
- exemple : processeur multicœur, application distribuée centralisée.
- notions : respect de l'ordre, atomicité, isolation
3. Introduire le concept de cohérence faible
- exemple : application distribuée décentralisée
4. Définir les propriétés d'un système réparti
5. Définir les différents modèles de cohérence faible (des plus trivial aux moins)
1. Cohérence Séquentielle (SC)
2. Linéarisabilité -> Serialisabilité
3. Convergence/Convergence Forte
1. Définit le concept de convergence
2. Pourquoi ? + les apports de la convergence forte
3. Types de données basés sur la convergence (pourquoi ?)
4. Cohérence Pipeline
1. On présente la notion d'Intention
2. On l'oppose à la cohérence Pipeline
6. Cohérence d'écriture
1. Ce que ne couvre pas les modèles précédents
2. Cohérence d'écriture et cohérence d'écriture forte.

View File

@ -0,0 +1,41 @@
\resizebox{\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$I(a)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,1)$};
\node[roundnode] (14) [right=35pt of 13] {};
\node[above] at (14.north) {$r/(1,2)^w$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\draw[arrow] (13) -- (14);
\node[roundnode] (21) [below=of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$R/\emptyset$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,2)$};
\node[roundnode] (24) [right=35pt of 23] {};
\node[below] at (24.south) {$r/(1,2)^w$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[arrow] (23) -- (24);
\draw (24) -- (14);
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -3.5);
\end{tikzpicture}
}

View File

@ -0,0 +1,178 @@
\begin{frame}
\frametitle{Linéarisation}
\begin{block}{Définition}
Un ensemble d'événement est dit linéarisable s'il existe une séquence d'événement qui respecte les 3 propriétés suivantes :
\begin{itemize}
\item \textbf{Sûreté}
\item \textbf{Régularité}
\item \textbf{Atomicité}
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Sûreté}
\begin{block}{Définition}
Toute lecture réalisée dans un même environnement non-concurrent est identique.
\end{block}
\begin{figure}
\include{wconsistence_properties/linearisation_surete_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Régularité}
\begin{block}{Définition}
Une lecture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
\end{block}
\begin{figure}
\include{wconsistence_properties/linearisation_regularite_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Atomicité}
\begin{block}{Définition}
Si deux lectures ne sont pas concurrente la deuxième doit retourner une valeur au moins aussi récente que la première.
\end{block}
\begin{figure}
\include{wconsistence_properties/linearisation_atomicite_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Les classes de cohérence}
\begin{columns}
\column{0.5\textwidth}
\resizebox{\columnwidth}{!}{
\includegraphics{images/carte_criteres.png}
}
\column{0.5\textwidth}
Une approche pour définir la cohérence d'un algorithme est de placer l'histoire concurrente qu'il produit dans une classe de cohérence. \\
Nous pouvons définir 3 classes de cohérence : %citer Perrin
\begin{itemize}
\item La \textbf{Localité d'état} (LS)
\item La \textbf{Validité} (V)
\item La \textbf{Convergence} (EC)
\end{itemize}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Localité d'état (LS)}
\begin{columns}
\column{0.4\textwidth}
\include{wconsistence_properties/localiteetat_hc}
\column{0.6\textwidth}
\begin{block}{Définition}
Pour tout processus $p$, il existe une linéarisation contenant toutes les lectures pures de $p$. \\
\end{block}
\begin{math}
\begin{array}{ll}
e.g.: & \textcolor{blue}{C_{p_1} = \{r/(0,0), r/(0,2)^w, w(2)\}}, \\
& \textcolor{red}{C_{p_2} = \{r/(0,0), r/(0,1)^w, w(1)\}}, \\
& \textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^w} \\
& \textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^w} \\
\end{array}
\end{math}
\end{columns}
\begin{flushright}
\begin{math}
LS = \left\{
\begin{array}{l}
\mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\
T \rightarrow \left\{
\begin{tabular}{lll}
$H \in \mathcal{H}:$ & \multicolumn{2}{l}{$\forall p \in \mathcal{P}_H, \exists C_p \subset E_H,$} \\
& & $\hat{Q}_{T,H} \subset C_p$ \\
& $\land$ & $lin(H[p \cap C_p / C_p]) \cap L(T) \neq \emptyset$ \\
\end{tabular}
\right. \\
\end{array}
\right.
\end{math}
\end{flushright}
\end{frame}
\begin{frame}
\frametitle{Validité (V)}
\begin{columns}
\column{0.4\textwidth}
\include{wconsistence_properties/validite_hc}
\column{0.6\textwidth}
\begin{block}{Définition}
Il existe, un ensemble cofini d'événement tel que pour chacun d'entre eux une linéarisation de toutes les opérations d'écriture les justifient. \\
\end{block}
\begin{math}
\begin{array}{ll}
e.g.: & E' = \{r/(2,1)^w, r/(1,2)^w\} \\
& w(2) \bullet w(1) \bullet \textcolor{red}{r/(2,1)^w} \\
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\
\end{array}
\end{math}
\end{columns}
\begin{flushright}
\begin{math}
V = \left\{
\begin{array}{l}
\mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\
T \rightarrow \left\{
\begin{array}{lll}
H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\
& \lor & \exists E' \subset E_H, (|E_H \setminus E'| < \infty \\
& & \land \forall e \in E', lin(H[E_H / {e}]) \cap L(T) \neq \emptyset) \\
\end{array}
\right. \\
\end{array}
\right.
\end{math}
\end{flushright}
\end{frame}
\begin{frame}
\frametitle{Convergence (EC)}
\begin{columns}
\column{0.4\textwidth}
\include{wconsistence_properties/convergence_hc}%
\column{0.5\textwidth}
\begin{block}{Définition}
Il existe un ensemble cofini d'événements dont chacun peut être justifié par une seule linéarisation. \\
\end{block}
\begin{math}
\begin{array}{ll}
e.g.: & E' = \{r/(1,2)^w, r/(1,2)^w\} \\
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\
\end{array}
\end{math}
\end{columns}
\begin{flushright}
\begin{math}
EC = \left\{
\begin{array}{l}
\mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\
T \rightarrow \left\{
\begin{array}{lll}
H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\
& \lor & \exists E' \subset E_H, |E_H \setminus E'| < \infty \\
& & \land \displaystyle\bigcap_{e \in E'} \delta_T^{-1}(\lambda(e)) \neq \emptyset \\
\end{array}
\right. \\
\end{array}
\right.
\end{math}
\end{flushright}
\end{frame}

View File

@ -0,0 +1,31 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
\node[invisible] (13) [right=100pt of 12] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (22) [right=50pt of 21] {\textcolor{red}{$r_x/(0,1)$}};
\node[roundedrectangle] (23) [right=15pt of 22] {\textcolor{red}{$r_x/(0,1)$}};
\node[roundedrectangle] (24) [right=10pt of 23] {\textcolor{red}{$r_x/(0,1)$}};
\node[roundedrectangle] (25) [right=20pt of 24] {\textcolor{red}{$r_x/(0,1)$}};
\node[invisible] (26) [below=15pt of 13] {};
\node[invisible] (30) [below=15pt of 20] {};
\node[roundedrectangle] (31) [right=30pt of 30] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (32) [right=55pt of 31] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (33) [right=15pt of 32] {\textcolor{red}{$r_x/(0,1)$}};
\node[roundedrectangle] (34) [right=25pt of 33] {\textcolor{red}{$r_x/(0,1)$}};
\node[invisible] (35) [below=15pt of 26] {};
\draw (10) -- (11) -- (12) -- (13);
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25) -- (26);
\draw (30) -- (31) -- (32) -- (33) -- (34) -- (35);
\end{tikzpicture}
}

View File

@ -0,0 +1,23 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
\node[invisible] (13) [right=100pt of 12] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (22) [right=50pt of 21] {\textcolor{red!70}{$r_x/(0,1)$}};
\node[roundedrectangle] (23) [right=15pt of 22] {\textcolor{blue!70}{$r_x/(0,0)$}};
\node[roundedrectangle] (24) [right=10pt of 23] {\textcolor{blue!70}{$r_x/(0,0)$}};
\node[roundedrectangle] (25) [right=20pt of 24] {\textcolor{red}{$r_x/(0,1)$}};
\node[invisible] (26) [below=15pt of 13] {};
\draw (10) -- (11) -- (12) -- (13);
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25) -- (26);
\end{tikzpicture}
}

View File

@ -0,0 +1,22 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
\node[invisible] (13) [right=65pt of 12] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (22) [right=25pt of 21] {\textcolor{blue}{$r_x/(0,0)$}};
\node[roundedrectangle] (23) [right=30pt of 22] {\textcolor{black!70}{$r_x/(?)$}};
\node[roundedrectangle] (24) [right=55pt of 23] {\textcolor{red}{$r_x/(0,1)$}};
\node[invisible] (25) [below=15pt of 13] {};
\draw (10) -- (11) -- (12) -- (13);
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25);
\end{tikzpicture}
}

View File

@ -0,0 +1,34 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode, draw=red, fill=red] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode, draw=blue, fill=blue] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,0)$};
\node[roundnode, draw=blue, fill=blue] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,2)^w$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode, draw=blue, fill=blue] (21) [below=of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode, draw=red, fill=red] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,0)$};
\node[roundnode, draw=red, fill=red] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,1)^w$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[message] (11) -- ($(22)!0.5!(23)$);
\draw[message] (21) -- ($(12)!0.5!(13)$);
\end{tikzpicture}
}

View File

@ -0,0 +1,31 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,1)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(2,1)^w$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode] (21) [below=of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,2)$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(1,2)^w$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\end{tikzpicture}
}

View File

@ -0,0 +1,69 @@
\begin{frame}
\frametitle{Résumé de l'article}
\begin{block}{Apports}
\begin{itemize}
\item Formalisation des attaques possibles sur les systèmes satisfaisant la convergence causale.
\item Définition de propriétés permettant de contrer ou de limiter ces attaques.
\item Formalisation de "nouvelles" classes de cohérence faible étendant la cohérence causale à ces propriétés : "Secure Causal Consistency".
\item Présentation d'algorithmes produisant des histoires satisfaisant cette classe.
\item Expérimentation de ces algorithmes et comparaison avec les algorithmes existants.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Résumé de l'article}
\begin{block}{Attentes}
Les auteurs cherchent à produire un algorithme maximisant l'interactivité et donc minimisant la latence. \newline
L'architecture étudiée est une architecture client-serveur, avec une connectivité en pair à pair entre les clients.
\end{block}
Illustration de l'architecture
\end{frame}
\begin{frame}
\frametitle{Attaques}
\begin{block}{Attaques}
\begin{itemize}
\item \textbf{Tempering} : Anticipation d'une opération reçue par le système, mais pas encore exécutée par l'ensemble des nœuds.
\item \textbf{Omitting Dependencies} : Création d'une opération suivant un sous ensemble des dépendances réelles.
\item \textbf{Unseen Dependencies} : Anticipation d'une opération non reçue par le système, mais probable d'arrivée.
\item \textbf{Sibling Generation} : Création de deux opérations différentes possédant le même identifiant. Réalisant ainsi une divergence entre les nœuds.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Propriétés}
\begin{block}{Propriétés}
\begin{itemize}
\item \textbf{Immutable History} : Chaque opération est envoyée avec son passé causal. (Parade le \textbf{Tempering})
\item \textbf{No Future Dependencies} : Chaque opération est envoyée avec l'état qu'il connait des nœuds. (Parade l'\textbf{Unseen Dependencies}, il devient impossible de créer une opération à l'avance).
\item \textbf{Causal Execution} : Toute opération $o_i$ appartenant au passé causal d'une opération $o$ doit être sérialisable t.q. : $o_i < o$. (Fait office de synchronisation entre les nœuds)
\item \textbf{Eventual Sibling Detection} : Les opérations sont considérées comme des "jumeaux" éventuels et sont donc "révocables" via une nouvelle opération dédiée. (Parade (relativement) le \textbf{Sibling Generation})
\item \textbf{Limited Omission} : à travailler
\end{itemize}
\end{block}
Ces propriétés définissent la première classe que les auteurs introduisent : \textbf{Secure Causal Consistency}.
\end{frame}
\begin{frame}
\frametitle{Les différentes classes de cohérence faible}
\begin{block}{Les différentes classes de cohérence faible}
\begin{itemize}
\item \textbf{Secure Causal Consistency} : Respecte les propriétés précédentes ainsi que celles introduites par la convergence causale.
\item \textbf{Secure Strict Causal Consistency} : Extension de la précédente, mais avec un ordre total basé sur la vision d'un observateur externe.
\item \textbf{Extended Secure Causal Consistency} :
\end{itemize}
\end{block}
\end{frame}

View File

@ -0,0 +1 @@
\input{corps/attaques.tex}

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -0,0 +1,88 @@
\begin{frame}
\frametitle{Cohérence Causale (Convergente)}
\begin{columns}
\column{0.5\textwidth}
\resizebox{\columnwidth}{!}{
\includegraphics{images/carte_criteres.png}
}
\column{0.5\columnwidth}
\begin{block}{La cohérence causale selon Van Der Linde}
Usage du terme \textbf{Causal Consistency} qui pourrait être confondue avec la Cohérence Causale de Perrin. \newline
Mais s'approche plus de ce que Perrin qualifie de \textbf{Convergence Causale} (ou Causal Convergence (CCv)). \newline
Les auteurs souhaitent privilégier la \textbf{Convergence} à la \textbf{Validité}.
\end{block}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Cohérence Causale Faible (WCC)}
\begin{block}{Définition}
Il existe un ordre causal tel que pour chaque lecture, il existe une linéarisation du passé causal de cet événement le justifiant.
\end{block}
\only<1>{
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\input{schemas/wcc_hc_1}
\end{tcolorbox}
\column{0.5\columnwidth}
$\textcolor{red}{w(1)} \bullet \textcolor{red!50}{r/(0,1)}$ \newline
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{green!75!black}{r/(3,1)}$ \newline
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{blue!50}{r/(3,1)}$ \newline
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{red!25}{r/(3,2)}$ \newline
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{blue!50}{r} \bullet \textcolor{blue!25}{r/(3,2)}$ \newline
\end{columns}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=red!50!black]
\input{schemas/wcc_hc_2}
\end{tcolorbox}
\column{0.5\columnwidth}
$w(1) \bullet r/(0,1)$ \newline
Ici il n'est pas possible de trouver un ordre causal qui permette de linéariser le passé causal de $r/(2,1)$.
\end{columns}
}
\only<2>{
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\input{schemas/wcc_hc_3}
\end{tcolorbox}
\column{0.5\columnwidth}
$\textcolor{green!75!black}{r/(0,0)}$ \newline
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{red!50}{r/(3,1)}$ \newline
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{blue!50}{r/(1,3)}$ \newline
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{red!25}{r/(1,2)^\omega}$ \newline
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{blue!50}{r} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{blue!25}{r/(3,2)^\omega}$ \newline
Cet exemple respecte la validité, mais pas la convergence.
\end{columns}
}
\end{frame}
\begin{frame}
\frametitle{Convergence Causale (CCv)}
\begin{block}{Définition}
Il existe un ordre causal et un ordre total tel que pour chaque lecture, il existe une linéarisation du passé causal de cet événement trié suivant l'ordre total le justifiant.
\end{block}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\resizebox{1.2\columnwidth}{!}{
\includegraphics{schemas/ccv_hc_1.png}
}
\end{tcolorbox}
\column{0.5\columnwidth}
% J'expliquerai au tableau
\end{columns}
\end{frame}

View File

@ -0,0 +1,36 @@
\subsubsection{Le début de l'informatique distribuée}
\begin{frame}
\frametitle{Les processeurs multicœurs}
\begin{block}{Historique (1970)}
\begin{itemize}
\item Besoin d'augmenter les performances des processeurs
\begin{itemize}
\item Augmentation de la fréquence (limite physique)
\item Augmentation du nombre de processeurs (problèmes de cohérence)
\end{itemize}
\item Lamport à défini des propriétés permettant de définir la notion de cohérence forte.
\item L'approche de Lamport est de classer l'exécution et non pas l'algorithme.
\end{itemize}
\begin{quotation}
"A correct execution is achieved if the results produced are the same as would be produced by executing the program steps in order."
\footnote{Lamport, \emph{How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs}, 1979}
\end{quotation}
\end{block}
\end{frame}
\begin{frame}
\frametitle{La généralisation aux systèmes distribuée}
\begin{block}{Historique (1980)}
\begin{itemize}
\item Lamport étend sa définition de la cohérence forte aux systèmes distribués. \footnote{Lamport, \emph{On interprocess communication}, 1986}
\item Il définit trois propriétés :
\begin{itemize}
\item \textbf{Sûreté}
\item \textbf{Régularité}
\item \textbf{Atomicité}
\end{itemize}
\item Une exécution qui respecte ces 3 propriétés est dite linéarisable.
\end{itemize}
\end{block}
\end{frame}

View File

@ -0,0 +1,11 @@
\subsection{Historique}
\include{intro/history.tex}
\subsection{La linéarisabilité}
\include{intro/linearisabilite.tex}
\subsection{Rappels}
\include{intro/rappel.tex}
\subsection{Cohérence Causale (Convergente)}
\include{intro/coherencecausale.tex}

View File

@ -0,0 +1,45 @@
\begin{frame}
\frametitle{Sûreté}
\begin{block}{Définition}
Toute lecture réalisée dans un même environnement non-concurrent est identique.
\end{block}
\begin{figure}
\input{schemas/linearisation_surete_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Régularité}
\begin{block}{Définition}
Une lecture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
\end{block}
\begin{figure}
\input{schemas/linearisation_regularite_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Atomicité}
\begin{block}{Définition}
Si deux lectures ne sont pas concurrente la deuxième doit retourner une valeur au moins aussi récente que la première.
\end{block}
\begin{figure}
\input{schemas/linearisation_atomicite_hc}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Cohérence Atomique ($C_\top$)}
\begin{block}{Définition}
La cohérence atomique est le critère de cohérence le plus fort existant.
\begin{itemize}
\item Il est le moins efficace en terme d'interactivité.
\item Il demande une synchronisation entre les opérations
\begin{itemize}
\item Chaque opération d'écriture ou de lecture est bloquante et doit attendre la fin de la précédente.
\end{itemize}
\item Il est utilisé en tant que référence.
\end{itemize}
\end{block}
\end{frame}

View File

@ -0,0 +1,147 @@
\begin{frame}
\frametitle{Les modèles de cohérences}
\begin{columns}
\column{0.6\textwidth}
\footnote{Perrin, \emph{Concurrence et cohérence dans les systèmes répartis}, 2017}
\resizebox{\columnwidth}{!}{
\includegraphics{images/carte_criteres.png}
}
\column{0.4\columnwidth}
\begin{block}{Les classes de cohérences}
2 Grandes familles :
\begin{itemize}
\item Cohérence Forte
\item Cohérence Faible :
\begin{itemize}
\item Localité d'état (SL)
\item Convergence (EC)
\item Validité (V)
\end{itemize}
\end{itemize}
\end{block}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Validité (V)}
\begin{block}{Définition}
Il existe, un ensemble cofini d'événement tel que pour chacun d'entre eux une linéarisation de toutes les opérations d'écriture les justifient. \\
\end{block}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\input{schemas/validite_hc_1}
\end{tcolorbox}
\column{0.5\columnwidth}
\begin{math}
\begin{array}{ll}
E' = & \{r/(2,1)^\omega, r/(1,2)^\omega\} \\
& w(2) \bullet w(1) \bullet \textcolor{red}{r/(2,1)^\omega} \\
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^\omega} \\
\end{array}
\end{math}
\end{columns}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=red!50!black]
\input{schemas/validite_hc_2}
\end{tcolorbox}
\column{0.5\columnwidth}
$E' = \{r/(0,1)^\omega, r/(1,2)^\omega\}$. \\
Il n'existe pas de linéarisation des opérations d'écritures qui justifie $r/(0,1)^\omega$.
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Localité d'état}
\begin{block}{Définition}
Pour tout processus $p$, il existe une linéarisation contenant toutes les lectures pures de $p$. Respectant l'ordre local de ces lectures. \\
\end{block}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\input{schemas/localiteetat_hc_1}
\end{tcolorbox}
\column{0.5\columnwidth}
\begin{math}
\begin{array}{l}
\textcolor{blue}{C_{p_0} = \{r/(0,0), r/(0,2)^\omega, w(2)\}}, \\
\textcolor{red}{C_{p_1} = \{r/(0,0), r/(0,1)^\omega, w(1)\}}, \\
\textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^\omega} \\
\textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^\omega} \\
\end{array}
\end{math}
\end{columns}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=red!50!black]
\input{schemas/localiteetat_hc_2}
\end{tcolorbox}
\column{0.5\columnwidth}
$E'_{p_0} = \{r/(0,0), r/(2,1)^\omega\},$ \newline
$r/(0,0) \bullet w(2) \bullet w(1) \bullet r/(2,1)^\omega$ \newline
$E'_{p_1} = \{r/(0,1), r/(2,1)^\omega\}$. \newline
Il n'existe pas de linéarisation de $p_1$ respectant la localité d'état.
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Convergence (EC)}
\begin{block}{Définition}
Il existe un ensemble cofini d'événements dont chacun peut être justifié par un seul et même état. \\
\end{block}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=green!50!black]
\input{schemas/convergence_hc_1}
\end{tcolorbox}
\column{0.5\columnwidth}
$E' = \{r/(1,2)^\omega, r/(1,2)^\omega\}$ \newline
$\delta = ((1,2), \emptyset)$ est un état possible justifiant $E'$.
\end{columns}
\begin{columns}
\column{0.4\columnwidth}
\begin{tcolorbox}[colframe=red!50!black]
\input{schemas/convergence_hc_2}
\end{tcolorbox}
\column{0.5\columnwidth}
$E' = \{r/(1,2)^\omega, r/(2,1)^\omega\}$. \newline
Il n'existe aucun état possible justifiant $E'$ puisque deux lectures infinies sont incohérentes.
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Cohérence Causale}
\begin{columns}
\column{0.6\textwidth}
\resizebox{\columnwidth}{!}{
\includegraphics{images/carte_criteres.png}
}
\column{0.4\columnwidth}
\begin{block}{Les classes de la cohérence causale}
\begin{itemize}
\item \textbf{WCC}: Weak Causal Consistency (V)
\item \textbf{CCv}: Causal Convergence (V, EC)
\end{itemize}
\end{block}
On respecte les propriétés suivantes :
\begin{itemize}
\item Localité d'état (SL)
\item Convergence (EC)
\end{itemize}
\end{columns}
\end{frame}

View File

@ -0,0 +1,58 @@
\documentclass{beamer}
\usetheme{Boadilla}
\usecolortheme{orchid}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{stackengine}
\addtobeamertemplate{navigation symbols}{}{%
\usebeamerfont{footline}%
\usebeamercolor[fg]{footline}%
\hspace{1em}%
\insertframenumber/\inserttotalframenumber
}
\usepackage{ulem}
\usepackage{tkz-tab}
\setbeamertemplate{blocks}[rounded]%
[shadow=true]
\AtBeginSection{%
\begin{frame}
\tableofcontents[sections=\value{section}]
\end{frame}
}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\usepackage{tcolorbox}
\usepackage{chronosys}
\title[bwconsistency]{Cohérence faible byzantine appliquée au cloud}
\subtitle{Présentation intermédiaire: "Practical Client-side Replication: Weak Consistency Semantics for Insecure Settings"}
\author[JOLY Amaury]{JOLY Amaury\\ \textbf{Encadrants :} GODARD Emmanuel, TRAVERS Corentin }
% \\[2ex] \includegraphics[scale=0.1]{./img/amu.png}
\institute[LIS, Scille]{LIS-LAB, Scille}
\date{\today}
\begin{document}
\maketitle
\begin{frame}{Table des matières}
\tableofcontents
\end{frame}
\section{Introduction}
\input{intro/index.tex}
\input{corps/index.tex}
% \section{Les propriétés de la Cohérence Faible}
% \input{wconsistence_properties/index.tex}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,41 @@
\resizebox{\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$I(a)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,1)$};
\node[roundnode] (14) [right=35pt of 13] {};
\node[above] at (14.north) {$r/(1,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\draw[arrow] (13) -- (14);
\node[roundnode] (21) [below=10pt of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$R/\emptyset$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,2)$};
\node[roundnode] (24) [right=35pt of 23] {};
\node[below] at (24.south) {$r/(1,2)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[arrow] (23) -- (24);
\draw (24) -- (14);
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -2.9);
\end{tikzpicture}
}

View File

@ -0,0 +1,41 @@
\resizebox{\columnwidth}{!}{
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$I(a)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,1)$};
\node[roundnode] (14) [right=35pt of 13] {};
\node[above] at (14.north) {$r/(1,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\draw[arrow] (13) -- (14);
\node[roundnode] (21) [below=10pt of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$R/\emptyset$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,2)$};
\node[roundnode] (24) [right=35pt of 23] {};
\node[below] at (24.south) {$r/(2,1)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[arrow] (23) -- (24);
\draw (24) -- (14);
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -2.9);
\end{tikzpicture}
}

View File

@ -0,0 +1,26 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
\node[invisible] (12) [right=100pt of 11] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
\node[invisible] (24) [below=15pt of 12] {};
\node[invisible] (30) [below=15pt of 20] {};
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red}{$r/(1)$}};
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{red}{$r/(1)$}};
\node[invisible] (33) [below=15pt of 24] {};
\draw (10) -- (11) -- (12);
\draw (20) -- (21) -- (22) -- (23) -- (24);
\draw (30) -- (31) -- (32) -- (33);
\end{tikzpicture}
}

View File

@ -0,0 +1,26 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
\node[invisible] (12) [right=100pt of 11] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
\node[invisible] (24) [below=15pt of 12] {};
\node[invisible] (30) [below=15pt of 20] {};
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red}{$r/(1)$}};
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{blue}{$r/(0)$}};
\node[invisible] (33) [below=15pt of 24] {};
\draw (10) -- (11) -- (12);
\draw (20) -- (21) -- (22) -- (23) -- (24);
\draw (30) -- (31) -- (32) -- (33);
\end{tikzpicture}
}

View File

@ -0,0 +1,26 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
invisible/.style={draw=none, fill=none},
]
\node[invisible] (10) {};
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
\node[invisible] (12) [right=100pt of 11] {};
\node[invisible] (20) [below=15pt of 10] {};
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
\node[invisible] (24) [below=15pt of 12] {};
\node[invisible] (30) [below=15pt of 20] {};
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red!50!blue}{$r/(27)$}};
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{red}{$r/(1)$}};
\node[invisible] (33) [below=15pt of 24] {};
\draw (10) -- (11) -- (12);
\draw (20) -- (21) -- (22) -- (23) -- (24);
\draw (30) -- (31) -- (32) -- (33);
\end{tikzpicture}
}

View File

@ -0,0 +1,34 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode, draw=red, fill=red] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode, draw=blue, fill=blue] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,0)$};
\node[roundnode, draw=blue, fill=blue] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode, draw=blue, fill=blue] (21) [below=10pt of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode, draw=red, fill=red] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,0)$};
\node[roundnode, draw=red, fill=red] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(0,1)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\draw[message] (11) -- ($(22)!0.5!(23)$);
\draw[message] (21) -- ($(12)!0.5!(13)$);
\end{tikzpicture}
}

View File

@ -0,0 +1,32 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,0)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode] (21) [below=10pt of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,1)$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(2,1)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\end{tikzpicture}
}

View File

@ -0,0 +1,31 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,1)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(2,1)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode] (21) [below=10pt of 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,2)$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(1,2)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\end{tikzpicture}
}

View File

@ -0,0 +1,31 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[left] at (11.west) {$p_0$};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,1)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(0,1)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode] (21) [below=10ptof 11] {};
\node[left] at (21.west) {$p_1$};
\node[below] at (21.south) {$w(2)$};
\node[roundnode] (22) [right=of 21] {};
\node[below] at (22.south) {$r/(0,2)$};
\node[roundnode] (23) [right=of 22] {};
\node[below] at (23.south) {$r/(1,2)^\omega$};
\draw[arrow] (21) -- (22);
\draw[arrow] (22) -- (23);
\end{tikzpicture}
}

View File

@ -0,0 +1,42 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode, color=red] (11) {};
\node[above] at (11.north) {$w(1)$};
\node[roundnode, color=red!50] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(0,1)$};
\node[roundnode, color=red!25] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(3,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode, color=green!75!black] (21) [below=20pt of 11] {};
\node[left] at (21.west) {$r/(3,1)$};
\node[roundnode, color=green!95!black] (22) [right=of 21] {};
\node[right] at (22.east) {$w(2)$};
\draw[arrow] (21) -- (22);
\node[roundnode, color=blue] (31) [below=20pt of 21] {};
\node[below] at (31.south) {$w(3)$};
\node[roundnode, color=blue!50] (32) [right=of 31] {};
\node[below] at (32.south) {$r/(3,1)$};
\node[roundnode, color=blue!25] (33) [right=of 32] {};
\node[below] at (33.south) {$r/(3,2)^\omega$};
\draw[arrow] (31) -- (32);
\draw[arrow] (32) -- (33);
\draw[message] (11) -- (21);
\draw[message] (31) -- (21);
\draw[message] (21) -- (32);
\draw[message] (22) -- (13);
\draw[message] (22) -- (33);
\end{tikzpicture}
}

View File

@ -0,0 +1,29 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode] (11) {};
\node[above] at (11.north) {$w(1)$};
\node[roundnode] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(2,1)$};
\node[roundnode] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(2,1)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode] (21) [below=20pt of 11] {};
\node[left] at (21.west) {$r/(0,1)$};
\node[roundnode] (22) [right=of 21] {};
\node[right] at (22.east) {$w(2)$};
\draw[arrow] (21) -- (22);
\draw[message] (11) -- (21);
\draw[message] (22) -- (12);
\end{tikzpicture}
}

View File

@ -0,0 +1,41 @@
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
arrow/.style={|->, thick,},
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
]
\node[roundnode, color=red] (11) {};
\node[above] at (11.north) {$w(1)$};
\node[roundnode, color=red!50] (12) [right=of 11] {};
\node[above] at (12.north) {$r/(3,1)$};
\node[roundnode, color=red!25] (13) [right=of 12] {};
\node[above] at (13.north) {$r/(1,2)^\omega$};
\draw[arrow] (11) -- (12);
\draw[arrow] (12) -- (13);
\node[roundnode, color=green!75!black] (21) [below=20pt of 11] {};
\node[left] at (21.west) {$r/(0,0)$};
\node[roundnode, color=green!95!black] (22) [right=of 21] {};
\node[right] at (22.east) {$w(2)$};
\draw[arrow] (21) -- (22);
\node[roundnode, color=blue] (31) [below=20pt of 21] {};
\node[below] at (31.south) {$w(3)$};
\node[roundnode, color=blue!50] (32) [right=of 31] {};
\node[below] at (32.south) {$r/(1,3)$};
\node[roundnode, color=blue!25] (33) [right=of 32] {};
\node[below] at (33.south) {$r/(3,2)^\omega$};
\draw[arrow] (31) -- (32);
\draw[arrow] (32) -- (33);
\draw[message] (11) -- (31);
\draw[message] (31) -- (12);
\draw[message] (22) -- (13);
\draw[message] (22) -- (33);
\end{tikzpicture}
}