✖

Onåbara tillstånd

En ändlig automat kan ha tillstånd som det inte går att komma till. Sådana tillstånd kallar vi onåbara tillstånd. Vi vill vanligtvis ta bort dem, eftersom de bara gör hela automaten onödigt komplicerad.

Exempel på onåbara tillstånd

Låt oss ta den här automaten:

Vi ser att vi aldrig kan komma till tillståndet q3, vad vi än gör, eftersom ingen övergång leder dit. Om q3 säger vi därför att det är onåbart. En fråga: skulle q3 vara nåbart om någon övergång från ett annat tillstånd ledde dit? Om vi drog en båge från något av tillstånden q0, q1, q2, q5 skulle det vara nåbart. Om vi lade till ännu en nod och drog en övergång från den…

…så skulle givetvis både q3 och q4 vara onåbara.

Definition av ett onåbart tillstånd

Först definierar vi ett nåbart tillstånd. Låt A = ⟨Q, Σ, δ, q0, F⟩ vara en ändlig automat. Vi säger att ett tillstånd q ∈ Q är nåbart om det finns ett ord w ∈ Σ∗ sådant att

⟨q0,w⟩↦∗⟨q,ε⟩.

Ett tillstånd q ∈ Q är onåbart om det inte är nåbart.

Hur du tar bort onåbara tillstånd

Om en automat redan har onåbara tillstånd är det lämpligt att ta bort dem. Vi konstruerar då en ekvivalent automat A′ = ⟨Q′, Σ, δ′, q0, F′⟩ som saknar onåbara tillstånd.

Vi bygger upp mängden av nåbara tillstånd iterativt. Vi börjar med mängden S0 = {q0}, eftersom starttillståndet säkert är nåbart. Nästa mängd bygger vi så här:

Si={r∣δ(q,a)=r för något q∈Si−1,a∈Σ}∪Si−1

Med ord: mängden S0 är alltid given. Mängden S1 bygger vi genom att ta alla tillstånd i mängden S0 och ta reda på vart övergångarna för alla symboler i Σ leder. Vi bildar unionen av dessa tillstånd och den ursprungliga mängden S0. På samma sätt tar vi fram mängden S2 och de följande. Uppenbarligen gäller Si − 1 ⊆ Si.

Mängden av nåbara tillstånd får vi sedan så här:

⋃i=1∞Si

Det kan verka konstigt att vi försöker göra en union av oändligt många mängder Si, men automaten innehåller bara ändligt många tillstånd. Det betyder att mängderna Sj och Sj + 1 och alla följande vid något tillfälle blir likadana, så även efter unionen av oändligt många mängder kan vi få en ändlig mängd av tillstånd.

Vi återvänder till automaten

och försöker hitta mängden av nåbara tillstånd. Vi börjar med att sätta

S0={q0}

Nu beräknar vi mängden S1. Vi måste hitta alla övergångar från q0 och lägga till deras måltillstånd i mängden S0. Eftersom q0 → a q1 och q0 → bq2 gäller kommer mängden S1 dessutom att innehålla tillstånden q1 och q2:

S1={q0,q1,q2}

Därefter konstruerar vi mängden S2. Vi tittar på vart vi kan komma från tillstånden q0, q1, q2. Det enda nya tillståndet är q5, som vi kan komma till från q1:

S2={q0,q1,q2,q5}

Sedan bygger vi mängden S3. Kan vi komma till något nytt tillstånd från q0, q1, q2, q5? Nej, så mängden S3 innehåller samma element som S2:

S3={q0,q1,q2,q5}

Eftersom S2 = S3 gäller också S3 = S4 = S5 = … Om vi tar unionen av alla Si får vi mängden S2, eftersom inget nytt element tillkommer i någon av de följande mängderna.

Mängden av nåbara tillstånd i automaten är alltså {q0, q1, q2, q5}. De onåbara tillstånden får vi som en enkel differens av mängder:

Q∖⋃i=1∞Si

Mängden av onåbara tillstånd i vår automat är {q3, q4}. Vi tar bort alla onåbara tillstånd ur automaten A, och likaså alla övergångar som innehöll något onåbart tillstånd. Den ekvivalenta automaten utan onåbara tillstånd A′ = ⟨Q′, Σ, δ′, q0, F′⟩ till automaten A = ⟨Q, Σ, δ, q0, F⟩ definierar vi alltså som:

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a)
  • F′=F∩Q′=F∩⋃i=1∞Si

Källor

Kapitel: Onåbara tillstånd, Överflödiga tillstånd, Minimering av automater