Même s'il y a une simulation dans chaque direction, les simulations d'avant en arrière peuvent ne pas correspondre aux mêmes ensembles d'états. Parfois, vous avez une simulation dans une direction, et une simulation dans l'autre direction, et deux états et qui sont liés par mais pas par ni par aucune autre simulation dans la même direction.R 2R1R2 q R 1 R 2p1qR1R2
L'exemple canonique est deux systèmes qui ont les mêmes traces, mais font des choix différemment. Prenons deux distributeurs de boissons: la première (la méchante) prend une pièce ( c
) et décide de manière non déterministe de livrer ou non une tasse de thé ( t
). La deuxième machine (la bonne) prend une pièce ( c
) et livre une tasse de thé ( t
).
La bonne machine simule la mauvaise machine: prenez . Tous les états des transitions sortantes sont couverts, y compris (qui n'a pas de transition sortante, donc c'est trivial). Remarquez comment la bonne machine oublie la différence entre et .R1={(s,s′),(p,p′),(q,q′),(r,p′)}rrp
La mauvaise machine simule la bonne machine: prenez . Il se trouve que l'état n'est pas utilisé par cette simulation. En fait, il n'est pas possible pour une simulation d'utiliser , puisque doit correspondre à un état à partir duquel une trace de longueur est possible, donc elle doit être ; doit correspondre à un successeur de avec l'étiquette , donc c'est ou , mais cet état doit également avoir une trace possible de longueur , donc il doit être ; et par le même raisonnement doit correspondre àr r s ′ 2 s p ′ s ′ cR2={(s′,s),(p′,p),(q′,q)}rrs′2sp′s′cr 1 p q ′ q rpr1pq′q , ne laissant aucune possibilité de mapper un état à .r
Une simulation dans une direction doit envoyer quelque part. Une simulation dans l'autre sens doit éviter . Il n'y a donc pas de relation qui soit une simulation dans les deux sens: les systèmes ne sont pas bisimilaires.rrr
La différence entre les deux machines est que la bonne machine est déterministe et (en supposant la vivacité) livre toujours du thé si vous insérez une pièce, alors que la machine maléfique peut sur un coup de tête prendre la pièce mais rester coincée, incapable de livrer du thé.
Ce genre de différence apparaît souvent dans l'étude des systèmes concurrents. La réponse de Jmad montre un processus CCS avec ce LTS.
Pour plus d'informations sur les bisimulations, je recommande les notes de Davide Sangiorgi sur les origines de la bisimulation et de la coinduction . (Il s'agit de l'exercice 1 p. 29, et les notes utilisent le même exemple.)
La réponse de Gilles est très bonne et formelle, et en effet, si est simulé par avec une relation , et est simulé par avec l'inverse de , alors est une bisimulation. L T S 2 R L T S 2 L T S 1 R RLTS1 LTS2 R LTS2 LTS1 R R
Cependant, si les deux relations ne sont pas inverses l'une de l'autre, vous ne pourrez peut-être pas créer de bisimulation. Par exemple, un exemple simple vient du fait que la relation vide est une simulation pour n'importe quel LTS. Ainsi, nous pouvons avoir est simulé par avec une relation , et est simulé par avec la relation vide, et pourtant n'est pas nécessairement une bisimulation (bien que notez que la relation vide est aussi une bisimulation pour n'importe quel LTS). L T S 2 R L T S 2 L T S 1 RLTS1 LTS2 R LTS2 LTS1 R
la source