logo

Przykłady NFA

Przykład 1:

Zaprojektuj NFA dla tabeli przejściowej, jak podano poniżej:

Stan obecny 0 1
→q0 q0, q1 q0, q2
pytanie 1 q3 mi
q2 q2, q3 q3
→q3 q3 q3

Rozwiązanie:

Diagram przejścia można narysować za pomocą funkcji mapującej podanej w tabeli.

jak przekonwertować ciąg na int w Javie
Przykłady NFA

Tutaj,

 δ(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} 

Przykład 2:

Zaprojektuj NFA z ∑ = {0, 1}, akceptuje wszystkie ciągi kończące się na 01.

Rozwiązanie:

Przykłady NFA

Zatem NFA będzie wyglądać następująco:

Przykłady NFA

Przykład 3:

Zaprojektuj NFA z ∑ = {0, 1}, w którym po podwójnym „1” następuje podwójne „0”.

Rozwiązanie:

FA z podwójną 1 jest następująca:

Przykłady NFA

Bezpośrednio po nim powinno nastąpić podwójne 0.

Następnie,

Przykłady NFA

Teraz przed podwójną liczbą 1 może znajdować się dowolny ciąg znaków 0 i 1. Podobnie po podwójnym liczbie 0 może znajdować się dowolny ciąg znaków składający się z 0 i 1.

Zatem NFA staje się:

Przykłady NFA

Teraz rozważ ciąg 01100011

 q0 → q1 → q2 → q3 → q4 → q4 → q4 → q4 

Przykład 4:

Zaprojektuj NFA, w którym cały ciąg zawiera podciąg 1110.

Rozwiązanie:

Język składa się z całego ciągu zawierającego podciąg 1010. Częściowy diagram przejścia może wyglądać następująco:

Przykłady NFA

Teraz, gdy 1010 może być podciągiem. Dlatego dodamy wejścia 0 i 1, aby można było zachować podciąg 1010 języka. Zatem NFA staje się:

Przykłady NFA

Tabela przejść dla powyższego diagramu przejść może być podana poniżej:

Stan obecny 0 1
→q1 pytanie 1 q1, q2
q2 q3
q3 q4
q4 pytanie 5
*q5 pytanie 5 pytanie 5

Rozważ ciąg 111010,

 δ(q1, 111010) = δ(q1, 1100) = δ(q1, 100) = δ(q2, 00) 

Utknąć! Ponieważ nie ma ścieżki z q2 dla symbolu wejściowego 0. Łańcuch 111010 możemy przetworzyć w inny sposób.

 δ(q1, 111010) = δ(q2, 1100) = δ(q3, 100) = δ(q4, 00) = δ(q5, 0) = δ(q5, ε) 

Ponieważ stan q5 jest stanem akceptacji. Dostajemy całość zeskanowaną i dotarliśmy do stanu końcowego.

Przykład 5:

Zaprojektuj NFA z ∑ = {0, 1} akceptuje wszystkie ciągi znaków, w których trzeci symbol od prawej strony to zawsze 0.

Rozwiązanie:

Przykłady NFA

W ten sposób trzeci symbol od prawej strony otrzymujemy zawsze jako „0”. NFA może być:

Przykłady NFA

Powyższy obraz to NFA, ponieważ w stanie q0 z wejściem 0 możemy przejść do stanu q0 lub q1.