Generalisert ikke-deterministisk endelig automat
En generalisert ikke-deterministisk endelig automat, forkortet GNFA, er en ikke-deterministisk automat som på overgangene ikke bare trenger å ha symboler fra alfabetet, men kan ha et regulært uttrykk.
Definisjon
GNFA trenger vi under algoritmen for å omforme en endelig automat til et regulært uttrykk. En GNFA er altså en NFA som har overgangene definert av regulære uttrykk. Et eksempel på en slik GNFA:
Vi ser at det for eksempel fra tilstanden q2 går en overgang til tilstanden qf, og den er merket med det regulære uttrykket a∗ b. Flere krav til en GNFA:
- Starttilstanden q0 må ha en overgang til alle de andre tilstandene. På figuren ser vi at det går overganger fra tilstanden q0 til alle de andre tilstandene.
- I en GNFA finnes det bare én sluttilstand, og alle de andre tilstandene har en overgang til denne tilstanden. Som vi ser på figuren, har alle tilstandene en pil som peker til qf.
- Starttilstanden må ikke være den samme som sluttilstanden. En GNFA har altså minst to tilstander.
- Alle de andre tilstandene, bortsett fra start- og sluttilstanden, må ha overganger til alle de andre tilstandene, bortsett fra start- og sluttilstanden. Inkludert løkker (overgang fra tilstanden qi til tilstanden qi).
Omforming av en vanlig NFA til en GNFA
Hvis vi har en NFA, er det enkelt å omforme den til en GNFA.
- Vi lager en ny starttilstand qs og lager en epsilonovergang til den opprinnelige starttilstanden.
- Vi lager en ny sluttilstand qf og lar epsilonoverganger gå fra alle de opprinnelige sluttilstandene til tilstanden qf. De opprinnelige sluttilstandene gjør vi til vanlige tilstander.
- Hvis det et sted finnes flere overganger mellom to tilstander (altså hvis vi fra tilstanden q1 kommer til tilstanden q2 både med symbolet 0 og med symbolet 1), slår vi disse reglene sammen til ett regulært uttrykk og forbinder alle de opprinnelige symbolene med union-operatoren (altså vi merker pilen med det regulære uttrykket 0|1).
- Hvis det i automaten mangler en overgang som etter definisjonen skulle vært der, lager vi den og merker den med det regulære uttrykket ∅. Slik endrer vi ikke språket som automaten aksepterer, for en slik overgang blir aldri utført.
Denne automaten kan vi bruke til å omforme en automat til et regulært uttrykk.
Kapitler: Regulære uttrykk, Omforming av regulært uttrykk til automat, Generalisert ikke-deterministisk endelig automat, Omforming av automat til regulært uttrykk