05. FINITE STATE AUTOMATA - Teknik Kompilasi.zip

05. FINITE STATE AUTOMATA

  Konsep Automata Hingga atau Finite State Automata

  ¾ Finite State Automata (FSA) atau Finite Automata atau Automata Hingga dapat dibayangkan sebagai sebuah Mesin yang terdiri dari Kepala Baca (Read Head), dan Kotak Kontrol Stata Hingga.

  ¾ Mesin ini membaca sebuah pita (tape), satu persatu karakter, dari kiri ke kanan, seperti gambar berikut:

  

R E A D N O T R E A D

READ HEAD FINITE – STATE ACCEPTOR

  ¾ Cara Kerja Konsep Finite State Automata Ž

  Ž

  FSA bekerja dengan cara membaca tape satu demi satu karakter (dari kiri ke kanan) menggunakan head baca yang dikendalikan oleh kotak (mesin) kendali stata berhingga. Ž

  Ž

  FSA selalu dalam kondisi yang disebut stata awal (initial state) pada saat FSA mulai membaca tape. Ž

  Ž

  Perubahan atau transisi stata terjadi pada mesin ketika sebuah karakter berikutnya pada pita selesai dibaca. Ž Ž Beberapa stata dapat ditunjuk sebagai Stata Akhir/Stata Penerima. Ž Ž

  Ketika head sampai pada akhir tape dan stata yang ditemui adalah stata akhir, maka string pada tape dikatakan diterima FSA. Ž

  Ž

  Dengan kata lain; bila pembacaan dimulai dari Stata Awal, berjalan sesuai jalur hingga ke Stata Akhir, maka untai (deretan karakter) yang ada pada pita tersebut dikatakan diterima oleh FSA. ¾ Implementasi Finite Automata

  Sistem dengan stata berhingga diterapkan pada: Ž Ž

  Sistem elevator Ž

  Ž

  Mesin pengeluar minuman kaleng (vending machine) Ž

  Ž

  Pengatur lampu lalu lintas (traffic light regulator) Ž

  Ž

  Sirkuit penyaklaran (switching) di komputer dan telekomunikasi

  Ž Ž

  Ž Himpunan stata akhir (set of final states) Stata-stata yang menandai diterimanya masukan.

  Karakter samping atau diatas busur menandakan karakter yang menyebabkan terjadinya transisi stata.

  Ž Busur dari satu simpul ke simpul lain menandakan transisi stata.

  Ž

  Anak panah berlabel "start" mengarah ke suatu Stata, menandakan bahwa Stata tersebut merupakan Stata Awal. Stata akhir atau stata penerima disajikan berupa lingkaran ganda.

  Ž Ž

  Ž Jika terdapat busur mengarah dari Simpul P ke Simpul Q, dengan label a, berarti bahwa akan terjadi transisi Stata P ke Stata Q bila terbaca karakter a pada pita (bila memperoleh input karakter a).

  Ž

  panah) atau Digraph, dengan tambahan beberapa notasi khusus.

  State Transition Diagram atau Diagram Automata Hingga atau Diagram Transisi yang berbentuk Graf Berarah (dengan tanda anak

  Ž Perilaku FSA dimodelkan dengan Finite State Diagram (FSD) atau

  Ž

  ¾ Finite State Diagram (FSD)

  Fungsi transisi stata (state transition function) Fungsi transisi ini memberikan/menyatakan semua stata berikutnya yang mungkin dituju akibat adanya transisi.

  Ž

  Ž

  Finite State Diagram terdiri dari:

  Ž Stata mula/awal (initial state)

  Ž

  Ž Simbol-simbol masukan yang dibolehkan/diijinkan

  Ž

  Ž himpunan stata berhingga sebagai kendali

  Ž

  FSA atau Automata Hingga memiliki kelengkapan sbb:

  sistem Komputer ¾ Kelengkapan Finite Automata atau Automata Hingga

  Ž Ž

  jaringan saraf (Neuron nets)

  Ž Ž

  Ž Analisis Leksikal (Lexical analyzer)

  Ž

  Ž Protokol komunikasi (communication protocol)

  Ž Ž

1. Lingkaran menyatakan stata Lingkaran diberi label sesuai dengan nama stata tersebut.

  Adapun pembagian lingkaran adalah:

  • Lingkaran bergaris tunggal berarti stata antara
  • Lingkaran bergaris ganda berarti stata akhir

2. Anak Panah menyatakan transisi yang terjadi

  Label pada anak panah menyatakan simbol yang membuat transisi dari satu stata ke stata lain. Satu anak panah diberi label start untuk menyatakan awal mula transisi dilakukan. Contoh : Gambar diagram dibawah menggambarkan perilaku FA untuk penerimaan bilangan nyata (riil) yang paling tidak mempunyai satu digit setelah titik desimal adalah sebagai berikut: digit digit

  Start digit S A B

  Simpul-simpul (berbentuk lingkaran) pada FSD tersebut mengambarkan stata-stata dari FA, yaitu :

  • Simpul S - Simpul A - Simpul B ¾ Diagram Automata Hingga tersebut menerima bilangan Real, yang mempunyai paling sedikit satu digit sesudah titik desimal. Simpul dari Digraph tersebut menyatakan stata dari Automata Hingga.

  ¾ Simpul dengan garis ganda menunjukkan state akhir. ¾ Digit adalah nilai 0,1,2,3,4,5,6,7,8,9

  Uji Digraf 1

  • Misalkan pita berisikan untaian karakter 112.75 (seratus dua belas koma tujuh lima).
  • Automata Hingga mulai bekerja dari Stata S, yakni Stata Awal, dan masih tetap berada di Stata S ini saat bilangan di depan titik desimal dibaca.
  • Ketika tanda titik desimal dibaca, berpindah ke Stata A, kemudian pindah lagi ke Stata B ketika digit pertama sesudah titik desimal (dalam contoh ini adalah digit 7) dibaca.
  • Automata Hingga kemudian membaca digit berikutnya, yakni 5, dan masih tetap berada di Stata B. Sekarang akhir dari pembacaan Pita sudah tercapai.

  • Penelusuran token berakhir di Simpul B, yang adalah Stata Penerima atau Stata Akhir.
  • Ini berarti Automata Hingga menerima bilangan desimal yang diberikan, yakni 112.75, sebagai sebuah token.

  Catatan: ∗ Jika penelusuran Automata Hingga tidak sampai pada Stata B, saat sesudah untai selesai dibaca seluruhnya, maka untai tersebut ditolak.

  ∗ Misalnya untai 112, untai ini termasuk kasus yang ditolak karena tidak mencapai ke Stata Penerima (Stata Akhir). ∗ Penolakan dapat pula terjadi apabila Transisi Stata tidak dapat dilakukan untuk suatu karakter yang dibaca. ∗ Misalnya di antara digit tersebut terdapat huruf. ∗ Sebagai contoh untai yang ditolak adalah sbb.: X15.25 ataupun 112.H75.

  Uji Digraf 2

  Contoh string : 9.8765 - Busur berlabel Start menunjukkan transisi ke state S atau awal transisi.

  • Head membaca angka "9"
  • pembacaan ke karakter berikutnya adalah "."
  • pembacaan karakter berikutnya = "8"
  • pembacaan karakter berikutnya = "7"
  • pembacaan karakter berikutnya = "6"
  • pembacaan karakter berikutnya = "5"

  Digraf menunjukkan bahwa pada stata S ada busur yang kembali ke stata S bila membaca digit (berarti memiliki kesesuaian bahasa).

  Digraf menunjukkan bahwa pada stata S ada busur yang menuju ke stata A bila membaca titik desimal (” . ”) (kondisi berada di state A)

  Digraf menunjukkan bahwa pada stata A ada busur yang menuju ke stata B bila membaca digit (kondisi berada di state B)

  Digraf menunjukkan bahwa pada stata B ada busur yang kembali ke stata B bila membaca digit (kondisi tetap berada di posisi B)

  Digraf menunjukkan bahwa pada stata B ada busur yang kembali ke stata B bila membaca digit (kondisi tetap berada di posisi B)

  Digraf menunjukkan bahwa pada stata B ada busur yang kembali ke stata B bila membaca digit (kondisi tetap berada di posisi B)

  • penyesuaian aturan kendali

  Pada akhir pembacaan dilakukan penyesuaian apakah karakter terakhir berada pada stata akhir. Bila kondisi "YA" maka string termasuk di dalam bahasa, dalam hal ini karakter "5" berada pada stata B yaitu stata dengan lingkaran bergaris ganda yang menandakan stata akhir, maka sesuai. String 9.8765 termasuk di dalam bahasa Finite Automata pada FSD. Contoh string : a

  • Busur berlabel Start - Menunjukkan transisi ke state S - Head membaca nilai "a"
  • Terdapat kondisi yang menunjukkan ketidaksesuaian dengan aturan kendali pada state S yaitu tidak adanya busur yang menunjukkan persamaan simbol dengan simbol yang dibaca ("a")
  • Ketidaksesuaian simbol
  • Aturan kendali pada kondisi "TIDAK" menandakan string a tidak termasuk di dalam bahasa FSD di atas.

  Klasifikasi Finite Automata atau Automata Hingga

  Finite automata dapat berupa:

  • Deterministic Finite Automata (DFA) Terdiri dari satu transisi dari suatu state pada 1 simbol masukan.
  • Non deterministic Finite Automata (NDFA)

  Lebih dari satu transisi dari suatu state dimungkinkan pada simbol masukan yang sama. Kedua FA tersebut mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua FA itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat. DFA dapat menuntun recognizer (pengenal) lebih cepat dibanding NDFA. Lebih mudah membangun NDFA dibanding DFA untuk suatu bahasa, namun lebih mudah mengimplementasikan DFA dibanding NDFA. ¾ Automata Hingga yang digunakan dalam contoh di atas disebut

  Deterministic Finite State Acceptor, atau Deterministic Finite State Automata, atau Automata Hingga Deterministik (AHD).

  Definisi Automata Hingga Deterministik

  Sebuah Automata Hingga Deterministik (AHD) yang terdiri atas 5 tupel (K, V , f, q , Z) adalah:

  T (1) Himpunan Hingga K, berisi Stata Internal, atau disingkat Stata.

  (2) Himpunan Hingga V , berisi simbol input.

  T

  (3) Sebuah fungsi f : K x V Î K, merupakan fungsi next-State atau

  T fungsi Stata berikut.

  (4) Stata Awal q anggota K (5) Himpunan Z, subset dari K, yang elemennya disebut Stata Akhir atau Stata Penerima.

  Berikut ini adalah contoh sebuah Automata Hingga Deterministik dengan 2 (dua) simbol input dan 3 (tiga) Stata. V = (a,b), himpunan simbol input

  T

  K = (q , q , q ), himpunan Stata

  1

  2 Z = (q , q ), himpunan Stata penerima atau Stata akhir

  1 Stata Awal adalah q

  Fungsi next-state f : K x V Î K, didefinisikan sebagai tabel berikut :

  T

  f a b q q q

  1

  q q q

  1

  2

  q q q

  2

  2

2 Stata Awal q . Stata Akhir disajikan dengan lingkaran ganda.

  Bila f(q , a ) = q , maka terdapat busur/anak panah dari q ke q dengan

  i j k i k label a.

  Perlu dicatat bahwa Stata Awal dapat merangkap sebagai simpul penerima. Digraph pada contoh tersebut adalah sebagai berikut : Misalkan w = a , a , ....., a adalah untai simbol input dari Automata M.

  1 2 n

  Kita dapatkan barisan Stata S , S , ....., S dengan S adalah Stata Awal,

  

1 n

dan S = f(S , a ) untuk i > 0. i i-1 i

  Automata M dikatakan dapat menerima atau mengenal untai w tersebut, jika Stata terakhir S merupakan Stata Penerima. Himpunan semua untai

  n yang dapat diterima oleh Automata M kita notasikan dengan L(M). Sebagai contoh, Automata di atas dapat menerima untai aabababa, aaa, baab dan lain-lain untai lagi. Sedangkan untai yang ditolak adalah untai yang mengandung 2 buah b berturutan sbb.:

  Bbaaaaaa, aabaabb, babbaa, dan lain-lain. Sebagai contoh lain dari Automata Hingga adalah sbb.

  Automata berisikan dua Stata, yakni Stata S dan A. Stata S adalah Stata Awal dan Stata A merupakan Stata Akhir. Di sini terlihat bahwa kita akan tetap berada di Stata A saat Automata membaca sesuatu karakter atau digit ataupun karakter khusus pada himpunan {#, @, $, _}. Contoh lain yang lebih kompleks adalah pada gambar berikut. Contoh ini juga berbentuk Diagram Stata Hingga yang menggambarkan Diagram Transisi untuk sebuah Bahasa yang terdiri dari Token <, <=, =, >=, >, ( ), (, ), +, -, *, /, :=, identifier, ; , keyword, konstanta, literal (yang diapit oleh apostrof).

  Semua kemungkinan transisi dipandang dijalankan secara paralel. Bila terdapat transisi yang menuju/sampai state akhir, berarti string masukan diterima otomata.

  

AUTOMATA HINGGA NON DETERMINISTIK (AHN)

A HN pada hakekatnya adalah sama dengan AHD, hanya saja pada AHN

  dimungkinkan adanya transisi ke lebih dari satu Stata, dari sebuah Stata untuk pembacaan karakter input yang sama. Contoh AHN ini menerima untai berbentuk

  m n

  a b , m,n >= 1

  Pengertian

  AHN terdiri dari 5 tupel (K, V , M, S, Z) dengan;

  T

  1. K adalah himpunan Stata internal yang tidak hampa

  2. V adalah himpunan simbol input

  T

  3. M adalah fungsi stata berikut M : K x V → subhimpunan dari K

  T

  4. S adalah himpunan Stata Awal yang merupakan subhimpunan dari K

  5. Z adalah himpunan Stata Akhir atau Stata penerima yang merupakan subhimpunan dari K Fungsi Stata berikut M dapat ditulis sbb.:

  M(q, t) = {p , p , ........., p }

  1 2 n

  berarti bahwa dimungkinkan terjadi transisi dari Stata q menjadi Stata p ,

  1 atau Stata p , atau.... Stata p , apabila sebuah karakter t anggota V dibaca. 2 n

  T

  Fungsi Stata-berikut dari AHN dapat diperluas sbb.: 1. M(q, ∧) = {q}, untuk setiap q anggota K, ∧ adalah untai hampa.

  ∪ M(p

  2. M(q,tT) = ,T), bila t karakter anggota V , dan T untai anggota

  i T

  V *, serta {p } adalah sama dengan M(q,t)

  T i

  3. M({q ,q ,.....q ∪ M(q * },X) = ,X), untuk X untai anggota V

  1 2 n

  1 T

  Keterangan;

  1. Definisi pertama menerangkan bahwa jika input merupakan untai hampa, maka AHN harus tetap pada Stata yang sama.

  2. Definisi kedua dapat ditulis ∪ M(p ∪ ......... ∪ M(p

  M(q,tT) = M(p ,T) ,T) ,T)

  1

2 n

  dengan M(q,t) adalah {p ,p ,.......,p }

  1 2 n Di sini M(q,tT) merupakan suatu himpunan Stata.

  3. Definisi ketiga menjelaskan suatu pemetaan

  k

  • 2 x V → subhimpunan dari K

  T

  Suatu untai X dikatakan diterima oleh sebuah AHN, jika sedikitnya ada satu Stata penerima terkandung dalam M(q ,X). q adalah Stata Awal AHN. Contoh: Sebuah AHN menerima suatu himpunan/subhimpunan dari {a,b,c}*, yang bersifat bahwa huruf Awal dan huruf Akhir dari untai adalah sama. Contoh, untai bab diterima, tetapi untai cbbca tidak diterima.

  AHN tersebut adalah: F = ({q ,q ,q ,q ,q },{a,b,c},M,q ,{q })

  1

  2

  3

  4

  4 Digraf untuk AHN ini adalah sbb.:

  Fungsi M dapat didefinisikan dengan tabel sbb.: simbol input a b c

  Stata q {q ,q } {q ,q } {q ,q }

  1

  2

  3

  q {q ,q } {q } {q }

  1

  1

  4

  1

  1

  q {q } {q ,q } {q }

  2

  2

  2

  4

  2

  q {q } {q } {q ,q }

  3

  3

  3

  3

  4

  q

  4 ∧ ∧ ∧

  Sebagai contoh dengan input untai aca, nilai dari M(q ,aca) dapat ditentukan sbb.: Karena

  M(q ,a) = {q ,q }

  1

  maka ∪ M(q

  M(q ,aca) = M(q ,ca) ,ca)

  1

  dan karena M(q ,c) = {q ,q }

3 M(q ,c) = {q }

  1

  1

  maka M(q ,ca) = M(q ,a) ∪ M(q ,a)

  3

  = {q ,q } ∪ {q }

  1

  3

  = {q ,q ,q }

  1

2 M(q ,ca) = M(q ,a) = {q ,q }

  1

  1

  1

  4

  sehingga ∪ {q

  M(q ,aca) = {q ,q ,q } ,q }

  1

  3

  1

  4

  = {q ,q ,q ,q }

  1

  3

  4 dan karena M(q ,aca) memuat q , Stata Akhir, maka untai aca diterima.

  4

  LATIHAN

  1. Misalkan a dan b adalah simbol input. Buatlah sebuah AHD (Automata Hingga Deterministik) M yang hanya menerima untaian karakter yang mengandung sejumlah genap a.

  (Contohnya untai aababab atau aa dapat diterima, sedangkan untai ababa atau abbb tidak diterima).

  2. Buatlah sebuah Automata Hingga Deterministik dengan simbol input a,b, yang hanya dapat menerima untai karakter yang mengandung sejumlah b yang habis dibagi 3. (Petunjuk: dibutuhkan 3 Stata)

  3. Buatlah sebuah Automata Hingga Deterministik M dengan simbol input a dan b, yang hanya dapat menerima untai karakter yang mengandung sejumlah genap a dan sejumlah b yang habis dibagi 3.

  4. Misalkan M1(K , V , Z , q , f ) dan M2(K , V , Z , s , f ) adalah dua

1 T

  1

  1

  2 T

  2

  2

  buah Automata Hingga Deterministik dengan himpunan simbol input V yang sama. Misalkan L(M1) dan L(M2) berturut-turut adalah

  T

  himpunan untai yang dapat diterima oleh M1 dan M2. Buatlah sebuah Automata Hingga Deterministik N dengan himpunan simbol input V

  T

  yang dapat menerima L(M1) IRISAN L(M2), yakni untai yang dapat diterima baik oleh M1 dan M2.

  5. Sebuah Automata Hingga Non-deterministik (F) dapat dinyatakan sebagai berikut: F = (K,V ,M,q ,{q })

  T

4 K = {q ,q ,q ,q ,q }

  1

  2

  3

  4 V = {a,b,c} T

  q = stata awal q = stata penerima

4 Fungsi M dapat didefinisikan dengan tabel sbb.:

  simbol input Stata

  

a b c

  q {q ,q } {q ,q } {q ,q }

  1

  2

  3

  q {q ,q } {q ,q } {q }

  1

  1

  4

  2

  4

  1

  q {q } {q ,q } {q }

  2

  2

  2

  4

  2

  q {q } {q } {q ,q }

  3

  3

  3

  3

  4

  q

  4

  φ φ φ a) Gambarkan Digraf dari Automata Hingga tersebut.

  b) Selidiki apakah untai karakter aabbab diterima atau tidak.

6. Cobalah anda implementasikan scanner untuk suatu bahasa yang anda rancang Sendiri.

  1

  {q ,q

  } {q

  1

  } {q

  2

  ,q

  

4

  } {q

  1

  ,q

  

4

  } φ

  3

  {q ,q

  } {q

  1

  } {q

  2

  } {q

  3

  ,q

  4

  } φ a) Gambarkan diagram transisi dari Automata Hingga tersebut.

  b) Selidiki apakah untai karakter abcab diterima atau tidak.

  8.

  

2

  } φ

  ,q

  1

  2

  ,q

  3

  ,q

  4

  }, {a,b,c}, M, q , {q

  4

  }) Fungsi M dapat didefinisikan dengan tabel sbb.: simbol input

  Stata

  a b c

  q q

  q

  7. Sebuah Automata Hingga Non-deterministik (F) dapat dinyatakan sebagai berikut F = ({q ,q

  2

  q

  3

  q

  4

  {q ,q

  1

  } {q

  3

  } {q

  2

  } {q

  3