Ulaşılamayan Durumlar
Sonlu otomatın bazı durumlarına ulaşmak mümkün olmayabilir. Bu tür durumlara ulaşılamayan durumlar diyoruz. Bunları genellikle çıkarmak isteriz, çünkü otomatı gereksiz yere karmaşıklaştırırlar.
Ulaşılamayan Durumlara Örnek
Şu otomata bakalım:
Ne yaparsak yapalım q3 durumuna hiçbir zaman ulaşamayız, çünkü ona giden hiçbir geçiş yoktur. Bu yüzden q3 durumunun ulaşılamaz olduğunu söyleriz. Bir soru: ona başka bir durumdan giden bir geçiş olsaydı, q3 ulaşılabilir olur muydu? q0, q1, q2, q5 durumlarından birinden bir ok çizseydik olurdu. Peki yeni bir düğüm ekleyip geçişi o düğümden çizseydik…
…o zaman elbette hem q3 hem q4 durumları ulaşılamaz olurdu.
Ulaşılamayan Durumun Tanımı
Önce ulaşılabilir durumu tanımlayalım. A = ⟨Q, Σ, δ, q0, F⟩ sonlu otomat olsun. q ∈ Q durumunun ulaşılabilir olduğunu, şu koşulu sağlayan bir w ∈ Σ∗ sözcüğü varsa söyleriz:
q ∈ Q durumu ulaşılabilir değilse ulaşılamazdır.
Ulaşılamayan Durumlar Nasıl Çıkarılır
Otomatın zaten ulaşılamayan durumları varsa onları çıkarmak yerinde olur. Bunun için ulaşılamayan durumları olmayan, eşdeğer bir A′ = ⟨Q′, Σ, δ′, q0, F′⟩ otomatı kurarız.
Ulaşılabilir durumlar kümesini adım adım kuracağız. S0 = {q0} kümesiyle başlarız, çünkü başlangıç durumu kesinlikle ulaşılabilirdir. Sonraki kümeyi şöyle kurarız:
Sade bir dille, S0 kümesi her zaman verilmiştir. S1 kümesini şöyle kurarız: S0 kümesindeki tüm durumları alırız ve Σ’daki tüm simgeler için geçişlerin nereye gittiğine bakarız. Bu durumların birleşimini S0 durumlar kümesiyle alırız. S2 ve sonraki kümeleri de aynı yöntemle buluruz. Açıkça Si − 1 ⊆ Si olacaktır.
Ulaşılabilir durumlar kümesini şöyle elde edebiliriz:
Sonsuz sayıda Si kümesinin birleşimini almaya çalışmamız tuhaf görünebilir, ama otomatın yalnızca sonlu sayıda durumu vardır. Bu, bir noktadan sonra Sj, Sj + 1 ve sonraki tüm kümelerin aynı olacağı anlamına gelir. Bu yüzden sonsuz sayıda kümenin birleşiminden de sonlu bir durumlar kümesi elde edebiliriz.
Şu otomata dönelim
ve ulaşılabilir durumlar kümesini bulmaya çalışalım. Temel eşitliği yazarak başlarız
Şimdi S1 kümesini hesaplayalım. q0 durumundan çıkan tüm geçişleri bulmalı ve hedef durumlarını S0 kümesine eklemeliyiz. q0 → a q1 ve q0 → bq2 olduğundan S1 kümesi ek olarak q1 ve q2 durumlarını içerecektir:
Sonra S2 kümesini kuralım. q0, q1, q2 durumlarından nerelere gidebileceğimize bakarız. Tek yeni durum q5’tir, ona q1 durumundan gidebiliriz:
Sonra S3 kümesini kuralım. q0, q1, q2, q5 durumlarından yeni bir duruma gidebilir miyiz? Gidemeyiz, bu yüzden S3 kümesi S2 ile aynı elemanları içerecektir:
S2 = S3 olduğundan S3 = S4 = S5 = … olur. Tüm Si kümelerinin birleşimini alırsak S2 kümesini elde ederiz, çünkü hiçbir sonraki kümeye başka eleman eklenmez.
Otomatın ulaşılabilir durumlar kümesi böylece {q0, q1, q2, q5} olur. Ulaşılamayan durumları basit bir küme farkıyla elde ederiz:
Otomatımızın ulaşılamayan durumlar kümesi {q3, q4} olur. A otomatından tüm ulaşılamayan durumları ve ulaşılamayan bir durum içeren tüm geçişleri çıkarırız. Yani A = ⟨Q, Σ, δ, q0, F⟩ otomatına eşdeğer, ulaşılamayan durumları olmayan A′ = ⟨Q′, Σ, δ′, q0, F′⟩ otomatını şöyle tanımlarız:
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a)
Bölümler: Ulaşılamayan Durumlar, Gereksiz Durumlar, Otomatın En Küçük Hâle Getirilmesi