Automat finit alternativ

În informatică teoretică și în special în teoria automatelor , un automat finit alternativ este o extensie a automatelor finite . Într -un automat finit obișnuit nedeterminist , un cuvânt este acceptat dacă, între statele atinse, există cel puțin o stare finală. Într-o mașină alternativă cu stări finite, valoarea unei funcții booleene pe stările atinse definește condiția de acceptare.

Numele „alternativ” se bazează pe următoarea observație: cu condiția de a permite tranziții ε, două tipuri de condiții sunt suficiente pentru a exprima toate funcțiile booleene posibile asupra stărilor: dintre statele atinse, cel puțin una este finală sau bine toate sunt finale. Prin urmare, alegerile variază între o alegere existențială și o alegere universală.

Automatele finite alternative sunt utilizate pentru recunoașterea cuvintelor infinite, în teoria jocurilor , în verificarea modelelor și în logică . De asemenea, găsesc aplicații în învățarea automată .

Descriere

Există mai multe clase de automate finite care diferă prin „tipul de conexiune”: automatele deterministe , automatele nedeterministe , PLC-urile universale și automatele alternative. Un automat determinist procesează un cuvânt trecând de la o stare la alta în funcție de funcția de tranziție. Controlorul acceptă cuvântul dintr-o stare dacă statul atins după citirea acceptă sufixul . Pe de altă parte, un automat nedeterminist care citește litera într-o stare poate trece în mai multe stări, determinate de relația de tranziție. Regulatorul acceptă de dacă oricare dintre statele se poate introduce după citirea acceptă sufixul . O noțiune duală este cea a unui automat universal . În ceea ce privește un automat nedeterminist, relația de tranziție oferă, pentru o stare și o literă , un set de stări; dar interpretarea aici este că este acceptată de la stat dacă toate statele la care s-a ajuns după citire acceptă sufixul .

Alternativ automatelor generaliza atat automate non-deterministe și controlere universale. Ei delegă rolul de a testa acceptarea sufixului unui cuvânt mai multor state, prin combinarea rezultatelor acestora prin conjuncții și disjuncții. De exemplu, o tranziție care de la stat , citind litera , la expresie , afirmă că cuvântul este acceptat din dacă sufixul său este acceptat din sau ambele din și .

Definiție formală

O mașină de stare alternativă este alcătuită din următoarele date:

Starea inițială obișnuită în PLC-uri este înlocuită de funcția de acceptare . Funcția de tranziție asociază o valoare booleană cu o stare , cu o literă și cu un vector de stări indexate de . Funcția este extinsă la cuvinte prin următoarele două proprietăți:

Văzută ca o funcție care funcționează pe vectori de stare, funcția este, prin urmare, extinsă cu

Setul de cuvinte acceptate de este

,

sau

Aici este funcția caracteristică a setului de stări terminale, reprezentat ca un vector boolean. Prin urmare, un cuvânt este acceptat dacă funcția booleană ia valoarea 1 pe vectorul care este vectorul boolean al tuturor stărilor pentru care calculul rezultă într-o stare finală.

Exemple

Un prim exemplu

Considerăm un automat cu două stări, iar pe alfabet , setul de stări terminale este . Funcția de tranziție este dată de

iar funcția de acceptare este

Un exemplu de calcul este atunci

De unde

iar cuvântul este deci acceptat.

Un al doilea exemplu

Considerăm un automat al alfabetului care are o singură stare , de asemenea starea finală. Funcția de tranziție este dată de:

iar funcția de acceptare este . Noi vedem asta

.

Prin urmare, limba acceptată de PLC este:

.

Acest automat are o singură stare, în timp ce cel mai mic automat nedeterminist care recunoaște limbajul său are 2 stări, iar cel mai mic automat determinist are 4 stări.

Proprietăți și utilizări

Automatele finite nedeterministe sunt un caz special al automatelor alternative; orice limbaj rațional este, prin urmare, acceptat de un automat alternativ. În schimb, orice automat alternativ poate fi transformat într-un automat finit determinist . Prin urmare, automatele finite alternante acceptă cu precizie limbaje obișnuite. Cu toate acestea, un automat alternativ poate fi mult mai mic. Putem câștiga un exponențial trecând de la un automat nedeterminist la un automat alternativ și un dublu exponențial trecând de la un automat determinist la un automat alternativ. Terminalul exact depinde de definiția exactă a automatelor alternative. Astfel, atunci când permitem negații în formulele booleene, există un automat finit de stare alternativă pentru care cel mai mic automat finit determinist necesită stări. Când nu permitem negarea, atunci legătura este .

Automatele alternante, pe cuvinte infinite, sunt definite într-un mod analog, luând ca condiție de acceptare, de exemplu, condiția automatelor Büchi . Automatele alternative recunosc aceleași limbaje infinite de cuvinte ca și automatele Büchi nedeterministe, dar alternanța poate face automatele mai mici exponențial.

Variații

Există diferite variații în definiția alternativelor automate finite. Ele nu modifică puterea de exprimare, dar pot fi mai mult sau mai puțin ușor de definit și mai mult sau mai puțin ușor de implementat. Mai presus de toate este apreciată flexibilitatea structurii combinatorii a unui automat alternativ: simplifică considerabil translația specificațiilor proprietăților în automate, care este baza algoritmilor de verificare a modelului . PLC-urile sunt utilizate pentru specificarea și verificarea programelor. Când un program este definit relativ la un set P de propoziții, fiecare stare dintr-o execuție a programului corespunde unei părți din P , și anume setului de propoziții care sunt adevărate în acea stare. O execuție a programului definește astfel un cuvânt finit sau infinit pe alfabetul părților lui P , iar programul în sine oferă un set de cuvinte care pot fi definite de un automat. La fel, specificația unui program care descrie posibilele calcule poate fi văzută ca un limbaj de cuvinte pe alfabetul părților din P și, prin urmare, poate fi definită de un automat. Astfel, întrebările despre programe se rezumă la întrebări despre automate. De exemplu, întrebările privind satisfacția specificației și corectitudinea unui program se rezumă la întrebări precum testul de vid sau problema de includere pentru limbaje formale. Traducerea specificațiilor către automate are grijă de aspectele logice și deplasează dificultățile combinatorii către probleme de teorie combinatorie.

O variantă a automatelor constă în a nu permite negații. Aceasta este opțiunea aleasă în anumite lucrări privind învățarea limbilor obișnuite.

O variantă în însăși definiția automatelor constă în introducerea unei stări inițiale în locul funcției de evaluare . Condiția acceptării

este înlocuit de condiția, mai restrictivă în aparență, a

.

O altă alternativă , mai pronunțată, este definirea automatelor alternante după cum urmează: Setul de stări este împărțit în două părți, stările existențiale și universale . Ideea din spatele acestui lucru este că tranzițiile care părăsesc o stare de sunt interpretate ca tranziții sau , iar tranzițiile care părăsesc o stare de ca tranziții și . Sintaxic, aceasta este singura diferență între automatele alternante și automatele nedeterministe.

Sau , cu un automat finit obișnuit nedeterminist. Un cuvânt este acceptat dintr-o stare dacă este o stare finală și este cuvântul gol, sau dacă pentru o literă și un cuvânt , și dacă fie:

Limbajul acceptat de un astfel de automat este setul de cuvinte acceptate din starea inițială.

Funcția de tranziție definită mai sus este înlocuită de o funcție mai simplă care asociază cu o stare și o literă o formulă booleană pe  : Pentru o stare , o literă și , funcția ia valoarea .

Note și referințe

  1. În articolul Chandra, Kozen și Stockmeyer, 1981 , există o stare inițială.
  2. Chandra, Kozen și Stockmeyer, 1981 .
  3. Kupferman și Vardi 2001 .
  4. Angluin, Eisenstat și Fisman 2015 .
  5. Kumar, Automate alternative .

Bibliografie

Articol fondatorAlte articoleClase

Articole similare

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">