Pertemuan 8
Bahasa
Mesin Automata
Batasan Produksi
Regular /
Tipe 3
Bebas
Konteks /
Context Free /
Tipe 2
Bahasa
Mesin Automata
Batasan Produksi
Context
Sensitive
/ Tipe 1
Unrestricted /
Phase
Structure /
Natural
Language /
Tipe 0
Mesin Turing
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
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.
Pertemuan 8
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)
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
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