Pertemuan 6 Ekspresi dan Bahasa Regular

Slides:



Advertisements
Presentasi serupa
Review Materi Widodo.com
Advertisements

Teori Bahasa dan Automata
Teori Bahasa dan Otomata 2 sks
Pertemuan 4 Finite Automata
Pertemuan 14 Pengantar ke Mesin Turing
Session 10 Context-free grammar
Definisi Rekursif Ada kalanya kita mengalami kesulitan untuk mendefinisikan suatu obyek secara eksplisit. Mungkin lebih mudah untuk mendefinisikan obyek.
Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks
Pertemuan 9 Sifat-sifat Bahasa Regular
Teori Bahasa dan Automata
Oleh: BAGUS ADHI KUSUMA, ST
MODUL 9 -move Gambar 20. Mesin NFA HUBUNGAN ANTARA
-move Gambar 20. Mesin NFA HUBUNGAN ANTARA
Pengantar Teknik Kompilasi
Pertemuan 1 Teori Bahasa dan Automata
Pertemuan 3 Konversi NFA - DFA dan Konversi ε-NFA - DFA
REGULAR EXPRESSION Yenni Astuti Version
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity
Session 12 Pushdown Automata
Pertemuan 4 Non Deterministic Finite Automaton (NFA)
Pertemuan 2 Konsep dalam Teori Otomata dan Pembuktian Formal
KONSEP DASAR TEORI BAHASA DAN OTOMATA
Session 5 Finite Automata
BAB II FINITE STATE AUTOMATA.
Teori Bahasa & OTOMATA.
Pertemuan 3 Finite Automata
Pertemuan 2 FINITE AUTOMATA (DFA & NFA)‏
Session 7 Regular Expression and Language
BAB II FINITE STATE AUTOMATA.
BAB V EKSPRESI REGULER 1. Penerapan Ekspresi Reguler
Mahasiswa mampu menerapkan konsep Ekspresi Reguler
Pertemuan 3 BAHASA REGULAR
BAB V EKSPRESI REGULER 1. Penerapan Ekspresi Reguler
TEORI BAHASA DAN AUTOMATA
BAB II FINITE STATE AUTOMATA.
BAB II FINITE STATE AUTOMATA.
Teori Bahasa dan Automata
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Non Deterministic Finite Automata dengan є – Move
2. Mesin Turing (Bagian 1) IF5110 Teori Komputasi Oleh: Rinaldi Munir
FINITE STATE AUTOMATA (FSA)
Teori-Bahasa-dan-Otomata
BAB II FINITE STATE AUTOMATA.
OTOMATA DAN TEORI BAHASA FORMAL
FINITE STATE AUTOMATA (FSA)
Teori Bahasa dan Automata
4. Undecidabality (Bagian 3)
Teori-Bahasa-dan-Otomata
TEORI BAHASA DAN AUTOMATA TATA BAHASA LEVEL BAHASA
Teori-Bahasa-dan-Otomata
BAGUS ADHI KUSUMA, S.T., M.Eng.
2. Mesin Turing (Bagian 1) IF5110 Teori Komputasi Oleh: Rinaldi Munir
OTOMATA DAN TEORI BAHASA FORMAL
Reduksi Jumlah State pada Finite State Automata
OTOMATA DAN TEORI BAHASA FORMAL
OTOMATA DAN TEORI BAHASA FORMAL
BAB II FINITE STATE AUTOMATA.
Finite State Automata ♦ model matematika yang dapat menerima input dan mengeluarkan output ♦ Memiliki state yang berhingga banyaknya dan dapat berpindah.
Otomata & Teori Bahasa ( Week 4 )
Mesin Turing.
Erwin Hidayat (M ) UTeM || 2010
Ekuivalensi NFA KE DFA *YANI*.
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Pertemuan4.
Tinjauan Instruksional Khusus:Mahasiswa akan dapat menjelaskan cara kerja Deterministic Finite Automata (DFA),Non-Deterministic Finite Automata (NDFA),Non.
Pushdown Automata (PDA)
Otomata & Teori Bahasa Finite State Automata: - Non Deterministic Finite Automata dengan -move - Penggabungan dan Konkatenasi FSA.
Otomata & Teori Bahasa ( Week 4 )
Reduksi Jumlah State pada Finite State Automata
Otomata & Teori Bahasa ( Week 4 )
Transcript presentasi:

Pertemuan 6 Ekspresi dan Bahasa Regular Teori Bahasa dan Otomata (KOM208) SKS: 3(3-0)

Special Instructional Objectives, Subtopics and Presentation Time Students are able to explain the construction of regular expression and language and their relation to automata Subtopics: Operators of regular expression Construction of regular expression Conversion of DFA into regular expression Conversion of regular expression into automata Presentation Time: 1 x 150 minutes

Regular expression (1) Can be viewed as another notation for NFA. Has important applications in areas such as text retrieval and compiler Provides a declarative way to specify the acceptable strings Specifies a language, for example the expression 01* + 10* represents the language containing all strings beginning with 0 followed by a 1 or a 1 followed by a 0.

Ekspresi Regular (2) Operasi dalam bahasa dimana operator dari ekspresi regular direpresentasikan: Union dari dua bahasa L dan M, dinotasi, adalah himpunan dari string yang ada dalam L atau dalam M. Contoh: L = {001, 10, 111} dan M = {, 001}, maka = {, 10, 001, 111}. Concatenation dari bahasa L dan M adalah himpunan dari string yang dibentuk dengan mengambil string dalam L dan merangkainya dengan string dalam M. Notasinya menggunakan “dot” atau tidak ada operator yang dituliskan. Contoh: L = {001, 10, 111} dan M = {, 001}, maka LM = {001, 10, 111, 001001, 10001, 111001}. Tiga string pertama dalam LM diperoleh dengan merangkaikan string-string dalam L dengan , sedangkan sisanya diperoleh dengan merangkaikan string-string dalam L dengan 001.

Ekspresi Regular (3) Closure (atau star, atau Kleene Closure) dari bahasa L Dinotasikan L* dan menyatakan himpunan dari string-string yang dapat dibentuk dengan mengambil sejumlah string dari L, mungkin dengan pengulangan (yaitu string yang sama dipilih lebih dari sekali), dan merangkai semua string tersebut. Contoh : L = {0, 1} maka L* adalah semua string dari para 0 dan para 1. L = {0, 11} maka L* berisi semua string dari para 0 dan para 1 sedemikian sehingga para 1 muncul berpasangan. Perhatikan bahwa 011, 11110  L* tapi 01011, 101  L*. Secara lebih formal, L* adalah union tak berhingga  Li, i  0 dimana L0 = {}, L1 = L, dan Li untuk i  1 adalah LL...L, yaitu perangkaian dari i salinan dari L.

Ekspresi Regular (4) Contoh 1 L = {0,11}. L0 = {} (tidak bergantung pada bahasa L). L1 = L menyatakan pemilihan 1 string dari L. L2 ={00, 011, 110, 1111} yaitu mengambil dua string dalam L, pengulangan diperbolehkan sehingga terdapat 4 string. L3 merupakan himpunan string yang dapat dibentuk dengan membuat 3 pilihan dari 2 string dalam L, L3 = {000, 0011, 0110, 1100, 01111, 11011, 11110, 111111}.

Ekspresi Regular (4) Contoh 1 (lanjutan) Untuk menghitung L*, harus dihitung Li untuk setiap i, dan mengambil semua union dari bahasa-bahasa ini. Li memiliki 2i anggota, setiap Li berhingga, union dari sejumlah tak berhingga Li umumnya merupakan bahasa tak berhingga, L* = L0  L1  L2  ... * = {} dan 0 = {}

Membuat Ekspresi Regular (1) Ekspresi regular terdiri dari konstanta, variabel-variabel yang menyatakan bahasa dan operator union, dot dan star. Ekspresi regular dapat dinyatakan secara rekursif. Definisi ekspresi regular, E, dan bahasa yang direpresentasikan oleh E yaitu L(E) terdiri dari basis dan langkah induktif

Membuat Ekspresi Regular (2) Basis: terdiri dari 3 bagian : Konstanta  dan  adalah ekspresi regular, berturut-turut menyatakan bahasa {} dan . Bahwa L() ={}, dan L() = . Jika a adalah simbol, maka a adalah ekspresi regular. Ekspresi ini menyatakan bahasa {a}, bahwa L(a) = {a} Sebuah variabel, biasanya dicetak tebal dan miring seperti L, merepresentasikan suatu bahasa.

Membuat Ekspresi Regular (3) Induksi: Langkah induktif terdiri dari 4 langkah: Jika E dan F adalah ekspresi regular, maka E + F adalah ekspresi regular yang menyatakan union dari L(E) dan L(F). Bahwa L(E + F) = L(E)  L(F). Jika E dan F adalah ekspresi regular, maka EF adalah ekspresi regular yang menyatakan perangkaian dari L(E) dan L(F). Bahwa L(EF) = L(E).L(F). Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator perangkaian baik dalam bahasa atau dalam ekspresi regular. Contoh: 0.1 adalah ekspresi regular yang artinya sama dengan 01 dan merepresentasikan bahasa {01}.

Membuat Ekspresi Regular (4) Jika E adalah sebuah ekspresi regular, maka E* adalah ekspresi regular menyatakan closure dari L(E). Bahwa L(E*) = (L(E))*. Jika E adalah ekspresi regular, maka (E), E dengan tanda kurung juga ekspresi regular yang menyatakan bahasa yang sama dengan E. Bahwa L((E)) = L(E).

Contoh 2 Akan dibuat ekspresi regular untuk himpunan string yang terdiri dari para 0 dan para 1 secara bergantian. Langkah-langkah untuk membuat ekspresi regular tersebut adalah Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string tunggal 01. Gunakan operator star untuk mendapat sebuah ekspresi untuk semua string dengan bentuk 0101...01

Contoh 2 (lanjutan) Basis: 0 dan 1 adalah ekspresi regular yang berturut-turut menyatakan bahasa {0} dan {1}. Induksi: Perangkaian dari 0 dan 1 yaitu 01 adalah ekpresi regular yang menyatakan bahasa {01}. Untuk mendapat semua string yang terdiri dari nol atau lebih kemunculan 01 digunakan ekspresi regular (01)*. Perhatikan bahwa (01)*  01*. 01* menyatakan bahasa yang terdiri dari sebuah 0 dan sejumlah para 1.

Contoh 2 (lanjutan) Tetapi, L((01)*) bukan bahasa yang tepat yang diinginkan. Bahasa ini hanya mencakup string-string dari para 0 dan para 1 secara bergantian dimulai dengan 0 dan diakhiri dengan 1  diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi regular yang mungkin adalah (10)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan diakhiri 0. 0(10)* yang diawali dan diakhiri 0. 1(01)* yang diawali dan diakhiri 1. Sehingga keseluruhan ekspresi adalah (01)* + (10)* + 0(10)* + 1(01)* dengan + adalah operator union.

Contoh 2 (lanjutan), Cara Lain Mulai dengan (01)*, tambahkan 1 (optional) diawal jika kita merangkai pada bagian kiri dengan ekspresi +1. Bisa juga ditambah 0 (optional) diakhir jika kita merangkai pada bagian kanan dengan ekspresi +0. Dengan menggunakan operator +, diperoleh L( + 1) = L( )  L(1) = {}  {1} = {,1} Ekspresi yang dimaksud adalah (+1)(01)*(+0). Jika 1 yang dipilih dalam (+1) didapat string 1w. Jika 0 yang dipilih dalam (+0) didapat string w0.

Urutan prioritas operator dalam ekspresi regular: Operator star Operator dot (concatenation) Concatenation bersifat asosiatif sehingga 012 dapat dikelompokkan (01)2. Operator + (union) yang bersifat asosiatif. Contoh, ekspresi 01*+1 dikelompokkan menjadi (0(1*))+1.

Finite Automata dan Ekspresi Regular (1) Sebuah ekspresi regular dapat merepresentasikan sebuah bahasa yang diterima oleh finite automata. Untuk membuktikan pernyataan tersebut, perlu dibuktikan bahwa: Setiap bahasa yang didefinisikan oleh salah satu dari automata juga didefinisikan oleh sebuah ekspresi regular. Dalam hal ini, asumsikan bahwa bahasa tersebut diterima oleh DFA. Setiap bahasa yang didefinisikan oleh suatu ekspresi regular didefinisikan oleh salah satu dari automata. Dalam hal ini, asumsikan terdapat NFA dengan transisi  yang menerima bahasa yang sama.

Skema pembuktian ekuivalensi notasi-notasi untuk bahasa regular: Misalkan x dan y adalah node dalam gambar di samping. Edge dari node x ke y berarti bahwa dapat dibuktikan setiap bahasa yang didefinisikan oleh kelas x juga didefinisikan oleh kelas y.

Dari DFA ke Ekspresi Regular Teorema 1: Jika L = L(A) untuk suatu DFA A, maka terdapat ekspresi regular R sedemikian sehingga L = L(R). Bukti: Lihat buku rujukan

Contoh 3 Ekspresi regular yang ekuivalen dengan DFA di samping adalah 1*0(0+1)*. Ekspresi regular tersebut menyatakan bahasa yang terdiri dari semua string yang dimulai dengan 0 atau lebih para 1, kemudian memiliki sebuah 0 dan diikuti string dari para 0 dan para 1. Secara ringkas bahasa tersebut terdiri para 0 dan para 1 dengan sedikitnya satu 0.

Konversi DFA ke Ekspresi Regular dengan Mengeliminasi State Contoh 4, diberikan NFA yang menerima semua string dari para 0 dan 1, posisi ke-2 atau ke-3 dari ujung string memiliki sebuah 1. Bahasa yang diterima oleh NFA terdiri dari semua string dari para 0 dan 1 bahwa posisi ke-2 atau ke-3 dari ujung string memiliki sebuah 1. Ekspresi regular yang menyatakan bahasa yang sama (dengan mengeliminasi state): (0+1)*1(0+1) + (0+1)*1(0+1)(0+1)

Konversi Ekspresi Regular ke Automata Teorema 2: Setiap bahasa yang didefinisikan oleh sebuah ekspresi regular juga didefinisikan oleh sebuah FA. Bukti: lihat buku rujukan

Contoh 5 Konversi ekspresi regular (0+1)*1(0+1) ke sebuah -NFA. Jawab:

Daftar Pustaka John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley