Gramatiky

Definice: Gramatika , kde

  • je konečná neprázdná množina neterminálů
  • je konečná neprázdná množina terminálů
  • je počáteční symbol
  • konečné množiny pravidel reprezentují rekurzivní definici jazyka. Každé pravidlo má tvar:

Definice: Pro gramatiku máme přepsání , jestliže existuje nějaké podslovo, dovolující využít přepisové pravidlo a přepsat na . Definice: Pro gramatiku máme derivaci existuje-li posloupnost přepsání.

Definice: Jazyk generovaný gramatikou je množina neterminální řetězců, pro které existuje derivace ze startovního neterminálu

Gramatiky rozdělujeme do několika typů dle přijímaných jazyků, nás zajímá dělení: 0. Gramatika typu 0 - rekurzivně spočetné jazyky , kde pravidla jsou v obecné formě jako v definici

  1. Gramatika typu 1 - kontextové gramatiky, , kde máme pravidla pouze ve tvaru
  1. Gramatika typu 2 - bezkontextové gramatiky - , kde máme pravidla pouze ve tvaru
  1. Gramatika typu 3 - regulární/pravá lineární je, regulární jazyky , kde se omezujeme jen na pravidla tvaru

Regulární výrazy

Definice: Třída regulární výrazů , kde je abeceda, tedy množina symbolů, je induktivně definován. Zavádíme také jako hodnotu regulárního výrazu (jeho jazyk). Základními prvky indukce jsou

  • - prázdný řetězec, ,
  • - prázdný výraz, ,
  • - znak , . Indukcí definujeme operace
  • - OR, ,
  • - zřetězení, ,
  • - Kleene star, ,
  • - . Priorita operací je po řadě iterace , zřetězení, sjednocení . Třída je nejmenší třída uzavřená na všechny operace.

NFA, DFA

Definice: Deterministický konečný automat DFA je , kde

  • je množina stavů,
  • je množina vstupních symbolů,
  • je přechodvá funkce,
  • je počáteční stav,
  • jsou přijímající stavy. Jazykem přijímaným je

Definice: -Nedeterministický konečný automat -NFA je , kde

  • je množina stavů
  • je množina vstupních symbolů
  • je přechodvá funkce
  • je počáteční stav
  • jsou přijímající stavy.

Tvrzení: NFA je ekvivalentní DFA. Jeden se dá na druhý převést , je rovnou hotové. Na uděláme -closure na stavech, tyto množiny stavů budou nové stavy DFA a přechody odpovídající se berou podle původních NFA. Samozřejmě pokud byl nějaký původní stav přijímající tak i -closure daného stavu je přijímáno.