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