Anda di halaman 1dari 24

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 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 :
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
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:
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.

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. AddisonWesley

Anda mungkin juga menyukai