Note de curs, clasele 11-12, 2 noiembrie 2012
From Algopedia
Jump to navigationJump to search
Automate finite
- definiție: A = < Q (stări), q0, F (stări de acceptare), Σ (alfabet), δ (tranziții) >
- tranziții ε
- un limbaj este regulat dacă există un automat care îl recunoaște
- procedura de design a unui automat
- exemplu: acceptă șiruri cu nr. impar de 1
- ce am nevoie să memorez despre șirul de până acum?
- exemplu: acceptă șiruri care conțin 001 ca subșir
- tipuri de cerințe
- (1) ce face acest automat
- (2) să se creeze un automat care face X
- operații regulate: ∪ (reuniune), ∘ (concatenare), * (star)
- clasa limbajelor regulate este închisă sub operațiile regulate
- demonstrații pentru uniune, intersecție
- automate finite nedeterministe (NFA)
- tranziții ε
- variante multiple pentru același caracter
- cum funcționează (split)
- echivalență DFA ⇔ NFA (2k stări și tranziții E(δ(r, a)))
- exemple
- refacerea demonstrației pentru închiderea la uniune folosind NFA
- demonstrații cu NFA pentru închiderea la intersecție, star
- limbaje regulate
- exemple: șiruri care conțin exact un 1, șiruri care conțin cel puțin un 1
- echivalență limbaje regulate ⇔ automate finite
- demonstrație într-un singur sens: pentru un limbaj regulat, arătăm cum se construiește NFA-ul.
- lema de pompare
- demonstrație
- exemplu: 0n1n nu este regulat
- exemplu: {w | w conține numere egale de 0 și 1} nu este regulat
- exemplu: { ww | w ∈ {0,1}*} nu este regulat
- exemplu: 1n2 nu este regulat
- exemplu: 0i1j, unde i > j, nu este regulat
Probleme
Am o tonă de probleme, am făcut cam 1/3 la tablă, 1/3 lăsate ca temă, iar 1/3 nu le-am mai dat.
- automat care decide dacă un număr în baza 10 are exact două cifre distincte
- automat care numără cuvintele [a-z]+ și numerele [0-9]+
- automat care decide dacă o secvență este monotonă
- automat care decide dacă un șir se termină în 1
- idem, dar acceptă și șirul vid
- automat care decide dacă un șir se termină într-un număr par de 0
- automat care decide dacă un șir începe și se termină cu același simbol
- automat care decide dacă un număr zecimal se divide cu 3
- automat care decide dacă un șir conține un număr impar de 1
- automat care decide dacă un șir conține 001 ca subșir
- NFA și DFA care decid dacă un șir conține 1 pe antepenultima poziție
- NFA și DFA care decid dacă un șir conține 11 sau 101 ca subșir
- NFA și DFA care decid dacă un subșir conține k simboluri, unde k este multiplu de 2 sau de 3
- etc (încă vreo 10)