reorganisation

This commit is contained in:
Amaury
2023-07-03 14:32:03 +02:00
committed by Amaury JOLY
parent 7c080a146d
commit 6d37e433ef
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}
}