\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows,shapes,automata,backgrounds,petri}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{ccicons}

\begin{document}
\renewcommand{\labelitemi}{\tikz{\shade[shading=ball, ball color=green] (0,0) circle (.1)}}

\begin{center}
\textbf{\LARGE{Jeux sur réseaux de Petri}}
\end{center}

\section{Introduction aux réseaux de Petri}

\subsection{Jeux de Nim sur graphes}

\par{On rappelle que les jeux de type Nim peuvent être joués en déplaçant un pion ou un jeton sur un graphe orienté\footnote{Le nom "classique" de ce genre de jeu est \emph{Generalized GeoGraphy}; mais peu d'expériences ont été menées jusqu'ici sur le jeu en question, on continuera donc ici à parler de jeux de Nim déguisés en jeux sur graphe.}; ci-dessous le pion est initialement placé sur la case bleue tout à gauche:
}

\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place,tokens=1] (a1) {};
    \foreach \n in {2,...,5} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    	\node [red place] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}

\par{La case rouge tout à droite est l'arrivée, et le joueur qui parvient à mener le pion dans cette case est le gagnant du jeu. Dans cette configuration, celui qui joue en premier peut gagner en ne déplaçant le pion que d'une case:
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place] (a1) {};
    \node [place,tokens=1] (a2) [right of=a1] {};
    \foreach \n in {3,...,5} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    	\node [red place] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}

\par{En effet depuis cette position le pion ne peut accéder qu'à une des trois positions suivantes, d'où il est possible de gagner en l'amenant directement à l'arrivée:
}

\begin{enumerate}
\item En empruntant l'arête horizontale



\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place] (a1) {};
    \node [place] (a2) [right of=a1] {};
    \node [place,tokens=1] (a3) [right of=a2] {};
    \foreach \n in {4,...,5} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    	\node [red place] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}

\item En empruntant l'arête du bas




\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place] (a1) {};
    \foreach \n in {2,...,3} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    \node [place,tokens=1] (a4) [right of=a3] {};
    	\node [place] (a5) [right of=a4]  {};
    	\node [red place] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}


\item En empruntant l'arête du haut




\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place] (a1) {};
    \foreach \n in {2,...,4} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    \node [place,tokens=1] (a5) [right of=a4] {};
    	\node [red place] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}



\end{enumerate}

\par{En effet depuis chacune de ces trois positions, il y a un chemin permettant d'amener le jeton directement à la position gagnante:


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place] (a1) {};
    \foreach \n in {2,...,5} {%
    
    	\node [place] (a\n) [right of=a\predn]  {};
    	};
    	\node [red place,tokens=1] (a6) [right of=a5] {};
    \foreach \n in {1,...,6} {%
    
    	};
    \foreach \n in {2,...,6} {%
			\path (a\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (a\ppn) edge[->, ultra thick, bend right=60] (a\n);
    	};
    \foreach \n in {4,...,6} {%
			\path (a\pppn) edge[->, ultra thick, bend left=60] (a\n);
    	};

\end{tikzpicture}
\end{center}



\par{Édouard Lucas parlait de routes au lieu d'arêtes, et de carrefours au lieu de sommets; on peut donc, avec lui, imaginer le jeu de Nim sur graphe comme une course de relais, où le gagnant est celui qui tient le relais au moment où il arrive à la dernière case (ou sommet ou carrefour). Mais une constante chez Berlekamp, Conway et Guy est que les jeux combinatoires consistent à jouer le plus longtemps possible. Donc plutôt que de dire que le gagnant de la course est celui qui arrive à la case finale, on dira plutôt que le perdant du jeu est le premier qui ne peut plus jouer. Ce déplacement de point de vue permet une généralisation inspirée par Karl Adam Petri, qui utilisait des graphes spéciaux pour modéliser les échanges commerciaux internationaux.
}

\subsection{Apport de Petri}

\subsubsection{Vocabulaire}

\par{Tout d'abord, Petri parle de \emph{jetons} plutôt que de pions, et c'est ce qu'on a fait depuis le début de cet article. Ensuite, les sommets du graphe contenant les jetons, et que Lucas appelait \emph{carrefours}, Petri les renomme \emph{places}.
}

\par{Ensuite, Petri distingue le graphe lui-même de la disposition des jetons sur le graphe, qu'il appelle \emph{marquage} du graphe. Oui, le mot \emph{jetons} va désormais se conjuguer au pluriel, c'est une différence essentielle par rapport au jeu de Nim classique sur graphe. 
}

\par{Enfin, lorsque le jeton passe d'une place à une autre, Petri parle de \emph{déclenchement}.
}

\subsubsection{Où Petri anticipe sur Star Trek}

\par{Mais la principale nouveauté chez Petri, et celle qui va permettre des généralisations, est une version anticipée des téléporteurs de Star Trek: Au milieu de chaque arête du graphe, Petri place un sommet que le jeton n'occupera que très brièvement, lors d'une traversée façon téléporteur:

\begin{enumerate}
\item Lorsque le jeton entre dans cette case, il est désintégré comme dans Star Trek;
\item Mais ensuite il est reconstitué à l'entrée de la place d'arrivée.
\end{enumerate}

Ceci revient au même qu'une simple traversée de l'arête, mais permet des généralisations que l'on verra plus bas. Petri appelle \emph{transitions} ces téléporteurs destinés à  n'être que brièvement occupés, juste le temps d'une désintégration/reconstitution. On convient de représenter les transitions par des rectangles.
}

\par{Voici la version "réseau de Petri" du jeu précédent :
}


\begin{center}
\begin{tikzpicture}[node distance=12mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place,tokens=1] (a1) {};
    \node [transition] (t1) [right of=a1]{};
    \foreach \n in {2,...,5} {%
    	\node [place] (a\n) [right of=t\predn]  {};
    	\node [transition] (t\n) [right of=a\n]  {};
    	\node [transition] (u\n) [below of=a\n]  {};
    	};
    	\node [red place] (a6) [right of=t5] {};
    \foreach \n in {1,...,5} {%
    \path (a\n) edge[->, ultra thick] (t\n);
    	};
    \foreach \n in {2,...,6} {%
			\path (t\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (u\predn) edge[->, ultra thick, bend right=30] (a\n);
			\path (a\ppn) edge[->, ultra thick, bend right=30] (u\predn);
    	};
    \foreach \n in {4,...,6} {%
    	\node [transition] (v\ppn) [above of=t\ppn]  {};
			\path (a\pppn) edge[->, ultra thick] (v\ppn);
			\path (v\ppn) edge[->, ultra thick] (a\n);
    	};

\end{tikzpicture}
\end{center}

\par{Jouer revient donc à choisir une transition accessible au jeton (depuis la place marquée par le jeton), sans oublier de la traverser vite pour aller à la place qu'il pointe, et le premier joueur ne pouvant plus choisir une transition (parce qu'il n'y en a pas) est le perdant. 
}

\subsubsection{Généralisation}

\par{Lorsqu'on transforme un graphe de Nim en réseau de Petri, le réseau obtenu est particulier pour les deux raisons suivantes:
\begin{itemize}
\item chaque transition ne mène qu'à une place;
\item chaque transition n'est accessible que depuis une place.
\end{itemize}

Pour obtenir un réseau de Petri plus général, on lève ces deux restrictions. On va voir des exemples de ces généralisations.
}

\begin{enumerate}

\item \par{Dans le réseau de Petri ci-dessous, le jeton va vers une transition où il va être désintégré, mais de cette transition partent deux arêtes. Où doit aller le jeton reconstitué, à gauche ou à droite ?
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place,tokens=1] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place] (b) [below of=t] {};
    \node [place] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Les deux mon capitaine (Kirk) ! Lorsque le jeton est désintégré, ce sont deux jetons qui sont reconstitués dans la transition, et ils vont chacun à sa destination :
}



\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=1] (b) [below of=t] {};
    \node [place, tokens=1] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{On remarque que maintenant on ne peut plus jouer, et le jeu sur ce réseau de Petri (avec ce marquage initial) se fait en un seul coup : Celui qui joue en premier est le gagnant. Mais il en est de même pour cette variante en trois  coups :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place,tokens=3] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place] (b) [below of=t] {};
    \node [place] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{En effet après le premier coup, on a ce réseau marqué :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=2] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=1] (b) [below of=t] {};
    \node [place, tokens=1] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Le futur perdant ne peut jouer que ce coup :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=2] (b) [below of=t] {};
    \node [place, tokens=2] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Ce qui permet à celui qui avait joué en premier, de jouer le dernier coup, aboutissant à}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=3] (b) [below of=t] {};
    \node [place, tokens=3] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Par contre cette variante}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=4] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place] (b) [below of=t] {};
    \node [place] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{aboutit en 4 coups à}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=4] (b) [below of=t] {};
    \node [place, tokens=4] (c) [right of=b] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{et c'est donc le second joueur qui gagne. On constate que ce réseau de Petri, peu intéressant comme jeu, présente un intérêt du point de vue informatique: C'est une machine à dupliquer les jetons.
}

\par{On constate également sur cet exemple que contrairement au jeu de Nim à un seul jeton, le nombre total de jetons sur un réseau de Petri n'est pas nécessairement constant. Il existe même des réseaux de Petri non bornés, où ce nombre croît sans limite. En voici un exemple où le jeu ne s'arrête jamais :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1] (a) {};
    \node [transition] (t) [right of=a]{};
    \node [place] (b) [right of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick, bend right=45] (a);
\end{tikzpicture}
\end{center}



\item \par{Voici la situation inverse de la précédente: Une seule arête part de la transition, mais deux arêtes y arrivent. Lequel des deux jetons devra être désintégré pour permettre le déclenchement de la transition ?
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1] (a) {};
    \node [place, tokens=1] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Les deux mon Kirk ! En fait, le déclenchement de la transition va absorber un jeton de chaque place en amont de la transition, le désintégrer, et ne reconstituer qu'un seul jeton qui ira à la place finale :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [place] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=1] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Avec le marquage initial précédent, le jeu se gagne en un coup et le premier qui joue est le gagnant. Il n'en est pas de même avec ce marquage initial :}

\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [place, tokens=1] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Pourquoi ? Parce que comme il n'y a pas de jeton dans la place en haut à gauche, la transition ne peut s'effectuer et le jeu est impossible.
}

\par{Pour préciser ce point délicat, on va essayer un autre marquage :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place,tokens=3] (a) {};
    \node [place, tokens=4] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Comme il y a au moins un jeton dans chacune des places du haut, la transition peut s'effectuer; elle va absorber un jeton de chaque place en amont, et injecter un jeton en aval :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place,tokens=2] (a) {};
    \node [place, tokens=3] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=1] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Remarque: La condition de déclenchement est toujours vérifiée et un second déclenchement peut avoir lieu :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place,tokens=1] (a) {};
    \node [place, tokens=2] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=2] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}


\par{et même un troisième déclenchement est possible :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [place, tokens=1] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=3] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Mais à ce stade l'une des places en amont est vide et il ne peut y avoir de quatrième déclenchement : Le joueur qui joue en premier, gagne ce jeu en trois coups. Mais une fois de plus, ce réseau de Petri, peu intéressant comme jeu, présente un intérêt calculatoire : Si $a$ et $b$ désignent respectivement le nombre de jetons à gauche et à droite, lorsque le jeu s'arrête, la place du bas contient le minimum de $a$ et $b$, et la case non vide du haut représente la différence entre $a$ et $b$ : Ce réseau de Petri est une machine à faire des soustractions, ou plus précisément à effectuer simultanément une soustraction et un calcul de minimum !
}

\item \par{Voici une machine à tripler :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=2] (a) {};
    \node [transition] (t) [right of=a]{};
    \node [place] (b) [right of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick, bend right=45] (b);
	\path (t) edge[->, ultra thick, bend left=45] (b);
\end{tikzpicture}
\end{center}

\par{En effet, le premier déclenchement va absorber un des deux jetons de la place de gauche, mais comme il y a trois arêtes qui partent de la transition, chacune d'entre elles va récupérer un jeton, et comme ces trois arêtes mènent à la même destination, on se retrouve avec cette situation :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1] (a) {};
    \node [transition] (t) [right of=a]{};
    \node [place, tokens=3] (b) [right of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick, bend right=45] (b);
	\path (t) edge[->, ultra thick, bend left=45] (b);
\end{tikzpicture}
\end{center}

\par{et le second déclenchement aboutit à la situation finale :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (t) [right of=a]{};
    \node [place, tokens=6] (b) [right of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
	\path (t) edge[->, ultra thick, bend right=45] (b);
	\path (t) edge[->, ultra thick, bend left=45] (b);
\end{tikzpicture}
\end{center}

\par{dans laquelle on voit bien que le nombre initial de jetons a été triplé.}

\par{On peut représenter le même réseau de Petri par cette version abrégée :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition,label=above right:$3$] (t) [right of=a]{};
    \node [place, tokens=6] (b) [right of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (b);
\end{tikzpicture}
\end{center}

\par{On a remplacé trois arêtes ayant même source et même destination, par une seule arête portant le nombre 3. Une autre approche aurait été de mettre dans un premier temps, un entier égal à 1 sur chaque arête, ce qui pour le jeu de Nim vu au début de cet article, donnerait ceci : 
}


\begin{center}
\begin{tikzpicture}[node distance=12mm,bend angle=45,auto]

  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
\def\predn{\number\numexpr\n-1\relax}
\def\ppn{\number\numexpr\n-2\relax}
\def\pppn{\number\numexpr\n-3\relax}
    \node [place,tokens=1] (a1) {};
    \node [transition,label=below right:$1$, label=below left:$1$] (t1) [right of=a1]{};
    \foreach \n in {2,...,5} {%
    	\node [place] (a\n) [right of=t\predn]  {};
    	\node [transition,label=below right:$1$, label=below left:$1$] (t\n) [right of=a\n]  {};
    	\node [transition,label=below right:$1$, label=below left:$1$] (u\n) [below of=a\n]  {};
    	};
    	\node [red place] (a6) [right of=t5] {};
    \foreach \n in {1,...,5} {%
    \path (a\n) edge[->, ultra thick] (t\n);
    	};
    \foreach \n in {2,...,6} {%
			\path (t\predn) edge[->, ultra thick] (a\n);
    	};
    \foreach \n in {3,...,6} {%
			\path (u\predn) edge[->, ultra thick, bend right=30] (a\n);
			\path (a\ppn) edge[->, ultra thick, bend right=30] (u\predn);
    	};
    \foreach \n in {4,...,6} {%
    	\node [transition,label=above right:$1$, label=above left:$1$] (v\ppn) [above of=t\ppn]  {};
			\path (a\pppn) edge[->, ultra thick] (v\ppn);
			\path (v\ppn) edge[->, ultra thick] (a\n);
    	};

\end{tikzpicture}
\end{center}

\par{puis de dire que lorsque le nombre porté par une arête est égal à 1, on n'a pas besoin de l'écrire.
}

\par{Cette légère variante d'un réseau de Petri déjà vu, est injouable parce qu'il n'y a pas assez de jetons dans la place en haut à gauche : 
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1,label=below left:$2$] (a) {};
    \node [place, tokens=1] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{En effet, il faut au moins 2 jetons venant de la place en haut à gauche, et il n'y en a pas assez. Par contre cette version peut se déclencher :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=5,label=below left:$2$] (a) {};
    \node [place, tokens=3] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{et le déclenchement donnera ceci :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=3,label=below left:$2$] (a) {};
    \node [place, tokens=2] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=1] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{et, comme il y a au moins 2 jetons dans la place marquée $2$ et 1 jeton dans la place non marquée (donc marquée $1$ par défaut), un nouveau déclenchement peut avoir lieu; il donne }


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=1,label=below left:$2$] (a) {};
    \node [place, tokens=1] (b) [right of=a] {};
    \node [transition] (t) [below of=a]{};
    \node [place, tokens=2] (c) [below of=t] {};
	\path (a) edge[->, ultra thick] (t);
	\path (b) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (c);
\end{tikzpicture}
\end{center}

\par{Après ce second déclenchement, on arrive au marquage final puisque la place en haut à gauche contient moins des 2 jetons nécessaires. Pour que la transition puisse se déclencher, il faut donc qu'elle vérifie une proposition logique appelée sa \emph{précondition}, et dans ce cas la précondition est \og il y a au moins 2 jetons à gauche et 1 jeton à droite\fg{}.
}


\end{enumerate}

\subsubsection{Vie et mort d'un réseau marqué}

\par{Il existe deux sortes de transitions dans un réseau de Petri marqué : Celles dont la précondition est vraie (en vert ci-dessous) et celles dont la précondition est fausse. Alors, à une étape quelconque du jeu,

\begin{itemize}
\item Ou bien il existe au moins une transition dont la précondition est vraie,
\item ou bien toutes les préconditions sont fausses.
\end{itemize}

Dans le premier cas, le réseau de Petri est dit \emph{vivant} et jouer consiste à choisir une des transitions dont la précondition est vraie, et la franchir. Dans le second cas, le réseau de Petri est dit \emph{mort} et on ne peut donc plus jouer. Selon la convention de Conway \textit{et al}, le perdant est le premier joueur qui hérite d'un réseau de Petri mort. On peut donc dire que gagner le jeu consiste à tuer le réseau de Petri...
}

\par{Voici un exemple où il peut y avoir plusieurs transitions vérifiant la précondition\footnote{Il s'agit de la modélisation d'un jeu de Nim, où des jetons sont disposés sur plusieurs tas, et où chaque joueur à son tour enlève autant de jetons qu'il veut d'un des tas. Chaque place représente le nombre de tas de cardinal donné : La place de gauche représente les tas à 3 jetons, celle du milieu gauche représente les tas à 2 jetons, celle du milieu droit représente les tas à 1 jeton et celle de droite représente les tas vides, et qui ne comptent donc plus; le marquage initial représente un jeu de Nim à 5 tas de trois pièces. } : 
}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place, tokens=5] (a3) {};
    \node [green transition] (t3) [right of=a3]{};
    \node [place] (a2) [right of=t3] {};
    \node [transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [transition] (u1) [below of=a1] {};
	\node [green transition] (u2) [below of=a2] {};
	\node [green transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{Dans ce cas, puisqu'il s'agit d'un jeu de Nim, la théorie de Bouton s'applique, elle prédit que le premier joueur gagne en choisissant la transition du haut\footnote{Il reste alors 4 tas de 3 pièces (et un tas vide, en rouge)} :
}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place, tokens=4] (a3) {};
    \node [green transition] (t3) [right of=a3]{};
    \node [place] (a2) [right of=t3] {};
    \node [transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=1] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [transition] (u1) [below of=a1] {};
	\node [green transition] (u2) [below of=a2] {};
	\node [green transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{Et ensuite, reproduire chaque coup de l'adversaire; par exemple s'il choisit la transition du milieu\footnote{Il y a maintenant 3 tas de 3 pièces, un tas de 2 pièces et un tas vide} :
}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place, tokens=3] (a3) {};
    \node [green transition] (t3) [right of=a3]{};
    \node [place, tokens=1] (a2) [right of=t3] {};
    \node [green transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=1] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [green transition] (u1) [below of=a1] {};
	\node [green transition] (u2) [below of=a2] {};
	\node [green transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{faire pareil\footnote{il y a alors 2 tas de 3 pièces et 2 tas de 2 pièces:}



\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place, tokens=2] (a3) {};
    \node [green transition] (t3) [right of=a3]{};
    \node [place, tokens=2] (a2) [right of=t3] {};
    \node [green transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=1] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [green transition] (u1) [below of=a1] {};
	\node [green transition] (u2) [below of=a2] {};
	\node [green transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{puis s'il choisit la transition en haut\footnote{il reste alors 1 tas de 3 pièces et 2 tas de 2 pièces} :}



\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place, tokens=1] (a3) {};
    \node [transition] (t3) [right of=a3]{};
    \node [place, tokens=2] (a2) [right of=t3] {};
    \node [green transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=2] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [green transition] (u1) [below of=a1] {};
	\node [transition] (u2) [below of=a2] {};
	\node [green transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}




\par{choisir aussi la transition du haut\footnote{il reste alors 2 tas de 2 pièces} :}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place] (a3) {};
    \node [transition] (t3) [right of=a3]{};
    \node [place, tokens=2] (a2) [right of=t3] {};
    \node [green transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=3] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [green transition] (u1) [below of=a1] {};
	\node [transition] (u2) [below of=a2] {};
	\node [transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{Enfin s'il choisit la transition en bas à droite\footnote{il reste alors 1 tas de 2 pièces} :}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place] (a3) {};
    \node [transition] (t3) [right of=a3]{};
    \node [place, tokens=1] (a2) [right of=t3] {};
    \node [green transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=4] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [green transition] (u1) [below of=a1] {};
	\node [transition] (u2) [below of=a2] {};
	\node [transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{faire pareil\footnote{vider le dernier tas de deux pièces} :}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75,
  			  fill=green!20,minimum size=4mm]
    \node [place] (a3) {};
    \node [transition] (t3) [right of=a3]{};
    \node [place] (a2) [right of=t3] {};
    \node [transition] (t2) [right of=a2]{};
    \node [place] (a1) [right of=t2] {};
    \node [transition] (t1) [right of=a1] {};
    \node [red place, tokens=5] (a0) [right of=t1] {};
	\path (a3) edge[->, ultra thick] (t3);
	\path (t3) edge[->, ultra thick] (a2);
	\path (a2) edge[->, ultra thick] (t2);
	\path (t2) edge[->, ultra thick] (a1);
	\path (a1) edge[->, ultra thick] (t1);
	\path (t1) edge[->, ultra thick] (a0);
	\node [transition] (u1) [below of=a1] {};
	\node [transition] (u2) [below of=a2] {};
	\node [transition] (v) [above of=t2] {};
	\path (u1) edge[->, ultra thick, bend right=30] (a0);
	\path (a2) edge[->, ultra thick, bend right=30] (u1);
	\path (u2) edge[->, ultra thick, bend right=30] (a1);
	\path (a3) edge[->, ultra thick, bend right=30] (u2);
	\path (v) edge[->, ultra thick, bend left=20] (a0);
	\path (a3) edge[->, ultra thick, bend left=20] (v);
\end{tikzpicture}
\end{center}

\par{On le voit, jouer avec un réseau de Petri peut être plus complexe que jouer avec un graphe orienté, mais aussi moins intéressant, et les cas où le jeu n'est pas intéressant peuvent, \textit{a contrario}, présenter un intérêt du point de vue des applications. On finira en examinant quelques exemples.
}

\section{Applications}

\subsection{Addition et calcul parallèle}

\par{Le réseau de Petri que voici, bien que plutôt simple, réalise une addition unaire; ici le marquage initial est choisi pour poser l'addition 5+3 :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place, tokens=5] (a) {};
    \node [green transition] (u) [right of=a]{};
    \node [place, tokens=3] (b) [below of=a] {};
    \node [green transition] (v) [right of=b]{};
    \node [place] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{À la fin du jeu, on obtient cette configuration qui montre que 5+3=8 :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (u) [right of=a]{};
    \node [place] (b) [below of=a] {};
    \node [transition] (v) [right of=b]{};
    \node [place, tokens=8] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{Ce qui est intéressant c'est qu'il y a plusieurs manières\footnote{Combien ?}, différentes du point de vue de la chronologie, menant à cet état final; par exemple les deux joueurs peuvent choisir de systématiquement choisir la transition du haut, pour aboutir à cet état intermédiaire\footnote{à partir duquel le calcul devient séquentiel selon les critères exposés plus bas. } :}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place] (a) {};
    \node [transition] (u) [right of=a]{};
    \node [place, tokens=3] (b) [below of=a] {};
    \node [green transition] (v) [right of=b]{};
    \node [place, tokens=5] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{ou, au contraire, choisir tant que c'est possible la transition du bas, pour aboutir à cet autre état intermédiaire :
}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place, tokens=5] (a) {};
    \node [green transition] (u) [right of=a]{};
    \node [place] (b) [below of=a] {};
    \node [transition] (v) [right of=b]{};
    \node [place, tokens=3] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{plus raisonnable, les joueurs peuvent alterner le choix des transitions, en commençant\footnote{chaque joueur a joué un coup} par}



\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place, tokens=4] (a) {};
    \node [green transition] (u) [right of=a]{};
    \node [place, tokens=2] (b) [below of=a] {};
    \node [green transition] (v) [right of=b]{};
    \node [place, tokens=2] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{puis allant vers\footnote{deux coups plus tard} }


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place, tokens=3] (a) {};
    \node [green transition] (u) [right of=a]{};
    \node [place, tokens=1] (b) [below of=a] {};
    \node [green transition] (v) [right of=b]{};
    \node [place, tokens=4] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{puis\footnote{deux coups plus tard}}


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [place, tokens=2] (a) {};
    \node [green transition] (u) [right of=a]{};
    \node [place] (b) [below of=a] {};
    \node [transition] (v) [right of=b]{};
    \node [place, tokens=6] (c) [right of=v] {};
	\path (a) edge[->, ultra thick] (u);
	\path (u) edge[->, ultra thick] (c);
	\path (b) edge[->, ultra thick] (v);
	\path (v) edge[->, ultra thick] (c);

\end{tikzpicture}
\end{center}

\par{Bref, il y a plusieurs manières\footnote{encore une fois, combien ?} de "faire le calcul", et si on assimile chaque transition à un processeur dans un système bi-cœur, on peut dire qu'on a là un algorithme \emph{parallèle}\footnote{parce que chaque cœur travaille chacun à un rythme indépendant de ce que fait l'autre processeur, donc \emph{en parallèle}} d'addition.
}



\subsection{Compteur binaire}

\par{Ce réseau de Petri est dit \emph{binaire} parce qu'à aucun moment il n'y a plus d'un jeton par place; de fait il réalise un compteur binaire, qui affiche, sur la ligne du haut, les entiers successifs écrits en binaire. La marquage initial est constitué de cases du bas occupées, et les cases du haut sont au contraire vides, ce qui représente le nombre binaire 0000 soit zéro :}


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\begin{enumerate}
\item Toutes les transitions ont au moins une place vide en aval, sauf la dernière qui n'a qu'une place en aval et celle-ci est occupée. C'est donc nécessairement cette transition qui va se déclencher, aboutissant à ce marquage, représentant (en haut) le nombre 0001 soit 1 en binaire :

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [green transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Maintenant la seule transition dont la précondition est vérifiée est l'avant-dernière, et elle répartit 2 jetons entre son nord-est et son sud-ouest, aboutissant à ce marquage, représentant le nombre 0010 soit 2 en binaire :

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item C'est à nouveau la transition tout à droite qui est la seule à pouvoir se déclencher, et elle donne en haut le codage 0011 de 3 en binaire :

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [green transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Par la suite, on verra qu'à chaque étape il y a exactement une transition qui peut déclencher, c'est à cela que servent les jetons en bas. On obtient le codage 0100 de 4 en binaire ce qui permet à la seconde transition de déclencher à l'étape suivante :

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Puis 0101 soit 5 en binaire 

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [green transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Puis 0110 soit 6 en binaire

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Maintenant, la transition qui peut déclencher est celle de tout à gauche, c'est la seule fois que sa précondition sera réalisée :

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place] (d3) {};
    \node [green transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place, tokens=1] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item De 0111 (7 en binaire) à 1000 (8 en binaire)

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item 1001 c'est 9 en binaire

\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [green transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item Comme le jeton tout à gauche est définitif (aucune transition ne lui est accessible), on recommence le cycle précédent avec 1010


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item puis 1011


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place] (d2) [above right of=r3] {};
    \node [green transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place, tokens=1] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item puis 1100


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item puis 1101


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place] (d1) [above right of=r2] {};
    \node [green transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place, tokens=1] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item puis 1110


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place] (d0) [above right of=r1] {};
    \node [green transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place, tokens=1] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

\item et enfin 1111 qui arrête le compteur binaire:


\begin{center}
\begin{tikzpicture}[node distance=16mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=4mm]
  \tikzstyle{green transition}=[rectangle,thick,draw=black!75, fill=green!20,minimum size=4mm]
    \node [red place, tokens=1] (d3) {};
    \node [transition] (r3) [below right of=d3]{};
    \node [red place, tokens=1] (d2) [above right of=r3] {};
    \node [transition] (r2) [below right of=d2]{};
    \node [red place, tokens=1] (d1) [above right of=r2] {};
    \node [transition] (r1) [below right of=d1]{};
    \node [red place, tokens=1] (d0) [above right of=r1] {};
    \node [transition] (r0) [below right of=d0]{};
    \node [place] (b3) [below left of=r3] {};
    \node [place] (b2) [below left of=r2] {};
    \node [place] (b1) [below left of=r1] {};
    \node [place] (b0) [below left of=r0] {};
	\path (r3) edge[->, ultra thick] (d3);
	\path (r2) edge[->, ultra thick] (d2);
	\path (r1) edge[->, ultra thick] (d1);
	\path (r0) edge[->, ultra thick] (d0);
	\path (b3) edge[->, ultra thick] (r3);
	\path (b2) edge[->, ultra thick] (r2);
	\path (b1) edge[->, ultra thick] (r1);
	\path (b0) edge[->, ultra thick] (r0);
	\path (d0) edge[->, ultra thick] (r1);
	\path (d1) edge[->, ultra thick] (r2);
	\path (d2) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b0);
	\path (r2) edge[->, ultra thick] (b1);
	\path (r3) edge[->, ultra thick] (b2);
	\path (d0) edge[->, ultra thick, bend right=90] (r2);
	\path (d1) edge[->, ultra thick, bend right=90] (r3);
	\path (d0) edge[->, ultra thick, bend right=105] (r3);
	\path (r2) edge[->, ultra thick, bend right=90] (b0);
	\path (r3) edge[->, ultra thick, bend right=120] (b0);
	\path (r3) edge[->, ultra thick, bend right=90] (b1);
\end{tikzpicture}
\end{center}

En effet aucun jeton n'étant présent dans la ligne du bas, aucune transition ne peut se déclencher et le réseau de Petri est mort.


\end{enumerate}

\newpage

\subsection{Un jeu combinatoire}

Voici un exemple de réseau de Petri conçu uniquement pour jouer dessus, il ne modélise rien de spécialement intéressant :


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=6] (a) {};
    \node [transition] (r2) [below of=a]{};
    \node [transition] (r1) [left of=r2]{};
    \node [transition, label=above:$2$] (r3) [right of=r2]{};
    \node [place, below of=r1,label=above left:$2$] (b) {};
    \node [place, below of=r2] (c) {};
    \node [place, below of=r3,label=above right:$3$] (d) {};
    \node [transition] (s1) [below left of=c]{};
    \node [transition, label=above right:$2$] (s2) [below right of=c]{};
    \node [place, below of=s1] (e) {};
    \node [place, below of=s2,label=above right:$2$] (f) {};
    \node [transition,label=right:$2$] (t) [below left of=f]{};
    \node [place, below of=t] (g) {};
	\path (a) edge[->, ultra thick] (r1);
	\path (a) edge[->, ultra thick] (r2);
	\path (a) edge[->, ultra thick] (r3);
	\path (r1) edge[->, ultra thick] (b);
	\path (r1) edge[->, ultra thick] (c);
	\path (r2) edge[->, ultra thick] (b);
	\path (r2) edge[->, ultra thick] (c);
	\path (r2) edge[->, ultra thick] (d);
	\path (r3) edge[->, ultra thick] (d);
	\path (b) edge[->, ultra thick] (s1);
	\path (c) edge[->, ultra thick] (s1);
	\path (c) edge[->, ultra thick] (s2);
	\path (d) edge[->, ultra thick] (s2);
	\path (s1) edge[->, ultra thick] (e);
	\path (s2) edge[->, ultra thick] (f);
	\path (e) edge[->, ultra thick] (t);
	\path (f) edge[->, ultra thick] (t);
	\path (t) edge[->, ultra thick] (g);
\end{tikzpicture}
\end{center}

\newpage

Pour y jouer sans avoir à lire les chiffres, en voici une version atextuelle :


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [place, tokens=6] (a) {};
    \node [transition] (r2) [below of=a]{};
    \node [transition] (r1) [left of=r2]{};
    \node [transition] (r3) [right of=r2]{};
    \node [place, below of=r1] (b) {};
    \node [place, below of=r2] (c) {};
    \node [place, below of=r3] (d) {};
    \node [transition] (s1) [below left of=c]{};
    \node [transition] (s2) [below right of=c]{};
    \node [place, below of=s1] (e) {};
    \node [place, below of=s2] (f) {};
    \node [transition] (t) [below left of=f]{};
    \node [place, below of=t] (g) {};
	\path (a) edge[->, ultra thick] (r1);
	\path (a) edge[->, ultra thick] (r2);
	\path (a) edge[->, ultra thick] (r3);
	\path (a) edge[->, ultra thick, bend left=30] (r3);
	\path (r1) edge[->, ultra thick] (b);
	\path (r1) edge[->, ultra thick] (b);
	\path (r1) edge[->, ultra thick, bend right=60] (b);
	\path (r2) edge[->, ultra thick] (b);
	\path (r2) edge[->, ultra thick] (c);
	\path (r2) edge[->, ultra thick] (d);
	\path (r3) edge[->, ultra thick] (d);
	\path (r3) edge[->, ultra thick, bend left=30] (d);
	\path (r3) edge[->, ultra thick, bend left=60] (d);
	\path (b) edge[->, ultra thick] (s1);
	\path (c) edge[->, ultra thick] (s1);
	\path (c) edge[->, ultra thick] (s2);
	\path (d) edge[->, ultra thick] (s2);
	\path (d) edge[->, ultra thick, bend left=30] (s2);
	\path (s1) edge[->, ultra thick] (e);
	\path (s2) edge[->, ultra thick] (f);
	\path (s2) edge[->, ultra thick, bend left=45] (f);
	\path (e) edge[->, ultra thick] (t);
	\path (f) edge[->, ultra thick] (t);
	\path (f) edge[->, ultra thick, bend right=45] (t);
	\path (t) edge[->, ultra thick] (g);
\end{tikzpicture}
\end{center}

Au début du jeu, il y a $n$ jetons dans la place du haut. Dans l'exemple ici, $n=6$. La question est de voir comment la stratégie gagnante, et notamment l'identité du gagnant, dépend de $n$. On vérifie par exemple que pour $n=1$, le second joueur gagne. Mais pour $n\geq 2$, la situation se complique très vite !
\newpage
\subsection{Lapins et renards}

Ce réseau de Petri modélise l'évolution possible d'un système écologique de type «proies-prédateurs». La place de gauche représente la population de proies (les lapins) et celle de droite représente la population de prédateurs (les renards).


\begin{center}
\begin{tikzpicture}[node distance=24mm,bend angle=45,auto]
  \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=8mm]
  \tikzstyle{transition}=[rectangle,thick,draw=black!75,
  			  fill=black!20,minimum size=4mm]
    \node [transition] (r){};
    \node [place, below right of=r, label=below right:$2$] (R) {R};
    \node [transition, below left of=R] (s) {};
    \node [place, below left of=r, label=below right:$3$] (L) {L};
    \node [transition, left of=L, label=above:$4$] (t) {};
	\path (r) edge[->, ultra thick, bend left=30] (R);
	\path (R) edge[->, ultra thick, bend left=30] (r);
	\path (R) edge[->, ultra thick, bend right=30] (s);
	\path (s) edge[->, ultra thick, bend right=75] (R);
	\path (L) edge[->, ultra thick, bend left=30] (s);
	\path (L) edge[->, ultra thick, bend right=30] (r);
	\path (L) edge[->, ultra thick, bend left=75] (t);
	\path (t) edge[->, ultra thick, bend left=75] (L);
\end{tikzpicture}
\end{center}

\begin{itemize}
\item La transition de gauche modélise la multiplication des proies: Chaque fois qu'un jeton représentant un lapin franchit cette transition, il crée 3 autres jetons au passage.
\item La transition du haut modélise la rencontre entre un prédateur et une proie, qui aboutit à la disparition de celle-ci.
\item La transition du bas modélise l'ingestion par un renard, de 3 lapins, ce qui a pour effet la naissance d'un nouveau renard (modèle proposé par Volterra et Lotke).
\end{itemize}

\vfill

\begin{flushright}
Alain Busser


I.R.E.M. La Réunion, 2018


\ccbysa
\end{flushright}

\end{document} 
