logo

Esempi di NFA

Esempio 1:

Progettare una NFA per la tabella di transizione come indicato di seguito:

Stato attuale 0 1
→q0 q0, q1 q0, q2
q1 q3 e
q2 q2, q3 q3
→q3 q3 q3

Soluzione:

Il diagramma di transizione può essere disegnato utilizzando la funzione di mappatura come indicato nella tabella.

Esempi di NFA

Qui,

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

Esempio 2:

Progettare un NFA con ∑ = {0, 1} accetta tutte le stringhe che terminano con 01.

Soluzione:

Esempi di NFA

Quindi, NFA sarebbe:

Esempi di NFA

Esempio 3:

Progetta un NFA con ∑ = {0, 1} in cui il doppio '1' è seguito dal doppio '0'.

Soluzione:

La FA con doppio 1 è la seguente:

prepararsi per il test mockito
Esempi di NFA

Dovrebbe essere immediatamente seguito dal doppio 0.

Poi,

Esempi di NFA

Ora, prima del doppio 1, può esserci qualsiasi stringa di 0 e 1. Allo stesso modo, dopo il doppio 0, può esserci qualsiasi stringa di 0 e 1.

Quindi la NFA diventa:

Esempi di NFA

Consideriamo ora la stringa 01100011

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

Esempio 4:

Progetta un NFA in cui tutte le stringhe contengono una sottostringa 1110.

Soluzione:

Il linguaggio è costituito da tutta la stringa contenente la sottostringa 1010. Il diagramma di transizione parziale può essere:

Esempi di NFA

Ora, poiché 1010 potrebbe essere la sottostringa. Quindi aggiungeremo gli input 0 e 1 in modo che la sottostringa 1010 del linguaggio possa essere mantenuta. Quindi la NFA diventa:

Esempi di NFA

La tabella di transizione per il diagramma di transizione sopra può essere fornita di seguito:

Stato attuale 0 1
→q1 q1 q1, q2
q2 q3
q3 q4
q4 q5
*q5 q5 q5

Considera una stringa 111010,

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

Rimasto bloccato! Poiché non esiste un percorso da q2 per il simbolo di input 0, possiamo elaborare la stringa 111010 in un altro modo.

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

Poiché lo stato q5 è lo stato di accettazione. Otteniamo la scansione completa e raggiungiamo lo stato finale.

Esempio 5:

Progettare un NFA con ∑ = {0, 1} accetta tutte le stringhe in cui il terzo simbolo dall'estremità destra è sempre 0.

convertire l'array di byte in stringa

Soluzione:

Esempi di NFA

Quindi otteniamo il terzo simbolo dall'estremità destra sempre come '0'. La NFA può essere:

Esempi di NFA

L'immagine sopra è un NFA perché nello stato q0 con input 0, possiamo andare allo stato q0 o q1.