Automate de Büchi

De testwiki
Aller à la navigation Aller à la recherche
Automate de Büchi non déterministe reconnaissant les mots infinis contenant un nombre fini de a, c'est-à-dire l'ensemble {a,b}*bω.

En informatique théorique, un automate de Büchi est un ω-automate ou automate fini opérant sur des mots infinis, avec une condition d'acceptation particulière : une trace (ou calcul ou chemin infini) est réussie si et seulement si elle passe un nombre infini de fois par au moins un état acceptant. Un mot infini est accepté s'il est l'étiquette d'un calcul réussi. Ce type d'automate est utilisé en vérification de modèles.

Ce type d'automate a été défini par le mathématicien Julius Richard Büchi[1].

Définition

Un automate de Büchi sur un alphabet A est un ω-automate 𝒜=(Q,,I,T), où :

  • Q est un ensemble fini d'états ;
  • Q×A×Q est l'ensemble des transitions ;
  • IQ est l'ensemble des états initiaux ;
  • TQ est un ensemble d'états finals ou terminaux ou acceptants.

Souvent on suppose que l'ensemble des états initiaux est composé d'un seul élément[2]. Une transition f=(p,a,q) est composée d'un état de départ p, d'une étiquette a et d'un état d'arrivée q. Un calcul c (on dit aussi un chemin ou une trace) est une suite infinie de transitions consécutives :

c=(p0,a1,p1)(p1,a2,p2)

Son état de départ est p0, son étiquette est le mot infini a1a2an. Le calcul est réussi et le mot est accepté ou reconnu s'il passe infiniment souvent par un état terminal.

Un automate est déterministe s'il vérifie les deux conditions suivantes :

  • il possède un seul état initial ;
  • pour tout état q, et pour toute lettre a, il existe au plus une transition partant de q et portant l'étiquette a.

Exemples

Automate de Büchi 𝒜 reconnaissant les mots infinis contenant un nombre infini de a.

L'automate de Büchi déterministe donné par 𝒜=({q0,q1},,q0,{q1}), avec deux états : q0 et q1. L'état q0 est initial. L'ensemble des états acceptants est T={q1}. La fonction de transition est montrée dans le dessin à gauche.

Le mot infini bbbb n'est pas accepté car la seule trace correspondante est q0q0q0 et le seul état qui apparaît une infinité de fois est q0 qui ne figure pas dans T. Par contre, le mot aaaa est accepté car il possède la trace q0q1q1, et q1 y apparaît une infinité de fois et est dans T. Il reconnaît les mots infinis contenant un nombre infini de a. En rencontrant la lettre b, l'automate retourne dans l'état q0, alors qu'une lecture de la lettre a met l'automate dans l'état q1. Plus généralement, l'automate accepte exactement les mots infinis sur deux lettres a et b qui ne contiennent qu'un nombre fini de lettres a, c'est-à-dire l'ensemble b*a(a*b+a)ω.

Automate de Büchi reconnaissant les mots infinis où chaque occurrence de b est précédé d'un nombre pair non nul de a.

Un autre exemple est l'automate de Büchi à droite ; il reconnaît les mots infinis où chaque occurrence de b est précédé d'un nombre pair non nul de a. L'automate possède trois états : q0, q1 et q2. Il est aussi déterministe. L'automate démarre dans l'état q0 et lit un nombre pair non nul de a. Si l'automate a lu un nombre impair de a, il est dans l'état q1, sinon dans l'état q2. La transition b de l'état q2 à l'état q0 permet de lire la lettre b après un nombre pair non nul de a. Une lecture de b depuis q0 ou q1 échoue.

Déterminisme versus non-déterminisme

Les automates de Büchi déterministes sont strictement moins puissants que les automates de Büchi non déterministes[3]Modèle:,[4]. Par exemple, alors qu'il existe un automate de Büchi non déterministe à deux états qui reconnaît les mots infinis sur deux lettres a et b qui ne contiennent qu'un nombre fini de lettres a, c'est-à-dire l'ensemble {a,b}*bω, cet ensemble n'est pas reconnu par un automate de Büchi déterministe.

Supposons le contraire, c'est-à-dire qu'il existe un automate de Büchi déterministe qui reconnaît ce langage, et soit F son ensemble d'états d'acceptation. L'automate accepte le mot infini bω, dont le calcul passe une première fois dans un état de F après la lecture d'un certain nombre positif, disons n, de lettres b. L'automate accepte aussi le mot infini bnabω, donc le calcul passe une deuxième fois par un état de F après disons m lettres b. L'automate accepte donc le mot bnabmabω. De proche en proche, on construit un mot bn1abn2abn3ab contenant une infinité de lettres a et qui est accepté par l’automate, contradiction.

Langages reconnus

Les ensembles de mots infinis reconnus par les automates de Büchi sont les ensembles rationnels de mots infinis ou ω-langages rationnels, à savoir les ensembles de la forme

1mUiViω

où les Ui et Vi sont des langages rationnels pour tout i, les Vi ne contenant pas le mot vide. Ces langages sont aussi appelés les ω-fermeture de Kleene des langages rationnels[5].

La formule pour l'expression du langage reconnu par un automate de Büchi s'obtient comme suit : étant donné une automate de Büchi, notons W(p,q) l’ensemble des mots finis reconnus avec p comme état initial et q comme état final, donc les mots qui sont étiquettes d’un chemin de p à q. Ces langages (de mots finis) sont rationnels. Un mot infini x est accepté s’il existe un calcul qui passe une infinité de fois par un état final, donc aussi s’il existe un état final disons q, par lequel il passe une infinité de fois. Ceci est équivalent à dire que

xW(q0,q)W(q,q)ω

pour un état initial q0. En prenant la réunion sur tous les états initiaux et terminaux, on obtient la description indiquéeModèle:Refm. Pour démontrer que réciproquement tous les ω-langages rationnels sont reconnus par des automates de Büchi, on utilise les opérations de fermeture de la section suivante[6].

La description effective des ω-langages rationnels reconnus montre que le problème du mot est décidable pour les automates de Büchi, puisqu’il suffit de tester si l’un au moins des langages rationnels W(q0,q)W(q,q) n’est pas vide.

Propriétés de clôture

Les langages reconnus par des automates de Büchi fermés pour un certain nombre d'opérations qui se reflètent dans des constructions sur les automates.

  • Union : Soient 𝒜=(QA,A,IA,TA) et =(QB,B,IB,TB) reconnaissant respectivement les langages LA et LB. Un automate reconnaissant la réunion LALB s'obtient en faisant la réunion des deux automates. On suppose les ensembles d'états de 𝒜 et disjoints ; alors l’automate Modèle:Retrait reconnaît la réunion.
  • ω-fermeture : Pour tout langage rationnel L ne contenant pas le mot vide, le ω-langage Lω est reconnu par un automate de Büchi. Soit 𝒜=(Q,,i,T) un automate fini reconnaissant L. On peut supposer qu'il n'a qu'un seul état initial noté i, et qu'il n'y a pas de transition entrant dans i. On ajoute à l'automate 𝒜 les transitions (q,a,i) pour chaque transition (q,a,t) de avec tT. L'automate de Büchi ainsi construit, avec un seul état initial qui est aussi terminal, reconnaît Lω.
  • Concaténation : Pour tout langage rationnel L et tout ω-langage M reconnu par un automate de Büchi, le produit LM est un ω-langage reconnu par un automate de Büchi. Soient en effet 𝒜=(Q,,i,T) un automate fini reconnaissant L, avec IT=, et =(Q,,I,T) un automate de Büchi reconnaissant M. On peut supposer les ensembles d'états des deux automates disjoints. On peut aussi supposer que L ne contient pas le mot vide, sinon on remplace le produit LM par (Lε)MM. On construit un automate de Büchi 𝒞 qui a pour états l'union des ensembles d'états, pour transitions l'union des ensembles de transitions, augmentées des transitions (q,a,i) pour iI pour chaque transition (q,a,t) de qui mène vers un état terminal t de 𝒜. Enfin, ses états initiaux sont ceux de 𝒜 et ses états terminaux ceux de . Formellement, Modèle:Retrait avec 𝒢={(q,a,i)iI,(q,a,t),tT}.

Ces trois propriétés démontrent que tout ω-langage rationnel est reconnaissable par un automate de Büchi.

  • Intersection : Soient 𝒜=(QA,A,IA,TA) et =(QB,B,IB,TB) reconnaissant respectivement les langages LA et LB. Un automate reconnaissant l'intersection LALB est construit de la manière suivante :

Modèle:Retrait où les transitions de copient celles de 𝒜 et pour les deux premières composantes, et changent la troisième composante de 0 en 1 quand un état de TA apparaît dans la première composante, de 1 en 2 quand ensuite un état de TB apparaît dans la deuxième composantes, et retourne en 0 immédiatement après. Dans un calcul, un 2 apparaît infiniment souvent en troisième composante si et seulement un état de TA et un état de TB apparaissent infiniment souvent en première et en deuxième composante. Donc, en choisissant pour états terminaux de QA×Qb×{2} on obtient un automate de Büchi au comportement désiré[7].

Les langages reconnus par des automates de Büchi sont fermés par complémentation. Büchi en a donné une démonstration en 1962[1]. Plus tard, d'autres constructions de l'automate reconnaissant les langages complémentaires ont été développées[8]Modèle:,[9]Modèle:,[10]Modèle:,[11].

Lien avec les autres modes de reconnaissance

Les automates de Büchi sont équivalents aux automates de Muller, aux automates de Rabin, automates de Streett ou automates de parité. Cependant, ils différent par leur concision. Par exemple, les automates de Büchi sont exponentiellement plus concis que les automates de Rabin dans le sens suivant : il existe une famille de langages (Ln)n=2.. sur l'alphabet {0, 1, #}, reconnaissable par des automates de Büchi non-déterministes de taille O(n) mais tout automate de Rabin non-déterministe équivalent doit être de taille au moins n![12].

Les automates de Büchi non déterministes représentent exactement les propriétés de la logique monadique de second ordre à un successeur (S1S), dites aussi propriétés ω-régulières[13]. La logique S1S est strictement plus expressive que la logique temporelle linéaire.

Il existe une condition duale à l'acceptation des automates de Büchi : il s'agit des automates co-Büchi. La condition d'acceptation est alors : une trace (ou calcul ou chemin infini) est réussie si et seulement si tout état apparaissant un nombre fini de fois est un état acceptant[14].

Algorithmique

Logique du temps linéaire et model checking

On utilise les automates de Büchi en vérification de modèles (model checking) où des questions algorithmiques se posent. Par exemple, savoir si le langage d'un automate de Büchi non-déterministe est vide se décide en temps linéaire[15]. On peut traduire une formule de la logique temporelle linéaire (LTL) en un automate de Büchi, mais dont la taille est exponentielle en la taille de la formule LTL[16]. Cette transformation peut servir à :

  • décider le problème de satisfiabilité de LTL. Ce problème est PSPACE-complet, mais voici un algorithme en temps exponentiel : construire un automate de Büchi équivalent à la formule LTL puis tester si son langage est vide ;
  • Faire de la vérification de modèles (model checking). Pour cela, on construit l'automate de Büchi équivalent à la formule LTL et on fait le produit avec le système à vérifier. Le produit est un automate de Büchi et il faut tester si son langage est vide.
Transformation d'un automate de Büchi généralisé en un automate de Büchi classique.

La transformation d'une formule LTL en un automate de Büchi est généralement présenté avec un intermédiaire, appelé automate de Büchi généralisé, où la condition d'acceptation est plus générale. Un automate de Büchi généralisé est comme un automate de Büchi, sauf que l'ensemble d'états terminaux TQ est remplacé par une famille finie {T1,,Tk}TiQ. La condition d'acceptation devient : une trace (ou calcul ou chemin infini) est réussie si et seulement si pour tout i, elle passe un nombre infini de fois par au moins un état acceptant de Ti. Dans la figure ci-contre, l'automate du haut est un automate de Büchi correspondant à des mots sur l'alphabet {, cr1, cr2}. L'exemple provient de la propriété φ "infiniment souvent dans la section critique 1, et infiniment souvent dans la section critique 2". La lettre correspond à une section non critique, cr1 correspond à la section critique 1 et cr2 à la section critique 2. La famille TQ est {{q1}, {q2}}. Une exécution acceptante, doit passer infiniment souvent par q1 et infiniment souvent par q2. Cela correspond bien à la propriété φ.

On transforme d'abord la formule LTL en un automate de Büchi généralisé (l'idée est que les états de l'automate sont les sous-ensemble maximaux consistants de sous-formules de la formule LTL). Par exemple, la propriété φ s'écrit en LTL : GFcr1GFcr2 (toujours dans le futur cr1 et toujours dans le futur cr2). L'automate généralisé est donné dans la figure ci-contre, automate du haut. On transforme alors cet automate en un automate de Büchi usuel : il est obtenu en faisant une copie de l'automate généralisé pour chaque sous-ensemble Ti. Dans l'exemple, l'automate est recopié deux fois : la première copie correspond à {q1} et la deuxième à {q2}. Une fois q1 rencontré, on passe dans la seconde copie. Une fois q2' rencontré, on repasse dans la première copie. L'automate obtenu est un automate de Büchi classique est la condition d'acceptation est de passer une infinité de fois par q1 ou q2'. Par construction, cette condition est équivalente à passer une infinité de fois dans q1 et une infinité de fois dans q2 dans l'automate généralisé.

Il existe des algorithmes efficaces en pratique pour construire un automate de Büchi équivalent à partir d'une formule LTL[17].

Il existe des algorithmes pour l'« apprentissage » d'un automate de Büchi[18].

S1S et WS1S

Büchi[1] a montré qu'il y a équivalence, pour tout langage de mots infinis L, entre :

  • L est définissable par une propriété S1S (logique monadique de second ordre à un successeur) ;
  • L est définissable par une propriété WS1S (logique monadique de second ordre à un successeur, dite "weak", c'est-à-dire que la quantification du second ordre porte sur les ensembles finis) ;
  • L est reconnaissable par un automate de Büchi.

Les équivalences sont effectives : on transforme une formule S1S en un automate de Büchi. Ainsi, la logique S1S (et WS1S) est décidable. La logique S1S est de complexité non élémentaire[19].

Notes

Modèle:Références

Références

Modèle:Palette Automates finis et langages réguliers Modèle:Portail