Teori
Bahasa dan Automata
Penyederhanaan Tata Bahasa Bebas Konteks
Tujuan dari
penyederhaan ini adalah melakukan pembatasan sehingga tidak menghasilkan pohon
penurunan yang memiliki kerumitan yang tidak perlu atau memotong aturan
produksi yang tidak diperlukan.
Dalam tata bahasa bebas konteks ini dapat dilakukan dengan 3 cara, yaitu :
- Penghilangan produksi useless
- Penghilangan produksi unit
- Penghilangan produksi empty (π)
Penghilangan Produksi Useless
Penghilangan produksi useless, yaitu :
- Produksi yang memuat simbol variabel yang tidak memiliki penurunan yang akan menghasilkan simbol terminal.
- Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari symbol awal sehingga produksi itu redundan (berlebih).
Terdapat aturan produksi sebagai berikut
S → aB | C
B → e | Ab
C → bCb | adF | ab
F → cFB
Maka produksi yang useless beserta penjelasannya :
- B → Ab (A tidak mempunyai penurunan. Maka dapat di hapus)
- F → cFB (F tidak memiliki penurunan yang menuju ke terminal dan F adalah dirinya sendiri. Maka dapat dihapuskan)
- C → adF (konsekuensi pada no(2) aturan produksi C → adF tidak memiliki penurunan. Maka dapat dihapuskan)
Contoh 2 (useless) :
Terdapat aturan produksi sebagai berikut
S → Aa | B
A → ab | D
B → b | E
C → bb
E → aEa
Maka produksi yang useless beserta penjelasannya :
- A → D (D tidak memiliki penurunan. Maka dapat dihapuskan)
- C → bb (aturan produksi ini merupakan redundan karena penurunan dari simbol S dengan jalan manapun tidak akan pernah mencapai C. Maka dapat dihapuskan)
- E → aEa (E tidak memiliki penurunan yang menuju ke terminal dan E adalah dirinya sendiri. Maka dapat dihapuskan)
- B → E (konsekuensi pada no(3) aturan produksi B → E tidak memiliki penurunan. Maka dapat dihapuskan)
Penghilangan Produksi Unit
Penghilangan produksi unit, yaitu :
- Produksi unit merupakan suatu produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel, misalkan A → D.
- Penyederhanaan dilakukan dengan melakukan penggantian aturan produksi unit.
- Penggantian produksi unit dapat dilakukan dengan berurutan mulai dari aturan produksi yang paling dekat menuju ke penurunan terminal.
Terdapat aturan produksi sebagai berikut
S → Aa | B
B → A | bb
A → a | bc | B
Penggantian yang dilakukan ("⇒" dibaca "menjadi") yaitu :
B → A | bb ⇒ B → a | bc | bb
A → a | bc | B ⇒ A → a | bc | bb
S → Aa | B ⇒ S → Aa | a | bc | bb
Sehingga hasil penyederhaan unit :
Contoh 2 (unit) :
Terdapat aturan produksi sebagai berikut
S → A | Aa
A → B
B → C | b
C → D | ab
D → b
Penggantian yang dilakukan ("⇒" dibaca "menjadi") yaitu :
C → D | ab ⇒ C → b | ab
B → C | b ⇒ B → ab | b
A → B ⇒ A → ab | b
S → A | Aa ⇒ S → ab | b | Aa
Sehingga hasil penyederhanaan unit :
Penghilangan Produksi Empty (π)
Penghilangan produksi empty (π) yaitu :
- Produksi Ξ΅ merupakan produksi dalam bentuk Ξ± → π atau bisa dianggap sebagai produksi kosong
- Penghilangan produksi Ξ΅ dapat dilakukan dengan penggantian produksi yang memuat variabel yang bisa menuju produksi Ξ΅ atau bisa disebut nullable
S → Abc
A → π
A nullable, serta A → Ξ΅ merupakan
satu-satunya produksi dari A, maka variabel A dapat dihapuskan. Hasil
penyederhanaannya menjadi :
S → bc
Tetapi bila kasusnya :
S → Abc
A → cd | π
Dimana, A nullable tetapi A → Ξ΅ bukan
satu-satunya produksi dari A, maka hasil penyederhanaan nya menjadi :
S → Abc | bc
A → cd
Alur Penyederhanaan Tata Bahasa Bebas Konteks pada Latihan Kompleks
Penyederhanaan ini dilakukan dengan menyederhanakan produksi useless, unit, dan empty secara bersamaan atau sekaligus, yaitu dengan alur sebagai berikut :
Berikut adalah video penjelasan mengenai Penyederhaan Tata Bahasa Bebas Konteks ☺️
Contoh 1 (empty):
S → AB
A → abB ⏐ aCa ⏐ π
B → bA ⏐ BB ⏐ π
C → π
S → AB
A → abB ⏐ aCa ⏐ π
B → bA ⏐ BB ⏐ π
C → π
Variabel yang nullable adalah C, B, A.
Karena C → π merupakan satu-satunya produksi dari C, maka dapat langsung kita hapuskan :
A → aCa ⇒ A → aa
C → π kita hapus
C → π kita hapus
Selanjutnya, B → π dan A → π karena bukan
satu-satunya produksi, maka dapat kita ganti :
*karena variabel S → AB yang merupakan nullable, maka S bisa saja memproduksi empty, tetapi tidak akan dihapus karena merupakan produksi awal.
S → AB ⇒ S → AB ⏐ A ⏐ B ⏐ π
A → abB ⇒ A → abB ⏐ ab
B → bA ⏐ BB ⇒ B → bA ⏐ b ⏐ BB
B → π, A → π kita hapus
*karena variabel S → AB yang merupakan nullable, maka S bisa saja memproduksi empty, tetapi tidak akan dihapus karena merupakan produksi awal.
S → AB ⇒ S → AB ⏐ A ⏐ B ⏐ π
A → abB ⇒ A → abB ⏐ ab
B → bA ⏐ BB ⇒ B → bA ⏐ b ⏐ BB
B → π, A → π kita hapus
Sehingga hasil penyederhanaan empty :
Contoh 2 (empty) :
S → aBCD | bb | A | π
A → CDa | ef
B → b | Af | π
C → BbC | ea
D → π
Variabel yang nullable adalah S, B, D.
Karena D → Ξ΅ merupakan satu-satunya produksi dari D, maka dapat langsung kita hapuskan :
S → aBCD ⇒ S → aBC | bb | A | π
A → CDa ⇒ A → Ca | ef
D → π, dihapuskan.
Selanjutnya, B → π karena bukan satu-satunya produksi, maka dapat kita ganti :
*karena variabel S → aBC, C → BbC yang merupakan nullable, maka bisa saja memproduksi empty, tetapi tidak akan dihapus karena merupakan produksi awal.
S → aBC ⇒ S → aBC | bb | A | aC | π
C → BbC ⇒ C → BbC | ae | bC
B → π, kita hapus
Karena S nya tidak ada di ruas kanan jadi dapat kita hapuskan langsung.
Sehingga hasil penyederhanaannya empty :
Karena D → Ξ΅ merupakan satu-satunya produksi dari D, maka dapat langsung kita hapuskan :
S → aBCD ⇒ S → aBC | bb | A | π
A → CDa ⇒ A → Ca | ef
D → π, dihapuskan.
Selanjutnya, B → π karena bukan satu-satunya produksi, maka dapat kita ganti :
*karena variabel S → aBC, C → BbC yang merupakan nullable, maka bisa saja memproduksi empty, tetapi tidak akan dihapus karena merupakan produksi awal.
S → aBC ⇒ S → aBC | bb | A | aC | π
C → BbC ⇒ C → BbC | ae | bC
B → π, kita hapus
Karena S nya tidak ada di ruas kanan jadi dapat kita hapuskan langsung.
Sehingga hasil penyederhanaannya empty :
Alur Penyederhanaan Tata Bahasa Bebas Konteks pada Latihan Kompleks
Penyederhanaan ini dilakukan dengan menyederhanakan produksi useless, unit, dan empty secara bersamaan atau sekaligus, yaitu dengan alur sebagai berikut :
Contoh Latihan Kompleks
Terdapat aturan produksi sebagai berikut :
S → BACa
B → AC
A → dC ⏐ π
C → D ⏐ π
D → d
Langkah 1, Hilangkan produksi empty
A dan C Nullable, tetapi A → π, C → π bukan satu-satunya produksi yang menurunkan empty, maka dapat dilakukan penggantian :
S → BACa ⇒ S → BACa ⏐ BCa ⏐ BAa ⏐Ba
B → AC ⇒ B → AC ⏐ A ⏐ C⏐ π
A → dC ⇒ A → dC ⏐ d
A → π dan C → π, dihapuskan.
Karena variabel B menurunkan variabel yang akan menuju ke produksi empty, maka variabel B nullable. Kita lakukan Penggantian lagi :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⟹ S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → π dihapuskan.
Maka aturan produksi setelah penghilangan empty :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → AC ⏐ A ⏐ C
A → dC ⏐ d
C → D
D → d
Langkah 2, Hilangkan produksi unit dari hasil penghilangan empty diatas
Penggantian produksi unit :
C → D ⇒ C → d
B → C ⇒ B → d
B → A ⇒ B → dC ⏐ d
Maka aturan produksi setelah penghilangan produksi unit :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → AC ⏐ dC ⏐ d
A → dC ⏐ d
C → d
D → d
Langkah 3, Hilangkan produksi useless dari hasil penghilangan produksi unit diatas
D → d merupakan redundan, karena penurunan dari produksi S tidak akan pernah menuju ke variabel D. Maka D → d, dapat dihapuskan.
Hasil Penyederhanaan latihan kompleks adalah :
Terdapat aturan produksi sebagai berikut :
S → BACa
B → AC
A → dC ⏐ π
C → D ⏐ π
D → d
Langkah 1, Hilangkan produksi empty
A dan C Nullable, tetapi A → π, C → π bukan satu-satunya produksi yang menurunkan empty, maka dapat dilakukan penggantian :
S → BACa ⇒ S → BACa ⏐ BCa ⏐ BAa ⏐Ba
B → AC ⇒ B → AC ⏐ A ⏐ C⏐ π
A → dC ⇒ A → dC ⏐ d
A → π dan C → π, dihapuskan.
Karena variabel B menurunkan variabel yang akan menuju ke produksi empty, maka variabel B nullable. Kita lakukan Penggantian lagi :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⟹ S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → π dihapuskan.
Maka aturan produksi setelah penghilangan empty :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → AC ⏐ A ⏐ C
A → dC ⏐ d
C → D
D → d
Langkah 2, Hilangkan produksi unit dari hasil penghilangan empty diatas
Penggantian produksi unit :
C → D ⇒ C → d
B → C ⇒ B → d
B → A ⇒ B → dC ⏐ d
Maka aturan produksi setelah penghilangan produksi unit :
S → BACa ⏐ BCa ⏐ BAa ⏐ Ba ⏐ ACa ⏐ Ca ⏐ Aa ⏐ a
B → AC ⏐ dC ⏐ d
A → dC ⏐ d
C → d
D → d
Langkah 3, Hilangkan produksi useless dari hasil penghilangan produksi unit diatas
D → d merupakan redundan, karena penurunan dari produksi S tidak akan pernah menuju ke variabel D. Maka D → d, dapat dihapuskan.
Hasil Penyederhanaan latihan kompleks adalah :
Berikut adalah video penjelasan mengenai Penyederhaan Tata Bahasa Bebas Konteks ☺️
Semoga artikel dan video ini dapat membantu dalam mengerjakan soal-soal tentang Penyerderhanaan Tata Bahasa Bebas Konteks. Mohon maaf bila ada kesalahan dalam penulisan dan ucapan. Karena kesalahan hanya milik manusia dan kebenaran hanya milik Allah swt. Terima kasih☺️
Daftar Pustaka :
Materi 5 Tata Bahasa Bebas Konteks (Penyederhanaan) Dosen pengampu Teori Bahasa dan Automata : Garno, M.Kom Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang.
Repository.unikom.ac.id (2012/2013). Penyederhanaan Tata Bahasa Bebas Konteks diakses melalui https://repository.unikom.ac.id/45133/1/Penyederhanaan%20Tata%20Bahasa%20Bebas%20Konteks.pdf
Tidak ada komentar:
Posting Komentar