Anda di halaman 1dari 15

Teknik Kompilasi

04 / 1 - 15

FINITE AUTOMATA (OTOMATA BERHINGGA)


NON DETERMINISTIC FINITE AUTOMATA (NFA) Model Matematika terdiri dari : a. Himpunan state dinyatakan dengan S b. Himpunan simbol input (alfabet simbol) dinyatakan dengan c. Fungsi transisi pindah (move) untuk memetakan pasangan state-simbol ke himpunan state. d. State S0 disebut sebagai state awal. e. Himpunan state F disebut sebagai state penerima (accepting state) Diagram Transisi (representasi NFA) simbol input yang sama bisa melabeli dua atau lebih transisi yang keluar dari

Teknik Kompilasi

04 / 2 - 15

state yang sama dan simbol menggambarkan transisi kosong. DETERMINISTIC FINITE AUTOMATA (DFA) a. Tidak ada peralihan atas input b. Setiap state S dan simbol input a, paling banyak satu sisi dengan label input a yang meninggalkan S

KEUNTUNGAN DAN KERUGIAN


1. DFA lebih cepat menghasilkan suatu pengenal 2. Ukuran DFA lebih besar daripada NFA untuk mengenal RE yang sama Contoh : Bahasa menerima RE : (a | b)* abb

Teknik Kompilasi

04 / 3 - 15

Diagram Transisi pada DFA :

Diagram Transisi pada NFA

S = { 0,1,2,3} adalah Himpunan State = {a,b} adalah alfabet simbol input S0= {0} ; F = {3}

Teknik Kompilasi

04 / 4 - 15

Implementasi fungsi peralihan NFA digunakan Tabel Translasi (Translation Table)


State 0 1 2 Input Symbol a {0,1} b {0} {2} {3}

KONVERSI RE KE NFA
Merupakan salah satu strategi untuk membentuk sebuah pengenal dari sebuah RE Algoritma : Thompsons Construction Input : RE r pada alfabet Output : NFA N yang menerima L(r) Metode: Menguraikan r menjadi subexpression

Teknik Kompilasi

04 / 5 - 15

Gunakan

aturan (1) dan (2) berikut untuk membentuk NFA untuk setiap simbol dasar dari r (meru-pakan simbol alfabet atau ) NFA tersebut dikombinasikan secara induksi dengan menggunakan aturan (3) berikut. Aturan : 1) Untuk , dibentuk NFA :
start
i

Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenal {}

2) Untuk a di dalam , bentuk NFA :


start
i

Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenal {a}

Teknik Kompilasi

04 / 6 - 15

3) Misalkan N(s) dan N(t) adalah NFA untuk regular expression s dan t : a) Untuk RE (s|t) bentuk NFA gabungan N(s|t)

start

N(s)

N(t)

b)

Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenali L(s) L(t)

Untuk RE st, gabungan N(st)


i N(s)

bentuk

NFA

start

N(t)

Dimana : - Start state N(s) menjadi NFA gabungan

start state

Teknik Kompilasi

04 / 7 - 15

- Accepting state N(t) menjadi accepting state dari NFA gabungan - NFA ini mengenali L(s) L(t)

(c)

Untuk RE s*, bentuk gabungan N(s)*.

NFA

start

N(s)

Dimana

: i : start state yang baru f : accepting state yang baru NFA ini mengenali (L(s))*

(d) Untuk RE didalam kurung: (s), gunakan N(s) itu sendiri sebagai NFA yang baru.

Teknik Kompilasi

04 / 8 - 15

Algoritma di atas menghasilkan sebuah NFA N(r) yang memiliki sifat-sifat sebagai berikut : 1. N(r) mempunyai state paling banyak dua kali jumlah simbol dan operator di dalam r. 2. N(r) mempunyai tepat satu start state dan satu accepting state. Accepting state tidak memiliki transisi ke luar. 3. Setiap state di N(r) mempunyai satu transisi keluar untuk sebuah simbol di dalam atau paling banyak dua transisi keluar untuk simbol (transisi ).

Teknik Kompilasi

04 / 9 - 15

Contoh : Berdasarkan algoritma tersebut bentuk NFA N(r) dari RE : (a | b)* abb

2 a 3

start

10

KONVERSI RE KE DFA
Strategi pembuatan DFA dari RE dengan mengikuti aturan berikut : Augmental RE r# Dibuat pohon sintaks dari Augmental RE r dan posisinya

Teknik Kompilasi

04 / 10 - 15

RE a|b ab a* dan a+

Syntax tree | a b a b * a
+

dan

Rules untuk menentukan nullable, firstpos, lastpos

Teknik Kompilasi

04 / 11 - 15

Node n Jika n=leaf dilabeli Jika n=leaf dilabeli i n | C1 c2

Nullable (n) True

Firstpos (n)

Lastpost (n)

False Nullable( c1) Nullable( c2)

{i} Firstpos(c 1) Firstpos(c 2)

{i} Lastpos(c 1) Lastpos(c 2)

Teknik Kompilasi

04 / 12 - 15

n c1 c2

Nullable( c1) Nullable( c2)

If nullable(c 1) Then Firstpos(c 1) Firstpos(c 2) Else Firstpos(c 1) Firstpos(c 1)

If nullable(c 2) Then Firstpos(c 1) Firstpos(c 2) Else Firstpos(c 2) Lastpos(c 1)

n
C2

True

Rules untuk menentukan followpos 1. Jika n adalah cat-node left-child c1 dan right-child c2, dan i adalah posisi dalam lastpos (c1) maka semua posisi dalam lastpos (c2) adalah followpos ( i )

Teknik Kompilasi

04 / 13 - 15

2. Jika

n adalah node start dan i adalah posisi dalam lastpos (n) maka semua posisi dalam firstpos (n) adalah dalam followpos (i)

Contoh : Berdasarkan algoritma di atas bentuk DFA dari RE : r = (a | b)* abb Maka augmental RE r# r = ( a ) * abb# b
1 2 3 4 5 6

Pohon sintaks untuk firstpost, lastpos :


{1,2,3} {1,2,3} {1,2,3} {1,2,3}

{6} {6}# {6}


F

{5}

{4}

{5} b {5}
F F

{3} {3}

{4}b {4}
a F {3}

{1,2}* {1,2} T {1,2} {1,2}

a {1} F {1} {2}

b F

{2}

Jadi Root yang diperoleh dari pohon sintaks adalah {1,2,3} = A

Teknik Kompilasi

04 / 14 - 15

Penomoran posisi hanya pada leaf dan dimulai dari kiri bawah (depth-left-first)

Pohon sintaks untuk Folowpos (n) : Himpunan posisi semua simbol terletak pada sesudah symbol pada posisi n
Node 1 2 3 4 5 6 Followpos {1,2,3} {1,2,3} {4} {5} {6} -

Digraph untuk fungsi followpos :


1
33 2 2 44 5 5 6 6

Teknik Kompilasi

04 / 15 - 15

State A
{1,2,3}

Input a followpos (1) Followpos(3) = {1, 2, 3, 4} = B Followpos (1) Followpos (3) = {1,2, 3, 4} = B Followpos (1) Followpos (3) = {1, 2, 3, 4 } = B Followpos (1) Followpos (3) = {1, 2, `3, 4} = B B followpos (2) = {1, 2, 3} = A followpos (2) followpos (4) = {1, 2, 3, 5} = C followpos (2) followpos (5) = {1, 2, 3, 6} = D followpos (2) = {1, 2, 3 } =A

B
{1,2,3,4}

C
{1,2,3,5}

D
{1,2,3,6}

Maka bentuk DFA nya adalah:


b start
A

b a a
B

b a

b a

Anda mungkin juga menyukai