OTOMATA dan PENGANTAR KOMPILASI
OTOMATA dan PENGANTAR KOMPILASI
Nama Kelompok :
Nama Kelompok :
1.1.
Rico
Rico Andry
Andry
(B/09120006)
(B/09120006)
2.2.
Tara braja
Tara braja (B/0
(B/091200
9120020)
20)
3.BAB I
BAB I
Pertanyaan : Pertanyaan :
Carilah artikel melalui koran / internet mengenai mesin automaton? Carilah artikel melalui koran / internet mengenai mesin automaton? Jawaban:
Jawaban:
Ini merupakan deskripsi informasi dari automata : Ini merupakan deskripsi informasi dari automata :
Sebuah robot seharusnya dijalankan pada beberapa urutan yang diberikan atau Sebuah robot seharusnya dijalankan pada beberapa urutan yang diberikan atau st
striring ng mamasusukakan n dadalalam m lalangngkakah h wawaktktu u didiskskritrit. . PaPada da sesetitiap ap lalangngkakah h wawaktktu, u, rorobobott mendapat satu masukan yang diambil dari satu set simbol/huruf yang disebut alphabet. mendapat satu masukan yang diambil dari satu set simbol/huruf yang disebut alphabet. Pada waktu, simbol sejauh diumpankan ke otomat sebagai bentuk masukan suatu finite Pada waktu, simbol sejauh diumpankan ke otomat sebagai bentuk masukan suatu finite simbol, yang disebut kata. Sebuah robot berisi satu set hingga negara. Pada setiap simbol, yang disebut kata. Sebuah robot berisi satu set hingga negara. Pada setiap lan
langkagkah h saasaat t otootomat mat memmembacbaca a simsimbolbol, , melmelompompat at atau atau tratransinsit t ke ke negnegara ara berberikuikutnytnyaa tergantung pada keadaan saat ini dan simbol dibaca. Fungsi lebih dari keadaan saat ini. tergantung pada keadaan saat ini dan simbol dibaca. Fungsi lebih dari keadaan saat ini.
Simbol input disebut dengan fungsi transisi. Kata
Simbol input disebut dengan fungsi transisi. Kata robot membaca masukan saturobot membaca masukan satu simbol demi satu urutan dan transit dari negara ke negara sesuai dengan fungsi transisi, simbol demi satu urutan dan transit dari negara ke negara sesuai dengan fungsi transisi, sampai kata dibaca sepenuhnya. Setelah kata masukan dibaca, otomat dikatakan telah sampai kata dibaca sepenuhnya. Setelah kata masukan dibaca, otomat dikatakan telah berhenti dan keadaan dimana robot telah berhenti disebut keadaan akhir. Tergantung berhenti dan keadaan dimana robot telah berhenti disebut keadaan akhir. Tergantung p
padada a kekeadadaaaan n akakhihir, r, didikakatatakakan n babahwhwa a ototomomat at babaik ik memenenerimrima a atatau au memenonolak lak kakatata masukan. Ada bagian dari negara bagian otomat, yang didefinisikan sebagai satu set masukan. Ada bagian dari negara bagian otomat, yang didefinisikan sebagai satu set negara penerim
negara penerima. a. Jika keadaan akhir Jika keadaan akhir adalah menerimadalah menerima a negaranegara, , maka otomat menerimamaka otomat menerima kata. Jika tidak, kata ditolak. Himpunan semua kata diterima oleh robot ini disebut kata. Jika tidak, kata ditolak. Himpunan semua kata diterima oleh robot ini disebut bahasa diakui oleh otomat tersebut.
bahasa diakui oleh otomat tersebut.
Dalam definisi formal, automaton robot diwakili secara resmi oleh 5-tuple Q [], ∑, δ , Dalam definisi formal, automaton robot diwakili secara resmi oleh 5-tuple Q [], ∑, δ , dimana:
-- Q Q adadalaalah h hihimpmpununan an terterhihingngga ga nenegagarara
-- ∑ adal∑ adalah himah himpunpunan teran terbatbatas daras dari simbi simbol, yol, yang dang diseisebut albut alfabfabet daret dari otomi otomatat tersebut.
tersebut.
-- δ adalah fungsi transisi, yaitu , δ: Q x ∑ = Qδ adalah fungsi transisi, yaitu , δ: Q x ∑ = Q
-- F adalah seperangkat negara Q yang disebutF adalah seperangkat negara Q yang disebut menerima negaramenerima negara
Masukan kata Masukan kata
Sebuah robot membaca hingga string simbol a1, a 2, a 3,... ,a n dimana i
Sebuah robot membaca hingga string simbol a1, a 2, a 3,... ,a n dimana i ∈∈ ∑,∑,
yang disebut kata masukan. Set semua
yang disebut kata masukan. Set semua kata dilambangkan dengan ∑*.kata dilambangkan dengan ∑*.
Menjalankan Menjalankan
Sebuah run robot pada kata w input = a1, a2, ..., n
Sebuah run robot pada kata w input = a1, a2, ..., n ∈∈* ∑, merupakan urutan* ∑, merupakan urutan
negara
negara-negara q0, -negara q0, q1, q3,....,q1, q3,....,qn, Dimana qn, Dimana q1q1 ∈∈ Q seperti yang q0 adalah negara mulaiQ seperti yang q0 adalah negara mulai
dan qi = δ (qi-1,i) untuk 0 ≤ i ≤n. Dengan kata, pada awalnya robot berada pada negara dan qi = δ (qi-1,i) untuk 0 ≤ i ≤n. Dengan kata, pada awalnya robot berada pada negara awal q 0 dan kemudian automaton membaca simbol dari kata input secara berurutan. awal q 0 dan kemudian automaton membaca simbol dari kata input secara berurutan. Ketika robot membaca simbol ai maka itu melompat ke negara i q= δ (a i-1,i). q n Ketika robot membaca simbol ai maka itu melompat ke negara i q= δ (a i-1,i). q n dikatakan sebagai keadaan akhir yang dijalankan.
dikatakan sebagai keadaan akhir yang dijalankan.
Menerima kata Menerima kata
Sebuah kata w
Sebuah kata w ∈∈ ∑* diterima oleh otomat jika n q∑* diterima oleh otomat jika n q ∈∈ F.F.
Diakui bahasa Diakui bahasa
Sebuah robot dapat mengenali bahasa formal. Bahasa diakui L∑ oleh robot Sebuah robot dapat mengenali bahasa formal. Bahasa diakui L∑ oleh robot adalah himpunan semua kata yang diterima oleh otomat tersebut.
Dikenali bahasa Dikenali bahasa
Ini bahasa dikenali adalah set dari bahasa yang diakui oleh beberapa otomat. Ini bahasa dikenali adalah set dari bahasa yang diakui oleh beberapa otomat. Untuk definisi di atas, otomata bahasa dikenali adalah bahasa reguler. Untuk definisi Untuk definisi di atas, otomata bahasa dikenali adalah bahasa reguler. Untuk definisi yang berbeda dari automata, bahasa yang dikenali berbeda.
yang berbeda dari automata, bahasa yang dikenali berbeda.
Variansi dalam definisi automata Variansi dalam definisi automata
Au
Autotomamata ta dididedefinfinisisikikan an ununtutuk k bebelalajar jar memesisin n bebergrgununa a dadalalam m foformrmalalisismeme matematis. Jadi, definisi robot terbuka untuk variasi sesuai dengan “ mesin dunia nyata” matematis. Jadi, definisi robot terbuka untuk variasi sesuai dengan “ mesin dunia nyata” yang kita ingin model menggunakan robot tersebut. Orang-orang telah mempelajari yang kita ingin model menggunakan robot tersebut. Orang-orang telah mempelajari banyak variasi automata. Di atas, standar varian paling dijelaskan, yang disebut otomat banyak variasi automata. Di atas, standar varian paling dijelaskan, yang disebut otomat
hin
hingga gga detdetermerminiinististik. k. BerBerikuikut t ini ini adaadalah lah bebbeberaperapa a varvariasiasi i poppopuleuler r daldalam am defdefiniinisisi komponen yang berbeda dari automata.
komponen yang berbeda dari automata. Input
Input
-- HiHingngga iga inpnput : Seut : Sebbuauah roh robbot yot yanang hag hanynya mea mennererimima hia hingngga uga ururutatan kan katata-k-katata.a. Definisi pendahuluan di atas menggambarkan automata
Definisi pendahuluan di atas menggambarkan automata dengan nomor hingga negara.dengan nomor hingga negara.
-- Infinite menyatakan : sebuah robot yang mungkin tidak memiliki jumlah yangInfinite menyatakan : sebuah robot yang mungkin tidak memiliki jumlah yang terbatas dari negara, atau bahkan dapat dihitung sejumlah
terbatas dari negara, atau bahkan dapat dihitung sejumlah
negara.
negara.
Sebuah contoh,Sebuah contoh, hingga otomat kuantum atau otomat topologi memiliki tak terhingga ta terhitung negara, hingga otomat kuantum atau otomat topologi memiliki tak terhingga ta terhitung negara,-- MMeemmoorri i SSttaacckk: : sseebbuuaah h oottoommaat t jjuugga a ddaappaat t mmeennggaanndduunng g bbeebbeerraappa a mmeemmoorrii tambahan dalam bentuk stack dimana simbol dapat didorong dan muncul. Semacam ini tambahan dalam bentuk stack dimana simbol dapat didorong dan muncul. Semacam ini disebut otomat push down.
disebut otomat push down. Fungsi transisi
-- DeDetetermrmininisistitikk: : UnUntutuk kok kondndisisi saai saat t inini dibi dibererikikan daan dan sin simbmbol inol inpuput, jit, jika roka robbotot ha
hanynya a dadapapat t memelolompmpat at ke ke sasatu tu dadan n hahanynya a sasatu tu nenegagara ra mamaka ka ititu u adadalalah ah ototomomatat deterministik.
deterministik.
-- SeSebubuah rah roobobot yat yanng seg setetelalah meh memmbabaca sca sebebuuah sah simimbbol iol inpnputut, da, dappat mat melelomompapat ket ke sa
salalah h sasatu tu dadari ri sesejujumlmlah ah nenegagara, ra, sesepepertrti i yayang ng didililisesensnsi i ololeh eh huhububungngan an trtranansisisisi.. Perhatikan bahwa fungsi transisi istilah
Perhatikan bahwa fungsi transisi istilah digantikan oleh hubungan transisi: otomat non-digantikan oleh hubungan transisi: otomat non--- dedetetermrmininisistitik mek memumututuskskan uan untntuk muk melelomompapat ke st ke salalah sah satatu piu pililihahan yan yang dng diiiizizinknkanan robot seperti ini disebut otomat nondeterministic,
robot seperti ini disebut otomat nondeterministic,
-- AlAlteternrnatatif : gagif : gagasasan inan ini sai sangngat mat miririp dip denenggan roan robobot pot pohhon , teon , tetatapi orpi orththogogononalal.. Robot mungkin menjalankan beberapa salinan terhadap membaca simbol berikutnya Robot mungkin menjalankan beberapa salinan terhadap membaca simbol berikutnya yan
yang g samsama. a. AutAutomaomata ta sepseperterti i ini ini disdisebuebut t bolbolak ak otootomatmat. . KoKondindisi si PenPenerierimaamaan n harharusus memenuhi semua berjalan salinan tersebut untuk menerima input.
memenuhi semua berjalan salinan tersebut untuk menerima input. Penerimaan kondisi
Penerimaan kondisi
-- PPeenneerriimmaaaan n kkaattaa-k-kaatta a hhiinnggggaa: : SSamama a sseeppeerrtti i yyaanng g ddiijjeellaasskkan an ddaallam am ddeefifinniissii informal diatas.
informal diatas.
-- PPeenneerriimmaaaan n kkaattaa-k-kaatta a yyaanng g ttaak k tteerrbbaattaass: : oommegega a rorobboot t ttiiddaak k ddaappat meat memmiilliikkii negara akhir, seperti kata-kata yang tidak terbatas tidak pernah berakhir. Sebaliknya, negara akhir, seperti kata-kata yang tidak terbatas tidak pernah berakhir. Sebaliknya, penerimaan dari kata tersebut telah ditetapkan dengan melihat urutan yang tidak terbatas penerimaan dari kata tersebut telah ditetapkan dengan melihat urutan yang tidak terbatas
negara-negara
negara-negara yang dyang dikunjungi ikunjungi selama menjalankselama menjalankan.an.
-- PePeneneririmamaan Pan Prorobababibililiststikik: se: sebubuah rah robobot tot tididak pak pererlu blu benenarar-b-benenar mar menenererimima ata atauau menolak masukan. Ini mungkin menerima input dengan beberapa probabilitas antara nol menolak masukan. Ini mungkin menerima input dengan beberapa probabilitas antara nol dan satu. Misalnya robot kuantum terbatas, robot geometrik,
dan satu. Misalnya robot kuantum terbatas, robot geometrik, automaton metrik memilikiautomaton metrik memiliki penerimaan probabilistik.
penerimaan probabilistik.
Kombinasi yang berbeda dari berbagai variansi di atas menghasilkan banyak otomata. Kombinasi yang berbeda dari berbagai variansi di atas menghasilkan banyak otomata. Aplikasi
Aplikasi
Kebanyakan implementasi robot yang digunakan untuk membuat perangkat lunak Kebanyakan implementasi robot yang digunakan untuk membuat perangkat lunak mengakui tertentu bahasa, contoh umum adalah compiler dan mesin ekspresi reguler. mengakui tertentu bahasa, contoh umum adalah compiler dan mesin ekspresi reguler. Kelas automata
A
Auuttoommaattaa BBaahhaassa a yyaanng g ddiikkeennaallii D
Deetteerrmmiinniissttiik k ffiinniitte e aauuttoommaatta a ((DDFFAA)) RReegguulleer r bbaahhaassaa N
Noon n ddeetteerrmmiinniissttiic c hhiinngggga a oottoommaattaa((NNFFAA)) RReegguulleer r bbaahhaassaa
No
Non n detdetermerminiinististic c hinhingga gga autautomaomata ta dendengan gan ee transisi (FND –e atau e- NFA)
transisi (FND –e atau e- NFA)
Reguler bahasa Reguler bahasa P
Puusshhddoowwn n aauuttoommaatta a ((PPDDAA)) BBeebbaas s kkoonntteekks s bbaahhaassaa L
Liinneeaar r bboouunnddeed d aauuttoommaatta a ((LLBBAA)) KKoonntteekks s bbaahhaassaa M
Meessiin n ttuurriinngg RReekkuurrssiif f eennuummeerraabblle e bbaahhaassaa JJaannggkka a wwaakkttu u aauuttoommaattaa
--Mesin Pengenal Bahasa Mesin Pengenal Bahasa
Untuk setiap kelas bahasa Chomsky, terdapat sebuah mesin pengenal bahasa. Untuk setiap kelas bahasa Chomsky, terdapat sebuah mesin pengenal bahasa. Masing-masing mesin tersebut adalah :
Masing-masing mesin tersebut adalah : K
Keellaas s BBaahhaassaa MMeessiin n PPeennggeennaal l BBaahhaassaa Unrestricted Grammar
Unrestricted Grammar ((UUGG)) MMeessiin n TTuurriinng g ((Turing MachineTuring Machine), TM), TM Context Sensitive Grammar
Context Sensitive Grammar (CSG)(CSG) Linear Bounded Automata Linear Bounded Automata, LBA, LBA Context Free Gammar
Context Free Gammar ((CCFFGG)) PPuusshhddoowwn n AAuuttoommaattaa, , PPDDAA Regular Grammar
BAB II
BAB II
Pertanyaan : Pertanyaan :
Diketahui REA = ab (a+b)* Diketahui REA = ab (a+b)*
1)
1) Rancang mesin FA-nya ?Rancang mesin FA-nya ? 2)
2) BuBuat pat prorogrgram Fam FA teA tersrsebebutut 3)
3) UjUji ci coboba pa prorogrgramam
(min 5 string rejected dan accepted) (min 5 string rejected dan accepted)
Jawaban: Jawaban: ∑
∑ = = {{aa,,bb}} LL= = {{aabb,,aabbaa,,aabbaaaa....,,aabbaabb,,...}} S = {A,B,C,D,E) S = {A,B,C,D,E) S S = ₒₒ= {{AA}} NFA: NFA:
A A aa BB bb CC D D E E a a b b a a b b b b aa δ δ ( ( {{AA} } , , aa)) = = {{BB} } δ δ ( ( {{CC}}, , bb)) = = {{EE}} δ δ ( ( {{AA} } , , bb)) = = { { }} δ δ ( ( {{DD}}, , aa)) = = {{DD}} δ δ ( ( {{BB} } , , aa)) = = { { }} δ δ ( ( {{DD}}, , bb)) = = {{EE}} δ δ ( ( {{BB} } , , bb)) = = {{CC}} δ δ ( ( {{EE}}, , aa)) = = {{DD}} δ δ ( ( { { }}, , aa)) = = { { }} δ δ ( ( {{EE}}, , bb)) = = {{EE}} δ ( { δ ( { }, b}, b)) = { }= { } δ δ ( ( {{CC}}, , aa)) = = {{DD}} DFA : DFA : A A aa BB { { }} b b a a C C b b a,b a,b D D a a E E b b a a b b aa b b Accepted Accepted S Sttrriinng g 1 1 : : aabb SttrriinS ng g 3 3 = = aabbaabb 1) 1) SS₀ ₀ : : {{AA} } 33) ) SS₀₀= = {{AA}} = = ᵹᵹ ( (C,a),( (C,a),ᵹᵹ ””bb””))
= (A,”ab”)
= (A,”ab”)ᵹᵹ == ᵹᵹ ( A,( A, ””abababab””) ) == ᵹᵹ ( δ(C,a),( δ(C,a), ””bb””))
=
= ( ᵹ ᵹ ᵹ( (A,a),”b”)ᵹ(A,a),”b”) == ᵹᵹ (( ᵹᵹ(A,a),(A,a), ””babbab”) ”) ==ᵹᵹ ( D,( D, ””bb””))
=
= ( ᵹᵹ ( δ(A,a),”b”)δ(A,a),”b”) ==ᵹᵹ ( δ(A,a),( δ(A,a), ””babbab”)”) == ᵹᵹ (( ᵹᵹ(D,b)(D,b)))
=
= ( ᵹᵹ( B,”b”)B,”b”) ==ᵹᵹ ( B,( B, ””babbab””)) == ᵹᵹ ( δ(D,b)))( δ(D,b)
= ( (B,b))
= ( (B,b))ᵹ ᵹ ᵹᵹ == ᵹᵹ (( ᵹᵹ(B,b),(B,b), ””abab”) ”) E E Final ϵϵ Final statestate
=
= ( ᵹᵹ( δ(B,b))δ(B,b)) ==ᵹᵹ ( δ(B,b),( δ(B,b), ””abab”)”)
C
C Final ϵϵFinal statestate ==ᵹᵹ ( C,( C, ””abab””))
S
Sttrriinng g 2 2 : : aabbaa SttrriinS ng g 4 4 : : aabbbb
2
2) ) SS₀ ₀ : : {{AA} } 44) ) SS₀₀= = {{AA} } == ᵹᵹ (C,(C,””bb””))
= (A,”aba”)
= (A,”aba”)ᵹᵹ == ᵹᵹ ( A,( A,””abbabb””) ) == ᵹᵹ ((ᵹᵹ (C,b))(C,b))
=
= ( ᵹ ᵹ ᵹ( (A,a),”ba”)ᵹ(A,a),”ba”) == ᵹᵹ (( ᵹᵹ(A,a),(A,a),””bbbb”)”) == ᵹᵹ (δ (C,b))(δ (C,b))
=
= ( ᵹᵹ( δ(A,a),”ba”)δ(A,a),”ba”) ==ᵹᵹ ( δ(A,a),( δ(A,a),””bbbb””) ) E E FϵϵFiinnaal l ssttaattee
= = ( ᵹᵹ( B,”ba”)B,”ba”) ==ᵹᵹ ( B,( B,””bbbb””)) = ( (B,b,”a”)) = ( (B,b,”a”))ᵹ ᵹ ᵹᵹ == ᵹᵹ (( ᵹᵹ(B,b),(B,b),””bb”)”) = = ( ᵹᵹ( δ(B,b,”a”))δ(B,b,”a”)) == ᵹᵹ (δ (B,b),(δ (B,b),””bb”)”) = =ᵹᵹ ( C( C,”,”aa”)”) = ( (C,a)) = ( (C,a))ᵹ ᵹ ᵹᵹ = = ( ᵹᵹ( δ(C,a))δ(C,a)) D
D Final ϵϵFinal statestate String 5 : abaa String 5 : abaa 5. S₀ : {A} 5. S₀ : {A}
= (A,”abaa”) = (A,”abaa”)ᵹᵹ = = ( ᵹ ᵹ ᵹ( (A,a),”baa”)ᵹ(A,a),”baa”) = = ( ᵹᵹ ( δ(A,a),”baa”)δ(A,a),”baa”) = = ( ᵹᵹ( B,”baa”)B,”baa”) = ( (B,b),”aa”)) = ( (B,b),”aa”))ᵹ ᵹ ᵹᵹ = = ( ᵹᵹ( δ(B,b),”aa”))δ(B,b),”aa”)) = = ( ᵹᵹ( C,”aa”))C,”aa”)) = ( (C,a),”aa”)) = ( (C,a),”aa”))ᵹ ᵹ ᵹᵹ = = ( ᵹᵹ( δ(C,a),”aa”))δ(C,a),”aa”)) = = ( ᵹᵹ( D,”a”))D,”a”)) = ( (D,a)) = ( (D,a))ᵹ ᵹ ᵹᵹ = = ( ᵹᵹ( δ(D,a))δ(D,a)) D
Non accepted Non accepted S Sttrriinng g 1 1 : : aaaa SSttrriinng g 3 3 = = bb 1 1) S) S₀ ₀ : : {{AA} } 33) ) SS₀₀= = {{AA}} = (A,”aa”) = (A,”aa”)ᵹᵹ == ᵹᵹ ( A,( A, ””bb””)) =
= ( ᵹ ᵹ ᵹ( (A,a),”a”)ᵹ(A,a),”a”) == ᵹᵹ (( ᵹᵹ(A,b)(A,b)))
=
= ( ᵹᵹ ( δ(A,a),”a”)δ(A,a),”a”) ==ᵹᵹ ( δ(A,b)( δ(A,b)))
=
= ( ᵹᵹ( B,”a”)B,”a”) {}{} ɇɇ Final stateFinal state =
= ( ᵹ ᵹ ᵹ( ( ᵹ( B,a))B,a)) =
= ( ᵹᵹ( δ( δ( B,a))B,a)) {}
{} ɇɇ Final stateFinal state
S
Sttrriinng g 2 2 : : aaaaaa SttrriinS ng g 4 4 : : aaaabb
2
2) ) SS₀ ₀ : : {{AA} } 44) ) SS₀₀= = {{AA} } == ᵹᵹ ( { },( { },””bb””))
= (A,”aaa”)
= (A,”aaa”)ᵹᵹ == ᵹᵹ ( A,( A,””aabaab””) ) == ᵹᵹ ((ᵹᵹ ( { },b))( { },b))
=
= ( ᵹ ᵹ ᵹ( (A,a),”aa”)ᵹ(A,a),”aa”) == ᵹᵹ (( ᵹᵹ(A,a),(A,a),””abab”)”) == ᵹᵹ (δ ( { },b))(δ ( { },b))
=
= ( ᵹᵹ( δ(A,a),”aa”)δ(A,a),”aa”) ==ᵹᵹ ( δ(A,a),( δ(A,a),””abab””) ) { { }}ɇɇFinal stateFinal state
=
= ( ᵹᵹ( B,”aa”)B,”aa”) ==ᵹᵹ ( B,( B,””abab””))
= ( (B,a,”a”))
=
= ( ᵹᵹ( δ(B,a),”a”))δ(B,a),”a”)) == ᵹᵹ (δ (B,a),(δ (B,a),””bb”)”)
= =ᵹᵹ ( { }( { },”,”aa”)”) = = ( ᵹ ᵹ ᵹ( ( ᵹ( {},a)){},a)) = = ( ᵹᵹ( δ( δ( {},a)){},a)) { }
{ } ɇɇ Final stateFinal state
String 5 : bab String 5 : bab 5. S₀ : {A} 5. S₀ : {A} = (A,”bab”) = (A,”bab”)ᵹᵹ = = ( ᵹ ᵹ ᵹ( (A,b),”ab”)ᵹ(A,b),”ab”) = = ( ᵹᵹ ( δ(A,b),”ab”)δ(A,b),”ab”)
= = ( ᵹᵹ( { { },”ab”)},”ab”) = = ( ᵹ ᵹ ᵹ( ( ᵹ( { { },a),”b”))},a),”b”)) = = ( ᵹᵹ( δ( δ( { { },a),”b”))},a),”b”)) = = ( ᵹᵹ( { { },”b”))},”b”)) = = ( ᵹ ᵹ ᵹ( ({ ᵹ({ },b))},b)) = = ( ᵹᵹ( δ( δ( { { },b))},b)) { }
Flowchart
D:\Project Java~!\OPK\src\DFA2.java D:\Project Java~!\OPK\src\DFA2.java 1 /** 1 /** 2 2 ** 3
3 * * @author @author ErfanErfan 4
4 */*/
5 public class DFA2 { 5 public class DFA2 {
6 //REGULAR EXPRESSION = ab(a+b)* 6 //REGULAR EXPRESSION = ab(a+b)*
7 //deklarasi STATE dalam bentuk variabel 7 //deklarasi STATE dalam bentuk variabel 8
8 private private final final int int A=0;A=0; 9
9 private private final final int int B=1;B=1; 10
10 private private final final int int C=2;C=2; 11
11 private private final final int int D=3;D=3; 12
12 private private final final int int E=4;E=4; 13
13 private private final final int int F=5;F=5; 14
14 15 15
16 //definisi is_final untuk setiap state yang ada 16 //definisi is_final untuk setiap state yang ada
17 private boolean final_state[]={false,false,true,true,true,false}; 17 private boolean final_state[]={false,false,true,true,true,false}; 18
18
19 //Variable penyimpan uji string 19 //Variable penyimpan uji string 20 private String Uji;
20 private String Uji; 21
21
22 //Variabel kursor State 22 //Variabel kursor State 23 private int state;
23 private int state; 24
24
25 public DFA2(String input_string){ 25 public DFA2(String input_string){ 26 Uji=input_string;
26 Uji=input_string; 27
27 //menghilang//menghilangkan kan spasi spasi pada pada string string inputinput 28 Uji=Uji.trim();
28 Uji=Uji.trim(); 29
29 //membuat //membuat char char input input menjadi menjadi alphabet alphabet kecilkecil 30 Uji=Uji.toLowerCase(); 30 Uji=Uji.toLowerCase(); 31 this.State_Awal(); 31 this.State_Awal(); 32 this.Proses_Uji(); 32 this.Proses_Uji(); 33 33 }} 34 34
35 //function untuk menguji state pada diagram DFA 35 //function untuk menguji state pada diagram DFA 36 private int DFA(int x, char c){
36 private int DFA(int x, char c){ 37 switch(x){
37 switch(x){
38 case A: switch(c){ 38 case A: switch(c){ 39
39 case case 'a': 'a': return return B;B; 40
40 case case 'b':return 'b':return F;F; 41
41 }}
42
42 case case B: B: switch(c){switch(c){ 43
43 case case 'a': 'a': return return F;F; 44
44 case case 'b': 'b': return return C;C; 45
45 }}
46
46 case case C: C: switch(c){switch(c){ 47
47 case case 'a': 'a': return return D;D; 48
48 case case 'b': 'b': return return E;E; 49
49 }}
50
50 case case D: D: switch(c){switch(c){ 51
51 case case 'a': 'a': return return D;D; 52
52 case case 'b': 'b': return return E;E; 53
53 }}
54
54 case case E: E: switch(c){switch(c){ 55
55 case case 'a': 'a': return return D;D; 56
56 case case 'b': 'b': return return E;E; 57
58
58 case case F: F: switch(c){switch(c){ 59
59 case case 'a': 'a': return return F;F; 60
60 case case 'b': 'b': return return F;F; 61 61 }} 62 62 63 63 64 } 64 } 65 return 0; 65 return 0; 66 } 66 } 67 67
68 private void Proses_Uji(){ 68 private void Proses_Uji(){ 69
69 70
70 for for (int (int i=0;i i=0;i < < Uji.length()Uji.length();i++){;i++){ 71
71 char char c=Uji.charAtc=Uji.charAt(i);(i);
72 state=DFA(state,c); 72 state=DFA(state,c); 73 73 }} 74 74 75 } 75 } 76 76
77 private void State_Awal(){ 77 private void State_Awal(){
78 state=0; 78 state=0; 79 } 79 } 80 80
81 public boolean hasil_akhir(){ 81 public boolean hasil_akhir(){ 82
82 return return final_statefinal_state[state];[state]; 83 83 }} 84 84 85 85 86 86 87 } 87 } 88 88 89 89 90 90 91 91 92 92
Uji coba dengan program Uji coba dengan program
1 1.. aabb Hasil : Hasil : 2 2.. aabbaa
3
3.. aabbaabb
4
5
5.. aabbaaaa
6
7
7.. aaaaaa
8.
9
1
BAB III BAB III
Pertanyaan : Pertanyaan :
Pembuktian String 1 Extend transisi (∑) Pembuktian String 1 Extend transisi (∑) ∑(So, Word) ∑(So, Word) Stringnya Stringnya DFA state a, b : DFA state a, b : S0,S2 S0,S2 S0, S1S0, S1 S0,S1,S2S0,S1,S2 a a { } { } S6 S6 a a aa a a bb a a b b A A B B CC D D EE F F S2 S2
Jelaskan dan buktikan mengenai soal di bawah ini apakah diterima/ditolak? Jelaskan dan buktikan mengenai soal di bawah ini apakah diterima/ditolak?
1) String 2= bba 1) String 2= bba 2) String 3= abaa 2) String 3= abaa Jawab: Jawab:
1)
1) SS₀ ₀ : : {{AA} } 22) ) SS₀₀= = {{AA}} =
= ᵹᵹ ( (B,a))( (B,a))ᵹᵹ
= (A,”bba”)
= (A,”bba”)ᵹᵹ == ᵹᵹ ( A, ””abaa( A, abaa””) ) == ᵹᵹ ( δ(B,a))( δ(B,a))
=
= ( ᵹ ᵹ ᵹ( (A,b),”ba”)ᵹ(A,b),”ba”) == ᵹᵹ (( ᵹᵹ(A,a),(A,a), ””baabaa””) ) C C FϵϵFiinnaall
state(accepted) state(accepted) =
= ( ᵹᵹ ( δ(A,b),”ba”)δ(A,b),”ba”) ==ᵹᵹ ( δ(A,a),( δ(A,a), ””baabaa”)”)
=
= ( ᵹᵹ( D,”ba”)D,”ba”) ==ᵹᵹ ( B,( B, ””baabaa””))
= ( (D,b),”a”)
= ( (D,b),”a”)ᵹ ᵹ ᵹᵹ == ᵹᵹ (( ᵹᵹ(B,b),(B,b), ””aaaa”)”)
=
= ( ᵹᵹ( δ(D,b),”a”)δ(D,b),”a”) ==ᵹᵹ ( δ(B,b),( δ(B,b), ””aaaa”)”)
=
= ( ᵹᵹ( F,”a”)F,”a”) ==ᵹᵹ ( E,( E, ””aaaa””))
= ( (F,a))
= ( (F,a))ᵹ ᵹ ᵹᵹ == ᵹᵹ (( ᵹᵹ(E,a),(E,a), ””aa”)”)
=
= ( ᵹᵹ( δ(F,a))δ(F,a)) ==ᵹᵹ ( δ(E,a),( δ(E,a), ””aa”)”)
F
F ɇ Final ɇ Final state state (not ac(not accepted)cepted) == ᵹᵹ ( B,( B, ””aa””))
BAB IV BAB IV Diketahui: Diketahui: REA = ab (a+b)* REA = ab (a+b)* A A == NFA: NFA:
A A a a BB bb CC b b D D b b b b a a a a a a Pertanyaan : Pertanyaan : 1)
1) KonKonverversikasikan NFA inn NFA ini meni menjadjadi DFA?i DFA? Jawaban : Jawaban : ∑ ∑ : : {{aa,,bb}} S S : : {{AA, , BB,,CC,,DD}} SS₀ ₀ : : {{AA}} F F : : {{BB,,DD}} A A BB A A BB ,, DD --B B -- CC ,, DD C C CC BB ,, DD D D BB --δ δ ( ( {{AA} } , , aa)) = = { { B B , , DD} } δ δ ( ( {{BB}}, , bb)) = = {{C C , , D D }} δδ( ( {{BB,,CC,,DD}},, a a)) = = {{C C , , BB}} δ δ ( ( {{AA} } , , bb)) = { = { }} δ δ ( ( {{CC,,DD}}, , aa)) = = {{CC,,BB}} δδ( ( {{BB,,CC,,DD}},, b b}} = = {{C C , , D D ,,BB}} δ δ ( ( {{BB,,DD} } , , aa)) = = {{BB}} δ ( δ ( {{CC,,DD}}, , bb)) = = {{BB,,DD}} δ δ ( ( {{BB,,DD} } , , bb)) = = {{CC,,DD}} δ δ ( ( {{CC,,BB}}, , aa)) = = {{CC}} δ δ ( ( { { }}, , aa) = ) = { { }} δ δ ( ( {{CC,,BB}}, , bb)) = = {{BB,,CC,,DD}} δ δ ( ( { { }}, , bb)) = = { { }} δ ( δ ( {{CC}}, , aa)) = = {{CC}} δ δ ( ( {{BB}}, , aa)) = = { { }} δ δ ( ( {{CC}}, , bb)) = = {{BB,,DD}} DFA : DFA :
A A aa BB,,DD A A BB { } { } C C b b a,b a,b C,D C,D B B D D a a C C,,BB CC C,B,D C,B,D a a a a b b a a b b b b b b E E FF GG H H a a a a b b b b 2)
2) LakukaLakukan test menn test menggunaggunakan strinkan string dengan prog dengan program dan ekgram dan ekstendstend transisi transisi a a)) aabbbbbbaaaa dd) ) aabbbbaabbbb b b)) bbaabbbbaa ee) ) aaaabbaabbaabb c c)) bbaabbaabb ff) ) aabbbbaabb
Jawaban: Jawaban:
a
a) S) S₀ ₀ : : {{AA}} b) b) SSo o : : {{AA}} =
= ᵹᵹ(A,”abbbaa”(A,”abbbaa”}} == ᵹᵹ (A,”babba”(A,”babba”}}
=
= ( ᵹ ᵹ ᵹ( (Aᵹ (A,a,a),),”b”bbbbbaaaa”)”) = = ( ᵹ ᵹ ᵹ( (Aᵹ (A,b,b),),”ab”abbaba”)”)
=
= (δ ᵹᵹ (δ (A,a),”bbbaa”)(A,a),”bbbaa”) = = (δ ᵹᵹ(δ (A,b),”abba”)(A,b),”abba”)
=
= ᵹᵹ (B,”bbbaa”(B,”bbbaa”}} = (C,”abba”)= (C,”abba”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Bᵹ (B,b,b),),”b”bbabaa”)a”) = = ( ᵹ ᵹ ᵹ( (Cᵹ (C,a,a),),”b”bbaba”)”)
=
= (δ ᵹᵹ (δ (B,b),”bbaa”)(B,b),”bbaa”) = = (δ ᵹᵹ(δ (C,a),”bba”)(C,a),”bba”)
=
= ᵹᵹ (E,”bbaa”(E,”bbaa”}} == ᵹᵹ (C,”bba”)(C,”bba”)
=
= ( ᵹ ᵹ ᵹ( (Eᵹ (E,b,b),),”b”baaaa”)”) = = ( (C,bᵹ ᵹ ᵹ( (C,b),ᵹ ),”b”ba”a”))
=
=
= ᵹᵹ (B,”baa”(B,”baa”}} = (C,”ba”)= (C,”ba”)ᵹᵹ
=
= ( (B,ᵹ ᵹ ᵹ( (B,b)ᵹ b),”,”aaaa”)”) = ( = ᵹ ᵹ ᵹ( (Cᵹ (C,b,b),),”a”a”)”)
=
= (δ ᵹᵹ (δ (B,b),”aa”)(B,b),”aa”) = = (δ ᵹᵹ(δ (C,b),”a”)(C,b),”a”)
=
= ᵹᵹ (E,”aa”(E,”aa”}} = (C,”a”)= (C,”a”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Eᵹ (E,a,a),),”a”a”)”) = = ( (Cᵹ ᵹ ᵹ( (C,,a)ᵹ a)))
=
= (δ ᵹᵹ (δ (E,a),”a”)(E,a),”a”) = = (δ ᵹᵹ(δ (C,a))(C,a))
=
= ᵹᵹ (F,”a”(F,”a”}} CC ɇ ɇ Final state (not accepted)Final state (not accepted)
=
= ( (Fᵹ ᵹ ᵹ( (F,,aa))))ᵹ
=
= (δ ᵹᵹ (δ (F,a))(F,a)) G
c
c))SS₀ ₀ : : {{AA}} d) d) SS₀ ₀ : : {{AA}} =
= ᵹᵹ(A,”babab”(A,”babab”}} == ᵹᵹ (A,”abbabb”(A,”abbabb”}}
=
= ( ᵹ ᵹ ᵹ( (Aᵹ (A,b,b),),”ab”ababab”)”) = ( = ᵹ ᵹ ᵹ( (Aᵹ (A,a,a),),”b”bbababbbb”)”)
=
= (δ ᵹᵹ (δ (A,b),”abab”)(A,b),”abab”) = = (δ ᵹᵹ(δ (A,a),”bbabb”)(A,a),”bbabb”)
=
= ᵹᵹ (C,”abab”(C,”abab”}} = (B,”bbabb”)= (B,”bbabb”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Cᵹ (C,a,a),”),”babab”b”)) = ( = ᵹ ᵹ ᵹ( (Bᵹ (B,b,b),),”b”bababb”b”))
=
= (δ ᵹᵹ (δ (C,a),”bab”)(C,a),”bab”) = = (δ ᵹᵹ(δ (B,b),”babb”)(B,b),”babb”)
=
= ᵹᵹ (C,”bab”(C,”bab”}} == ᵹᵹ (E,”babb”)(E,”babb”)
=
= ( (C,bᵹ ᵹ ᵹ( (C,b),ᵹ ),”a”ab”b”)) = ( = ᵹ ᵹ ᵹ( (Eᵹ (E,b,b),),”ab”abb”b”))
=
= (δ ᵹᵹ (δ (C,b),”ab”)(C,b),”ab”) = = (δ ᵹᵹ(δ (E,b),”abb”)(E,b),”abb”)
=
= ᵹᵹ (C,”ab”(C,”ab”}} = (B,”abb”)= (B,”abb”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Cᵹ (C,a,a),),”b”b”)”) = = ( (B,aᵹ ᵹ ᵹ( (B,a),ᵹ ),”b”bb”b”))
=
= (δ ᵹᵹ (δ (C,a),”b”)(C,a),”b”) = = (δ ᵹᵹ(δ (B,a),”bb”)(B,a),”bb”)
= = ᵹᵹ (C,”b”(C,”b”}} = (D,”bb”)= (D,”bb”)ᵹᵹ = = ( (Cᵹ ᵹ ᵹ( (C,,bᵹ b)))) = = ( ᵹ ᵹ ᵹ( (Dᵹ (D,b,b) ) ”b”b”)”) = = (δ ᵹᵹ (δ (C,b))(C,b)) = = (δ ᵹᵹ(δ (D,b) (D,b) “b”)“b”) C
C ɇ ɇ Final state (not accepted)Final state (not accepted) == ᵹᵹ (E,”b”)(E,”b”)
=
=
= ( (Eᵹ ᵹ ᵹ( (E,,bᵹ b)))) B
B Final ϵϵFinal state(accepted)state(accepted)
e).
e). SS₀ ₀ : : {{AA}} ff) ) SS₀ ₀ : : {{AA}} =
= ᵹᵹ(A,”aababab”(A,”aababab”}} == ᵹᵹ (A,”abbab”(A,”abbab”}}
=
= ( ᵹ ᵹ ᵹ( (Aᵹ (A,a,a),),”a”ababababab”b”)) = = ( ᵹ ᵹ ᵹ( (Aᵹ (A,a,a),),”b”bbabab”b”))
=
= (δ ᵹᵹ (δ (A,a),”ababab”)(A,a),”ababab”) = = (δ ᵹᵹ(δ (A,a),”bbab”)(A,a),”bbab”)
=
= ᵹᵹ (B,”ababab”(B,”ababab”}} = (B,”bbab”)= (B,”bbab”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Bᵹ (B,a,a),”),”babababab”b”)) = = ( ᵹ ᵹ ᵹ( (Bᵹ (B,b,b),),”b”babab”)”)
=
= (δ ᵹᵹ (δ (B,a),”babab”)(B,a),”babab”) = = (δ ᵹᵹ(δ (B,b),”bab”)(B,b),”bab”)
=
=
= ( ᵹ ᵹ ᵹ( (Dᵹ (D,b,b),),”ab”ababab”)”) = = ( (E,bᵹ ᵹ ᵹ( (E,b),ᵹ ),”ab”ab”)”)
=
= (δ ᵹᵹ (δ (D,b),”abab”)(D,b),”abab”) = = (δ ᵹᵹ(δ (E,b),”ab”)(E,b),”ab”)
=
= ᵹᵹ (E,”abab”(E,”abab”}} = (B,”ab”)= (B,”ab”)ᵹᵹ
=
= ( ᵹ ᵹ ᵹ( (Eᵹ (E,a,a),),”b”babab”)”) = = ( ᵹ ᵹ ᵹ( (Bᵹ (B,a,a),),”b”b”)”)
=
= (δ ᵹᵹ (δ (E,a),”bab”)(E,a),”bab”) = = (δ ᵹᵹ(δ (B,a),”b”)(B,a),”b”)
= = ᵹᵹ (F,”bab”(F,”bab”}} = (D,”b”)= (D,”b”)ᵹᵹ = = ( (F,bᵹ ᵹ ᵹ( (F,b),ᵹ ),”ab”ab”)”) = = ( (Dᵹ ᵹ ᵹ( (D,,bᵹ b)))) = = (δ ᵹᵹ (δ (F,b),”ab”)(F,b),”ab”) = = (δ ᵹᵹ(δ (D,b))(D,b)) =
= ᵹᵹ (H,”ab”(H,”ab”}} EE ϵϵFinal state(accepted)Final state(accepted)
= = ( ᵹ ᵹ ᵹ( (Hᵹ (H,a,a),),”b”b”)”) = = (δ ᵹᵹ (δ (H,a),”b”)(H,a),”b”) = = ᵹᵹ (F,”bab”(F,”bab”}} = = ( (F,bᵹ ᵹ ᵹ( (F,b),ᵹ ),”ab”ab”)”) = = (δ ᵹᵹ (δ (F,b),”ab”)(F,b),”ab”) = = ᵹᵹ (H,”ab”(H,”ab”}} = = ( ᵹ ᵹ ᵹ( (Hᵹ (H,a,a),),”b”b”)”) = = (δ ᵹᵹ (δ (H,a),”b”)(H,a),”b”) = = ᵹᵹ (F,”b”(F,”b”)) = = ( (Fᵹ ᵹ ᵹ( (F,,bᵹ b))))
=
= (δ ᵹᵹ (δ (F,b))(F,b)) H
H Final ϵϵFinal state(accepted)state(accepted)
Flowchart
5 5 1
1
Evaluasi c
Evaluasi c C =‘a’ ?C =‘a’ ?
C =‘b’ ? C =‘b’ ? tidak tidak stat state=e=GG y yaa state=H state=H y yaa tidak tidak 4 4 5 5 2 2 Evaluasi c
Evaluasi c C =‘a’ ?C =‘a’ ?
C =‘b’ ? C =‘b’ ? tidak tidak state=G state=G y yaa stat state=e=BB y yaa tidak tidak 5 5 3 3 Evaluasi c
Evaluasi c C =‘a’ ?C =‘a’ ?
C =‘b’ ? C =‘b’ ? tidak tidak stat statee==FF y yaa stat statee==HH y yaa tidak tidak
Kode Program Kode Program D:\Project Java~!\OPK\src\DFA1.java D:\Project Java~!\OPK\src\DFA1.java 1 /** 1 /** 2 2 ** 3
3 * * @author @author ErfanErfan 4
4 */*/
5 public class DFA1 { 5 public class DFA1 { 6
6
7 //REGULAR EXPRESSION = ab(a+b)* 7 //REGULAR EXPRESSION = ab(a+b)*
8 //deklarasi STATE dalam bentuk variabel 8 //deklarasi STATE dalam bentuk variabel 9
9 private private final final int int A=0;A=0; 10
10 private private final final int int B=1;B=1; 11
11 private private final final int int C=2;C=2; 12
12 private private final final int int D=3;D=3; 13
13 private private final final int int E=4;E=4; 14
14 private private final final int int F=5;F=5; 15
15 private private final final int int G=6;G=6; 16
16 private private final final int int H=7;H=7; 17
17 18
18 //definisi is_final //definisi is_final untuk untuk setiap setiap state state yang yang adaada 19
19 private private booleanboolean
final_state[]={false,true,false,true,true,true,false,true}; final_state[]={false,true,false,true,true,true,false,true}; 20
20 21
21 //Variable //Variable penyimpan penyimpan uji uji stringstring 22
22 private private String String Uji;Uji; 23
23 24
24 //Variabel //Variabel kursor kursor StateState 25
25 private private int int state;state; 26
26 27
27 public public DFA1(StrinDFA1(String g input_stringinput_string){){ 28 Uji=input_string;
28 Uji=input_string; 29
29 //menghilang//menghilangkan kan spasi spasi pada pada string string inputinput 30 Uji=Uji.trim();
30 Uji=Uji.trim(); 31
31 //membuat //membuat char char input input menjadi menjadi alphabet alphabet kecilkecil 32 Uji=Uji.toLowerCase(); 32 Uji=Uji.toLowerCase(); 33 this.State_Awal(); 33 this.State_Awal(); 34 this.Proses_Uji(); 34 this.Proses_Uji(); 35 35 }}
36 private void State_Awal(){ 36 private void State_Awal(){
37 state=0; 37 state=0; 38 } 38 } 39 39
40 //function untuk menguji state pada diagram DFA 40 //function untuk menguji state pada diagram DFA 41 private int DFA(int x, char c){
41 private int DFA(int x, char c){ 42 switch(x){
42 switch(x){
43 case A: switch(c){ 43 case A: switch(c){ 44
44 case case 'a': 'a': return return B;B; 45
45 case case 'b': 'b': return return C;C; 46
46 }}
47
47 case case B: B: switch(c){switch(c){ 48
48 case case 'a': 'a': return return D;D; 49
49 case case 'b': 'b': return return E;E; 50
50 }}
51
51 case case C: C: switch(c){switch(c){ 52
53
53 case case 'b': 'b': return return C;C; 54
54 }}
55
55 case case D: D: switch(c){switch(c){ 56
56 case case 'a': 'a': return return C;C; 57
57 case case 'b': 'b': return return E;E; 58
58 }}
59
59 case case E: E: switch(c){switch(c){ 60
60 case case 'a': 'a': return return F;F; 61
61 case case 'b': 'b': return return B;B; 62
62 }}
63
63 case case F:switch(c){F:switch(c){ 64
64 case case 'a': 'a': return return G;G; 65
65 case case 'b': 'b': return return H;H; 66
66 }}
67
67 case case G:switch(c){G:switch(c){ 68
68 case case 'a': 'a': return return G;G; 69
69 case case 'b': 'b': return return B;B; 70
70 }}
71
71 case case H:switch(c){H:switch(c){ 72
72 case case 'a':return 'a':return F;F; 73
73 case case 'b':return 'b':return H;H; 74 74 }} 75 } 75 } 76 return 0; 76 return 0; 77 } 77 } 78 78
79 private void Proses_Uji(){ 79 private void Proses_Uji(){ 80
80 81
81 for for (int (int i=0;i i=0;i < < Uji.length()Uji.length();i++){;i++){ 82
82 char char c=Uji.charAtc=Uji.charAt(i);(i);
83 state=DFA(state,c); 83 state=DFA(state,c); 84 84 }} 85 85 86 } 86 }
87 public boolean hasil_akhir(){ 87 public boolean hasil_akhir(){ 88
88 return return final_statefinal_state[state];[state]; 89 89 }} 90 } 90 } 91 91 92 92
Tampilan Uji Coba Program Tampilan Uji Coba Program
1. 1. abbbaaabbbaa Hasil : Hasil : Not Accepted Not Accepted 2. 2. babbababba
Hasil : Hasil : Not Accepted Not Accepted 3. 3. bababbabab Hasil : Hasil :
Not Accepted Not Accepted 4. 4. abbabbabbabb Hasil : Hasil : Accepted Accepted
5. 5. aabababaababab Hasil : Hasil : Accepted Accepted 6. 6. abbababbab
Hasil : Hasil :
Accepted Accepted