digraph automate {
rankdir=LR;
node [shape=circle];
// État : (position B, position Lion, position Chèvre, position Chou)
0 [label="(0, 0, 0, 0)"]; // Tout le monde sur la rive gauche (état initial)
1 [label="(1, 0, 0, 0)"]; // B et les objets sur la rive droite
2 [label="(0, 1, 0, 0)"]; // B et Lion sur la rive gauche
3 [label="(0, 0, 1, 0)"]; // B et Chèvre sur la rive gauche
4 [label="(0, 0, 0, 1)"]; // B et Chou sur la rive gauche
5 [label="(1, 1, 0, 0)"]; // B et lion sur la rive droite
6 [label="(1, 0, 1, 0)"]; // B et chèvre sur la rive droite
7 [label="(1, 0, 0, 1)"]; // B et chou sur la rive droite
8 [label="(0, 1, 1, 0)"]; // Lion et chèvre sur la rive gauche
9 [label="(0, 1, 0, 1)"]; // Lion et chou sur la rive gauche
10 [label="(0, 0, 1, 1)"]; // Chèvre et chou sur la rive gauche
11 [label="(1, 1, 1, 1)", style="filled", fillcolor="#8B0000"]; // État final
// Transitions (les mouvements possibles)
0 -> 1 [label="Traverse seul"];
0 -> 2 [label="Traverse avec L"];
0 -> 3 [label="Traverse avec C"];
0 -> 4 [label="Traverse avec X"];
1 -> 0 [label="Retourne seul"];
1 -> 5 [label="Retourne avec L"];
1 -> 6 [label="Retourne avec C"];
1 -> 7 [label="Retourne avec X"];
2 -> 0 [label="Retourne avec L"];
3 -> 0 [label="Retourne avec C"];
4 -> 0 [label="Retourne avec X"];
5 -> 1 [label="Traverse avec C"];
5 -> 7 [label="Traverse avec X"];
6 -> 1 [label="Traverse avec L"];
6 -> 7 [label="Traverse avec X"];
7 -> 1 [label="Traverse avec L"];
7 -> 6 [label="Traverse avec C"];
// Étape pour atteindre l'état final
1 -> 11 [label="Ramène tous les objets"];
}