Sonlu Durum ve Turing Makineleri



Benzer belgeler
FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

Otomata Teorisi (BİL 2114)

Otomata Teorisi (BİL 2114)

,$( -./(,$( 0$0$ (,$(

Otomata Teorisi (BIL 2114)

İleri Diferansiyel Denklemler

Temel Kavramlar. (r) Sıfırdan farklı kompleks sayılar kümesi: C. (i) Rasyonel sayılar kümesi: Q = { a b

Formal Diller Ve Otomat Teorisi

Temel Kavramlar 1 Doğal sayılar: N = {0, 1, 2, 3,.,n, n+1,..} kümesinin her bir elamanına doğal sayı denir ve N ile gösterilir.

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

HESAP. (kesiklik var; süreklilik örnekleniyor) Hesap sürecinin zaman ekseninde geçtiği durumlar

Esnek Hesaplamaya Giriş

Bu kısımda işlem adı verilen özel bir fonksiyon çeşidini ve işlemlerin önemli özelliklerini inceleyeceğiz.

Kısmen insan davranışlarını veya sezgilerini gösteren, akılcı yargıya varabilen, beklenmedik durumları önceden sezerek ona göre davranabilen bir

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Örnek Soruları A0 KİTAPÇIĞI

MATEMATİK. Doç Dr Murat ODUNCUOĞLU

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

Algoritma ve Programlamaya Giriş

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Soruları A KİTAPÇIĞI

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 3

Algoritmalar ve Programlama. Algoritma

BM312 Ders Notları

Microsoft Office Excel 2007

Algoritma ve Akış Diyagramları

Otomata Teorisi (BİL 2114)

! " # $ % & '( ) *' ' +, -. / $ 2 (.- 3( 3 4. (

ALAN TURING: BİLGİSAYARIN ATASI

Bilgisayar Bilimlerinde Hesaplama Kuramı

C Programlama Dilininin Basit Yapıları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

DOĞU AKDENİZ ÜNİVERSİTESİ MATEMATİK BÖLÜMÜ 23. LİSELERARASI MATEMATİK YARIŞMASI

Şimdi de [ ] vektörünün ile gösterilen boyu veya büyüklüğü Pisagor. teoreminini iki kere kullanarak

Microsoft Excel Uygulaması 2

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

MAT 302 SOYUT CEBİR II SORULAR. (b) = ise =

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

1 BAĞINTILAR VE FONKSİYONLAR

BMT 206 Ayrık Matematik. Yük. Müh. Köksal GÜNDOĞDU 1

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BLG311 Biçimsel Diller ve Otomatlar

YENİ ORTAÖĞRETİM MATEMATİK PROGRAMINA UYGUNDUR. YGS MATEMATİK 3. KİTAP MERVE ÇELENK FİKRET ÇELENK

Bireylerin yaşadığı çevreye uyum sağlaması durumunda ortaya çıkan olumsuzluklara PROBLEM denir.

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06

7. BAZI MATEMATİKSEL TEMELLER:

Algoritma kelimesinin kökeni:

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

ALGORİTMA NEDİR? (Adım adım işlem basamaklarının yazılmasıdır.)

Afla da yedi matematiksel olgu bulacaks n z. Bu olgular n

KARAKTER DİZGİLERİ, BAĞINTILAR, FONKSİYONLAR KESİKLİ MATEMATİKSEL YAPILAR

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

olsun. Bu halde g g1 g1 g e ve g g2 g2 g e eşitlikleri olur. b G için a b b a değişme özelliği sağlanıyorsa

Algoritma ve Akış Diyagramları

! " # $ % & '( ) *' ' +, $ $ - $ (. $- $ ( / $ % / $ 0 -( 1( $ (2- -(

BÖLÜM 2: ALGORİTMALAR

PASCAL PROGRAMLAMA DİLİ YAPISI

3. Bölüm Algoritmalar

Küme Temel Kavramları

VI. OLİMPİYAT SINAVI SORULAR

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

A { x 3 x 9, x } kümesinin eleman sayısı A { x : x 1 3,x } kümesinin eleman sayısı KÜMELER

Genetik Algoritmalar. Bölüm 1. Optimizasyon. Yrd. Doç. Dr. Adem Tuncer E-posta:

sayıların kümesi N 1 = { 2i-1: i N } ve tüm çift doğal sayıların kümesi N 2 = { 2i: i N } şeklinde gösterilebilecektir. Hiç elemanı olmayan kümeye

sayısının tamkare olmasını sağlayan kaç p asal sayısı vardır?(88.32) = n 2 ise, (2 p 1

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

8.Konu Vektör uzayları, Alt Uzaylar

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

TAMSAYILAR. 9www.unkapani.com.tr. Z = {.., -3, -2, -1, 0, 1, 2, 3, } kümesinin her bir elemanına. a, b, c birer tamsayı olmak üzere, Burada,

1. GRUPLAR. c (Birleşme özelliği) sağlanır. 2) a G için a e e a a olacak şekilde e G (e ye birim eleman denir) vardır.

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi


T.C. ÇANAKKALE ONSEKİZ MART ÜNİVERSİTESİ

p sayısının pozitif bölenlerinin sayısı 14 olacak şekilde kaç p asal sayısı bulunur?

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

MODÜLER ARİTMETİK A)1 B)3 C)8 D)11 E)13. TANIM Z tam sayılar kümesinde tanımlı

fonksiyonu, her x 6= 1 reel say s için tan ml d r. (x 1)(x+1) = = x + 1 yaz labilir. Bu da; f (x) = L

1 $/ " {ww R : w {a, b} * } ## S asa, S bsb S e#(3 * 5 $(6 )# (2 #$,(- (25 #5

Veri Yapıları Laboratuvarı

BİLGİSAYAR PROGRAMLAMA DERSİ

ÖRNEK ALGORİTMA VE AKIŞ ŞEMALARI. Örnek 1: Klavyeden girilen 2 sayının toplamını bulan programın algoritma ve akış şemasını yapınız.

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

BİL1001 Bilgisayar Bilimlerine Giriş 1

Atatürk Anadolu. Temel Kavramlar Üzerine Kısa Çalışmalar

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

ÖRNEK 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:

1.GRUPLAR. c (Birleşme özelliği) sağlanır. 2) a G için a e e a a olacak şekilde e G. vardır. 3) a G için denir) vardır.

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

PHP 2. Hafta. PHP de Kod Akışı. Algoritmik Düşünebilmek.

MAK 210 SAYISAL ANALİZ

TEMEL KAVRAMLAR. SAYI KÜMELERİ 1. Doğal Sayılar

Olasılık Kuramı ve İstatistik. Konular Olasılık teorisi ile ilgili temel kavramlar Küme işlemleri Olasılık Aksiyomları

Bilgisayar Programı Nedir?

C++ Dilinde Bazı Temel Algoritmalar

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Transkript:

Sonlu Durum ve Turing Makineleri Ders 12 Yrd.Doç.Dr. İbrahim TÜRKYILMAZ Sonlu Durum Makinesi Sonlu durum makinesi aşağıdakilerden oluşur: a) Bir σ başlangıç durumu, b) Sonlu sayıda duruma sahip olan sonlu durum kümesi S={s 0, s 1,, s n }, c) Giriş sembolleri, I={i 1, i 2,, i n }, d) Çıkış sembolleri, O={o 1, o 2,, o m }, e) Bu parametreler ile bir geçiş fonksiyonu tanımlanır f : S I S, f) Bir de çıktı fonksiyonu g : S I O, Böylece sonlu durum makinesi M=(S,I,O,f,g, σ) ile ifade edilir. O(t+1) çıkışı temelde I(t) ye bağlıdır. S(t) ye, o andaki durum veya makinelerin başından geçen olaylar (History) denir. 12-2 1

I={a,b} gibi iki giriş sembollü ve O={0,1} gibi iki çıkış sembollü bir sonlu durum makinesi tanımlayalım. Bu makine I* dan herhangi bir stringi kabul eder ve stringin başındaki a lar kadar 1 çıktısı ve diğer durumlarda sadece 0 çıktısı verir. Ara durumlarda S={σ 0, σ 1 } dır ve σ 0 başlangıç durumdur. Herhangi bir b görülmediği durumlarda σ 0 durumundadır, b görüldüğü anda σ 1 durumuna geçilir. Geçiş ve çıkış fonksiyonu tabloda verilmiştir. Yanda da geçiş diyagramı sunulmuştur. 12-3 I={a,b} gibi iki giriş sembollü ve O={0,1} gibi iki çıkış sembollü bir sonlu durum makinesi tanımlayalım. Makine giriş sembolü değiştiğinde 1 diğer durumlarda 0 çıktısı vermesi istenmektedir. Geçiş diyagramı aşağıdaki gibidir. 12-4 2

Seri Toplayıcı: İki basamaklı ikilik düzende sayıyı giriş kabul eder ve çıkış olarak toplamlarını verir. Giriş kümesi I={00, 01, 10, 11}. Çıktı kümesi ise O={0, 1}. Durum kümesi S={NC, C} dir. NC no-carry (taşıma yok), C carry (taşıma var) anlamındadır. Geçiş diyagramı aşağıdaki gibidir. 12-5 Sonlu durum otomatı Bir sonlu durum otomatı sonlu durum makinesi gibidir fakat çıktısı yoktur. Sadece kabullenme veya son durumlar olarak adlandırılan durumları vardır. Sonlu durum otomatı aşağıdakilerden oluşur: a) Bir σ başlangıç durumu, b) Sonlu sayıda duruma sahip olan sonlu durum kümesi S={s 0, s 1,, s n }, a) Giriş sembolleri, I={i 1, i 2,, i n }, b) Bir geçiş fonksiyonu f : S I S, c) Kabullenme veya son durumlar için F( S) alt kümesi Böylece sonlu durum otomatı A=(S, I, f, σ, F) ile ifade edilir. Eğer verilen string başlangıç durumdan son duruma ulaşıyorsa otomat verilen stringi kabul eder denir. 12-6 3

Aşağıdaki geçiş diyagramı a ve b lerden oluşan ve a ile biten stringleri kabul eden otomata aittir. İlk diyagram sonlu durum makinesiyle aynı şemayı kullanmakta ve 1 kabul veya tanımayı; 0 ise kabul etmemeyi ifade etmektedir. Diğer diyagram ise kabul durumunu çift çember ile göstermektedir. Eğer iki sonlu durum otomatı tamamıyla aynı string kümesini kabul ediyorsa denktir denir. Aşağıdaki diyagramdaki sonlu durum otomatı yukarıdaki otomata denktir. 12-7 Aşağıdaki otomat a, b lerden oluşan ve çift sayıda a olan stringleri girdi kabul etmektedir. Aşağıdaki otomat a ile başlayan ve herhangi bir sayıda b ile devam eden stringleri girdi kabul etmektedir. Aşağıdaki otomat aba ile sonlanan stringleri girdileri kabul etmektedir. 12-8 4

f S I 0 1 0 0 1 s 0 s 1 s 0 s 1 s 1 s 0 start s 0 s 1 S={s0,s1}, I={0,1} 1 0 ve 1 sayılarından oluşan bir katarı girdi olarak kabul eden aşağıdaki sonlu durum otomatı, tek sayıda 1 girdilerini kabul eder. Son durum s 1 dir. Çıkışta bir işaret yok. Tek sayıda 1 vererek bunu yine s 1 e getirmek mümkün. Bu akseptör tek sayıda bir bulunan bir katarı kabul eder ( 10101110001 i kabul etmez, 6 adet 1 var). Sonuç : Sonlu akseptörü (durum otomatı) verilen bir katarın verilen bir gramere uygun olup olmadığını kontrol eder. Uygunluk son duruma erişip erişmeme ile anlaşılıyor. 12-9 I={0,1}, S={ s 0, s 1, s 2 }, s 2 dipsiz kuyu giren çıkamaz. 0 s 0 s 1 1 1 0 s 2 0 V 1 Bu akseptörboş katar, 01,0101, 0101001 gibi katarları kabul eder. 12-10 5

Turing Makineleri Turing makinesi, Karmaşık matematiksel hesapların belirli bir düzenek tarafından yapılmasını sağlayan hesaplama makinesi. Karmaşık hesapların belirli bir düzenek tarafından yapılıp yapılanamayacağı 20.yy ın başlarında büyük bir tartışma konusu olmuştu. Öteden beri el ile veya zihinden yapılan hesaplamalar çok zaman almakla birlikte, birçok hatayı da beraberinde getiriyordu. Tüm bu tartışmalar sürerken, 1936 yılında, ünlü matematikçi Alan M. Turing "Saptama Problemi Hakkında Bir Uygulamayla Birlikte Hesaplanabilir Sayılar" (On computable numbers, with an application to the Entscheidungs problem) isimli bir makalesini yayınladı. Makalesinde teorik ve matematiksel temellere dayalı sanal bir makineden bahseden Turing, her türlü matematiksel hesabın bu sanal makineyle yapılabileceğini iddia ediyordu. Turing in 1950 yılında yayınlanan "Hesaplama Mekanizması ve Zeka" (Computing Machinery and Intelligence) isimli ikinci makalesi ise, makineler ve zekayla ilgili birçok tartışmalı konuya cevap niteliğindeydi. İşte bu makalelerde sözü geçen sanal makine daha sonraları Turing Makinesi (The Turing Machine) olarak isimlendirildi. 12-11 Turing Makineleri Bilgisayar bilimlerinin önemli bir kısmını oluşturan otomatlar ve Algoritma Analizi çalıştırmalarının altındaki dil bilimin (language science) en temel taşlarından birisidir. 1936 yılında Alan Turing tarafından ortaya atılan makine günümüzde pek çok teori ve standardın belirlenmesinde önemli rol oynamaktadır. Turing makinesi aşağıdakilerden oluşur; Ardışık hücrelerden oluşan sonsuz teyp. Her bir hücre boş veya verilen alfabeden bir sembol içerir. Kontrol ünitesi sonlu talimatlar kümesini içerir. Teyp kafası teypten (band) semboller okur veya yazar (siler). 12-12 6

Turing Makineleri Bu makinelerde şerit şeklinde bellek vardır. Her bir bellek gözünde alfabenin sembollerinden biri olacaktır. Yine, Bir Q kümesi (başı q 0 ) Bir A alfabesi (b boşluk dahil) g : Q A Q A {R, L} kümesi bu şeridi okuyup kafanın sağ tarafa mı, yoksa sol tarafa mı hareket ettiğini belirtiyor. (q i, a j, q k, a l, Y) ile tanımlanır q i : Makinanın durumu a j : kafanın şeritten okuduğu sembol q k : Makinanın yeni konumu a l : Kafanın şerite yazdığı yeni karakter Y : R veya L olarak sağa yada sola doğru kafanın hareketi (bir göz hareket edecek şekilde). Böyle bir bellek özelliği olan soyut makine Turing Makinesi olarak bilinir. Turing Makinesi programı belirli bir işlemi yapan sıralı beşlilerden (q i, a j, q k, a l, Y) oluşur. 12-13 Yedi tane (s 0,0,s 0,0,R), (s 0,1,s 1,1,R), (s 0,B,s 3,B,R), (s 1,0,s 0,0,R), (s 1,1,s 2,0,L), (s 1,B,s 3,B,R) (s 2,1,s 3,0,R), sıralı beşli ile tanımlanmış ve şekil (a) da görülen band üzerinde çalıştırılmaya başlanan T Turing Makinesinde bandın son durumu ne olur? Bu sanal makine ne yapar? 12-14 7

Kümeleri Tanımlama için Turing Makinesini Kullanma Kümeleri tanımlama için Turing makinelerini kullanabiliriz. Bunu yapabilmek için son durum kavramının tanımlanması gerekmektedir. T Turing makinesinin son durumu, T yi tanımlayan sıralı beşlilerin ilk durumu olmayan durum olarak tanımlanabilir (bir önceki örnekte karşımıza çıkan s 3 durumu gibi). Tanım: V, I alfabesinin bir altkümesi olsun. T=(A,I,f,s 0 ) Turing makinesi, ancak ve ancak x banda yazıldığında başlangıç yerinden başlar ve son durumda durursa, V* içerisindeki x stringini tanır. V* ın bir A altkümesini tanımak için V içerinde olmayan semboller kullanabiliriz. Bunun anlamı, I giriş alfabesi V içerinde olmayan semboller içerebilir. Bu ekstra semboller genellikle taglar (markers) olarak adlandırılır. T Turing makinesinin V* içerisindeki x stringini ne zaman tanımaz? T durmadığında veya son durumda durmadığında, x stringi tanınmaz. 12-15 Soru: İkinci basamağında 1 olan stringleri tanıyan bir Turing makinesi tasarlayınız. (0 1)1(0 1)* şeklinde bir düzenli küme oluşturmalıdır. En soldaki boş bank hücresinden işlem başlayan ve sağa doğru hareket eden ve ikinci sembolü 1 olup olmadığını belirleyen. Eğer ikinci sembol 1 ise makine son duruma hareket etmelidir. Makine son duruma ulaşmadığında durmamalıdır. Böyle bir makineyi tasarlamak için (s 0,0,s 1,0,R), (s 0,1,s 1,1,R) sıralı beşlileriyle ilk sembol okunmalı ve Turing makinesi s 1 durumuna geçmelidir. Daha sonra, (s 1,0,s 2,0,R), (s 1,1,s 3,1,R) sıralı beşlileriyle ikinci sembol okunmalı ve 0 ise s 2 durumuna geçilmeli veya sembol 1 ise s 3 durumuna geçilmelidir. İkinci basamağında 0 olan stringi tanımamak için s 2 son durum olmamalıdır. İkinci basamağında 1 olan stringin tanınması için s 3 son durum olmalıdır. Böylece (s 2,0,s 2,0,R) sıralı beşlisini ekleyebiliriz. Boş string ve bir basamaklı bir stringi tanımak istemediğimizden (s 0,B,s 2,0,R) ve (s 1,B,s 2,0,R) 12-16 8

Turing Makinesiyle Fonksiyon Hesaplama Turing Makinesi fonksiyonların değerlerini bulan bilgisayarlar olarak ta düşünülebilir. Bu durum, x string girdisi verildiğinde band üzerindeki y stringinde duran bir Turing makinesi olarak düşünülebilir. T(x)=y tanımlanabilir ve T nin tanım kümesi T yi durduran stringler kümesidir, verilen x girdisi için T durmadığında T(x) tanımlı değildir. Turing makinesini fonksiyon hesaplayıcı olarak düşünmek için tamsayıların sıralı k-lılarının band üzerinde ifade etmenin bir yolunu bulmalıyız. Bir n tamsayısını ifade etmek için n+1 tane 1 kullanabiliriz. Böylece 0 ı ifade etmek için 1 stringini, 5 i ifade etmek için 111111 strigini kullanabiliriz. (n 1,n 2,, n k ) sıralı k-lısını ifade etmek için n 1 +1 tane 1, ardından *, n 2 +1 tane 1, ardından *, bu şeklide devam ederek n k +1 tane 1 kullanabiliriz. Örneğin (2,0,1,3) sıralı dörtlüsü için 111*1*11*1111 kullanabiliriz. 12-17 Soru: Negetif olmayan iki tamsayıyı toplayan Turing makinesini tasarlayınız. f(n 1,n 2 )=n 1 +n 2 fonksiyonunu hesaplayan Turing makinesine ihtiyacımız var. (n 1,n 2 ) çifti n 1 +1 tane 1, ardından * ve bunları takiben n 2 +1 tane 1 den oluşan bir string ile ifade edilir. T makinesi bu girdiyi alıp n 1 +n 2 +1 tane 1 olan bir çıktı vermelidir. Makine girdi stringinin en soldaki 1 den başlamalıdır ve bu 1 silinmelidir. n 1 =0 olduğunda, silme işleminden sora * dan önce hiç 1 olmadığından, * en soldaki 1 ile yer değiştirmeli ve makine durmalıdır. (s 0,1,s 1,B,R), (s 1,*,s 3,B,R), (s 1,1,s 2,B,R), (s 2,1,s 2,1,R), (s 2,*,s 3,1,R), 12-18 9

Bu sistemde 1 ve 4 sayılarını temsil etmek için aşağıdaki gösterim kullanılır. Yazacağımız program m=2 ile n=5 sayılarını toplayacaktır. Burada kafanın konumunun nerede olduğu önemlidir. Kafa en soldaki 1 in üzerindedir. 12-19 10