✖

Gereksiz Durumlar

Sonlu otomatın bazı durumlarından kabul durumuna ulaşmak mümkün olmayabilir; bu durumlar boşuna yer kaplar. Bunlara gereksiz durumlar diyoruz. Bu durumları genellikle çıkarmak isteriz, çünkü otomatı yalnızca gereksiz yere karmaşıklaştırırlar.

Gereksiz Durumlara Örnek

Şu sonlu otomatı ele alalım:

q4 ya da q5 durumuna girdiğimiz anda kabul durumlarından q1 ve q2’ye bir daha asla ulaşamayız. Bu durumlar gereksizdir ve onları çıkarabiliriz; böylece denk bir otomat elde ederiz, yani aynı dili kabul eden bir otomat. Gereksiz durumlar silindikten sonra otomat şöyle görünür:

Otomat yine aynı dili kabul eder. Yine de bazı gereksiz durumları tutmanın yerinde olduğu anlar vardır — örneğin tam otomat kurarken.

Gereksiz Durumun Tanımı

A = ⟨Q, Σ, δ, q0, F⟩ sonlu otomat olsun. Şu koşulu sağlayan hiçbir w ∈ Σ∗ sözcüğü ve hiçbir qf ∈ F durumu yoksa q ∈ Q durumuna gereksiz diyoruz:

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

Gereksiz Durumlar Nasıl Çıkarılır

Girişte, ulaşılamayan durumları zaten olmayan bir A = ⟨Q, Σ, δ, q0, F⟩ otomatı olduğunu varsayıyoruz. Önce kabul durumlarına giden durumları, sonra kabul durumlarına giden durumlara giden durumları ve bunu böyle sürdürerek durumları adım adım buluruz. Böylece gereksiz olmayan tüm durumların kümesini elde ederiz. Başlangıçta S0 = F alırız. Sonraki Si kümelerini (i ∈ ℕ+ için) şu kurala göre kuracağız:

Si={q∈Q|∃a∈Σ:δ(q,a)∈Si−1}∪Si−1

Gereksiz olmayan tüm durumların kümesini şöyle yazabiliriz:

⋃i=1∞Si.

Gereksiz durumların kümesini ise şöyle:

Q∖⋃i=1∞Si.

Başka bir deyişle, Si = Si + 1 ise Q ∖ Si kümesi gereksiz durumları içerir. Yöntemi şu otomat üzerinde göstereceğiz:

Önce S0 = {q1, q2} alırız. Sonra S1 kümesini şöyle kurarız: S0 kümesine, S0 içindeki durumlardan birine giden tüm durumları ekleriz. q0 ve q3 durumlarını ekleriz, çünkü q0 durumundan q1 durumuna, q3 durumundan q2 durumuna geçiş vardır. S1 = {q0, q1, q2, q3} elde ederiz. S0 ≠ S1 olduğu için devam ederiz.

S2 kümesini kuralım. Kendisinden S1 kümesine ulaşılabilen ve henüz S1 içinde olmayan tüm durumları ararız. Böyle tek bir durum vardır: q3 durumuna gidilebilen q6. S2 = {q0, q1, q2, q3, q6} elde ederiz. S1 ≠ S2 olduğu için devam ederiz.

S3 kümesini kuralım. S2 içindeki durumlardan birine gidebilen yeni bir durum var mı? Yok: q4 ve q5 durumlarından S2 içindeki hiçbir duruma gidilemez, diğer durumlar zaten S2 içindedir. Dolayısıyla S3 = {q0, q1, q2, q3, q6} olur. S2 = S3 olduğu için algoritma sona erer ve S2 kümesi gereksiz olmayan durumların kümesidir. {q4, q5} kümesi ise gereksiz olan durumların kümesidir.

Gereksiz durumları olmayan yeni denk otomatı biçimsel olarak şöyle kurarız. A = ⟨Q, Σ, δ, q0, F⟩ otomatı verilmiş olsun; ona denk, gereksiz durumları olmayan A′ = ⟨Q′, Σ, δ′, q0, F⟩ otomatını kuralım.

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a), eğer δ(q, a) ∈ Q′ ise; aksi hâlde δ′(q, a) tanımlı değildir

Kaynaklar

Bölümler: Ulaşılamayan Durumlar, Gereksiz Durumlar, Otomatın En Küçük Hâle Getirilmesi