Formal Diller Ve Otomat Teorisi Ismail Kadayif Canakkale Onsekiz Mart Universitesi Bilgisayar Muhendisligi 4/5/2004 Formal Diller 1.1
Strings ve Languages (Diller) alphabet (character set): Sonlu sayida sembol iceren kumeye denir. {0,1} : binary alphabet ASCII: bilgisayar alfabesi string: Bir alfabe uzerinde tanimli string, bu alfabenin sonlu sayidaki sembolunun bir araya gelmesinden olusur. string s nin uzunlugu s olarak gosterilir ve s icerisinde bulunan karakterlerin sayisi olarak tanimlanir. banana =6 empty (bos) string ile gosterilir ve uzunlugu 0 dir. 4/5/2004 Formal Diller 1.2
Strings ve Languages language: verilen alfabe uzerinde tanimli stringlerin kumesi (bos kume) { } (kume sadece bos stringi olan) C programs gramer olarak dogru olan Turkce (Ingilizce) cumleler bir dil olusturur. 4/5/2004 Formal Diller 1.3
Strings ve Languages concatenation: x ve y iki string olsun. x ve y nin concatenation i xy olarak gosterilir ve y nin x e eklenmesi sonucu elde edilir. X=dog ve y=house ise xy=doghouse empty string concatenation islemi altinda birim elemandir s = s=s concatenation bir product islemi olarak dusunulebilir, dolayisiyle stringlerinin exponentleri (usleri) tanimlanabilir s 0 =, s 1 =s, s 2 =ss, s 3 =sss, 4/5/2004 Formal Diller 1.4
Stringler uzerindeki islemler prefix: bir string in sonundan sifir veya daha fazla sayida sembolu cikarmak suretiyle elde edilen yeni stringe orjinal stringin prefixi denir. ornek: ban, banana nin bir prefixidir. suffix: bir string in basindan sifir veya daha fazla sayida sembolu cikarmak suretiyle elde edilen yeni stringe orjinal stringin suffixi denir. ornek: nana, banana nin bir suffixidir. substring: bir stringin herhangi bir prefix and suffix cikarmak suretiyle elde edilen stringe orjinal stringin substringi denir. ornek: nan, banana nin bir substringidir. 4/5/2004 Formal Diller 1.5
Stringler uzerindeki islemler herhangi bir string s icin, s ve hem prefix, hem suffix ve hemde substring dir. proper prefix/suffix/substring: x, s nin bir proper prefix/suffix/substringi dir eger x nonempty string ve s g x. subsequence: sifir veya daha fazla sembolun silinmesiyle (silinen semboller ardisil olmayabilir) elde edilir. ornek: baaa, banananin bir subsequencidir. 4/5/2004 Formal Diller 1.6
Languageler uzerindeki islemler L bir language L 0 = { } L i = L i-1 L L ve M iki language union: LUM={s s L nin elamani veya M nin elemani} concatenation: LM={st s L nin elemani ve t M nin elemani) kleene closure: L * =U i=0.. L i positive closure: L + =L * -{ } 4/5/2004 Formal Diller 1.7
Ornek L={A,B,,Z,a,b,,z}, D={0,1,, 9} LUD: harflerden ve rekamlardan olusan set LD: basi harf sonu rakam olan stringlerin kumesi L 4 : 4 harften olusan stringlerin kumesi L * : bos stringi ( ) de icine alan harflerden olusan stringlerin kumesi 4/5/2004 Formal Diller 1.8
Regular Expression (RE) bir alfabe olmak uzere 1. bir RE dir ve { } yi ifade eder 2. Eger a nin bir elemani ise a bir RE dir ve {a} yi ifade eder 3. Eger r ve s iki RE ve L(r) ve L(s) ifade ediyorlarsa i. (r) (s) L(r) U L(s) i ifade eden bir RE dir ii. (r) (s) L(r) L(s) i ifade eden bir RE dir iii. ( r ) * (L(r)) * i ifade eden bir RE dir iv. (r) L(r ) yi ifade eden bir RE dir 4/5/2004 Formal Diller 1.9
Operatorlerin precedence (oncelikleri) ve associativitileri 1. Unary operator * en buyuk oncelige sahip ve left associative 2. Concatenation ikinci en buyuk oncelige sahip ve left associative 3. en dusuk oncelige sahip ve left associative (a) ((b) * (c)) = a b * c 4/5/2004 Formal Diller 1.10
Ornek ={a,b} 1. a b ={a,b} 2. (a b)(a b)={aa,ab,ba,bb} 3. A * ={c,a,aa,aaa, } 4. (a b) * sifir veya daha fazla sayida a ve b lerden olusan stringleri icen kume 5. a a * b string a ve sifir veya daha fazla sayida a yi izleyen b den olusan stringlerin kumesi 4/5/2004 Formal Diller 1.11
Regular Expressionlarin Ozellikleri r s = s r (commutative,degisme) r (s t) = (r s) t (associative) (rs)t = r(st) (associative) r(s t) = rs rt (distribution) (s t)r = sr tr (distribution) cr = rc = r (c : identity element, birim eleman) r * = (r c) * r ** = r * 4/5/2004 Formal Diller 1.12
Regular Expressionlarin Tanimlanmasi d 1 t r 1 d 2 tr 2 d n tr n Buradaki her bir d i farkli bir ismi gostermekte ve r i U{d 1,d 2,,d i-1 } uzerinde tanimli bir regular expressiondir. 4/5/2004 Formal Diller 1.13
Ornek Pascal degiskenlerini ifade eden RE letter t A B Z a b z digit t 0 1 9 id t letter ( letter digit ) * 4/5/2004 Formal Diller 1.14
Ornek Unsigned sayilar (pascal) digit t 0 1 9 digits t digit digit * optional_fraction t. digits optional_exponent t (E (+ - ) digits ) num t digits optional_fraction optional_exponent 5280, 39.37, 6.336E4, 1.89E-4 4/5/2004 Formal Diller 1.15
Ek Notasyonlar (r) + = ( L(r) + ) one or more instances (r)? = L(r) U { } zero or one instance digit t 0 1 9 digits t digit + optional_fraction t (. digits)? optional_exponent t (E (+ - )? digits )? num t digits optional_fraction optional_exponent 4/5/2004 Formal Diller 1.16
[abc] = a b c [a-z] = a b z Ek Notasyonlar [A-Za-z][A-Za-z0-9] * 4/5/2004 Formal Diller 1.17
Nonregular Sets bazi diller RE larla ifade edilemez ornek: balanced stringlerden olusan language L={(), (()), ()()((())), } fakat Contex-Free Gramerlerle (CFG) L ifade edilebilir CFG ler de her dili ifade edemez ornek: L={wcw w a ve b lerden olusan string} 4/5/2004 Formal Diller 1.18
={0,1} Ornekler 0 * 10 * = {w w sadece bir tane 1 e sahip} (0 1) * 1(0 1) * {w w en az bir tane 1 e sahip} (0 1) * (0 1) * (0 1) * {w w nin boyu 3 un katlari} 0(0 1) * 0 U 1(0 1) * 1 U 0 U 1 {w w ayni sembolle baslayip ayni sembolle sona eriyor} (0 U )(1 U ) = {, 0, 1, 01} 4/5/2004 Formal Diller 1.19
Finite Automata ve Regular Expressions Finite Automaton 5-tuple (Q,,,q o,f) Q: Stateler kumesi : Finite input alfabe : Q X t Q Transition fonksiyonu q o : Baslangic state F ` Q Final states (q,a): FA q statetinde iken a sembolunu giris olarak aldiginda erisecegi state i gosterir 4/5/2004 Formal Diller 1.20