470 likes | 835 Views
TEORI BAHASA DAN OTOMATA. Jim Michael Widi , S.Kom. Pendahuluan. Apa itu Komputer Alat untuk mengetik ? Komputer sangat kompleks - menerapkan teori matematika secara langsung ( computational model ) Model dasar perhitungan Rekayasa merancang sistem komputer H/W + S/W.
E N D
TEORI BAHASA DAN OTOMATA Jim Michael Widi, S.Kom
Pendahuluan ApaituKomputer • Alatuntukmengetik ? • Komputersangatkompleks - menerapkanteorimatematikasecaralangsung (computational model) • Model dasarperhitungan • Rekayasamerancangsistemkomputer H/W + S/W
Pengertian Program sebagaiobyekmatematika Diberlakukannyaalasan (reason), logika(logic) danaturan (rule) untukkombinasi Apakah program mengoperasikanbilangan, teksatauapapun
Hardware/Software • Kekompleksan hardware dan software ditanganioleh processor untukmengkonversi program kedalambentuk execute (eksekusi) • Execute file dapatdibentukmelalui : • Compile • Assembly • Dan sebagainya (interpreter)
Definisi TeoriOtomataadalahteorimengenaimesin-mesinabstrak, danberkaitaneratdenganteoribahasa formal. adabeberapahal yang berkaitandenganOtomata, yaitu Grammar. Grammar adalahbentukabstrak yang dapatditerima (accept) untukmembangkitkansuatukalimatotomataberdasarkansuatuaturantertentu.
KonsepDasar (1) • Anggotaalfabetdinamakansimbol terminal. • Kalimatadalahderetanhinggasimbol-simbol terminal. • Bahasaadalahhimpunankalimat-kalimat. Anggotabahasabisatakhinggakalimat. • Simbol-simbolberikutadalahsimbol terminal : • hurufkecil, misalnya : a, b, c • simbol operator, misalnya : +, , dan * • simboltandabaca, misalnya : (, ), dan ; • simboltandabaca, misalnya : (, ), dan ; • string yang tercetaktebal, misalnya : if, then, danelse. • Simbol-simbolberikutadalahsimbol non terminal /Variabel : • hurufbesar, misalnya : A, B, C • huruf S sebagaisimbolawal • string yang tercetak miring, misalnya : expr
KonsepDasar (2) Hurufyunanimelambangkan string yang tersusunatassimbol-simbol terminal atausimbol-simbol non terminal ataucampurankeduanya, misalnya : α,β, danε Sebuahproduksidilambangkansebagaiα --> β, artinya : dalamsebuahderivasidapatdilakukanpenggantiansimbolα dengansimbolβ. Derivasiadalah proses pembentukansebuahkalimatatausentensial. Sebuahderivasidilambangkansebagai : α ==> β. Sentensialadalah string yang tersusunatassimbol-simbol terminal atausimbol-simbol non terminal ataucampurankeduanya. Kalimatadalah string yang tersusunatassimbol-simbol terminal. Kalimatadalahmerupakansentensial, sebaliknyabelumtentu.
Grammar • Grammar G didefinisikansebagaipasangan 4 tuple : Vt , Vn , S, dan P, dandituliskansebagai G(Vt , Vn , S, P), dimana: • Vt: himpunansimbol-simbol terminal (alfabet) = kamus • Vn: himpunansimbol-simbol non terminal • S C V : simbolawal (atausimbol start) • P : himpunanproduksi • Contoh : • G1 : VT = {I, want, need, You}, V = {S,A,B,C}, P = {S --> ABC, A--> I, B--> want | need, C--> You} S --> ABC • IwantYou • L(G1)={IwantYou,IneedYou} • G2 : VT = {a}, V = {S}, P = {S aS | a} S --> aS --> aaS --> aaa L(G2) ={an --> n ≥ 1} L(G2)={a, aa, aaa, aaaa, …}
TeoriAutomata Meliputi/mencakup TeoriBahasa Formal Regular Expression Finite Automata Non Deterministic Finite Automata Finite Automata dengan Output Context-free Grammar Pushdown Automata MesinTuring
TeoriBahasa FormalTheory of Formal Language • Bahasaberbentukdarikombinasisimbol-simboldenganaturanformalnya • Language : A set Of string • String : A Finite list of symbols from an alphabet • Alphabet : A Finite set of objects called symbol • S1 = { a, b, c, d, e ….z ..} S2 = { 0, 1 } • Symbol : A member of alphabet • Set : Group of objects
TeoriBahasa Formal • = {a b c d e ... z , . } • Pembentukanstruktursebuahbahasadiawalidenganmemakaisebuahfinite set (himpunanterbatas), dimana unit fundamentalnyadisebutalphabet () • String-string yang bolehada di dalamsebuahbahasadisebut word • Contoh language adalahBahasa Indonesia. Alphabet yang biasadipakaiadalahhuruf, komadantitik. Semuanyadispesifikasiseperti di bawahini:
KATA-INDONESIA = {semua kata di dalamkamus} = { x } • L = { x xx xxx xxxx ... } • Bila language inidinamakan KATA-INDONESIA, dimanasemua string adalah word/kata di dalamkamus, makadefinisinyaadalah: • Contohsederhanasuatu language dengan alphabet yang adahanyasebuahhuruf, yaituhuruf x • Simbol alphabet tidakharus alphabet huruflatin, namundapatberisiapasaja
L = { x xx xxx xxxx ... } L = { x xx xxx } L L + { } L = L + Sebuah string dimungkinkantidakpunya alphabet. String inidisebutempty string atau null string dandilambangkan. Perludiingatbukan alphabet dalam language.Contoh: Bahasatanpa worddilambangkandengan null set Tolongdibedakanantara language tanpa word dengan word yang mempunyai
L1 = { x xx xxx xxxx ... } L1 = { xn for n = 1 2 3 ... } Contohsebuahbahasadengannon empty string Ataudengancara lain Dalam language L1, dapatdilakukanoperasipenggabungan (concatenation) dari word yang adamenjadi word baru. Contoh word xx dengan word xxx digabungmenjadi word baruxxxxx
L2 = { x xxx xxxxxxxxxxxx ... } = { x ganjil} = { x 2n+1 for n = 0 1 2 3 } Tidakselalubenarbiladua word digabungkanakanmembentuksebuah word baru. Contoh: xxx danxxxxxadalah word pada language L2, namunpengabungannyabukanlah word di dalam L2 Didefinisikansuatufungsilengthuntukmenghitungjumlahhurufdi dalamsebuah word length(xxxxxx) = 6 length(7152) = 4 length() = 0
L4 = { x xx xxx xxxx ... } = { xn for n = 0 1 2 3 } • Biladiinginkansebuah language mempunyai null string, makajanganlupauntukmemasukannyasaatmendefinisikan language tersebut • Harapdipahamibahwa x0 = danbukannya x0 = 1 seperti di aljabar • Didefinisikanfungsireverse. Reverse darisuatu string adalah string yang samatetapitersusundaribelakang, walaupun string inibukanlah word dalambahasatersebut reverse(xxx) = xxx reverse(xxxxx) = xxxxx reverse(145) = 541 reverse(140) = 041
Palindrome adalah kata, frase, nomoratauurutanlainnyadari unit yang dapatdibacadengancara yang sama di keduaarah. • Didefinisikansuatu language yang disebut PALINDROME dari alphabet = { a, b} PALINDROME = { , dansemua string x sedemikiansehingga reverse(x) = x } makaakandiperoleh: PALINDROME = { a b aa bb aaa aba babbbbaaaaabba ... }
Diketahui alphabet , diinginkanuntukmendefinisikansebuah language dimanatiap string darihuruf yang ada di dalamadalahsebuah word, termasuk null string. • Language inidisebutsebagaiclosure • Dapatdinotasikandenganmenambahsebuah asterisk sesudahnamadari alphabet * (Kleene Star). • Dalamlogikamatematikadanilmukomputer, bintangKleene (atau operator KleeneataupenutupanKleene) merupakanoperasi unary, baik di set pada set string atausimbol-simbolataukarakter. PenerapanbintangKleeneuntuksatu set V ditulissebagaiV*. Hal inibanyakdigunakanuntukekspresireguler, yang merupakankonteks yang diperkenalkanoleh Stephen Kleenemenjadiciri automata tertentu.
Contoh: Jika= { x } maka * = L4 = { x xx xxx ... } Jika = { 0 1 } maka * = { 0 1 00 01 10 11 000 001 ... } Jika = { a b c } maka * = { a b c aaab ac ba bb bccacb cc aaa ... } • OperasiKleene Star menghasilkan infinite language dari string huruf yang adapada alphabet. • Yang dimaksud infinite language adalahtakterhitungbanyaknyaword. • Disarankan word dari language tersusunurutdari yang pendeksecaraalphabetik .
Contoh: Jika S = { aa, b} maka S* = { dan word bentukan yang berasaldariaadan b } S* = { dansemua string bentukandari a dan b dengana yang selaluberderetdalamjumlah yang genap) = { b aa bb aab baa bbbaaaaaabbbaabbbaabbbbaaaabaabaaaabbbbaaaabaabbbbaabbbbaa ... } String aabaaabtidaktermasuk S* karenajumlah a tidakgenap Contoh: Jika S = { a, ab } maka S* = { dan word bentukan yang berasaldari a danab } S* = { dansemua string bentukandari a dan b kecuali yang dimulaidengan b dan yang mengandungdua b berdempetan } ={ a aaabaaaaab aba aaaaaaabaabaabaaababaaaaa aaaabaaabaaabaaaabababaaaabaab ... }
Regular Expression Sebuahcaramendefinisikan language yang lebihtepatdibandingkandenganmenggunakancara ellipsis ( diakhiridengan ... ) Language inidisebut regular language Perhatikan: L4 = { x xx xxx xxxx ... } Denganmemanfaatkan closure, bila S = { x } maka L4 = S* Dapatjugaditulissebagai L4 = {x}*
Kleene Star tidakhanyadapatdiaplikasikanuntuk set namunjugalangsungke alphabet. Contoh: x* Ekpresisederhana x* akandipakaiuntukmengekspresikanpengulangandari x (bisajugatidaksamasekali) x* = atau x atau x2atau x3atau x4 ... = xn for n = 0 1 2 3 4 ... Jadi x* adalah string dari x yang banyaknyatidakdinyatakansecarapasti.
Sebuah language L yang didefinisikandari alphabet S = {a, b} seperti di bawahini: L = { a ababbabbbabbbb ... } Dapatjugadidefinisikandengankalimat: L = semua word yang dimulaidengan a dandiikutiolehsejumlah b (danmungkintanpa b samasekali) Denganmemakainotasi *, dapatdituliskan L = language (ab*) Kleene Star dapatdiimplementasikanpada string abseperti di bawahini: (ab)* = atauabatauababatauababab . . . (ab)* (ab*)
ContohKleene Star lainnya: • L1 = language (xx*) • Language L1 di atasberisisebuah x laludiikutidengansejumlah x (dimanamungkinsajatanpa x samasekali) • L1dapatdituliskandengannotasi lain, yaitunotasi+ • x+berartisejumlah x dalamjumlah yang selalupositif (tidakbisa 0, atautidakbisa) • Notasi*lebihlazimdipergunakandaripadanotasi+ • L1dapatjugadidefinisikandengansalahsatucontoh di bawahini: xx* x+ xx*x* x*xx*x+x* x*x+ x*x*x*xx* • Ingatbahwa x*bisasajaberarti
Contoh: Language yang didefinisikandenganekspresi ab*a Adalahsebuahhimpunandari string a dan string b yang paling sedikitberisiduahuruf yang diawalidengan a dandiakhiridengana danhanyaakanberisi b diantaranya (atautidaksamasekali) language(ab*a) = { aa aba abbaabbbaabbbba ... } Contoh: Ekspresi-ekspresidi bawahinimendefinisikan language L2denganhasilyang sama L2 = { xganjil } = x(xx)* = (xx)*x Namunekspresi x*xx* tidak, karenatermasuk (xx) x (x)
Contoh: Language denganekspresiseperti di bawahini a*b* • Berisisemua string dari a dan b sedemikiansehinggasemuaa (bilaada) akanberada di depansemua b (bilaada) language(a*b*) = { a b aaab bb aaaaababbbbbaaaa ... } • Perhatikanbahwabadan aba tidaktermasukdalam language ini, jugabahwajumlah a dan b tidakperlusama • Ada pemanfaatan lain daritandatambah +. Ekpresi x + y berartisalahsatudari x atau y (memilih). Berhati-hatilahuntukmembedakanantara+dengan+
Contoh: Perhatikanbahasa T yang berasaldari alphabet = { a b c } T = { a c abcbabbcbbabbbcbbbabbbbcbbbb … } Semuaword di dalam T dimulaidengan a atau c dandiikutidengansejumlahb. Secarasimbolik language T dapatditulisdengancara: T = language ((a + c)b*) = language (a atau c diikutisejumlah b) Tanda+ berartiharusdilakukanpilihanuntukmemakaiekspresi yang sebelahkiriataukanan
Contoh • Language yang didefinisikandenganexpressi ab*a • Adalahsebuahhimpunandari string a dan string b yang paling sedikitberisiduahuruf yang diawalidengan a dandiakhiridengan a danhanyaakanberisi b diantaraanya (atautidaksamasekali) language(ab*a) = { aa aba abbaabbbaabbbba . . .}
Contoh • Language denganekspresiseperti di bawahini a*b* • Berisisemua string dari a dan b sedemikiansehinggasemua a (bilaada) akanberada di depansemua b (bilaada) language(a*b*) = { a b aaab bb aaaaababbbbbaaaa ...} • Perhatikanbahwabadan aba tidaktermasukdalam language ini, jugabahwajumlah a dan b tidakperlusama
Contoh • Ekspresi-ekspresi di bawahinimendefinisikan language L2denganhasil yang sama L2 = { xganjil} = x(xx)* = (xx)*x • Namunekspresi x*xx*tidak, karenatermasuk (xx) x (x). Ada pemanfaatan lain daritandatambah +. Ekpresi x + y berartisalahsatudari x atau y (memilih). Berhati-hatilahuntukmembedakanantara+dengan+. Contoh • Perhatikanbahasa T yang berasaldari alphabet = { a b c } • T = { a c abcbabbcbbabbbcbbbabbbbcbbbb } • Semua word di dalam T dimulaidengan a atau c dandiikutidengansejumlah b. Secarasimbolik language T dapatditulisdengancara T = language ((a + c)b*) = language (a atau c diikutisejumlah b) tanda + berartiharusdilakukanpilihanuntukmemakaiekspresi yang sebelahkiriataukanan.
Contoh • Sebuah language L akanberisisemua string dari a dan b denganpanjangselalutiga. • L = { aaaaab aba abb baa babbbabbb } • Hurufpertamadaritiap word di dalam L adalah a atau b. Hurufkeduadaritiap word di dalam L adalah a atau b. Hurufketigatiap word di dalam L adalah a atau b. Jadi L dapatdidefinisikan: L = language ((a + b)(a + b)(a + b)) Ataudenganlebihsingkat L = language ((a + b)3)
LATIHAN Perhatikanbeberapadefinisi di bawahini yang berasaldari alphabet = { a b } • (a + b)7 • (a + b)* • a(a + b)* • (a + b)*a(a + b)* • (a + b)*a(a + b)*a(a + b)* • b*ab*a(a + b)* • (a + b)*ab*ab* • b*a(a + b)*ab* • b*ab*ab* • (a + b)*a(a + b)*b(a + b)* • (a + b)*a(a + b)*b(a + b)* + (a + b)*b(a + b)*a(a + b)* • bb*aa* • (a + b)*a(a + b)*b(a + b)* + bb*aa*
OtomataHingga SebuahOtomatahinggaadalahkumpulandaritigahal: • Kumpulan terbatas (finite set) dari state (kondisi/keadaan). Satudiantaranyamenjadi initial state (kondisiawal) ataustart state, danbeberapa(bisaberartitidakada) dariantaranyadinyatakansebagaifinal state. • Himpunanalphabet berisibeberapahuruf, dimanastring-string bentukandari alphabet akandibacahuruf demi huruf. • Kumpulan terbatasdari transition yang menjelaskanuntuktiapstate dantiaphuruf yang dibacake state manaperjalanandilanjutkan.
OtomataHingga • Otomatahinggaadalahsuatu model yang dapatditerapkanpadaberagamjenisperangkatkeras (hardware) danperangkatlunak (software). • Penerapan-penerapandariotomatahinggaadalah: • Perangkatlunak yang digunakanuntukmerancangdanmemantauperilakurangkaian digital. • Lexical Analyzer, yaitukomponenkompiler yang bertugasmemecahteks-teks input menjadilogical unit sepertiidentifiers, keyworddanpunctuation. • Perangkatlunakuntukmemindaidokumenteks yang jumlahhalamannyaluarbiasabanyakgunamenemukankesamaan kata, frasedanbentuk-bentuk lain • Perangkatlunak yang digunakanuntukmemeriksasistem-sistemdenganstata/stateberbeda yang berhinggajumlahnya, misalnyaprotokolkomunikasiatauprotokol yang digunakanuntukpertukaraninformasisecaraaman.
ContohOtomataHingga Push Off On Push Start Start then t n h e th t the
Contoh • Alphabet yang digunakanhanya 2 huruf, adanb • Ada 3 buah state, yaitux, ydanz • Aturan transition yang dipakaiadalah: • Dari state x dan input a menuju state y • Dari state x dan input b menuju state z • Dari state y dan input a menuju state x • Dari state y dan input b menuju state z • Dari state z dan input apasajatetap di state z Ditentukanjuga x sebagai start state dan z sebagai final state
a a, b b Start a X Y Z b • Perhatikanapa yang akanterjadibila string aaadiumpankankeotomatahinggatersebut • Penelusuranakandimulaidari start state: • Hurufpertamaadalaha, sesuai aturan-1 akanmenuju state y • Hurufkeduaadalah a, sesuai aturan-3 akanmenuju state x • Hurufketigaadalah a, sesuai aturan-1 akanmenuju state y • Stringsudahdiumpankansemua, tapitidakmencapai final state • Jadi, string aaabukanlahtermasuk di dalambahasayang didefinisikanolehotomatahingga.
Contoh lain, bila string abbadiumpankanke FA tersebut . • Hasilnya, perjalananmencapaipada state z (final state) . • Jadi, string abbatermasuk word dalambahasa yang didefinisikanolehotomatatersebuttersebut
Tidaksulitmenerka word apasaja yang diterimaoleh FA tersebut, yaitustringnyaharusberisi minimal sebuah b agar mencapai state z. • Dari transition rule di atas, dapatdibuatkansebuahtransition table sepertidi bawahini: • OtomataHinggadapatdianggapsebagaisuatumesin. Ada suatupergerakkan, perpindahandarisebuah state ke state lain, karenaadanyasebuah input
a a X Y a X- Y b b a b b Z Z+ a b b a • OtomataHinggadapatjugadigambarkandalambentukgrafis yang disebutbentuk transition diagram. • Tanda- untuk start state dan + untuk final state . • Bentuklain, start state memakaipanahdan final state memakailingkaranganda.
a a a, b - + - + a, b b b • 2 busurataulebih yang berasaldari state yang samadanmenujuke state yang sama pula dapatdisatukansepertigambar di atas. • Sekilasterkesanbahwa FA di atasdapatmenerima string dalambentukapapun. • Namun, bilainputnyaadalah null string ( ), makatidakakanterjadiperpindahanstate. • Jadilanguage yang diterimaolehmesin di atasadalah: ( a + b ) ( a + b )* = ( a + b )+
a - + a, b b a, b a, b a, b + - Ada kemungkinansebuahOtomataHinggatidakakanmenerima language apapun
2 a a 4+ 1- a, b b a b b 3 Transisibiladiberi input string ababa δ(1,a) = (2) δ(2,b) = (3) δ(3,a) = (2) δ(2,b) = (3) δ(3,a) = (2) Transisibiladiberi input string babbb δ(1,b) = (3) δ(3,a) = (2) δ(2,b) = (3) δ(3,b) = (4) δ(4,b) = (4) PerhatikanOtomataHinggaini Apayang terjadibiladiberi input string ababadanbabbb(bagaimanapergerakkannya)?