Overflødige tilstander
En endelig automat kan ha tilstander som det ikke er mulig å komme til en sluttilstand fra, og som derfor er unødvendige. Slike tilstander kaller vi overflødige tilstander. Disse tilstandene vil vi vanligvis fjerne, fordi de bare gjør hele automaten unødvendig komplisert.
Eksempel på overflødige tilstander
La oss ha denne endelige automaten:
Vi ser at så snart vi kommer til tilstandene q4 eller q5, klarer vi aldri mer å komme til en av sluttilstandene q1 eller q2. Slike tilstander er overflødige, og vi kan rett og slett fjerne dem. Da får vi en ny automat som er ekvivalent; den aksepterer det samme språket. Etter at de overflødige tilstandene er slettet, ville automaten sett slik ut:
Den ville akseptert det samme språket. Likevel er det tilfeller der det er lurt å ha noen overflødige tilstander — for eksempel når vi konstruerer en total automat.
Definisjon av overflødig tilstand
La oss ha en endelig automat A = ⟨Q, Σ, δ, q0, F⟩. Vi sier at en tilstand q ∈ Q er overflødig hvis det ikke finnes noe ord w ∈ Σ∗ og noen tilstand qf ∈ F slik at
Hvordan fjerne overflødige tilstander
Vi antar at vi har automaten A = ⟨Q, Σ, δ, q0, F⟩ som input, og at den allerede er uten uoppnåelige tilstander. Vi finner etter hvert tilstandene som fører til sluttilstander, så tilstandene som fører til tilstander som fører til sluttilstander, og så videre. Slik får vi mengden av alle tilstander som ikke er overflødige. I begynnelsen setter vi S0 = F. Vi konstruerer de neste mengdene Si for i ∈ ℕ etter denne regelen:
Den endelige mengden av alle tilstander som ikke er overflødige, kan vi uttrykke slik:
Og mengden av overflødige tilstander som
Med andre ord: hvis Si = Si + 1 gjelder, inneholder mengden Q ∖ Si de overflødige tilstandene. Framgangsmåten illustrerer vi på denne automaten:
Først setter vi S0 = {q1, q2}. Videre konstruerer vi mengden S1 ved å legge til mengden S0 alle tilstander som fører til en av tilstandene i mengden S0. Vi legger altså til tilstandene q0 og q3, siden det går en overgang fra q0 til q1 og en fra q3 til q2. Vi får S1 = {q0, q1, q2, q3}. Siden S0 ≠ S1, fortsetter vi.
Vi konstruerer mengden S2. Vi leter etter alle tilstander som vi kan komme fra til S1, og som ikke allerede er i S1. Det er én eneste tilstand, q6, som vi kan komme fra til tilstanden q3. Vi får S2 = {q0, q1, q2, q3, q6}. Siden S1 ≠ S2, fortsetter vi.
Vi konstruerer mengden S3. Finnes det en ny tilstand som vi kan komme fra til noen av tilstandene i S2? Det gjør det ikke, fra tilstandene q4 og q5 kommer vi ikke til noen av tilstandene i S2, og de andre tilstandene er allerede i S2. Det gjelder altså at S3 = {q0, q1, q2, q3, q6}. Siden S2 = S3, stopper algoritmen, og mengden S2 er mengden av tilstander som ikke er overflødige. Mengden {q4, q5} er mengden av tilstander som er overflødige.
Formelt konstruerer vi en ny ekvivalent automat uten overflødige tilstander slik. Vi har automaten A = ⟨Q, Σ, δ, q0, F⟩, og til den konstruerer vi den ekvivalente automaten A′ = ⟨Q′, Σ, δ′, q0, F⟩ uten overflødige tilstander.
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a) hvis δ(q, a) ∈ Q′, ellers er δ′(q, a) ikke definert
Kilder
Kapitler: Uoppnåelige tilstander, Overflødige tilstander, Minimering av automat