FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 3
Karmaşıklık CHOMSKY HİYERARŞİSİ 0 1 2 3 Özyinelemeli - Sayılabilir Diller : Turing Makinesi (Recursively Enumerable Languages : Turing Machine) Bağlama - Duyarlı Diller : Doğrusal Sınırlandırılmış otomatalar (Context Sensitive Languages : Linear Bounded Automata) Bağlam - Bağımsız Diller : Bas Bırak otomataları (Context Free Languages : Push Down Automata) Düzenli Diller : Sonlu - Durum otomataları (Regular Language : Finite State Automata) *(Dil : otomata)
CHOMSKY HİYERARŞİSİ - TİP 3 Düzenli İfadeler Düzenli Diller Sonlu Durum Otomatları Düzenli Gramerler
SONLU DURUM OTOMATLARI (FSA) m e e! q 0 q 1 q 2 q 3 q 4 DFSA e
SONLU DURUM OTOMATLARI (FSA) m e e! q 0 q 1 q 2 q 3 q 4 m e e e! NFSA q 0 q 1 q 2 q 3 q 4 ε
OTOMATLARIN DENKLİĞİ - 1 abc ve bac alt katarlarından en az birinin, en az bir kez içerildiği durumları tanıyan/arayan deterministik ve deterministik olmayan otomatlar Deterministik olmayan sonlu durum otomatları, deterministik sonlu durum otomatlarına göre problemlere daha soyut düzeyde ve daha kolay modellenebilir çözümler sunabilirler.
OTOMATLARIN DENKLİĞİ - 2
BOŞ GEÇİŞLİ SONLU DURUM OTOMATLARI (FINITE STATE AUTOMATA WITH Ɛ-MOVES) Boş geçişli sonlu otomatlar, deterministik olmayanlara benzer şekilde bir beşli olarak tanımlanır: DFA = <Q, Σ, δ, q 0, F> Q : Sonlu sayıda durum içeren durumlar kümesi Σ : Sonlu sayıda giriş simgesinden oluşan alfabe q 0 : Başlangıç durumu (q 0 ϵ Q) F : Son durumlar kümesi (F Q) δ : Geçiş fonksiyonu (Q x (Σ U {ɛ}) 2 Q )
BOŞ GEÇİŞLİ SONLU DURUM OTOMATLARI (FINITE STATE AUTOMATA WITH Ɛ-MOVES) ε-geçişli sonlu durum otomatlarıyla, deterministik olmayan sonlu durum otomatları ile kullanımı kolaylaştırılan sonlu durum otomatları daha da genişletilmiştir. ε-geçişi boş simge geçişi olarak düşünülebilir. Bu geçiş ile giriş sembolü işlenmeden bir sonraki duruma geçiş mümkündür. Bu otomat, modelin esnekliğini arttıran, geçiş tablolarının oluşturulmasını ve okunmasını kolaylaştıran bir yapı ortaya koyar. 0 1 2 ε ε q 0 q 1 q 4
BOŞ GEÇİŞLİ SONLU DURUM OTOMATLARI (FINITE STATE AUTOMATA WITH Ɛ-MOVES) L = {0, 1,2} alfabesinden tanımlanabilen { a 2n b 2m c 2k : n 1, m 0, k 0} Boş geçişli sonlu durum otomatı Deterministik sonlu durum otomatı
İKİ YÖNLÜ SONLU DURUM OTOMATLARI İki yönlü sonlu otomatlar, bir beşli olarak tanımlanır: DFA = <Q, Σ, δ, q 0, F> Q : Sonlu sayıda durum içeren Durumlar Kümesi Σ : Sonlu sayıda giriş simgesinden oluşan Giriş Alfabesi q 0 : Başlangıç durumu (q 0 ϵ Q) F : Son (uç) durumlar kümesi (F Q) δ : Durum geçiş fonksiyonu (Q x Σ Q x {R, L} ) Bu tanımda R (right) ve L (left), okuma kafasının bir sağa mı yoksa bir sola mı geçeceğini gösterir.
EŞ GÜÇTEKİ SONLU DURUM OTOMATLARI Aşağıdaki otomat türleri tanıyabilecekleri / üretebilecekleri diller açısından eş güçtedirler: Deterministik Sonlu Durum Otomatları Deterministik Olmayan Sonlu Durum Otomatları Boş Geçişli Sonlu Durum Otomatları İki Yönlü Sonlu Durum Otomatları
DÜZENLİ İFADELER (REGULAR EXPRESSIONS)
DÜZENLİ İFADELER Biçimsel Tanım: Karakter katarı kümelerinin cebirsel olarak tanımlanmasını sağlayan bir gösterim yöntemidir (Stephen C. Kleene, 1956). Karakter dizileri içinde, belirlenen örüntüleri (pattern) taramaya yarar. Kullanım alanları: Arama motorları Bilgi edinimi (Information retrieval) Kelime işleme (Word processing) Veri doğrulama (Data validation)... Herhangi bir düzenli ifade doğrudan NFSA ya, buradan da DFSA ya dönüştürülebilir. NFSA (backtracking), DFSA veya melez yöntemler kullanılarak gerçekleştirimleri yapılabilir.
DÜZENLİ İFADELER En basit düzenli ifadeler karakterlerin sıralı biçimde dizilmesiyle oluşur. Düzenli ifadeler büyük küçük harf duyarlıdır. a b c /abc/ q 0 q 1 q 2 q 3 /okula/ Ali okula gelmedi. /okul/ Ali okula gelmedi. /a/ Ali okula gelmedi. /okula gelmedi/ Ali okula gelmedi.
KARAKTER SINIFLARI Kare parantezler arasına yazılan karakterler, veya (disjunction) işlemine tabi olurlar. /a[bc]/ a b q 0 q 1 q 2 - işareti ile kare parantez içinde bir aralık belirtilebilir. /[Bb]ahçe/ Bahçe veya bahçe /[abc]/ a veya b veya c /[1234567890]/ Herhangi bir rakam /[A-Z]/ Herhangi bir büyük harf (İngiliz alfabesindeki 26 harften biri) /[a-z]/ Herhangi bir küçük harf (İngiliz alfabesindeki 26 harften biri) /[0-9]/ Herhangi bir rakam c
* (KLEENE STAR) * karakteri kendinden önce gelen karakterin veya düzenli ifadenin 0 veya daha fazla kez ardışık olarak tekrarlanabileceğini belirtir. /ab*c/ ac, abc, abbc, abbbc, a b q 0 q 1 q 2 c /[0-9][0-9]*/ bir veya daha fazla sayıda ardışık rakam
+ (KLEENE PLUS) + karakteri kendinden önce gelen karakterin veya düzenli ifadenin 1 veya daha fazla kez ardışık olarak tekrarlanabileceğini belirtir. /ab+c/ a b b q 0 q 1 q 2 q 3 c /[0-9]+/ bir veya daha fazla sayıda ardışık rakam
(PİPE) Bu karakter örüntüler arasında veya işlevi görür. a b c /abc ab/ q 0 q 1 q 2 q 3 /elma portakal/ elma veya portakal
(PİPE) () şeklindeki normal parantezler içine alınan ifadeler tek bir karaktermiş gibi işlenir. a b c /a(bc bd)/ q 0 q 1 q 2 q 3 d /yüz(er erler)/ yüzer veya yüzerler
? VE.? karakteri kendinden önce gelen karakterin veya düzenli ifadenin seçimlik olduğunu belirtir. /ab?c/ a b c q 0 q 1 q 2 q 3 /evleri?/ evler veya evleri /colou?r/ color veya colour c. karakteri tekil herhangi bir karakterin yerine geçebilir. /dö.me/ dökme veya dövme gibi
İFADE SINIRLARI \b özel karakteri, kullanıldığı yere göre, aranan ifadenin önünde veya arkasında sınırlayıcı (boşluk gibi) karakterleri sınır olarak kabul eder. /\beli\b/ önünde ve arkasında boşluk olan eli ifadesini bulur. \B karakteri sınırlandırma olmayan durumu belirtir.
^ karakteri 3 farklı şekilde kullanılabilir. ^ (CARET) 1) Aralık için olumsuzlama /[^A-Z]/ büyük harf harici karakter /[^Ss]/ S veya s harici karakter /[^\.]/ nokta harici karakter 2) Satır başına bağlama /^Avrupa/ satır başında Avrupa olan durum 3) Normal karakter olarak kullanım /[e^]/ e veya ^ /a^b/ a^b örüntüsü
$ $ karakteri ise normal bir karakter olarak kullanılabileceği gibi satır sonuna bağlama için de kullanılabilir. /gittiler\.$/ satır sonunda gittiler olan durum
SAYAÇLAR Herhangi bir düzenli ifadenin ne kadar tekrarlanacağını belirtirler. {n} kendinden önceki düzenli ifade n defa ardışık olmalıdır. {n, m} kendinden önceki düzenli ifade en az n, en çok m defa ardışık olmalıdır. {n,} kendinden önceki düzenli ifade en az n defa ardışık olmalıdır. Örneğin Trakya kelimesi önünde 3 karakter ve devamında 4 rakam gelecek şekilde bulunmak istendiğinde, şu şekilde düzenli ifade ile gösterilebilir: [a-z]{3}[0-9]{4}trakya
OPERATÖR ÖNCELİK HİYERARŞİSİ En yüksekten en düşük öncelikli operatöre doğru sıralama şu şekildedir: 1. Parantez () 2. Sayaçlar * +? {} 3. Seriler veya bağlayıcılar evler ^Yarın gelecek$ 4. Veya (pipe)
\d herhangi bir rakam ([0-9]) \D rakam olmayan bir karakter ([^0-9]) \w alfanümerik karakterler ve _ karakteri ([a-za-z0-9_]) \W alfanümerik olmayan karakterler ([^\w]) \s boşluk karakterleri ([ \r\t\n\f]) \S boşluk olmayan karakter ([^\s]) \n newline \r carriage return \t tab \f form feed \. nokta ÖZEL OPERATÖRLER
ÖRNEKLER Tarih 02/04/2010 (\d{1,2}\/\d{1,2}\/\d{4}) E-posta adresi (\w+@[a-za-z_]+?\.[a-za-z]{2,6}) IP adresi \b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b
L 1 L 2 xy x L 1, : y L L 1 ={a,ab,ba} L 2 ={b,aa} 2 EKLEME (CONCATENATİON) a, ab, ba b, aa ab, aaa, abb, abaa, bab, baaa ε q 0 q f q 0 q f FSA 1 FSA 2
L 1 L 2 = w w L 1 wεl 2 } L 1 a, ab, aaaa L 2 ={bb,ab} BİRLEŞME (UNİON) a, ab, aaaa bb, ab { a, ab, bb, aaaa} ε q 0 q f ε FSA 1 q 0 q f ε ε q 0 q f FSA 2
DÜZENLİ GRAMERLER (REGULAR GRAMMARS)
DÜZENLİ GRAMERLERİN BİLEŞENLERİ Bir düzenli gramer şu 4 bileşenden oluşur: 1. N: Sonlu bir terminal olmayan semboller kümesi. 2. S ϵ N: Başlangıç sembolü. 3. T: Terminal semboller kümesi. 4. P: Şu iki kural şemasından birine uyan yeniden yazma (üretim) kuralları: i. Y α, X ii. Y β iii. Y ε ya da i. Y X, α ii. Y β iii. Y ε (X, Y N ve α, β T)
SONLU DURUM OTOMATLARININ DÜZENLİ GRAMERE DÖNÜŞTÜRÜLMESİ SONLU DURUM OTOMATI: DÜZENLİ GRAMER: q 0, q 2 ve q 1 yerine sırasıyla S, A ve B sembollerini kullanarak; S 1 S S 0 A A 0 A A 1 B B 0 B B 1 B A 1 B 0 B 1
SONLU DURUM OTOMATLARININ DÜZENLİ GRAMERE DÖNÜŞTÜRÜLMESİ SONLU DURUM OTOMATI: DÜZENLİ GRAMER: q 0, q 1, q 2 ve q 3 yerine sırasıyla S, A, B ve C sembollerini kullanarak; S 1 A S 0 B A 1 S A 0 C B 1 C B 0 S C 1 B C 0 A A 1 B 0 S ϵ
KAYNAKLAR Hopcroft, J.E. and Ullman J.D. (1979). Introduction to Automata Theory, Languages, and Computation (1st ed.). Addison-Wesley. Yarımağan, Ünal, Özdevinirler Kuramı ve Biçimsel Diller, Bıçaklar Kitabevi, 2003, ISBN# 975-8695-05-3 Prof. Dr. Yılmaz KILIÇASLAN, Formel Diller ve Soyut Makinalar Ders Sunumları Namık Kemal Üniversitesi, Yrd. Doç. Dr. E. Serdar Güner Ders Sunumları Sakarya Üniversitesi, Biçimsel Diller ve Soyut Makineler Ders Sunumları Gazi Üniversitesi, Biçimsel Diller ve Otomatlar Ders Sunumları