Pumping Lemma RL (edisi 2) 1/5 Lecture Notes 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 lemma untuk 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 xy k 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 0 n 1 n, dan mengatakan xy terdiri atas simbol-simbol 0 saja dan z terdiri atas simbol-simbol 1. Hal ini bisa berupa x = 0 y = 0 n-1 x = 0 n/2 y = 0 n/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.
Pumping Lemma RL (edisi 2) 2/5 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 L 1 berjenis regular language maka harus terdapat DFA, sebut saja D 1, yang menerima bahasa L 1. Misalkan D 1 terdiri atas n state. String w adalah salah satu string bahasa L 1 yang panjangnya lebih besar daripada n. Karena w merupakan string bahasa L 1 maka string w harus bisa di-accept D 1. Jumlah state D 1 hanya ada n buah sedangkan w boleh melebihi n (lihat definisi). String w hanya mungkin di-accept D 1 apabila pada D 1 terdapat jalur yang bersifat looping. Misalkan string w terdiri atas simbol-simbol a 1 a 2 a m dengan m n, maka string ini dapat kita bagi menjadi tiga bagian x terdiri atas a 1 a 2 a 3... a i y terdiri atas a i+1 a i+2... a j z terdiri atas a j+1 a j+2... a m 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 m yang 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 L 1 = {0 n 1 : n > 0 }. Apakah L 1 adalah regular language? Misalkan w = xyz adalah string pada L 1 yang panjangnya 3 dan diuraikan menjadi x = 0 y = 0 z = 1 syarat 2: xy = 00 3 terpenuhi jika k bernilai 0 maka terbentuk string 01 L 1 jika k bernilai 1 maka terbentuk string 001 L 1 jika k bernilai 2 maka terbentuk string 0001 L 1
Pumping Lemma RL (edisi 2) 3/5 Kesimpulan: L 1 adalah regular language Pembuktian informal RE untuk L 1 : 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 xy 0 z tidak bersifat regular, demikian juga dengan xy 2 z. Kalau demikian apa kesimpulan kita, L 1 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 L 2 terdiri atas string-string yang dibentuk oleh substring 01 atau 10 berulang kali, Contoh string-string pada L 2 adalah: 01, 10, 0101, 1010, 0110, 1001, 011010010101 Apakah L 2 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 2: xy = 010 4 terpenuhi jika k bernilai 0 maka terbentuk string 01 L 2 jika k bernilai 1 maka terbentuk string 0101 L 2 jika k bernilai 2 maka terbentuk string 010101 L 2 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 2: xy = 10 4 terpenuhi jika k bernilai 0 maka terbentuk string 10 L 2 jika k bernilai 1 maka terbentuk string 1010 L 2 jika k bernilai 2 maka terbentuk string 101010 L 2 Pembuktian cara lain:
Pumping Lemma RL (edisi 2) 4/5 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 2: xy = 0110 4 terpenuhi jika k bernilai 0 maka terbentuk string 01 L 2 jika k bernilai 1 maka terbentuk string 0110 L 2 jika k bernilai 2 maka terbentuk string 011010 L 2 Pembuktian informal RE untuk L 1 : (01 + 10) (01 + 10)* (01 + 10) DFA: diminimasi menjadi 3. Language L 3 = {0 n 1 n : n > 0 }. Apakah L 3 adalah regular language? Terdapat tiga kemungkinan menentukan substring y. a. Substring y terdiri atas simbol 0 x = 0 y = 0 z = 11 syarat 2: xy = 00 4 terpenuhi jika k bernilai 0 maka terbentuk string 011 L 3 b. Substring y terdiri atas simbol 1 x = 00 y = 1 z = 1 syarat 2: xy = 001 4 terpenuhi jika k bernilai 0 maka terbentuk string 001 L 3 c. Substring y terdiri atas simbol 01 x = 0 y = 01 z = 1 syarat 2: xy = 001 4 terpenuhi jika k bernilai 0 maka terbentuk string 01 L 3 jika k bernilai 1 maka terbentuk string 0011 L 3 jika k bernilai 2 maka terbentuk string 001011 L 3
Pumping Lemma RL (edisi 2) 5/5 Kesimpulan: L 3 BUKAN regular language Mengapa L 3 bukan regular language? Language L 3 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, 2 nd edition, Addison-Wesley