FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 2
OTOMATA TEORİSİ Otomata teorisi (özdevinim kuramı ya da otomat teorisi), teorik bilgisayar biliminde soyut makineleri (ya da daha uygun bir deyimle soyut 'matematiksel' makineleri veya sistemleri) ve bu makineleri kullanarak hesaplama problemlerinin çözülebilmesini araştıran daldır. Bu soyut makinelere otomata denir. Otomata kelimesinin kökeni Yunanca αὐτόματα kelimesi olup "kendi kendine hareket eden" demektir. Otomatalar hesaplama teorisi, derleyici tasarımı ve çözümlemede (parsing) önemli bir rol oynamaktadır.
OTOMATA TEORİSİ Temelleri 20. yy da matematikçilerin insanın belirli özelliklerini taklit edebilen, özellikle de hesaplamaları daha güvenilir ve hızlı biçimde yapabilen, hem kuramsal hem de uygulamaya dökülmüş makineleri geliştirmeye başlaması ile atılmıştır. «Otomata» kelimesi «otomasyon» kelimesiyle yakın anlamda olup, belirli süreçlerin gerçekleştirimini sağlayan otomatikleştirilmiş işlemler bütününü ifade eder. Otomata Kuramı ise, «otomata» olarak adlandırılan basit makineler üzerinden gerçekleştirilen hesaplama işlemlerinin mantığıyla ilgilenir. Otomatalar sayesinde bilgisayar bilimciler makinelerin fonksiyonları nasıl hesaplayabildiği ve problemleri nasıl çözebildiğini anlama imkanı bulur. Daha da önemlisi, bir fonksiyonun hesaplanabilir (computable) olarak tanımlanması veya bir sorunun karar verilebilir (decidable) olup olmadığının anlaşılması bu teori ile mümkün olur.
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)
HESAPLAMA CPU HAFIZA
HESAPLAMA GEÇİCİ BELLEK INPUT BELLEK CPU OUTPUT BELLEK PROGRAM BELLEK
OTOMATA GEÇİCİ BELLEK otomata CPU INPUT BELLEK OUTPUT BELLEK PROGRAM BELLEK
OTOMATA ÇEŞİTLERİ Otomatalar geçici bellek kullanım şekillerine göre sınıflandırılmıştır. 1. Sonlu otomata (Finite Automata): Bellek kullanmazlar. 2. Bas-Bırak otomata (Push-Down Automata): Yığıt (Stack) tipi bellek kullanır. 3. Turing Makineleri (Turing Machines): Rastgele Erişim Bellek (Random Access Memory) kullanır.
SONLU OTOMATA Bellek kullanmadığı için hesaplama gücü düşüktür. GEÇİCİ BELLEK INPUT BELLEK SONLU otomata OUTPUT BELLEK
BAS-BIRAK OTOMATA Hesaplama gücü orta düzeydedir. Programlama dili derleyicileri bu tip otomataya örnek verilebilir. YIĞIT Push, Pop INPUT BELLEK BAS-BIRAK otomata OUTPUT BELLEK
TURING MAKİNESİ Hesaplama gücü en yüksek otomatadır. RASTGELE ERİŞİMLİ BELLEK (Random Access Memory - RAM) INPUT BELLEK TURING MAKİNESİ OUTPUT BELLEK
OTOMATLARIN GÜÇLERİ Sonlu Otomata Bas-Bırak Otomata Turing Makinesi Az güç Yüksek güç Basit problemler Daha karmaşık 12 problemler
SONLU DURUM OTOMATLARI (FINITE STATE AUTOMATA) Turnike örneği: Sonlu durum otomatlarının basit bir örneği turnikelerdir.
SONLU DURUM OTOMATLARI (FINITE STATE AUTOMATA) Turnike Şimdiki Durum Girdi Sonraki Durum Çıktı Kapalı Kart bas Açık Açık konuma geç (kol itildiğinde geçilebilir durumdadır) Kolu it Kapalı Aynı durumda kal Kart bas Açık Aynı durumda kal Açık Kolu it Kapalı Kapalı konuma geç (turnikeden geçildikten sonra kol kilitli duruma geçer)
SONLU DURUM OTOMATLARI ÇALIŞMA MANTIĞI Bir sonlu durum otomatı makine şerit modeli ile ifade edilebilmektedir. Bir sonlu durum otomatı; girdi şeridi olarak da bilinen sonlu bir bellek, okuyucu başlık, sonlu sayıda ve boş olmayan durumlar, bir giriş alfabesi, durumlar arası geçişleri betimleyen bir geçiş fonksiyonu, bir başlangıç durumu ile sonlu sayıda durma durumundan oluşan soyut bir hesaplama aygıtıdır.
SONLU DURUM OTOMATLARI ÇALIŞMA MANTIĞI Girdi şeridi hücrelere bölünmüştür ve her bir hücre giriş alfabesine ait bir sembol barındırır. Okuyucu başlık, bir adımda şeritten tek bir sembolü okur. Geçiş fonksiyonu üzerinden bir sonraki durum belirlenir. Okuyucu başlık ya soldan sağa ya da sağdan sola okuma yapabilir. Okuyucu başlık şerit üzerinde yazma işlemi yapamaz ve geriye doğru gidemez. Bu nedenle bir sonlu durum otomatı o anda okumakta olduğu sembolden önceki sembolleri hatırlayamaz. Bu durum, sonlu durum otomatlarının en önemli kısıtıdır.
Bir otomat, (Q,, δ, q 0, F) şeklinde bir beşli olarak tanımlanır ve bu tanıma göre; Q sonlu sayıda elemana sahip bir durumlar kümesi, sonlu sayıda elemana sahip semboller kümesi (ya da alfabe), δ geçiş fonksiyonu, q 0 herhangi bir girdinin işlenmeye başlanacağı başlangıç durumu (q 0 Q). F, Q içindeki son durum(lar) kümesi (F Q). SONLU DURUM OTOMATLARI BİÇİMSEL TANIM
SONLU DURUM OTOMATI TÜRLERİ Sonlu Durum Otomatları Çıktı Üretmeyenler Çıktı Üretenler Deterministik Deterministik Olmayan Moore Makinesi Mealy Makinesi
DETERMİNİSTİK SONLU DURUM OTOMATI Deterministik sonlu durum otomatlarında (DFA) her bir giriş sembolü karşılığında içinde bulunulacak (yani geçilecek) durum belirlidir. Bir deterministik sonlu durum otomatı, (Q,, δ, q 0, F) şeklinde bir beşli olarak tanımlanır ve bu tanıma göre; Q sonlu sayıda elemana sahip bir durumlar kümesi, sonlu sayıda elemana sahip semboller kümesi (ya da alfabe), δ geçiş fonksiyonu (δ: Q Q), q 0 herhangi bir girdinin işlenmeye başlanacağı başlangıç durumu (q 0 Q). F, Q içindeki son durum(lar) kümesi (F Q).
DETERMİNİSTİK SONLU DURUM OTOMATI Şeritte bir giriş katarı vardır DFA çalışmaya başlangıç durumu ile başlar. Okuyucu kafa en sol hücrededir. DFA katarın tamamını okuyana kadar bir döngüye girer. Her adımda, DFA, geçiş fonksiyonuna göre okunan simgeye göre yeni bir duruma geçer. (Durum-s, simge) -> sonraki durum s o anki durum -okuyucu kafanın okuduğu simge Bütün katar okunduğunda eğer bir son durumda kalınmışsa katar kabul edilir.
DETERMİNİSTİK SONLU DURUM OTOMATI Giriş katarı okunduktan sonra, Eğer DFA son durumda ise, giriş katarı kabul edilir. Eğer DFA bir son durumda değilse, giriş katarı reddedilir. DFA nın dili: DFA tarafından kabul edilen bütün katarların kümesidir.
DETERMİNİSTİK SONLU DURUM OTOMATI Finite Control Read only Head
DETERMİNİSTİK SONLU DURUM OTOMATI Deterministik bir sonlu durum otomatı durum diyagramı adı verilen bir çizge ile ifade edilir. Bu çizgede: Düğümler durumları, Alfabeden bir sembolle etiketlenmiş olan kenarlar geçişleri, Kendisine gelen boş bir kenarla işaretli olan düğüm başlangıç durumunu, İç içe iki çember şeklinde işaretli olan düğüm ise son durumu ifade eder.
DETERMİNİSTİK SONLU DURUM OTOMATI ÖRNEK Q = {a, b, c}, = {0, 1}, q 0 ={a}, F={c}, ve örnek Geçiş fonksiyonu olan δ yandaki gibidir. Şimdiki Durum 0 girdisi için sonraki durum a a b b c a c b c 1 girdisi için sonraki durum
DETERMİNİSTİK SONLU DURUM OTOMATI ÖRNEK Yalnızca 3 ün katı olan ikili tabandaki sayıları kabul eden sonlu durum otomatı
DETERMİNİSTİK SONLU DURUM OTOMATI ÖRNEK İçerisinde çift sayıda b bulunduran tüm katarların kümesi.
? DETERMİNİSTİK SONLU DURUM OTOMATI ÖRNEK
DETERMİNİSTİK OLMAYAN SONLU DURUM OTOMATI Deterministik olmayan sonlu durum otomatlarında belirli bir giriş sembolü makinedeki herhangi bir durum kombinasyonuna geçişi sağlayabilir. Yani, makinenin belirli bir durumda belirli bir sembolle hangi duruma geçiş yapabileceği tam olarak bilinemez. Bir deterministik olmayan sonlu durum otomatı, (Q,, δ, q 0, F) şeklinde bir beşli olarak tanımlanır ve bu tanıma göre; Q sonlu sayıda elemana sahip bir durumlar kümesi, sonlu sayıda elemana sahip semboller kümesi (ya da alfabe), δ geçiş fonksiyonu (δ: Q { ε} 2 Q ), q 0 herhangi bir girdinin işlenmeye başlanacağı başlangıç durumu (q 0 Q), F, Q içindeki son durum(lar) kümesi (F Q).
DETERMİNİSTİK OLMAYAN SONLU DURUM OTOMATI ÖRNEK Şimdiki 0 girdisi için 1 girdisi için Q = {a, b, c} durum sonraki durum sonraki durum = {0, 1} a a, b b q 0 = {a} b c a, c F={c} c b, c c Geçiş fonksiyonu olan δ yandaki gibidir.
DETERMİNİSTİK OLMAYAN SONLU DURUM OTOMATI ÖRNEK İçinde 00 veya 11 barındıran katarlar örnek
DETERMİNİSTİK OLMAYAN SONLU DURUM OTOMATI ÖRNEK Sonu 101 ile biten katarlar örnek
MEALY VE MOORE MAKİNELERİ Sonlu durum otomatları her bir geçişe karşılık gelen çıktılara sahiptirler. Çıktı üreten iki tür sonlu durum makinesi vardır. 1. Mealy Makinesi 2. Moore Makinesi
MEALY MAKİNESİ Bir Mealy Makinesi, çıktısı mevcut girdinin yanı sıra mevcut duruma da bağlı bir sonlu durum otomatıdır. Bir Mealy makinesi (Q,, O, δ, X, q 0 ) şeklinde bir altılı olarak tanımlanır ve bu tanıma göre: Q sonlu sayıda elemana sahip bir durumlar kümesi. sonlu sayıda elemana sahip girdi semboller kümesi (ya da alfabe). O çıktı alfabesi olarak adlandırılan sonlu bir semboller dizisidir. δ girdi geçiş fonksiyonu (δ: Q Q) X çıktı geçiş fonksiyonu (X: Q O) q 0 herhangi bir girdinin işlenmeye başlanacağı başlangıç durumu (q 0 Q).
OUTPUT INPUT MEALY MAKİNESİ STATE X = 0 STATE NAME A/0 X = 1 B/1 X = 0 X = 0 Present State Input X Next State X = 1 X = 1 A (00) 0 C (10) State Output A (00) 0 B (01) 1 C (10) 0 C/0 1 B (01) B (01) 0 B (01) 1 C (10) C (10) 0 B (01) 1 A (00)
MEALY MAKİNESİ ÖRNEK
MOORE MAKİNESİ Bir Moore makinesi, çıktıları yalnızca mevcut duruma bağlı olan bir sonlu durum otomatıdır. A Moore makinesi, (Q,, O, δ, X, q 0 ) şeklinde bir altılı olarak tanımlanır ve bu tanıma göre: Q sonlu sayıda elemana sahip bir durumlar kümesi is a finite set of symbols called the input alphabet. O çıktı alfabesi olarak adlandırılan sonlu bir semboller dizisidir. δ girdi geçiş fonksiyonu (δ: Q Q) X çıktı geçiş fonksiyonu (X: Q O) q 0 herhangi bir girdinin işlenmeye başlanacağı başlangıç durumu (q 0 Q).
MOORE MAKİNESİ INPUT OUTPUT STATE X = 0/0 A X = 0/0 X = 1/1 B Present State Input X Next State Output X = 1/0 X = 0/1 X = 1/0 A (00) 0 C (10) 0 1 B (01) 1 C B (01) 0 B (01) 0 1 C (10) 0 C (01) 0 B (01) 1 1 A (00) 0
MOORE MAKİNESİ ÖRNEK