Pertemuan 6 Ekspresi dan Bahasa Regular
Download
Report
Transcript Pertemuan 6 Ekspresi dan Bahasa Regular
Pertemuan 6
Ekspresi dan Bahasa Regular
Teori Bahasa dan Otomata (KOM208)
SKS: 3(3-0)
Special Instructional Objectives,
Subtopics and Presentation Time
• Special Instructional Objectives:
– 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)
1.
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)
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 bahasabahasa 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, variabelvariabel 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 :
1. Konstanta dan adalah ekspresi regular,
berturut-turut menyatakan bahasa {} dan .
Bahwa L() ={}, dan L() = .
2. Jika a adalah simbol, maka a adalah ekspresi
regular. Ekspresi ini menyatakan bahasa {a},
bahwa L(a) = {a}
3. Sebuah variabel, biasanya dicetak tebal dan
miring seperti L, merepresentasikan suatu
bahasa.
Membuat Ekspresi Regular (3)
Induksi: Langkah induktif terdiri dari 4 langkah:
1. 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).
2. 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)
3. Jika E adalah sebuah ekspresi regular, maka E*
adalah ekspresi regular menyatakan closure dari
L(E).
Bahwa L(E*) = (L(E))*.
4. 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 berturutturut 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:
1. Operator star
2. Operator dot (concatenation)
Concatenation bersifat asosiatif sehingga 012
dapat dikelompokkan (01)2.
3. 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.
- NFA
RE
NFA
DFA
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)*.
1
Start
1
0,1
0
2
• 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.
0,1
A
Start
B
0,1
C
0,1
D
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:
start
0
1
1
0
1
Daftar Pustaka
• John E. Hopcroft, Rajeev Motwani, Jeffrey D.
Ullman. 2001. Introduction to Automata
Theory, Languange, and Computation. Edisi
ke-2. Addison-Wesley