logo

Konvertering fra NFA til DFA

I denne delen vil vi diskutere metoden for å konvertere NFA til tilsvarende DFA. I NFA, når en spesifikk inngang er gitt til gjeldende tilstand, går maskinen til flere tilstander. Den kan ha null, ett eller flere trekk på et gitt inngangssymbol. På den annen side, i DFA, når en spesifikk inngang er gitt til den nåværende tilstanden, går maskinen til bare én tilstand. DFA har bare ett trekk på et gitt inngangssymbol.

SIM-kort satt inn men ingen tjeneste android

La, M = (Q, ∑, δ, q0, F) er en NFA som aksepterer språket L(M). Det skal være ekvivalent DFA betegnet med M' = (Q', ∑', q0', δ', F'), slik at L(M) = L(M').

Trinn for å konvertere NFA til DFA:

Trinn 1: Opprinnelig Q' = ϕ

Steg 2: Legg til q0 av NFA til Q'. Finn deretter overgangene fra denne starttilstanden.

Trinn 3: I Q', finn det mulige settet med tilstander for hvert inngangssymbol. Hvis dette settet med tilstander ikke er i Q', så legg det til Q'.

Trinn 4: I DFA vil den endelige tilstanden være alle statene som inneholder F (slutttilstander for NFA)

Eksempel 1:

Konverter den gitte NFA til DFA.

Konvertering fra NFA til DFA

Løsning: For det gitte overgangsdiagrammet vil vi først konstruere overgangstabellen.

Stat 0 1
→q0 q0 q1
q1 {q1, q2} q1
*q2 q2 {q1, q2}

Nå vil vi få δ'-overgang for tilstand q0.

 δ'([q0], 0) = [q0] δ'([q0], 1) = [q1] 

δ'-overgangen for tilstand q1 oppnås som:

år inn i kvartaler
 δ'([q1], 0) = [q1, q2] (new state generated) δ'([q1], 1) = [q1] 

δ'-overgangen for tilstand q2 oppnås som:

 δ'([q2], 0) = [q2] δ'([q2], 1) = [q1, q2] 

Nå vil vi få δ'-overgang på [q1, q2].

 δ'([q1, q2], 0) = δ(q1, 0) ∪ δ(q2, 0) = {q1, q2} ∪ {q2} = [q1, q2] δ'([q1, q2], 1) = δ(q1, 1) ∪ δ(q2, 1) = {q1} ∪ {q1, q2} = {q1, q2} = [q1, q2] 

Tilstanden [q1, q2] er også den endelige tilstanden fordi den inneholder en slutttilstand q2. Overgangstabellen for den konstruerte DFAen vil være:

Stat 0 1
→[q0] [q0] [q1]
[q1] [q1, q2] [q1]
*[q2] [q2] [q1, q2]
*[q1, q2] [q1, q2] [q1, q2]

Overgangsdiagrammet vil være:

Konvertering fra NFA til DFA

Tilstanden q2 kan elimineres fordi q2 er en uoppnåelig tilstand.

Eksempel 2:

Konverter den gitte NFA til DFA.

Konvertering fra NFA til DFA

Løsning: For det gitte overgangsdiagrammet vil vi først konstruere overgangstabellen.

et eksempel på et åpen kildekode-os er
Stat 0 1
→q0 {q0, q1} {q1}
*q1 ϕ {q0, q1}

Nå vil vi få δ'-overgang for tilstand q0.

 δ'([q0], 0) = {q0, q1} = [q0, q1] (new state generated) δ'([q0], 1) = {q1} = [q1] 

δ'-overgangen for tilstand q1 oppnås som:

 δ'([q1], 0) = ϕ δ'([q1], 1) = [q0, q1] 

Nå vil vi få δ'-overgang på [q0, q1].

 δ'([q0, q1], 0) = δ(q0, 0) ∪ δ(q1, 0) = {q0, q1} ∪ ϕ = {q0, q1} = [q0, q1] 

På samme måte,

 δ'([q0, q1], 1) = δ(q0, 1) ∪ δ(q1, 1) = {q1} ∪ {q0, q1} = {q0, q1} = [q0, q1] 

Som i den gitte NFA er q1 en endelig tilstand, så i DFA uansett hvor q1 eksisterer blir den tilstanden en endelig tilstand. Derfor i DFA er slutttilstander [q1] og [q0, q1]. Derfor sett med slutttilstander F = {[q1], [q0, q1]}.

10 av 50

Overgangstabellen for den konstruerte DFAen vil være:

Stat 0 1
→[q0] [q0, q1] [q1]
*[q1] ϕ [q0, q1]
*[q0, q1] [q0, q1] [q0, q1]

Overgangsdiagrammet vil være:

Konvertering fra NFA til DFA

Selv vi kan endre navnet på statene i DFA.

Anta

 A = [q0] B = [q1] C = [q0, q1] 

Med disse nye navnene vil DFA være som følger:

Konvertering fra NFA til DFA