Voorbeelden van NFA
Voorbeeld 1:
Ontwerp een NFA voor de transitietabel, zoals hieronder weergegeven:
| Huidige staat | 0 | 1 |
|---|---|---|
| →q0 | q0, q1 | q0, q2 |
| q1 | Q3 | e |
| Q2 | q2, q3 | Q3 |
| →q3 | Q3 | Q3 |
Oplossing:
Het overgangsdiagram kan worden getekend met behulp van de mappingfunctie zoals weergegeven in de tabel.
Hier,
δ(q0, 0) = {q0, q1} δ(q0, 1) = {q0, q2} Then, δ(q1, 0) = {q3} Then, δ(q2, 0) = {q2, q3} δ(q2, 1) = {q3} Then, δ(q3, 0) = {q3} δ(q3, 1) = {q3} Voorbeeld 2:
Ontwerp een NFA met ∑ = {0, 1} accepteert alle tekenreeksen die eindigen op 01.
Oplossing:
NFA zou dus zijn:
Voorbeeld 3:
Ontwerp een NFA met ∑ = {0, 1} waarin dubbel '1' wordt gevolgd door dubbel '0'.
Oplossing:
De FA met dubbel 1 is als volgt:
Het moet onmiddellijk worden gevolgd door dubbel 0.
Dan,
Vóór dubbel 1 kan er elke reeks van 0 en 1 zijn. Op dezelfde manier kan er na dubbel 0 elke reeks van 0 en 1 zijn.
Daarom wordt de NFA:
Kijk nu naar de string 01100011
q0 → q1 → q2 → q3 → q4 → q4 → q4 → q4
Voorbeeld 4:
Ontwerp een NFA waarin alle strings een substring 1110 bevatten.
Oplossing:
De taal bestaat uit de gehele tekenreeks die subtekenreeks 1010 bevat. Het gedeeltelijke overgangsdiagram kan er als volgt uitzien:
Nu zou 1010 de subtekenreeks kunnen zijn. Daarom zullen we de ingangen 0's en 1's optellen, zodat de substring 1010 van de taal behouden kan blijven. Daarom wordt de NFA:
Overgangstabel voor het bovenstaande overgangsdiagram vindt u hieronder:
| Huidige staat | 0 | 1 |
|---|---|---|
| →q1 | q1 | q1, q2 |
| Q2 | Q3 | |
| Q3 | Q4 | |
| Q4 | Q5 | *q5 | Q5 | Q5 |
Beschouw een string 111010,
δ(q1, 111010) = δ(q1, 1100) = δ(q1, 100) = δ(q2, 00)
Zat vast! Omdat er geen pad vanuit q2 is voor invoersymbool 0, kunnen we string 111010 op een andere manier verwerken.
δ(q1, 111010) = δ(q2, 1100) = δ(q3, 100) = δ(q4, 00) = δ(q5, 0) = δ(q5, ε)
Omdat toestand q5 de acceptatietoestand is. We krijgen de volledige scan en we hebben de eindtoestand bereikt.
Voorbeeld 5:
Ontwerp een NFA met ∑ = {0, 1} accepteert alle strings waarin het derde symbool vanaf de rechterkant altijd 0 is.
Oplossing:
We krijgen dus het derde symbool van rechts altijd als '0'. De NFA kan zijn:
De bovenstaande afbeelding is een NFA omdat we in toestand q0 met invoer 0 naar toestand q0 of q1 kunnen gaan.