Излишни състояния
Един краен автомат може да има състояния, от които е невъзможно да се стигне до крайно състояние и които затова са ненужни. Такива състояния наричаме излишни състояния. Обикновено искаме да ги премахнем, защото само излишно усложняват целия автомат.
Пример за излишни състояния
Нека имаме този краен автомат:
Виждаме, че щом попаднем в състоянията q4 или q5, никога вече няма да успеем да стигнем до някое от крайните състояния q1 или q2. Такива състояния са излишни и можем просто да ги премахнем, с което ще получим нов автомат, който обаче ще е еквивалентен; ще приема същия език. След изтриването на излишните състояния автоматът би изглеждал така:
Той би приемал същия език. Има обаче моменти, когато е удобно да имаме някои излишни състояния — например когато построяваме тотален автомат.
Определение на излишно състояние
Нека имаме краен автомат A = ⟨Q, Σ, δ, q0, F⟩. Казваме, че състоянието q ∈ Q е излишно, ако не съществува никаква дума w ∈ Σ∗ и никакво състояние qf ∈ F, такива че
Как да премахнем излишните състояния
Предполагаме, че на входа имаме автомат A = ⟨Q, Σ, δ, q0, F⟩, който вече е без недостижими състояния. Постепенно ще намираме състоянията, които водят до крайни състояния, после състоянията, които водят до състояния, които водят до крайни състояния, и така нататък. По този начин получаваме множеството на всички състояния, които не са излишни. В началото полагаме S0 = F. Ще построяваме следващите множества Si за i ∈ ℕ по това правило:
Полученото множество на всички състояния, които не са излишни, можем да изразим така:
А множеството на излишните състояния като
С други думи: ако Si = Si + 1, то множеството Q ∖ Si съдържа излишните състояния. Метода ще илюстрираме на този автомат:
Първо полагаме равенството S0 = {q1, q2}. После построяваме множеството S1, като към множеството S0 добавим всички състояния, които водят до някое от състоянията в множеството S0. Добавяме следователно състоянията q0 и q3, защото от q0 води преход към q1, а от q3 води преход към q2. Получаваме S1 = {q0, q1, q2, q3}. Тъй като S0 ≠ S1, продължаваме нататък.
Построяваме множеството S2. Търсим всички състояния, от които може да се стигне до S1 и които още не са в S1. Това е едно-единствено състояние, q6, от което може да се стигне до състоянието q3. Получаваме S2 = {q0, q1, q2, q3, q6}. Тъй като S1 ≠ S2, продължаваме нататък.
Построяваме множеството S3. Съществува ли ново състояние, от което може да се стигне до някое от състоянията в S2? Не съществува, от състоянията q4 и q5 не може да се стигне до нито едно от състоянията в S2, а останалите състояния вече са в S2. Следователно S3 = {q0, q1, q2, q3, q6}. Тъй като S2 = S3, алгоритъмът свършва и множеството S2 е множеството на състоянията, които не са излишни. Множеството {q4, q5} е множеството на състоянията, които са излишни.
Формално нов еквивалентен автомат без излишни състояния построяваме така. Имаме автомата A = ⟨Q, Σ, δ, q0, F⟩ и построяваме към него еквивалентен автомат A′ = ⟨Q′, Σ, δ′, q0, F⟩ без излишни състояния.
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a), ако δ(q, a) ∈ Q′, иначе δ′(q, a) не е определена
Източници
Глави: Недостижими състояния, Излишни състояния, Минимизиране на автомат