Anda di halaman 1dari 25

CSH2B3

Teori Bahasa dan Automata

Context Free Grammar

KK Intelligence, Computing, and Multimedia

Pertemuan 8

Context Free Grammar

Teori Komputasi | CSG3D3

Penggolongan Tingkat / Tipe Bahasa [1]


Pada tahun 1959, Noam Chomsky menggolongkan
bahasa menjadi 4 tingkatan (dikenal dengan
Hirarki Chomsky)

Teori Komputasi | CSG3D3

Penggolongan Tingkat / Tipe Bahasa [2]

Bahasa

Mesin Automata

Batasan Produksi

Regular /
Tipe 3

Finite State Automata


(FSA) meliputi
Deterministic Finite
Automata (DFA) dan Non
Deterministic Finite
Automata (NFA)

adalah sebuah simbol


variabel
maksimal memiliki
sebuah simbol variabel
yang bila ada terletak
paling kanan

Bebas
Konteks /
Context Free /
Tipe 2

Push Down Automata


(PDA)

adalah sebuah simbol


variabel

Teori Komputasi | CSG3D3

Penggolongan Tingkat / Tipe Bahasa [3]

Bahasa

Mesin Automata

Batasan Produksi

Context
Sensitive
/ Tipe 1

Linier Bounded Automata || <= ||

Unrestricted /
Phase
Structure /
Natural
Language /
Tipe 0

Mesin Turing

Tidak ada batasan

Teori Komputasi | CSG3D3

Context Free Grammar [1]


CFG banyak digunakan untuk menentukan
struktur bahasa pemrograman (parser).
Belakangan CFG digunakan untuk merumuskan
struktur XML.
Contoh informal :
Palindrom (untai yang terbaca sama dari depan atau
belakang)
Otto, madamimadam, 0110, 11011,

Teori Komputasi | CSG3D3

Context Free Grammar [2]


Tata bahasa bebas konteks adalah suatu notasi
formal untuk menyatakan definisi rekursif dari
suatu bahasa.
Tata bahasa terdiri atas satu atau lebih variable
yang mewakili kelas-kelas untai.
Terdapat aturan yang menyatakan bagaimana tiap
untai dibangun.
Aturan ini menghasilkan alfabet, untai lain yang
telah diketahui, atau keduanya.

Teori Komputasi | CSG3D3

Context Free Grammar [3]


CFG dapat didefiniskan secara formal ke dalam
bentuk
G = (V, T, S, P) di mana

V adalah himpunan variabel


T adalah himpunan terminal
S adalah starting symbol
P adalah himpunan aturan produksi

Teori Komputasi | CSG3D3

Bagaimana dengan ekspresi aritmatik?


Masih ingat ekspresi
(a + b * (a + b * a))
(a + b)
(a * b)
(a * b) + a
Atau operasi aritmetik lainnya??
Atau ekspresi lainnya, seperti SQL querry, logika
proposisi, dll.
Bagaimana CFG-nya??

Teori Komputasi | CSG3D3

Jawab (ekspresi aritmatika sederhana)


G = ({E, I}, {a,b,+,*}, E, P),
di mana P adalah himpunan aturan produksi
berikut
EI
EE+E
EE*E
E(E)
Ia
Ib

Teori Komputasi | CSG3D3

Derivasi [1]
Sebagaimana Regular Grammar, CFG akan
menghasilkan string melalui derivasi atau penurunan
Namun, di CFG muncul persoalan baru, di mana CFG
harus menentukan variabel mana yang akan
diturunkan terlebih dahulu (karena boleh ada lebih dari
1 simbol variabel)
Contoh :
S zMNz
M aMa
Mz
N bNb
Nz
Teori Komputasi | CSG3D3

Derivasi [2]
Ada dua pendekatan yang dapat dipakai: (1) leftmost
derivation dan (2) rightmost derivation, dalam
menghasilkan sebuah string
Leftmost derivation
S zMNz zaMaNz zazaNz zazabNbz
zazabzbz
Rightmost derivation
S zMNz zMbNbz zMbzbz zaMabzbz
zazabzbz
Proses derivasi dalam menghasilkan string dapat pula
dinyatakan dalam bentuk parse tree
Teori Komputasi | CSG3D3

Context-Free Language [1]


Proses derivasi CFG juga dapat digunakan untuk
menghasilkan bahasa dari CFG tersebut, atau dengan
kata lain, menghasilkan sekumpulan string yang
disebut sebagai bahasa context-free.
Sebuah string (misalnya w) dikatakan dapat
dihasilkan / di-generate oleh sebuah CFG (misalnya
G) jika:
Proses derivasi dimulai dari starting variable dan
dengan mengaplikasikan production rules, dapat
diakhiri hasilnya dengan string w tersebut.
Jadi, bahasa context-free (misalnya L) yang dihasilkan
oleh CFG (misalnya G) merupakan semua string yang
dapat diturunkan dengan mengaplikasikan semua
kemungkinan production rules sehingga menghasilkan
Teori Komputasi | CSG3D3

Context-Free Language [2]


Contoh, diketahui G = ({A,B}, {0,1}, A, P), di
mana P adalah
A 0AB | 0
B 1B | 1
Maka, string yang dapat diterima di antaranya:
0, berasal dari derivasi: A 0
001, berasal dari derivasi: A 0AB 00B 001
0011, berasal dari derivasi: A 0AB 00B 00B1
0011
dst.

Jadi, bahasa context-free yang dihasilkan oleh G


adalah
Teori Komputasi | CSG3D3

Catatan
Berdasarkan diagram Hirarki Chomsky, tata
bahasa Regular ada di dalam tata bahasa
Context-Free.
Artinya, setiap bahasa Regular, dapat dinyatakan
pula dalam bahasa Context-Free.
Maka, kita dapat membentuk sebuah CFG yang
berasal dari sebuah Regular Expression.

Teori Komputasi | CSG3D3

Pertemuan 8

Soal-soal dan Latihan

Teori Komputasi | CSG3D3

Contoh 1 [1]
Sebuah CFG untuk menghasilkan bahasa dengan
aturan:
L = {0n1n, n = jumlah kemunculan simbol}, yang
artinya jumlah kemunculan simbol 0 sama dengan
jumlah kemunculan simbol 1.
Berikut CFG untuk bahasa di atas.
G = ({S}, {0,1}, S, P), di mana P adalah
S 0S1
S
Note: simak dan kaji CFG di atas
Teori Komputasi | CSG3D3

Contoh 1 [2]
S 0S1
(1)
S
(2)
String 0011 adalah salah satu string dari bahasa CFG di
atas, yang dihasilkan dari derivasi
S 0S1 00S11 0011
Keterangan:
rule (1)

- S 0S1

mengaplikasikan production

- 0S1 00S11

mengaplikasikan production

- 00S11 0011

mengaplikasikan production

rule (1)
rule (2)

Untuk penyederhanaan, kita tuliskan sebagai berikut.

Teori Komputasi | CSG3D3

Contoh 2
Palindrom, jika diberikan alphabet = {a,b}.
Jika dari sebuah string palindrom diambil 1 simbol pertama
dan terakhir, maka hasilnya masih berupa palindrom; dan
begitu seterusnya.
Berikut CFG untuk bahasa di atas.
G = ({S}, {0,1}, S, P), di mana P adalah
S aSa | bSb |
Perhatikan bahwa CFG di atas hanya menghasilkan string
palindrom dengan panjang string genap (tidak ada huruf
tengah).
Bagaimana untuk palindrom dengan panjang string ganjil?
Bagaimana CFG untuk mengatasi keduanya (panjang string
genap dan ganjil sekaligus)??
Teori Komputasi | CSG3D3

Contoh 3
CFG yang disusun untuk memenuhi Ekspresi Reguler.
R = 00*11*
Catatan: ekspresi di atas sebetulnya merupakan
concatenation dari dua buah ekspresi, yaitu
perulangan 0 (min. 1 buah 0) lalu dilanjutkan
dengan perulangan 1 (min. 1 buah 1)
Maka, CFG yang sesuai untuk R di atas adalah
G = ({S,C,D}, {0,1}, S, P), di mana P adalah
S CD
C 0C | 0
D 1D | 1
Teori Komputasi | CSG3D3

Contoh 4 [1]
A CFG for all binary strings with an even number
of 0s.
Find the decomposition. If first symbol is 1, then
even number of 0s remain. If first symbol is 0,
then go to next 0; after that again an even
number of 0s remain.
This yields:
S 1S | 0A0S |
A 1A |
Teori Komputasi | CSG3D3

Contoh 4 [2]
Alternate CFG for Even 0s.
Here is another CFG for the same language. Note
that when first symbol is 0, what remains has odd
number of 0s.
S 1S | 0T |
T 1T | 0S

Teori Komputasi | CSG3D3

Latihan [1]
Buatlah CFG yang dapat menghasilkan bahasa
L = {anbmck, di mana k = n+m}
Buatkan sebuah CFG yang mengenali bahasa
L = {(ab)ncn | n>0 dan n ganjil}. Contoh string
yang dihasilkan antara lain: abc, ababcc,
abababccc, ...
Buatlah CFG yang dapat menghasilkan bahasa
L = {an(bc)m | m adalah bilangan ganjil positif dan
n adalah 2m}
Teori Komputasi | CSG3D3

Latihan [2]
Make a CFGs production rules for the following
two languages:
1. All binary strings with both an even number of
zeroes and an even number of ones.
2. All strings of the form 0a1b0c such that a + c =
b.
(Hint: its the concatenation of two simpler
languages)
Teori Komputasi | CSG3D3

THANK YOU

Anda mungkin juga menyukai