• 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!
8
0
0

Teks penuh

(1)

L

ecture

N

otes

Teori Bahasa dan Automata

Penyederhanaan Context Free Grammar

Thompson Susabda Ngoen

Pendahuluan

Context Free Grammar (CFG) terdiri atas sejumlah production yang berbentuk A → α dengan α berupa sejumlah simbol terminal dan non-terminal. Selain contex-free grammar terdapat jenis grammar lain yang disebut context-sensitive grammar (CSG). Perbedaannya dengan CFG adalah pada bentuk production. Bagian head production (simbol di kiri tanda panah) CFG selalu berupa satu simbol non terminal. Bagian head production CSG boleh terdiri atas sejumlah simbol.

Production berikut milik sebuah CFG 1. P → 0P0

2. P → 1P1 3. P → 0 4. P → 1 5. P → ε

Derivasi yang dapat dibentuk diantaranya P ⇒ 1P1 ⇒ 10P01 ⇒ 101P101 ⇒ 101101

sentential form 1P1 diturunkan dari sentential form P berdasarkan production 2. sentential form 10P01 diturunkan dari sentential form 1P1 berdasarkan production 1. Production berikut milik sebuah CSG

1. P → 0P0 2. 0P → 01P1 3. P → 0 4. P → 1 5. P → ε

Derivasi yang dapat dibentuk diantaranya P ⇒ 0P0 ⇒ 01P10 ⇒ 01110

Production nomor 2, 0P → 01P1, menyatakan simbol P boleh diderivasi dengan 1P1 hanya jika P berada di dalam konteks tertentu yaitu di sebelah kiri P terdapat simbol 0. Jadi P tidak free diderivasi menjadi 1P1, maksudnya tidak bisa membentuk derivasi P ⇒ 1P1 ⇒ 11P11 ⇒ 1111

Sepaham dengan namanya, production pada CFG mempunyai susunan body (simbol-simbol di kanan tanda panah) yang bebas, tidak ada ketentuan tentang jenis dan jumlah simbol pembentuk body suatu production. Terlalu bebasnya bentuk production CFG akan merepotkan implementasi.

Eliminasi Useless Production

Apakah semua production suatu CFG memang berguna (usefull) ? Simbol X pada grammar G = (V,T, P, S) disebut berguna jika terdapat derivasi S αXβ w dengan w terdiri atas simbol terminal. Dua persyaratan harus dipenuhi X untuk dianggap berguna:

1. generating, yaitu X w

maksudnya X dapat menghasilkan minimum satu buah string 2. reachable, yaitu S αXβ

(2)

Apakah production berikut usefull? 1. S → aSa 2. S → Abd 3. S → Bde 4. A → Ada 5. B → BBB 6. B→ a Uji generating

dengan menggunakan production 6 diperoleh B ⇒ a, artinya B generating dengan menggunakan production 3 diperoleh S ⇒ Bde

pada derivasi berikut kita akan menggantikan simbol B karena B generating maka S generating

dengan menggunakan production 4 diperoleh A ⇒ Ada ⇒ Adada

jika derivasi ini diteruskan maka tidak akan menghasilkan string karena simbol A tidak bisa diganti dengan simbol terminal, A tidak generating,

Production yang mengandung A dibagian head atau body dibuang, diperoleh

1. S → aSa 3. S → Bde 5. B → BBB 6. B→ a Uji reachable

S ⇒ Bde artinya B reachable dari S Hasil:

1. S → aSa

2. S → Bde

3. B → BBB

4. B→ a

Apakah production berikut usefull? 1. S → Aa 2. S → B 3. A → ab 4. A → D 5. B → b 6. B → E 7. C → bb 8. E → aEa Uji generating

dengan menggunakan production 3 diperoleh A ⇒ ab, artinya A generating dengan menggunakan production 5 diperoleh B ⇒ b, artinya B generating dengan menggunakan production 7 diperoleh C ⇒ bb, artinya C generating dengan menggunakan production 2 diperoleh S ⇒ B,

karena B generating maka S juga generating

tidak tedapat production dengan D sebagai head, D tidak generating dengan menggunakan production 8 diperoleh E ⇒ aEa ⇒ aaEaa

jika derivasi ini diteruskan maka tidak akan menghasilkan string karena simbol E tidak bisa diganti dengan simbol terminal, E tidak generating,

1. S → Aa 2. S → B 3. A → ab 5. B → b 7. C → bb

(3)

Uji reachable

S ⇒ Aa A reachable dari S S ⇒ B B reachable dari S

Tidak terdapat derivasi S ⇒ … ⇒ αCβ sehingga C tidak reachable dari S Dengan demikian production yang usefull adalah

1. S → Aa

2. S → B

3. A → ab

4. B → b

Eliminasi ε-Production

Di dalam CFG mungkin terdapat ε-production, production berbentuk A → ε. Production ini bermanfaat untuk membentuk empty string atau untuk mengakhiri suatu pengulangan. Production di bawah ini

1. P → 0P0 2. P → 1P1 3. P → 0 4. P → 1 5. P → ε

menggunakan P → ε untuk membentuk empty string (P ⇒ ε) dan mengakhiri pengulangan pada P ⇒ 0P0 ⇒ 00.

Jika sebuah language L mempunyai grammar CFG maka L – {ε} mempunyai CFG yang tidak mengandung ε-production.

Menghilang ε-production pada CFG diawali dengan mendeteksi variabel yang nullable. Sebuah simbol non terminal atau variabel A disebut nullable jika A ε. Apabila A muncul pada body production misalnya B → CAD maka production ini diubah menjadi dua versi, satu dengan A dan yang lain tanpa A.

Hilangkan ε-production di bawah ini 1. S → aAb

2. A → aAb 3. A → ε

Contoh string yang dihasilkan dari production di atas:

1) S ⇒ aAb ⇒ ab production 1, 3 2) S ⇒ aAb ⇒ aaAbb ⇒ aabb production 1, 2, 3 3) S ⇒ aAb ⇒ aaAbb ⇒ aaaAbbb ⇒ aaabbb production 1, 2, 2, 3 Dengan menggunakan production 3 diperoleh A ⇒ ε, artinya A nullable Apakah S nullable ? S ⇒ aAb ⇒ ab, artinya S tidak nullable

Pada production S → aAb terdapat sebuah simbol nullable yaitu A, Bentuk dua production:

S → aAb S → ab

Pada production A → aAb terdapat sebuah simbol nullable yaitu A, Bentuk dua production:

A → aAb A → ab

(4)

Hasil:

1. S → aAb

2. S → ab

3. A → aAb

4. A → ab

Contoh string yang dihasilkan dari keempat production tersebut: 1) S ⇒ ab production 2

2) S ⇒ aAb ⇒ aabb production 1, 4 3) S ⇒ aAb ⇒ aaAbb ⇒ aaabbb production 1, 3, 4 Hilangkan ε-production di bawah ini

1. S → ABaC 2. A → BC 3. B → b | ε 4. C → D | ε 5. D → d

Contoh string yang dihasilkan dari production di atas:

1) S ⇒ ABaC ⇒ BCBaC ⇒ CBaC ⇒ BaC ⇒ aC ⇒ a production 1, 2, 3b, 4b, 3b, 4b 2) S ⇒ ABaC ⇒ BCBaC ⇒ bCBaC production 1, 2, 3a

⇒ bDBaC ⇒ bdBaC ⇒ bdaC ⇒ bda production 4a, 5, 3b, 4b Dengan menggunakan production 3 diperoleh B ⇒ ε, artinya B nullable

Dengan menggunakan production 4 diperoleh C ⇒ ε, artinya C nullable Dengan menggunakan production 2 diperoleh A ⇒ BC

Karena B dan C nullable maka A juga nullable D dan S tidak nullable

Production S → ABaC mengandung 3 simbol nullable maka akan terbentuk 23 production:

S → ABaC | BaC | AaC | ABa | aC | Ba | Aa | a

Production A → BC mengandung 2 simbol nullable, akan terbentuk 22 production: A → BC | B | C

Salah lagi mana? A → ε, tidak digunakan Hasil: 1. S → ABaC 2. S → BaC 3. S → AaC 4. S → ABa 5. S → aC 6. S → Ba 7. S → Aa 8. S → a 9. A → BC 10. A → B 11. A → C 12. B → b 13. C → D 14. D → d

Contoh string yang dihasilkan keempat production tersebut: 1) S ⇒ a production 8

(5)

Eliminasi unit Production

Production berikut menghasilkan expression bahasa pemrograman 1. E → T | E + T

2. T → F | T * F 3. F → I | (E) 4. I → a | b

String b * (a + b) diperoleh dari derivasi:

E ⇒ T ⇒ T * F ⇒ F * F ⇒ I * F ⇒ b * F ⇒ b * (E) ⇒ b * (E + T) ⇒ b * (T + T) ⇒ b * (F + T) ⇒ b * (I + T) ⇒ b * (a + T)

⇒ b * (a + F) ⇒ b * (a + I) ⇒ b * (a + b)

Derivasinya cukup panjang dan parse tree-nya cukup panjang.

Penyebabnya adalah unit production. Unit production ialah production berbentuk A → B, pada contoh di atas berupa

E → T T → F F → I

Apabila unit production dihilangkan maka derivasi akan lebih singkat dan parse tree akan lebih pendek.

Variabel A membentuk unit pair (A,A).

Jika (A,A) adalah unit pair dan A → B adalah production maka terbentuk unit pair (A,B). Jika (A,B) adalah unit pair dan B → C adalah production maka terbentuk unit pair (A,C). Unit pair (X,Y) dan production Y → α membentuk production X → α

(E, E) dan E → T membentuk unit pair (E, T)

(E, T) dan T→ T * F membentuk production E → T * F (E, T) dan T → F membentuk unit pair (E, F)

(E, F) dan F→ (E) membentuk production E → (E) (E, F) dan F → I membentuk unit pair (E, I)

(E, I) dan I → a | b membentuk production E → a | b (T, T) dan T → F membentuk unit pair (T, F)

(T, F) dan F → (E) membentuk production T → (E) (T, F) dan F → I membentuk unit pair (T, I)

(T, I) dan I → a | b membentuk production T → a | b (F, F) dan F → I membentuk unit pair (F,I)

(F, I) dan I → a | b membentuk production F → a | b Hasil:

1. E → E + T | T * F | ( E ) | a | b

2. T → T * F | ( E ) | a | b

3. F → ( E ) | a | b

4. I → a | b

String b * (a + b) diperoleh dari derivasi: E ⇒ T * F ⇒ b * F ⇒ b * (E) ⇒ b * (E + T) ⇒ b * (a + T) ⇒ b * (a + b)

(6)

Hilangkan unit production di bawah ini 1. S → Aa | B

2. A → a | bc | B 3. B → A | bb

Contoh string yang dihasilkan:

1) S ⇒ Aa ⇒ Ba ⇒ bba production 1a, 2c, 3b 2) S ⇒ B ⇒ A ⇒ bc production 1b, 3a, 2b

Unit production:

S → B B → A A → B

(S, S) dan S → B membentuk unit pair (S, B)

(S, B) dan B → bb membentuk production S → bb (S, B) dan B → A membentuk unit pair (S, A)

(S, A) dan A → a | bc membentuk production S → a | bc (B, B) dan B → A membentuk unit pair (B. A)

(B, A) dan A → a | bc membentuk production B → a | bc (A, A) dan A → B membentuk unit pair (A, B)

(A, B) dan B → bb membentuk production A → bb Jika dikumpulkan semua maka hasilnya

1. S → Aa | a | bb | bc

2. A → a | bb | bc

3. B → a | bb | bc

Contoh string yang dihasilkan:

1) S ⇒ Aa ⇒ bba production 1a, 2b 2) S ⇒ bc production 1c Chomsky Normal Form

Kita telah melakukan penyederhaan production CFG dengan mengeliminasi simbol yang tidak berguna, ε-production, dan unit production. Ketiga proses ini tidak menjamin

terbentuknya production yang seragam, misalnya bagian body tidak lebih dari dua simbol. Chomsky Normal Form (CNF) adalah bentuk production

A → BC A → a

dengan A, B, dan C berjenis simbol non terminal dan a simbol terminal.

CFG yang tidak mengandung ε-production dapat diubah sehingga semua production-nya berbentuk CNF, dengan cara:

1. apabila body mengandung simbol terminal dan panjang body lebih dari satu maka gunakan variabel pembantu untuk menggantikan simbol terminal.

S → aBcD diuraikan menjadi S → ABCD

A → a C → c

2. uraikan body yang panjangnya tiga atau lebih menjadi sejumlah production yang panjangnya masing-masing dua dengan bantuan variabel baru.

S → ABCD diuraikan menjadi S → AE

E → BF F → CD

(7)

Ubah production berikut menjadi CNF 1. S → ABa

2. A → aab 3. B → Ac

Ubah simbol terminal 1. S → ABa menjadi S → ABC (1a) C → a (1b) 2. A → aab menjadi A → CCD (2a) D → b (2b) 3. B → Ac menjadi B → AE (3a) E → c (3b)

Ubah body yang panjang lebih dari dua 1a. S → ABC menjadi

S → AF F → BC 2a. A → CCD menjadi A → CG G → CD Hasil: 1. S → AF 2. F → BC 3. C → a 4. A → CG 5. G → CD 6. D → b 7. B → AE 8. E → c

Ubah production berikut menjadi CNF 1. E → E + T | T * F | ( E ) | a | b 2. T → T * F | ( E ) | a | b 3. F → ( E ) | a | b 4. I → a | b

Ubah simbol terminal 1a. E → E + T menjadi E → EPT (a) P → + 1b. E → T * F menjadi E → TMF (b) M → * 1c. E → (E) menjadi E → LER (c) L → ( R → )

Ubah body yang panjangnya lebih dari dua (a). E → EPT menjadi

E → EC1

(8)

(b). E → TMF menjadi E → TC2 C2 → MF (c). E → LER menjadi E → LC3 C3 → ER Hasil: 1. E → EC1 | TC2 | LC3 | a | b 2. T→ TC2 | LC3 | a | b 3. F → LC3 | a | b 4. I → a | b 5. P → + 6. M → * 7. L → ( 8. R → ) 9. C1 → PT 10. C2 → MF 11. C3 → ER Referensi

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

Linz, P., (1990), An Introduction to Formal Languages and Automata, D.C. Heath and Co.

Martin, J. C. (1991), Introduction to Languages and the Theory of Computation, McGraw-Hill

Referensi

Dokumen terkait

Perusahaan yang memiliki banyak pengalaman dalam strategi aliansi juga mampu mengelola portofolio aliansinya dengan baik, sehingga akan meningkatkan keragaman sumber daya

Akan tetapi nilai jual buah naga merah dapat mengalami penurunan harga ketika panen raya terjadi, hal ini karena waktu panen buah naga terjadi bersamaan, Buah

Keunikan tersebut karena Rumah Sakit merupakan organisasi dengan produknya adalah jasa pelayanan yang berhubungan dengan kesehatan manusia, sehingga harus ada

Barang-barang yang tidak digunakan baik makanan atau bahan lain disimpan di Barang-barang yang tidak digunakan baik makanan atau bahan lain disimpan di tempat penyimpanannya

Dalam kaitannya dengan hal tersebut, BBKSDA Jawa Timur selaku UPT yang menangani langsung lembaga konser- vasi telah mengadakan pembinaan yang disambut baik oleh pihak

Salah satu bentuk kenakalan remaja yang terus mengalami peningkatan dalam masyarakat Jepang adalah prostitusi remaja putri (White, 1993: 163).. Sejak pertengahan tahun

Produksi panas dalam tubuh tergantung dari kegiatan fisik tubuh, makanan yang telah atau sedang dikonsumsi, pengaruh panas tubuh sendiri, misalnya pada keadaan demam (Suma’mur P.K.,

tegangan dari saluran itu pada faktor-daya tertentu yang dinyatakan de.. Iam prosen (perserahrs) tertradap nilai tegangan penerJma pada