• Tidak ada hasil yang ditemukan

Lecture Notes Teori Bahasa dan Automata

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lecture Notes Teori Bahasa dan Automata"

Copied!
5
0
0

Teks penuh

(1)

L

ecture

N

otes

Teori Bahasa dan Automata

Pumping Lemma Untuk Regular Language

Thompson Susabda Ngoen

Revisi 1

Hopcroft mengatakan regular language dapat dideskripsikan dengan empat cara: DFA, NFA, ε-NFA, dan regular expression. Tulisan ini bertujuan menjelaskan cara menguji sebuah language apakah berjenis regular language, dengan pengujian pumping lemma.

Definisi Formal

Hopcroft et al memberi definisi pumping lemmauntuk regular language sebagai berikut: Misalkan L adalah sebuah regular language. Haruslah terdapat (there exist) sebuah bilangan n (bilangan n ini bergantung kepada language L dan bisa berbeda dengan language yang) yang sedemikian rupa sehingga terhadap setiap string w pada L yang panjangnya ≥ n, string w ini harus dapat dibagi menjadi tiga bagian, w = xyz dengan ketentuan:

1. y ≠ ε 2. |xy| ≤ n

3. untuk semua k ≥ 0, string xyk

z juga merupakan string dari language L.

Hopcroft mengatakan bahwa terhadap sebuah string dengan panjang tertentu dari sebuah regular language, kita selalu bisa mendapatkan substring y, yang posisinya “tidak terlalu jauh” dari awal string tersebut, yang dapat dipompa (pumped). Maksudnya adalah Jika sebuah language berjenis regular language maka string-string language ini harus mempunyai bagian (substring) yang bisa di-pump atau di-loop.

Berdasarkan notasi yang biasa digunakan oleh Hopcroft maka x, y, dan z masing-masing adalah sebuah string (kumpulan karakter), atau lebih tepat disebut substring dari string w. Yang harus kita tanyakan adalah apakah y boleh hanya berupa sebuah simbol saja ataukah minimal harus dua simbol?

Hopcroft tidak memberi informasi secara eksplisit mengenai hal ini. Hopcoft memberi contoh language yang menghasilkan string-string 0n1 n, dan mengatakan xy terdiri atas simbol-simbol 0 saja dan z terdiri atas simbol-simbol 1. Hal ini bisa berupa

x = 0 y = 0n-1 x = 0 n/2 y = 0n/2 x = 0 n-1 y = 0

Selanjutnya Hopcroft menyatakan bahwa dengan k bernilai nol, yaitu tidak menyertakan y, maka string yang terbentuk mempunyai jumlah simbol 0 yang lebih sedikit daripada jumlah simbol 1, “tidak lebih dari n-1 buah simbol 0”. Pernyataan ini secara implisit menyatakan y boleh berupa satu simbol saja.

Hopcroft mengatakan regular language dapat dideskripsikan dengan empat cara: DFA, NFA, ε-NFA, dan regular expression.

Pembuktian Informal

1. Regular expression membentuk regular language. Jika sebuah language adalah regular language maka language ini harus bisa didefinisi atau dideskripsi dengan regular expression, maksudnya harus bisa dituliskan regular expression yang menghasilkan string-string language tersebut.

(2)

2. Regular expression membentuk jenis language yang sama dengan language yang dibentuk finite automaton, yaitu regular language. Jika sebuah language adalah regular language maka harus bisa dibuatkan finite automaton yang menerima string-string language tersebut. Jika terhadap sebuah language tidak bisa dibuatkan regular expression yang menghasilkan string-string language tersebut dan juga tidak bisa dibuatkan finite automaton yang menerima string-string language tersebut, maka language tersebut bukan berjenis regular language. Persoalan yang timbul adalah bagaimana cara kita memastikan atau membuktikan bahwa terhadap sebuah language tertentu tidak bisa dibuatkan regular expression dan DFA-nya? Kita tidak bisa membuatkan RE dan DFA-nya tetapi mungkin orang lain bisa! Dengan demikian pembuktian informal ini menjadi kurang kuat.

Ilustrasi Dengan DFA

Jika L1 berjenis regular language maka harus terdapat DFA, sebut saja D1, yang menerima

bahasa L1. Misalkan D1 terdiri atas n state. String w adalah salah satu string bahasa L1 yang

panjangnya lebih besar daripada n. Karena w merupakan string bahasa L1 maka string w harus

bisa di-accept D1. Jumlah state D1 hanya ada n buah sedangkan |w| boleh melebihi n (lihat

definisi) . String w hanya mungkin di-accept D1 apabila pada D1 terdapat jalur yang bersifat

looping.

Misalkan string w terdiri atas simbol-simbol a1a2…am dengan m ≥ n, maka string ini dapat kita

bagi menjadi tiga bagian x terdiri atas a1a2a3 ... ai

y terdiri atas ai+1ai+2 ... aj

z terdiri atas aj+1aj+2 ... am

seperti diilustrasikan gambar berikut:

Untuk k bernilai nol maka terbentuk string

a

1

a

2

a

3

... a

i

a

j+1

a

j+2

... a

m yang diterima DFA

ini. Untuk k bernilai dua maka terbentuk string

a

1

a

2

a

3

... a

i

a

i+1

a

i+2

... a

j

a

i+1

a

i+2

...

a

j

a

j+1

a

j+2

... a

myang diterima DFA ini. Contoh Pengujian

Karena y boleh berupa satu simbol saja maka perlu menguji semua kemungkinan untuk menyimpulkan sebuah language bukan regular.

1. Language L1 = {0n1 : n > 0 }. Apakah L1 adalah regular language?

Misalkan w = xyz adalah string pada L1 yang panjangnya 3 dan diuraikan menjadi

x = 0 y = 0 z = 1 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |00| ≤ 3 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 01 ∈ L1

jika k bernilai 1 maka terbentuk string 001 ∈ L1

(3)

Kesimpulan: L1 adalah regular language Pembuktian informal

RE untuk L1: 00*1

DFA

Pada pembuktian di atas kita membagi string 001 dengan masing-masing subtring terdiri atas satu simbol. Apakah kita boleh membagi string 001 menjadi demikian?

x = 0 y = 01 z = ε

Persyaratan definisi adalah y tidak empty dan |xy| ≤ 3, artinya boleh. Pembagian seperti ini menyebabkan xy0z tidak bersifat regular, demikian juga dengan xy2z. Kalau demikian apa kesimpulan kita, L1 regular atau bukan?

Perhatikan definisi di atas, frasa there exist menyatakan jika terdapat (bisa didapatkan) kasus yang memenuhi kriteria maka language dianggap regular, BUKAN semua kasus harus memenuhi persyaratan baru dianggap regular.

2. Language L2 terdiri atas string-string yang dibentuk oleh substring 01 atau 10 berulang kali,

Contoh string-string pada L2 adalah: 01, 10, 0101, 1010, 0110, 1001, 011010010101

Apakah L2 adalah regular language?

Misalkan w adalah string berbentuk pengulangan 01. Kita ambil w = xyz yang panjangnya 4 dan diuraikan menjadi

x = 0 y = 10 z = 1 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |010| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 01 ∈ L2

jika k bernilai 1 maka terbentuk string 0101 ∈ L2

jika k bernilai 2 maka terbentuk string 010101 ∈ L2

Kesimpulan: L2 adalah regular language Pembuktian cara lain:

Misalkan w adalah string berbentuk pengulangan 10. Kita ambil w = xyz yang panjangnya 4 dan diuraikan menjadi

x = ε y = 10 z = 10 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |10| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 10 ∈ L2

jika k bernilai 1 maka terbentuk string 1010 ∈ L2

jika k bernilai 2 maka terbentuk string 101010 ∈ L2

Kesimpulan: L2 adalah regular language Pembuktian cara lain:

(4)

Misalkan w adalah string berbentuk campuran pengulangan 01 dan 10. Kita ambil w = xyz yang panjangnya 4: 0110 dan diuraikan menjadi

x = 01 y = 10 z = ε syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |0110| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 01 ∈ L2

jika k bernilai 1 maka terbentuk string 0110 ∈ L2

jika k bernilai 2 maka terbentuk string 011010 ∈ L2

Kesimpulan: L2 adalah regular language Pembuktian informal

RE untuk L1: (01 + 10) (01 + 10)* (01 + 10)

DFA:

diminimasi menjadi

3. Language L3 = {0n1n : n > 0 }. Apakah L3adalah regular language?

Terdapat tiga kemungkinan menentukan substring y. a. Substring y terdiri atas simbol 0

Misalkan w = 0011 adalah string pada L3 yang panjangnya 4 dan diuraikan menjadi

x = 0 y = 0 z = 11 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |00| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 011 ∉ L3

b. Substring y terdiri atas simbol 1

Misalkan w = 0011 adalah string pada L3 yang panjangnya 4 dan diuraikan menjadi

x = 00 y = 1 z = 1 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |001| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 001 ∉ L3

c. Substring y terdiri atas simbol 01

Misalkan w = 0011 adalah string pada L3 yang panjangnya 4 dan diuraikan menjadi

x = 0 y = 01 z = 1 syarat 1: y ≠ ε terpenuhi

syarat 2: |xy| = |001| ≤ 4 terpenuhi syarat 3:

jika k bernilai 0 maka terbentuk string 01 ∈ L3

jika k bernilai 1 maka terbentuk string 0011 ∈ L3

(5)

Kesimpulan: L3 BUKAN regular language

Mengapa L3 bukan regular language? Language L3 perlu “mengingat” berapa jumlah simbol

0 yang diproses. RE dan DFA tidak mempunyai kemampuan untuk “mengingat” jumlah simbol 0 yang diproses. Dengan demikian tidak mungkin membandingkan jumlah simbol 0 dengan jumlah simbol 1.

Referensi

Hopcroft, E. John, Rajeev Motwani, Jeffrey D. Ullman, (2001), Introduction to Automata Theory, Languages, and Computation, 2nd edition, Addison-Wesley

Referensi

Dokumen terkait

27 tahun 1999 tentang Analisis Mengenai Dampak Lingkungan disebutkan bahwa AMDAL merupakan kajian mengenai dampak besar dan penting untuk pengambilan

Data dari penelitian ini adalah register variabel; antara lain field, tenor, dan mode dari dialog-dialog yang digunakan oleh Liz, Stephen, David, dan Felipe di

Hasil pengamatan di atas relevan dengan hasil penelitian yang telah dilakukan oleh Tsinker (1995) yang menunjukkan besaran perbandingan lebar floating breakwater dengan

Dari 5 partisipan, 2 orang mengatakan bahwa RA disebabkan karena udara dingin. Hal tersebut terungkap berikut ini. Tapi ya mungkin karena udara dingin mbak). Sub Tema

Program ini dapat digunakan untuk memperkirakan nilai tegangan, regangan, atau defleksi pada suatu system lapisan perkerasan yang diakibatkan oleh beban statis.. Modulus elastisitas,

- OTONOMI DAERAH, PEMERINTAHAN UMUM, ADMINISTRASI KEUANGAN DAERAH, PERANGKAT DAERAH, KEPEGAWAIAN DAN PERSANDIA 1.20.28... BETONISASI

Wawancara Komunikasi Efektif dengan Pemilik Warung Makan. DOSEN

Analisis yang telah dilakukan pada model integrasi pasar secara vertikal antara pasar produsen gabah dengan pasar ritel beras di Indonesia menunjukkan bahwa dalam jangka panjang