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

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

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

Derleyici Kuramı (Compiler Theory)

Formal Diller Ve Otomat Teorisi

Otomata Teorisi (BIL 2114)

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

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

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

BÖLÜM 2 Biçimsel Dillerin Matematiksel Temelleri

Otomata Teorisi (BİL 2114)

Otomata Teorisi (BİL 2114)

Biçimsel Diller ve Özdevinirler (COMPE 326) Ders Detayları

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

Dilbilgisi ve Diller

BM312 Ders Notları

Bilgisayar Bilimlerinde Hesaplama Kuramı

Chomsky Hiyerarşisi. Düzenli Diller ve Đfadeler 03/09/2014. Doç.Dr.Banu Diri

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

Sonlu Durum ve Turing Makineleri

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

Otomata Teorisi (BİL 2114)

Akademik Personel ve Lisansüstü Eğitimi Giriş Sınavı. ALES / Đlkbahar / Sayısal I / 9 Mayıs Matematik Soruları ve Çözümleri

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL)

BAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES)

Belirteç Seçiminin Huffman Kodlaması Üzerine Etkisi

Otomata Teorisi (BİL 2114)

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

BİLGİSAYAR MÜHENDİSLİĞİ

BLM 4811 MESLEKİ TERMİNOLOJİ II Salı , D-109 Dr. Göksel Biricik

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CME 3002

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

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

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

ALGORİTMA VE PROGRAMLAMA I

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

Dosya Sıkıştırma (File Compression) Kütük Organizasyonu 1

BMT 101 Algoritma ve Programlama I 2. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

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

Tanım Bir X kümesi üzerinde bir karakter dizgisi (string) X kümesindeki. boş karakter dizgisi (null string) denir ve l ile gösterilir.

PASCAL PROGRAMLAMA DİLİ YAPISI

BİL-142 Bilgisayar Programlama II

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

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

YZM 2116 Veri Yapıları

1.1. Yazılım Geliştirme Süreci

Syntax Analysis. 4/5/2004 Formal Diller 4.1

MATM 133 MATEMATİK LOJİK. Dr. Doç. Çarıyar Aşıralıyev

Algoritma ve Akış Diyagramları

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI DERS KATALOĞU

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

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

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

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

BİÇİMSEL DİLLER VE OTOMATLAR

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

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

ALGORİTMA VE PROGRAMLAMA I

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Dosya Sıkıştırma (File Compression) Kütük Organizasyonu 1

Algoritmalar ve Programlama. Algoritma

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

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

PROJE ADI: TEKRARLI PERMÜTASYONA BİNOM LA FARKLI BİR BAKIŞ

Otomata Teorisi (BİL 2114)

Nesne Yönelimli Programlama

SAYI BASAMAKLARI. çözüm

Bil 2114 Otomata Teorisi Çalışma Soruları ve Cevapları III (Hafta 7,8,9)

Bilgisayar Programlama Dilleri

Bilgisayar Programlama. 1.Hafta

YZM 2116 Veri Yapıları

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

1. PROGRAMLAMAYA GİRİŞ

PROGRAMLAMAYA GİRİŞ DERS 2

Küme Temel Kavramları

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.

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Ýþlem Yeteneði Temel Kavramlar Sayý Basamaklarý Taban Aritmetiði Bölme ve Bölünebilme Ebob-Ekok

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

ALGORİTMA VE PROGRAMLAMA I

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

Rakam : Sayıları yazmaya yarayan sembollere rakam denir.

Bölüm 4 Aritmetik Devreler

1. BÖLÜM. Sayılarda Temel Kavramlar. Bölme - Bölünebilme - Faktöriyel EBOB - EKOK. Kontrol Noktası 1

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

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

EĞİTİM-ÖĞRETİM YILI MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ (İNGİLİZCE) BÖLÜMÜ DERS PROGRAMINDA YAPILAN DEĞİŞİKLİKLER

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Küme temel olarak belli nesnelerin ya da elamanların bir araya gelmesi ile oluşur

Java Temel Özellikleri

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

ALGORİTMA VE PROGRAMLAMA I DERS#1

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bulanık Küme Kavramı BULANIK KÜME. Sonlu ve Sonsuz Bulanık Kümeler. Sonlu ve Sonsuz Bulanık Kümeler

Algoritma ve Programlama I

Transkript:

FORMEL DİLLER VE SOYUT MAKİNALAR Hafta 1

DİL VE FORMEL DİL KAVRAMLARI Dil, insanların karmaşık iletişim sistemlerini edinme ve kullanma becerisidir. Bir dilin formel olabilmesi için bazı niteliklerinin matematiksel kesinlikte tanımlı olması gereklidir. Bu özellikler; Sembollerden oluşan bir alfabe ve Bu alfabedeki sembollerden oluşan bir ifadenin dile uygun (well-formed) olup olmadığını belirleyen oluşum (formation) kurallarıdır. Bu şekildeki ilk formel dil Gottlob Frege tarafından 1879 yılında tanımlanmış olup birinci dereceden mantık (first-order logic) olarak adlandırılmaktadır. Formel diller özellikle dilbilim ve bilgisayar bilimleri açısından önem taşımaktadır.

DİLBİLİM VE FORMEL DİLLER Dilbilimde formel diller, insan dilinin (yani doğal dilin) bilimsel bir şekilde incelenmesi amacıyla kullanılmaktadır. Dilbilimciler, üretimsel (generative) bir yaklaşıma önem verirler. Bunun nedeni, bir dile göre kabul edilebilir herhangi bir cümlenin oluşturulmasında kullanılabilecek (sonlu) kurallar kümesi olan dil düzeneğini / grameri (grammar) tanımlama / ortaya koyma işiyle ilgilenmeleridir. Bir gramer cümlelerin yalnızca biçimleriyle (form) ilgilenmekte olup, anlamlarını tanımlamamakta, farklı bağlamlarda kullanımlarıyla da ilgilenmemektedir.

BİLGİSAYAR BİLİMLERİ VE FORMEL DİLLER Bilgisayar bilimlerinde formel diller programlama dillerinin kesin ve katı kurallarını tanımlamada kullanılmaktadır. Bu yönüyle derleyicilerin de temellerini oluşturmaktadırlar. Bir derleyici, bir programlama dilinde (kaynak dil) yazılmış olan bir kaynak kodun başka bir bilgisayar diline (hedef dil) dönüştürülmesi işini yerine getiren program ya da programlar kümesidir. Derleyicilerin en genel amacı, kaynak kodun çalıştırılabilir bir program haline getirilmesi için dönüştürülmesidir. Bu amaçla bilgisayar bilimlerinde önem verilen, soyut makinelere (otomatlar) dayanan bir tanıma (recognition) yaklaşımıdır. Bu yaklaşımda soyut makine bir girdi cümlesi almakta ve bu cümlenin referans alınan dile ait olup olmadığını belirlemektedir.

DERLEYİCİ Herhangi bir programlama dilinde yazılmış olan kaynak kodunu başka bir dile (genellikle makine koduna) çeviren yazılımdır. Kaynak program DERLEYİCİ Hedef Program Hata mesajları

DERLEYİCİ

DERLEME AŞAMALARI Analiz Sözcüksel Analiz (Lexical Analysis) Sözdizimsel Analiz (Syntax Analysis) Anlamsal Analiz (Semantic Analysis) Arakod Üretimi (Intermediate Code Generation Kod İyileştirmesi (Code Optimization) Kod Üretimi (Code Generation) Sentez

DERLEYİCİ AŞAMALARI ÖRNEK

DERLEYİCİ AŞAMALARI ÖRNEK

DERLEYİCİ AŞAMALARI ÖRNEK

DERLEYİCİ AŞAMALARI ÖRNEK

DERLEYİCİ AŞAMALARI ÖRNEK

OTOMATLAR VE FORMEL DİLLER «Automata» terimi Yunancadan gelmekte ve «kendi kendine eylemde bulunabilen» anlamına gelmektedir. Bir otomat, önceden belirlenmiş bir işlemler dizisini takip ederek kendiliğinden çalışabilen soyut bir bilgisayım cihazıdır. 1950 lerde Stephen Kleene, sonlu bir bellekle donanmış soyut durum makineleri olan sonlu otomatları ortaya atmıştır. Kleene, bu modelle temel mantıksal öncülleri kullanarak böyle bir modelin sembol dizileri ile eşleniklik gösterdiğini belirtmiştir. Alan Turing (ve ondan bağımsız olarak Emil Post ile John Backus), bas-bırak otomatlarının (push-down automata) ardında yatan düşünceleri ortaya koymuşlardır. Alan Turing, 1936 da Turing Makinesi kavramını ortaya atmıştır. Bu makine, bir soyut durum makinesi olup, şerit şeklinde sonsuz bir belleğe sahiptir. Turing makineleri, herhangi bir algoritmanın işleyişinin benzetimini yapabileceği gibi daha yüksek seviyelerdeki biçimsel dilleri de tanıyabilmektedir.

OTOMATLAR VE GRAMERLER Hangi formel dil sınıfı hangi otomat türüyle tanınabilmektedir? Chomsky hiyerarşisi ile farklı tipteki otomatlar arasında bir eşleniklik vardır. Bu nedenle formel dillere ilişkin kuramlar hem gramerler hem de otomatlar olarak ele alınabilmektedir.

Karmaşıklık CHOMSKY HİYERARŞİSİ Özyinelemeli - Sayılabilir Diller : Turing Makinesi (Recursively Enumerable Languages : Turing Machine) 0 1 2 3 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)

FORMEL DİLLERİN BETİMLENMESİ: ÜRETİMSEL (GENERATİVE)YAKLAŞIM Üretimsel yaklaşımda bir dil, bir gramer tarafından üretilen karakter katarlarının (string) kümesidir. Bu yaklaşımdaki üretim süreci; bir başlangıç sembolü ile başlama, yeniden yazma (rewrite) kuralları ile genişletme, dile ait bir ifade üretildiğinde de durma şeklinde gerçekleştirilmektedir.

FORMEL DİLLERİN BETİMLENMESİ: TANIMA (RECOGNİTİON)YAKLAŞIMI Bu yaklaşıma göre bir dil bir otomat tarafından kabul edilen ifadeler / katarlar kümesidir. Bu yaklaşımdaki tanıma süreci; Bir başlangıç durumu ile başlama, Katardaki semboller yardımıyla diğer durumlara geçişler, Bütün katar tükendiğinde kabul durumuna ulaşma ya da katarın belirli bir konumunda reddetme şeklinde olmaktadır.

Bir formel dil, o dilin üzerinden tanımlanmış olduğu alfabedeki sembollerin kullanımıyla oluşturulan sonlu karakter dizilerinin /karakter katarlarının / ifadelerin kümesidir. Alfabe, sonlu ve boş olmayan bir semboller kümesidir. 1 = {0, 1} 2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 3 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 4 = {a, b, c,..., z}

Bir alfabesi üzerinde tanımlı olan bir katar (ya da kelime), alfabesindeki sembollerden oluşan sonlu bir dizidir. 1010 ϵ 1 123 ϵ 2 merhaba ϵ 4 Bir alfabedeki her sembol kendi başına bir katardır.

Alfabe olarak a,b verilmiş olsun. Bu alfabe ile oluşturulabilecek karakter katarları (strings) şunlar olabilir: a ab abba baba aaabbbaabab u ab v bbbaaa w abba

Karakter katarları üzerinde yapılabilecek işlemler: Birleştirme (Concatenation) : İki karakter katarının ardarda eklenmesidir. w v a b b 1 1 a 2 2 a b m n wv a 1 a 2anb1 b2 b m

Birleştirme örnekleri: x = abbba y = aaababbab xy = abbbaaaababbab x = trakya y = üniversitesi xy = trakyaüniversitesi

Reverse işlemi w a 1 a 2 a n w R a n a 2 a 1 x = trakya x R = aykart

Karakter katarı uzunluğunu bulma: w, w katarının uzunluğudur. w a 1 a 2 a n w n a = 1 125 = 3 ε = 0

Birleştirme sonucu oluşan katarın uzunluğunu bulma u aab, u 3 uv u v v abaab, v 5 uv aababaab 8 uv u v 3 5 8

Boş karakter katarı ε veya λ boş katardır ve sembol içermez. 0 w w w abba abba abba

Alt karakter katarı (Substring): Bir karakter katarı başka bir katarın içinde ise onun alt karakter katarıdır. Karakter katarı (String) ababbba 1000011 123abc4 aba Alt katar (substring) abba 0011 3ab ab

Prefix ve suffix w = uv Prefix λ a ab abb abba abbab w = abbab Suffix abbab bbab bab ab b λ

Üs işlemi n w ww w n 0 w 2 abba abbaabba 0 abba

Kleene Yıldızı (Kleene Star): üzerinde tanımlı olası bütün katarlar kümesini gösterir. * = 0 1 2. a, b *, a, b, aa, ab, ba, bb, aaa, aab,

Kleene Artısı (Kleene Plus): alfabesi için + bu alfabeden oluşturulan boş katar hariç tüm katarların kümesini göstermektedir. * a, b * + = 1 2. + = * { λ }, a, b, aa, ab, ba, bb, aaa, aab, a, b, aa, ab, ba, bb, aaa, aab,

Formel dilin matematiksel tanımı: belirli bir alfabesi için * nin herhangi bir alt kümesi bir dildir. İngilizce, Türkçe, Çince,... C, Pascal, Java, HTML,... İkili tabandaki asal sayılar: {10, 11, 101, 111, 1011,... } {ε}

a, b *, a, b, aa, ab, ba, bb, aaa, Tanımlanabilecek diller: { a, aa, aab, abba, baba, aa, ab, aaaaaa}

Sets {} { } Set size Set size String length {} { } 0 1 0

Örnek: FORMEL DİLLER: TANIMLAR VE TEMEL KAVRAMLAR L n n { a b : n 0} verilmiş olsun. Bu dil ile tanımlanabilecek karakter katarları: abb ab aabb aaaaabbbbb L a baaa ababab L

Diller üzerinde yapılabilecek işlemler: Birleşme, Kesişme: Diller kümeler ile gösterilebildiği için bu işlemler yapılabilir. L 1 ve L 2 dillerinin sırasıyla 1 ve 2 alfabeleri üzerinden tanımlanmış diller olduğunu kabul edersek; L 1 L 2 = w w L 1 wεl 2 } L 1 L 2 = w w L 1 wεl 2 }

L 1 = FORMEL DİLLER: TANIMLAR VE TEMEL KAVRAMLAR a, ab, aaaa L 2 ={bb,ab} a, ab, aaaabb, ab a, ab, aaaabb, ab { a, ab, bb, { ab} a, ab, aaaa bb, ab a, aaaa aaaa}

Tümleyen işlemi L * L a, ba, b, aa, ab, bb, aaa,

Reverse işlemi: L R R { w : w L} R ab, aab, baba ba, baa, abab Örnek : L { a n b n : n 0} L R?

Birleştirme L 1 L 2 xy 1, : x L y L 2 L 1 ={a,ab,ba} L 2 ={b,aa} a, ab, ba b, aa ab, aaa, abb, abaa, bab, baaa

Üs işlemi: FORMEL DİLLER: TANIMLAR VE TEMEL KAVRAMLAR n L LL L n 3 a, b a, b a, b a, b aaa, aab, aba, abb, baa, bab, bba, bbb L 0 0 a, bba, aaa Özel durum

Örnek: FORMEL DİLLER: TANIMLAR VE TEMEL KAVRAMLAR L n n { a b : n 0} L 2 n n m m { a b a b : n, m 0} 2 aabbaaabbb L

Kleene Yıldızı (Kleene Star): L ile gösterilir. Bir dilde 0 veya daha fazla karakter katarının birleştirme işlemi sonucu oluşur. 0 1 L* L L L 2 a, bb * a,, bb,, abb, bba, bbbb,, aabb, abba, abbbb, aa aaa

L + Kleene Artısı (Kleene Plus): ile gösterilir. L dilini ve L dilindeki karakter katarlarının eklenmesi ile elde edilen tüm karakter katarlarını içeren bir dildir. a, bb a, aa L aaa L 1 L* L 2 bb,, abb, bba, bbbb,, aabb, abba, abbbb,

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 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ı