Mar 09

Untuk konversi dari RE (Regular Expression) ke DFA dapat dilakukan dengan menggunakan 2 cara, yaitu:

  1. Dengan menggunakan metode Thomson’s Construction (ɛ-NFA) lalu baru ke DFA
  2. Dengan menggunakan konversi ke tree terlebih dahulu

Berikut adalah contoh untuk konversinya:

RE:  ab(a|b)*ab* | ab(a|b)+ #

  1. Dengan cara ke – 1 :

– Langkah pertama gambarkan ɛ-NFA dari RE tersebut.

e-nfa

– Setelah itu tentukan ɛ-closure untuk mendapatkan state pada DFA, dengan cara sebagai berikut:

S0 = ɛ-closure(0) = {0, 1, 15}

ɛ-closure(move(S0, a)) =  ɛ-closure({2, 16}) = {2, 16} = S1

ɛ-closure(move(S0, b)) =  –

ɛ-closure(move(S1, a)) =  –

ɛ-closure(move(S1, b)) =  ɛ-closure({3, 17}) = {3, 4, 5, 7, 10, 17, 18, 20} = S2

ɛ-closure(move(S2, a)) =  ɛ-closure({6, 11, 19}) = {4, 5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 19, 20, 22, 23} = S3*

ɛ-closure(move(S2, b)) =  ɛ-closure({8, 21}) = {4, 5, 7, 8, 9, 10, 17, 18, 20, 21, 22, 23} = S4*

ɛ-closure(move(S3, a)) =  ɛ-closure({6, 11, 19}) =  S3*

ɛ-closure(move(S3, b)) =  ɛ-closure({8, 13, 21}) =  {4, 5, 7, 8, 9, 10, 12, 13, 14, 17, 18, 20, 21, 22, 23} = S5*

ɛ-closure(move(S4, a)) =  ɛ-closure({6, 11, 19}) =  S3*

ɛ-closure(move(S4, b)) =  ɛ-closure({8, 21}) =  S4*

ɛ-closure(move(S5, a)) =  ɛ-closure({6, 11, 19}) =  S3*

ɛ-closure(move(S5, b)) =  ɛ-closure({8, 13, 21}) =  S5*

– Selanjutnya, gambarkan state DFA tersebut:

dfa

– Selanjutnya DFA tersebut akan di minimalisasikan menjadi minimized DFA dengan cara:

table DFA

Berikut adalah gambar hasil dari Minimized DFA:

minimalisasi dfa

2.  Dengan cara ke- 2:

– Langkah pertama tentukan follow pos dari RE tersebut:

Follow pos 1 = 2

Follow pos 2 = 3, 4, 5

Follow pos 3 = 3, 4, 5

Follow pos 4 = 3, 4, 5

Follow pos 5 = 6

Follow pos 6 = 6, 11

Follow pos 7 = 8

Follow pos 8 = 9, 10

Follow pos 9 = 9, 10, 11

Follow pos 10 = 9, 10, 11

Follow pos 11 = –

– Langkah selanjutnyagambarkan treenya dari RE tersebut untuk menentukan S0:

1979866_830453936969700_2146734339_n

Didapat S0 = {1, 7}

– Selanjutnya buatlah table untuk menentukan dfanya:

a

b

S0

2, 8 = S1

S1

3, 4, 5, 9, 10 = S2

S2

3, 4, 5, 6, 9, 10, 11 = S3*

3, 4, 5, 9, 10, 11 = S4*

S3

3, 4, 5, 6, 9, 10, 11 = S3*

3, 4, 5, 6, 9, 10, 11 = S3*

S4

3, 4, 5, 6, 9, 10, 11 = S3*

3, 4, 5, 9, 10, 11 = S4*

Untuk hasil DFA dari cara ini didapat hasilnya merupakan DFA minimizednya sehingga gambarnya menjadi:

dfa akhir

Sekian penjelasan mengenai konversi RE ke DFA. Semoga bermanfaat untuk Anda :)

http://binus.ac.id

Leave a Reply