Anda di halaman 1dari 5

PERTEMUAN 5-6

a. Tujuan Pembelajaran
Mahasiswa Dapat Memahami Konsep Regular Expression Dan
Implementasinya Dalam
Regular Language
b. Materi Pembelajaran

4.1 REGULAR EXPRESSION

Gambar 1. Ilustrasi Finite Automata

Finite State Automata adalah pintu masuk untuk mengenal bahasa-bahasa yang digunakan
dalam komputer. Karena hanya merupakan pintu masuk, maka tidaklah cukup hanya belajar dan
berhenti dari materi tersebut saja.
Regular Expression adalah konsep untuk menyederhanakan bahasa yang luas menjadi
bahasa yang umum, sehingga mudah untuk implementasi kedalam program.
A. Asal Gagasan Ekspresi Reguler
Permulaaan gagasan ekspresi reguler dikemukakan pada tahun 1940 oleh Warren
McCulloch dan Walter Pitts. Bidang keahlian mereka adalah neuro-physiologist.
Mereka mengembangkan model sederhana mengenai sistem syaraf pada level neuron.
Ekspresi reguler menjadi nyata secara formal ketika matematikawan Stephen
Kleene mendeskripsikan model-model yang ditemukan McCulloch dan Pitts ini secara
formal dalam 1 aljabar yang disebut himpunan reguler.
Stephe Kleene mengemukakan notasi sederhana untuk mengekspresikan himpunan
reguler ini disebut ekspresi reguler.
Pada tahun 1950 dan 1960-an, ekspresi reguler memperoleh perhatian para
matematikawan. Pada tahun 1968, Ken Thompson menggunakan ekspresi reguler untuk
persoalan komputasi, ditulis dalam makalah berjudul "Reguler Expression Search
Algorithm" yang mendeskripsikan kompilator ekspresi reguler sehingga menghasilkan
kode objek untuk komputer 8094.

Gambar 2. Contoh Regex


• Sebuah bahasa dinyatakan Regular jika terdapat Otomata Hingga yang dapat
menerimanya
• Ekspresi regular memungkinkan mendefinisikan bahasa-bahasa.
• Ekspresi Regular memberikan suatu pola untuk untai/string dari suatu bahasa.
Untai yang menyusun suatu bahasa regular akan cocok dengan pola bahasa itu.
• Banyak masalah pada perancangan software yang bisa disederhanakan dengan
melakukan pengubahan notasi ekspresi regular ke dalam implementasi
komputer dari Otomata Hingga yang bersangkutan. Seperti : Pencarian string
pada suatu file (ada pada text editor).  Contoh penerapan lain adalah
pembatasan data masukan yang diperkenankan, misalnya suatu field input
hanya menerima input bilangan 0..9 seperti gambar 2.
Gambar tersebut menerima input antara 0 sampai 9,
sedangkan ekspresi regularnya dinyatakan sebagai berikut : (digit) (digit)*digit
= 0..9
Regular Expression adalah Sebuah cara mendefinisikan
language yang lebih tepat dibandingkan dengan menggunakan cara ellipsis ( diakhiri
dengan ... ) Language ini disebut regular language Perhatikan:

L4 = { Λ x xx xxx xxxx ... }

Dengan memanfaatkan closure, bila S = { x } maka L4 = S* Dapat juga ditulis sebagai


L4 =
{x}*
Kleene Star tidak hanya dapat diaplikasikan untuk set namun
juga langsung ke alphabet. Contoh:
x* Ekpresi sederhana x* akan dipakai untuk mengekspresikan
pengulangan dari x (bisa juga tidak sama sekali)

x* = Λ atau x atau x2 atau x3 atau


x4 ... = xn for n = 0 1 2 3 4 ...

Jadi x* adalah string dari x yang banyaknya tidak dinyatakan secara pasti Sebuah
language L
yang didefinisikan dari alphabet S = {a, b} seperti di bawah ini:
L = { a ab abb abbb abbbb ... }

Dapat juga didefinisikan dengan kalimat:


L = semua word yang dimulai dengan a dan diikuti oleh sejumlah b (dan mungkin tanpa b
sama sekali)

Dengan memakai notasi *, dapat dituliskan L = language (ab*) Kleene Star dapat
diimplementasikan pada string ab seperti di bawah ini:
(ab)* = Λ atau ab atau abab atau
ababab . . . (ab)* ≠ (ab*) Contoh Kleene Star lainnya:
L1 = language (xx*)

Language L1 di atas berisi sebuah x lalu diikuti dengan sejumlah x (dimana mungkin
saja tanpa
x sama sekali) L1 dapat dituliskan dengan notasi lain, yaitu notasi +, x+ berarti sejumlah
x dalam jumlah yang selalu positif (tidak bisa 0, atau tidak bisa Λ) Notasi * lebih lazim
dipergunakan daripada notasi + L1 dapat juga didefinisikan dengan salah satu contoh di
bawah ini:
xx* x+ xx*x* x*xx* x+x* x*x+ x*x*x*xx*

Ingat bahwa x* bisa saja berarti Λ


Contoh: Language yang didefinisikan dengan ekspresi ab*a
adalah sebuah himpunan dari string a dan string b yang paling sedikit berisi dua huruf
yang diawali dengan a dan diakhiri dengan a dan hanya akan berisi b diantaranya (atau
tidak sama sekali)

language(ab*a) = { aa aba abba abbba abbbba ... }

Contoh: Ekspresi-ekspresi di bawah ini mendefinisikan language


L2 dengan hasil yang sama
L2 = { xganjil } = x(xx)* = (xx)*x

Namun ekspresi x*xx* tidak, karena termasuk (xx) x (x)


Contoh: Language dengan ekspresi seperti di bawah ini a*b*
Berisi semua string dari a dan b sedemikian sehingga semua a (bila ada) akan berada di
depan semua b (bila ada)

language(a*b*) = { Λ a b aa ab bb aaa aab abb bbb aaaa ... }

Perhatikan bahwa ba dan aba tidak termasuk dalam language ini, juga bahwa jumlah a
dan b
tidak perlu sama. Ada pemanfaatan lain dari tanda tambah +.
Ekpresi x + y berarti salah satu dari x atau y (memilih). Berhati-hatilah untuk
membedakan antara + dengan + Contoh: Perhatikan bahasa T yang berasal dari alphabet
Σ={abc}

T = { a c ab cb abb cbb abbb cbbb abbbb cbbbb … }

Semua word di dalam T dimulai dengan a atau c dan diikuti dengan sejumlah b. Secara
simbolik
language T dapat ditulis dengan cara:
T = language ((a + c)b*)
= language (a atau c diikuti sejumlah b)

Tanda + berarti harus dilakukan pilihan untuk memakai ekspresi yang sebelah kiri atau
kanan
Contoh: Sebuah language L akan berisi semua string dari a dan b
dengan panjang selalu tiga
L = { aaa aab aba abb baa bab bba bbb }

 Huruf pertama dari tiap word di dalam L adalah a atau b


• Huruf kedua dari tiap word di dalam L adalah a atau b
• Huruf ketiga tiap word di dalam L adalah a atau b Jadi L dapat
didefinisikan:
L = language ((a + b)(a + b)(a + b))

atau dengan lebih singkat


L = language ((a + b)3)

TUGAS
1. Buatlah beberapa catatan berupa pertanyaan/hal-hal belum dipahami terkait dengan
materi yang telah disampaikan!

Anda mungkin juga menyukai