Överflödiga tillstånd
En ändlig automat kan ha tillstånd från vilka det inte går att komma till ett sluttillstånd, och som därför är onödiga. Sådana tillstånd kallar vi överflödiga tillstånd. Vi vill vanligtvis ta bort dem, eftersom de bara gör hela automaten onödigt komplicerad.
Exempel på överflödiga tillstånd
Låt oss ta den här ändliga automaten:
Vi ser att så fort vi hamnar i tillståndet q4 eller q5 kommer vi aldrig mer att kunna ta oss till något av sluttillstånden q1 eller q2. Sådana tillstånd är överflödiga och vi kan helt enkelt ta bort dem. Då får vi en ny automat som är ekvivalent med den första, dvs. den accepterar samma språk. Efter att de överflödiga tillstånden har tagits bort ser automaten ut så här:
Den accepterar alltså samma språk. Det finns dock tillfällen då det är lämpligt att behålla några överflödiga tillstånd, till exempel när vi konstruerar en total automat.
Definition av ett överflödigt tillstånd
Låt A = ⟨Q, Σ, δ, q0, F⟩ vara en ändlig automat. Vi säger att ett tillstånd q ∈ Q är överflödigt om det inte finns något ord w ∈ Σ∗ och något tillstånd qf ∈ F sådana att
Hur du tar bort överflödiga tillstånd
Vi förutsätter att indata är en automat A = ⟨Q, Σ, δ, q0, F⟩ som redan saknar onåbara tillstånd. Vi hittar stegvis de tillstånd som leder till sluttillstånd, sedan de tillstånd som leder till tillstånd som leder till sluttillstånd, och så vidare. På så sätt får vi mängden av alla tillstånd som inte är överflödiga. I början sätter vi S0 = F. Vi konstruerar sedan ytterligare mängder Si för i ∈ ℤ+ enligt den här regeln:
Den resulterande mängden av alla tillstånd som inte är överflödiga kan vi uttrycka så här:
Och mängden av överflödiga tillstånd som
Med andra ord: om Si = Si + 1 gäller, innehåller mängden Q ∖ Si de överflödiga tillstånden. Vi illustrerar förfarandet med den här automaten:
Först sätter vi S0 = {q1, q2}. Sedan bygger vi mängden S1 genom att till mängden S0 lägga alla tillstånd som leder till något av tillstånden i S0. Vi lägger alltså till q0 och q3, eftersom det går en övergång från q0 till q1 och från q3 till q2. Vi får S1 = {q0, q1, q2, q3}. Eftersom S0 ≠ S1 fortsätter vi.
Vi bygger mängden S2. Vi söker alla tillstånd från vilka vi kan komma till S1 och som ännu inte finns i S1. Det är bara ett tillstånd, q6, från vilket vi kan komma till q3. Vi får S2 = {q0, q1, q2, q3, q6}. Eftersom S1 ≠ S2 fortsätter vi.
Vi bygger mängden S3. Finns det något nytt tillstånd från vilket vi kan komma till något av tillstånden i S2? Nej, från q4 och q5 går det inte att komma till något av tillstånden i S2, och de övriga tillstånden finns redan i S2. Det gäller alltså att S3 = {q0, q1, q2, q3, q6}. Eftersom S2 = S3 tar algoritmen slut, och mängden S2 är mängden av tillstånd som inte är överflödiga. Mängden {q4, q5} är mängden av tillstånd som är överflödiga.
Formellt konstruerar vi en ny ekvivalent automat utan överflödiga tillstånd så här. Vi har automaten A = ⟨Q, Σ, δ, q0, F⟩ och konstruerar till den en ekvivalent automat A′ = ⟨Q′, Σ, δ′, q0, F⟩ utan överflödiga tillstånd.
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a) om δ(q, a) ∈ Q′, annars är δ′(q, a) inte definierad
Källor
Kapitel: Onåbara tillstånd, Överflödiga tillstånd, Minimering av automater