Sonlu Özdevinirlere Giriş Diller Deterministik Sonlu Özdevinirler Özdevinirlerin Temsiliyeti
Alfabeler Alfabe sonlu semboller kümesidir. Örnekler: ASCII, Unicode, {0,1} (ikili alfabe ), {a,b,c}.
Diziler Bir alfabe Σ üzerinde tanımlanmış dizi, Σ alfabesinden gelen semboller kullanılarak oluşturulan listedir. Diziler virgül kullanılmadan yazılır. Ör: abc. Σ*, Σ üzerinde tanımlanmış tümdizilerin kümesidir. ε boş dizi anlamı taşır (uzunluğu 0 olan dizi).
Örnek: Diziler {0,1}* = {ε, 0, 1, 00, 01, 10, 11, 000, 001, . . . } İnce nokta: Dizi olarak 0 ve sembol olarak 0 ayni görünür. Cinsini kullanıldığı ortam belirler.
Diller dil = Σ*´nin alt kümesi (Σ alfabe). Örnek: Ardışık iki tabe 1 sembolü olmayan ikili diziler kümesi. L = {ε, 0, 1, 00, 01, 10, 000, 001, 010, 100, 101, 0000, 0001, 0010, 0100, 0101, 1000, 1001, 1010, . . . }
Deterministik Sonlu Özdevinirler Aşağıdakilerden oluşan, dilleri tanımlamaya yarayan yöntem: Sonlu sayıda durumlar kümesi (genellikle Q). Girdi alfabesi (genellikle Σ). Geçiş fonksiyonu (genellikle δ). Bir başlangıç durumu (genellikle q0 Q). Final durumları kümesi (genellikle F ⊆ Q). “Final” ve “kabul eden” eş anlamlı.
Geçiş Fonksiyonu İki paramere alır: durum ve girdi sembolü. δ(q, a) = SÖ’in q durumunda iken a girdisini gördüğünde gittiği durum.
Deterministik Sonlu Özdevinirlerin (DSÖ) Grafiksel Gösterimi Düğümler = durumlar. Yaylar geçiş foksiyonunu temsil eder. p durumundan q durumuna girdi sembolü t ile geçiş varsa, o zaman p’den q’ya olan yay üzerine t yazılır. Başlangıç durumunu işaret eden "Başla" ile etiketlenmiş bir ok. Final durumları çift yuvarlak ile belli edilir.
Örnek: Bir DSÖ’in grafiksel gösterimi İki ardışık 1 içermeyen tüm ikili dizileri kabul eder. Başla 1 A C B 0,1 İki tane ardışık 1 görüldü. Önceki dizi tamam, 1 ile bitmiyor Önceki dizi tamam, tek 1 ile bitiyor. .
Alternatif Temsil Şekli: Geçiş Tablosu Final durumlar yıldızlı * Kolon = Girdi sembolü 1 A A B B A C C C C Başlangıç durumu için ok Sıra = durum
Genişlemiş Geçiş Fonksiyonu δ fonksiyonunu bir girdi dizisinin DSÖ üzerindeki etkisini anlatmak için geliştirebiliriz. Özyinelemeli tanım: Temel: δ(q, ε) = q Endüksiyon: δ(q,wa) = δ(δ(q,w),a) w bir dizi; a bir girdi sembolü.
Extended δ: Intuition Kural: … w, x, y, x diziler. a, b, c,… tek semboller. Genişletilmiş δ’nın q durumu ve a1a2…an girdisi verildiği zaman yaptığı işlem: geçiş diyagramı üzerinde q’dan başlayıp sırasıyla a1, a2,…,an ile etiketlenmiş yayların üzerinden geçip bir duruma erişmek.
Örnek: Gelişmiş Delta 1 A A B B A C C C C 1 A A B B A C C C C δ(B,011) = δ(δ(B,01),1) = δ(δ(δ(B,0),1),1) = δ(δ(A,1),1) = δ(B,1) = C
DSÖ’nün Dili Her tür özdevinir bir dil tanımlar. A bir özdevinir ise, L(A) onun dilidir. DSÖ A için, L(A) başlangıç durumundan bir final durumuna giden yolların üzerindeki yay etiketlerinden oluşan dizilerdir. Matematiksel olarak: L(A) = { w | w bir dizi, δ(q0, w) F }.
Örnek: Dil içinde bir dizi 101 dizisi aşağıdaki DSÖ’nün dili içindedir. A’dan başlayalım. Başla 1 A C B 0,1
Örnek: Dil içinde bir dizi 1 ile etiketlenmiş yayı takip et. 0,1 1 1 A B C Başla
Örnek: Dil içinde bir dizi Sonra şimdiki durum B’den 0 ile etiketlenmiş yayı. 0,1 1 1 A B C Başla
Örnek: Dil içinde bir dizi Son olarak şimdiki durum A’dan 1 ile etiketlenmiş yayı. Vardığımız durum kabul eden bir durumdur, dolayısı ile 101 dilin içindedir. 0,1 1 1 A B C Başla
Örnek – Son Örnek DSÖ’müzün dili: {w | w {0,1}* ve w içinde iki ardışık 1 yoktur}
Düzenli Diller Bir dil L herhangi bir DSÖ tarafından kabul ediliyorsa, o dil düzenlidir. Not: DSÖ sadece sadece L içindeki dizileri kabul etmeli, başka dizileri değil. Bazı diller düzenli değil. İçgüdüsel olarak, düzenli diller istediğimiz büyüklükteki sayılara kadar “sayamazlar”.
Örnek: Düzenli olmayan bir dil L1 = {0n1n | n ≥ 1} Not: ai = i tane a. Mesela, 04 = 0000. Okunuşu: “n tane 0 ve onları takip eden n tane 1’den oluşan diziler, şöyle ki n en az 1’dir. Yani, L1 = {01, 0011, 000111,…}
Başka bir Örnek L2 = {w | w {(, )}* ve w dengeli } Not: alfabe ’(’ ve ’)’, yani parantez sembollerinden oluşuyor. Dengeli parantezler aritmetik ifadelerde görülenlerdir. Örnek: (), ()(), (()), (()()),…
Ancak birçok dil düzenlidir. Düzenl dilleri birçok şekilde anlatabiliriz. Örneğin, düzenli ifadelerle. Birçok ortamda karşımıza çıkarlar ve çok faydalı özellikleri vardır. Örnek: Programlama dillerindeki kayan nokta sayıların dili düzenlidir.
Örnek: Bir düzenli dil L3 = { w | w {0,1}* ve w, ikili bir sayı olarak anlaşıldığında, 23 ile tam bölünebilir} DSÖ: 23 durum, isimleri: 0, 1,…,22. 23 ile bölündüğü zaman kalana denk gelir. Başlangıç ve tek final durum 0. 5 için tahtaya çiz
L3 için geçişler w i sayısını temsil ediyorsa, δ(0, w) = i%23 olduğunu varsayalım w0 2i sayısını temsil eder, böylece δ(i%23, 0) = (2i)%23. Ayni şekilde: w1 2i+1 sayısını temsil eder, böylece δ(i%23, 1) = (2i+1)%23. Örnek: δ(15,0) = 30%23 = 7; δ(11,1) = 23%23 = 0.
Başka bir Örnek L4 = { w | w in {0,1}* ve w’nin tersten ikili sayı olarak okunuşu 23’e bölünebilir} Örnek: 01110100 L4, çünkü onun tersi 00101110 ikili sayı olarak 46’dır. binary. DSÖ’sunu tasarlamak zor. Ama bir teorem, düzenli bir dilin tersinin de düzenli olduğunu söyler.