NSO’dan DSO’ya Dönüştürme
Deterministik olmayan bir sonlu otomatı (NSO) deterministik sonlu otomata (DSO) nasıl dönüştüreceğimizi göstereceğiz; böylece deterministik olmayan otomatların hesaplama gücünün deterministik otomatlarınkine denk olduğunu kanıtlayacağız.
Temel Fikir
ε-geçişi olmayan ⟨QN, ΣN, δN, q0, FN⟩ deterministik olmayan otomat verilsin. Şu koşullarla ⟨QD, ΣD, δD, p0, FD⟩ deterministik otomatı kurarız:
- QD ⊆ 2QN
- ΣD = ΣN
- p0 = {q0}
- FD = {Q ∈ QD | Q ∩ FN ≠ ∅}
δD geçiş fonksiyonunu şöyle tanımlarız:
Bu ne demek? Deterministik olmayan otomat aynı anda birden fazla durumda olabilir; örneğin deterministik olmayan otomatımızın {q0, q1} durumlarında bulunduğu bir duruma gelebiliriz. Sonraki sembolü, örneğin 1’i okuyunca {q0, q2, q3} durumlar kümesine geçebiliriz. Aynı otomatın deterministik sürümünde bu şöyle görünür: iki durum oluştururuz, bunları {q0, q1} ve {q0, q2, q3} diye adlandırırız ve aralarına 1 sembolü için bir geçiş koyarız. Biçimsel olarak bir durumdan diğerine geçmiş oluruz, ama adlandırma sayesinde deterministik olmayan otomatta sırasıyla iki ya da üç durumda bulunacağımızı biliriz.
Örnek
Şu deterministik olmayan otomatı ele alalım:
Deterministik otomatı kurmak için her şeyden önce yeni geçiş fonksiyonunu kurmamız gerekir. Bu konuda tüm geçişleri yazacağımız bir tablo bize yardımcı olur. Tablo başlangıçta şöyle görünür:
Algoritmanın sonunda sol sütunda deterministik otomatın tüm durumları bulunacak. Doldurulmuş tablo da geçiş fonksiyonunu belirleyecek. Şimdi tabloya, {q0} durumundayken ve girişte 0 ve 1 sembolleri varken hangi durumlara geçtiğimizi yazarız.
q0 durumundan 0 sembolü için yalnızca q1 durumuna geçiş var; 1 sembolü için ise q1 ve q2 durumlarına geçiş var. Şimdi tabloya iki yeni durum ekleyelim: {q1} ve {q1, q2}. Neden? Tabloya sol sütunda henüz bulunmayan bir durumlar kümesi yazdığımız anda bu durumlar kümesini oraya da ekleriz.
ve yine dolduralım. {q1, q2} durumunda iki durumu da denetlemeyi unutmamalıyız; yani q1 durumundan nereye gittiğimizin, q2 durumundan nereye gittiğimizle birleşimini almalıyız.
Tabloya eklememiz gereken birkaç yeni durum elde ettik:
…ve geçişleri yine dolduralım:
{q0, q1, q3}, {q1} ve {q1,q2} durumları tabloda zaten var, bu yüzden yalnızca {q0,q1,q2,q3} durumunu ekleriz.
Artık yeni durum eklemedik, yani tablo doldurulmuş oldu. Şimdi geriye yalnızca diyagramı çizmek kalıyor. Deterministik otomatın durumları ilk sütundadır, 0 ve 1 sembolleri için geçişler sonraki sütunlardadır. Asıl otomattaki kabul durumlarından birini içeren her durum, bu otomatta da kabul durumu olur. Yani q3 durumunu içeren her durum kabul durumu olacaktır. Otomat şöyle görünecek:
Otomatın gerçekten doğru çalıştığını gösterebiliriz. 11001 sözcüğünü kabul ettirmeyi deneyelim. Deterministik otomatta şu yoldan gideriz
ve son durum {q0, q1, q2, q3} kabul durumu olduğundan otomat sözcüğü kabul eder. Deterministik olmayan otomatta benzetim sırasında aynı durumlara ulaşırdık; yani q0 durumunda başlardık ve 1 sembolü için {q1, q2} durumlarına geçerdik. Sonraki 1 sembolü bizi {q0,q3} durumlarına götürürdü ve sonraki durumlar için de böyle devam ederdi. Sonunda {q0, q1, q2, q3} durumlarının hepsinde bulunurduk ve otomat sözcüğü kabul ederdi.
Kaynaklar
Bölümler: Sonlu Otomat, Tam Otomat, Deterministik Olmayan Sonlu Otomat, Deterministik Olmayan Otomatın Benzetimi, NSO’dan DSO’ya Dönüştürme