Sunteți pe pagina 1din 18

Limbaje formale

Expresii regulate
Automate (Finite) Deterministe

Curs 2
Scurta recapitulare
• Reprezentare model SED

– Prezentare model de tip server cu coada de asteptare


de capacitate 2 (doua variante)
- discutie despre evenimentele nedefinite intr-o stare
- ce inseamna un comportament/ traiectorie de stare/
secventa de evenimente
- ce poate “oferi” un model in forma definitiei de mai sus
Limbaje (si expresii regulate)
• Prima forma de reprezentare a SED a fost modelul limbaj
• Modelul limbaj permite evidentierea tuturor evolutiilor
posibile ale sistemului, dintr-o stare initiala precizata,
prin intermediul generarii de secvente de evenimente
• Definitie 1: Alfabet: o multime finita de simboluri.
– Caracteristica: dimensiunea – numarul de simboluri. Doua
alfabete cu acelasi numar de simboluri sunt echivalente.
• Definiţie 2: Cuvânt: o secvenţă ordonată de evenimente/
simboluri ale aceluiaşi alfabet.
Consideratii importante
• În teoria SED, un cuvânt (string, word, trace sau path) reprezintă o
evoluţie a sistemului între două stări date, de regulă prima stare
fiind implicit starea iniţială din definiţia formală a acestuia.
• Mod de formare: prin concatenarea simbolurilor alfabetului
• Caracteristicile cele mai importante ale unui cuvânt:
– lungimea – numărul de simboluri
– relaţia de ordine între evenimente. (cuvantul ie NU este
echivalent cu ei) – concatenarea NU este comutativa
– notiuni conexe: prefix, sufix
• cuvant: iiei prefixele cuvantului sunt: i, ii, iie, iiei/ sufixe: iei, ei, i, ε
Aspecte formale
• Un cuvânt care nu conţine nici un eveniment se numeşte cuvânt
vid şi se notează cu .
• Dacă c este un cuvânt oarecare, lungimea acestuia se notează
cu |c|.
• Cuvantul vid are lungime zero; un eveniment are lungime 1
• Concatenarea este o operatie: asociativa, necomutativa, avand
ca element nul 

• (Q, Σ, δ, q0) d

((qi, s), t)
Definitii
• Definiţia 3: Limbaj: un limbaj este o mulţime de cuvinte formate peste un
acelaşi alfabet Σ.
• La nivel intuitiv, dacă un cuvânt poate fi intrepretat ca o evoluţie posibilă a
unui SED, atunci un limbaj poate reprezenta un set de evoluţii – posibile,
admisibile, dorite sau interzise.
• Limbajul care nu conţine niciun cuvânt se numeşte limbaj vid şi se notează
cu .
• Prin extensie, un alfabet poate fi considerat ca find un limbaj finit, format
din cuvinte de lungime 1.
• Limbajele se formeaza, din cuvinte, prin operatia de reuniune (asociativa,
comutativa, cu element neutru )
Limbaj finit
• Sistem cu server si coada de asteptare de lungime 2,
care trateaza 4 intrari de clienti/ 4 iesiri de clienti
• Cuvinte posibile pentru q0=0
{i, ie, ii, iei, iie, iii, ieii, ieie, …, iiiei…}
• Cuvinte posibile pentru q0=2
{e, i, ee, ei, ie, eei, eie, eii, iei….}
care este lungimea maxima a cuvintelor lb respectiv ?
cate cuvinte are limbajul ?
Tot despre limbaje
• Pornind de la definiţia formală, procedurală a unui SED G, se poate defini ca
limbaj generat al lui G : L(G)={ s Σ*| (q0, s)Q} – limbajul care conţine toate
evoluţiile posibile ale acestuia.
• Proprietate : Limbajul generat de către un SED este propria sa închidere prefixată
(se numeşte prefix-closed). (discutie – v slide 10)
• De cele mai multe ori, studiul evoluţiei unui sistem are ca obiectiv determinarea
modalităţilor (dacă acestea există) prin care îl putem conduce către o serie de
stări date, denumite stări marcate (marked states) Qm– care definesc funcţionarea
dorită a sistemului (discutie).
• În raport cu acest obiectiv de conducere, se defineşte limbajul marcat al
sistemului:
Lm(G)= { s Σ*| (q0, s)Qm}.
Model Limbaj
• Perechea (L, Lm) formează modelul limbaj al sistemului studiat.
• Două sisteme SED (G1 si G2) se numesc echivalente dacă modelele lor
limbaj sunt echivalente, adică cele două limbaje generate, respectiv
cele două limbaje marcate pot fi mapate.
L(G1) = L(G2) si Lm(G1) = Lm(G2).

• Deşi modelul limbaj reprezintă o modalitate formală completă pentru


descrierea sistemelor, o problemă extrem de dificilă o reprezintă
dimensiunea modelelor limbaj pentru sisteme relativ mici – atat
lungimea cuvintelor, cat si dimensiunea limbajelor pot fi infinite
• Necesitatea identificarii unui “pattern” de constructie
Operatii pe limbaje
• Principalele operaţii care permit construirea de limbaje noi
(L) din alte limbaje (L1, L2) peste acelaşi alfabet Σ şi care au
relevanţă pentru modelarea SED sunt:
- reuniunea: L = L1 L2={v| v L1 sau v L2 },
- concatenarea: L = L1 L2 = {v | v = s t unde s L1 şi t L2}
- închiderea/ operatorul Kleene (sau închiderea iterativă): L =
• L* = , unde = L1. şi L0 = {ε}
• Prin extensie, Σ* reprezintă mulţimea (infinită a) tuturor cuvintelor care
pot fi formate cu simbolurile alfabetului Σ, inclusiv, în mod explicit, ε.
• închiderea prefixată (prefix-closure): L = pr (L1) == {s* | tL a.î.
stL1}
Expresii regulate
• Reprezinta – informal – patternul (gramatica) de constructie
pentru cuvintele unui limbaj (generat sau marcat)
• Utilizeaza operatiile de concatenare, reuniune, precum si
operatorul Kleene
• Limbajele pentru care se poate identifica un pattern se
numesc limbaje regulate;
• Expresiile regulate oferă o reprezentare simbolică finită şi
compactă pentru limbaje complexe, de dimensiune infinită.
Expresii Regulate (ER)
• Definiţie: Fie  un alfabet; atunci o expresie regulată (ER) se defineşte astfel:
– evenimentul nul este ER;
– limbajul vid este ER;
– () eveniment a este o ER care modelează limbajul reprezentat de {a};
– dacă a, b sunt ER, atunci (ab), (a + b), a*, b* sunt ER (+ fiind notaţia
folosită în cadrul expresiilor regulate pentru reuniune  ).

• Proprietate: Dacă  este ER, atunci : * =  + *


• Exemple de ER
• alfabet={a, b} multimea tuturor cuvintelor care pot fi formate cu a si b: (a+b)*
Automate Finite Deterministe (AFD)
• Un automat (maşină de stări – state machine) este o structură de tip graf
direcţionat; nodurile reprezinta stari, iar arcele directionate - evenimente.
• Definiţie:Un automat determinist G este un SED cu următoarele componente
G=(Q, Σ, δ, Γ, q0, Qm), unde:
– Q – este mulţimea stărilor automatului; dacă mulţimea Q este finită, atunci automatul se
numeşte finit;
– Σ – este alfabetul finit de evenimente asociate arcelor grafului;
– δ: Q x Σ→ Q – este funcţia de tranziţie; dacă este definită δ(qi, ej) = qt, înseamnă că există
un arc asociat evenimentului ej care pleacă din starea qi şi ajunge în starea qt;
– Γ: Q→ 2Σ este funcţia evenimentelor active cu valori în mulţimea tuturor submulţimilor lui
Σ; Γ (qi) este mulţimea tuturor evenimentelor ej pentru care este definită δ(qi, ej) şi se
numeşte mulţimea evenimentelor fezabile sau active din starea qi sau mulţimea
evenimentelor la care este receptivă qi;
– q0 – este starea iniţială;
– QmQ este mulţimea stărilor marcate – notiunea de acceptor.
AFD – Observatii
• funcţiile δ şi Γ:
– în situaţiile în care teoria automatelor se aplică în domeniul proiectării
aplicaţiilor software/ simulatoarelor – este indicat ca funcţia δ să fie
complet definită; deoarece nu există considerente fizice care să
împiedice apariţia unui eveniment oarecare într-o stare dată.
– in această situaţie, definiţia automatului poate să nu includă funcţia Γ;
aceasta este însă foarte importantă în aplicaţiile de conducere a
proceselor, unde talia modelului poate fi redusă prin eliminarea acelor
evenimente care nu pot avea fizic loc în anumite stări.
• Din punct de vedere formal, funcţia Γ permite diferenţierea clară
între evenimentele ej care pot să apară într-o stare qi, fără să o
modifice (δ(qi, ej) = qi) şi cele pentru care δ(qi, ej) nu este definită.
AFD - Observatii
• Nu este obligatoriu ca mulţimea Q sa fie finită – principiile de funcţionare sunt
aceleaşi pentru automatele cu număr finit de stări (numite şi automate finite) ca şi
pentru cele infinite; desigur, reprezentarea grafică a automatelor cu număr infinit
de stări nu este posibilă.
• Majoritatea rezultatelor teoriei SED pentru formalismul de reprezentare automat
se referă la clasa de automate finite deterministe (AFD), care permit, de altfel,
definirea unei clase de limbaje cu proprietăţi matematice bine definite, respectiv
clasa limbajelor regulate.
• Definiţie: Un limbaj se numeşte regulat dacă poate fi marcat/ acceptat de un AFD.
Clasa limbajelor regulate se notează cu R.
• Un AFD complet definit are limbajul generat *
• Clasa de limbaje R este foarte importantă, deoarece reprezintă acele limbaje care,
modelate prin intermediul automatelor, necesită o cantitate finită de memorie –
fiind deci cea mai practică modalitate de manipulare a limbajelor, în vederea
analizei modelelor şi respectiv a sintezei politicii de conducere.
Proprietăţi ale limbajelor regulate
(Teorema):
Fie L1 şi L2 limbaje din clasa R, peste alfabetul ∑ .
Atunci următoarele limbaje fac şi ele parte din clasa
R:
• L i*
• complementul lui L1= Lc=∑*\L1
• L1L2
• L 1 L 2
• L1L2
Legatura intre AFD, ER si limbajele regulate
(teoreme)
• Daca se da un limbaj regulat L, exista cu certitudine un
AFD care genereaza/ marcheaza acest limbaj
• Daca L este limbaj regulat, exista o ER care il marcheaza
si exista un algoritm care permite proiectarea
automatului care marcheaza ER
• Daca G este un AFD, exista un algoritm care permite
calculul limbajului marcat/ limbajului generat de G

• De principiu, se considera ca proiectarea unui AFD este


mai “intuitiva” decat scrierea unui model limbaj
Sa verificam…
• Fie alfabetul {a, b}
• Sa proiectam AFD (si eventual ER) care
accepta/ marcheaza:
– cuvintele care incep ab
– cuvintele care se termina cu ab
– cuvintele care (nu) contin ab
– cuvintele care incep cu ab si se termina cu aa
– cuvintele care contin aa si nu contin mai mult de
doi b consecutivi

S-ar putea să vă placă și