Automate de l’algorithme de Peterson

Vendredi 26 janvier 2024

Programme

peterson.c

Ce programme affiche la liste des états visités avec profondeur et transitions. Si on lui donne un argument, il s’en sert comme nom de fichier dans lequel il écrit un automate au format HTML utilisant vis.js. Exemple d’utilisation :

gcc -o peterson peterson.c
./perterson peterson.html
   

Cela répond au TD 1 question 3 du cours Introduction à la vérification par Anca Muscholl : voir la feuille.

Voir le code source

   

Résultats

Sortie du programme
--- Profondeur 0 ---
P1=2 P2=2 b1=0 b2=0 x=1
   (P1) -> P1=3 P2=2 b1=1 b2=0 x=1
   (P2) -> P1=2 P2=3 b1=0 b2=1 x=1
P1=2 P2=2 b1=0 b2=0 x=2
   (P1) -> P1=3 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=2 P2=3 b1=0 b2=1 x=2
--- Profondeur 1 ---
P1=2 P2=3 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=3 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=4 b1=0 b2=1 x=1
P1=2 P2=3 b1=0 b2=1 x=2
   (P1) -> P1=3 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=2 P2=4 b1=0 b2=1 x=1
P1=3 P2=2 b1=1 b2=0 x=1
   (P1) -> P1=4 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=3 P2=3 b1=1 b2=1 x=1
P1=3 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=4 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=3 P2=3 b1=1 b2=1 x=2
--- Profondeur 2 ---
P1=2 P2=4 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=4 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=5 b1=0 b2=1 x=1
P1=3 P2=3 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=4 b1=1 b2=1 x=1
P1=3 P2=3 b1=1 b2=1 x=2
   (P1) -> P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=4 b1=1 b2=1 x=1
P1=4 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=5 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=4 P2=3 b1=1 b2=1 x=2
--- Profondeur 3 ---
P1=2 P2=5 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=5 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=2 b1=0 b2=0 x=1
P1=3 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=4 b1=1 b2=1 x=2
P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=4 b1=1 b2=1 x=1
P1=5 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=2 P2=2 b1=0 b2=0 x=2
   (P2) -> P1=5 P2=3 b1=1 b2=1 x=2
--- Profondeur 4 ---
P1=3 P2=5 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=5 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=2 b1=1 b2=0 x=1
P1=4 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=5 P2=4 b1=1 b2=1 x=1
P1=4 P2=4 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=5 b1=1 b2=1 x=2
P1=5 P2=3 b1=1 b2=1 x=2
   (P1) -> P1=2 P2=3 b1=0 b2=1 x=2
   (P2) -> P1=5 P2=4 b1=1 b2=1 x=1
--- Profondeur 5 ---
P1=4 P2=5 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=2 b1=1 b2=0 x=2
P1=5 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=2 P2=4 b1=0 b2=1 x=1
20 visités
      
Sortie du programme, en ayant commenté la ligne 75

Commenter la ligne 75 conduit à n’avoir qu’un seul état initial au lieu de deux.

--- Profondeur 0 ---
P1=2 P2=2 b1=0 b2=0 x=1
   (P1) -> P1=3 P2=2 b1=1 b2=0 x=1
   (P2) -> P1=2 P2=3 b1=0 b2=1 x=1
--- Profondeur 1 ---
P1=2 P2=3 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=3 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=4 b1=0 b2=1 x=1
P1=3 P2=2 b1=1 b2=0 x=1
   (P1) -> P1=4 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=3 P2=3 b1=1 b2=1 x=1
--- Profondeur 2 ---
P1=2 P2=4 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=4 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=5 b1=0 b2=1 x=1
P1=3 P2=3 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=4 b1=1 b2=1 x=1
P1=4 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=5 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=4 P2=3 b1=1 b2=1 x=2
--- Profondeur 3 ---
P1=2 P2=5 b1=0 b2=1 x=1
   (P1) -> P1=3 P2=5 b1=1 b2=1 x=1
   (P2) -> P1=2 P2=2 b1=0 b2=0 x=1
P1=3 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=4 b1=1 b2=1 x=2
P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=4 b1=1 b2=1 x=1
P1=5 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=2 P2=2 b1=0 b2=0 x=2
   (P2) -> P1=5 P2=3 b1=1 b2=1 x=2
--- Profondeur 4 ---
P1=2 P2=2 b1=0 b2=0 x=2
   (P1) -> P1=3 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=2 P2=3 b1=0 b2=1 x=2
P1=3 P2=5 b1=1 b2=1 x=1
   (P1) -> P1=4 P2=5 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=2 b1=1 b2=0 x=1
P1=4 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=5 P2=4 b1=1 b2=1 x=1
P1=4 P2=4 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=5 b1=1 b2=1 x=2
P1=5 P2=3 b1=1 b2=1 x=2
   (P1) -> P1=2 P2=3 b1=0 b2=1 x=2
   (P2) -> P1=5 P2=4 b1=1 b2=1 x=1
--- Profondeur 5 ---
P1=2 P2=3 b1=0 b2=1 x=2
   (P1) -> P1=3 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=2 P2=4 b1=0 b2=1 x=1
P1=3 P2=2 b1=1 b2=0 x=2
   (P1) -> P1=4 P2=2 b1=1 b2=0 x=2
   (P2) -> P1=3 P2=3 b1=1 b2=1 x=2
P1=4 P2=5 b1=1 b2=1 x=2
   (P2) -> P1=4 P2=2 b1=1 b2=0 x=2
P1=5 P2=4 b1=1 b2=1 x=1
   (P1) -> P1=2 P2=4 b1=0 b2=1 x=1
--- Profondeur 6 ---
P1=3 P2=3 b1=1 b2=1 x=2
   (P1) -> P1=4 P2=3 b1=1 b2=1 x=2
   (P2) -> P1=3 P2=4 b1=1 b2=1 x=1
20 visités
      

L’automate utilisant vis.js est disponible ici.