Otomata Teorisinin Uygulama Alanları
description
Transcript of Otomata Teorisinin Uygulama Alanları
![Page 1: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/1.jpg)
Otomata Teorisinin Uygulama AlanlarıVE DİLİMLEYİCİ(LEXİCAL ANALYSER) ÖRNEĞİ
![Page 2: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/2.jpg)
Sunumun sebebi hakkında
![Page 3: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/3.jpg)
Uygulama Alanları
Doğal dil işleme(nlp)Biyoloji(Hücresel Otomat, Game of Life)Sıvı akışlarıKozmoloji Derleyiciler
Bu sunuda derleyiciler alanındaki
uygulamasını göreceğiz.
Uygulama Alanları = q'lar ve 1 ve 0'lar ne olabilir?
![Page 4: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/4.jpg)
Bizim sunumuzun içeriği
Derste öğrendiklerimizin derleyicilerde nasıl kullanıldığı Basit bir dilimleyici projesi Derste gördüğümüz NFA-Boş Kısacık bir Jflap özeti ve NFA-Boş'tan NFA'ya NFA'dan Jflap ile DFA'ya geçiş DFA geçiş tablosu ve önemi Teoriden koda TürkÇE'nin dilimleyicisinden örnek
![Page 5: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/5.jpg)
Derste öğrendiklerimiz makineler
Alfabe = {a,b}
![Page 6: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/6.jpg)
Derleyicilerde kullanılan makineler
Alfabe = {a,b,c,ç,d,e...z,A,B,C...Z}
Tabi bu sadece bir anahtar kelime için verilmiş bir örnek, ileride ne kadar karmaşık olacağını göreceğiz.
![Page 7: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/7.jpg)
Bizim sonlu sayıda(finite-state) makinasını anlamak için yapacağımız küçük proje
Proje kendisine gelen bir kaynak dosyasından, belli formatlardaki e-posta adreslerini, telefon numaralarını ve adresleri ayıklayan ve yanlarına e-posta, tel ve adres yazdıran küçük bir uygulama olacak. Bu formatlar aşağıdaki gibidir:
==> ........@.....(.)com ==> +90...-...-..-.. ==> Apt:..../No:....
İzleyeceğimiz yol: bizim gereksinimlerimize göreRegular Expression == > NFA ==> DFA ==> Geçiş Tablosu ==> Tabloda gezen for döngüsü
![Page 8: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/8.jpg)
Regular Expression Derste gördüğümüz bir regular expression r = a(a+b)*aa Bu regular expression'un ürettiği diziler: L = { aaaaa,abbabaa..}
Fakat bize iki harf yetmeyeceğinden
r = (a+b+c+d+e+f+..+z), r yerinede harf diyelim harf = (a+b+c+d..+z) rakam = (0+1+2+3+4+5+6+7+8+9) isim = (harf)(harf+rakam)*
![Page 9: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/9.jpg)
Projemizin Regular Expression'ları ==> ........@.....(.)com ==> +90...-...-..-.. ==> Apt:..../No:.... harf = (a+b+c+d..+z) rakam = (0+1+2+3+4+5+6+7+8+9) isim = (harf)(harf+rakam)*
• e-posta = isim '@' isim '.' com• tel = '+90' (rakam)^3 '-' (rakam)^3 '-' (rakam)^2
'-' (rakam)^2• adres = 'Apt:' isim '/No:' isim
• Not: (^ işareti üssüyü ifade etmektedir. 'x' tırnak işareti ise x'in mutlaka dizgide olacağını ifade eder. Biraz önceki regular expression'u hatırlayalım:
Basit bir regular exp. örneği
r = a(a+b)*aa
![Page 10: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/10.jpg)
E-posta için NFAe-posta = isim '@' isim '.' com
![Page 11: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/11.jpg)
E-posta için NFA'dan DFA'yae-posta = isim '@' isim '.' com
![Page 12: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/12.jpg)
DFA'dan Geçiş Tablosu Bu tablo iki boyutlu A
dizisi olsun
örnek olarak input[] = {abc} olsun
![Page 13: Otomata Teorisinin Uygulama Alanları](https://reader034.fdocuments.net/reader034/viewer/2022050708/568148f9550346895db61d2b/html5/thumbnails/13.jpg)
Sonuç
Bir e-posta regular expression'u için bu kadar karmaşık işlemler gerektiriyor, hem e-posta hem adres hemde telefon için veya bir derleyicideki anahtar kelimeler, sabitler, değişkenler için pazar ne kadar karışır siz tahmin edin. Peki çözümü yok mu?
Bunun için sizin regular
expressionlarınızı veren ve size java kodunu döndüren
Jflex'e veya C++ için olanu flex'e müracaat
edebilirsiniz.