Selasa, 03 Maret 2020

Deterministic Finite Automata VS Nondeterminic Finite Automata

Hingga Otomat dapat diklasifikasikan menjadi dua jenis -
  • Deterministic Finite Automaton (DFA)
  • Finite Automaton Non-deterministik (NDFA / NFA)

Deterministic Finite Automaton (DFA)

Dalam DFA, untuk setiap simbol input, seseorang dapat menentukan status kemana mesin akan bergerak. Oleh karena itu, itu disebut Deterministic Automaton . Karena memiliki sejumlah negara terbatas, mesin ini disebut Deterministic Finite Machine atau Deterministic Finite Automaton.

Definisi Resmi DFA

DFA dapat diwakili oleh 5-tupel (Q, ∑, δ, q 0 , F) di mana -
  • Q adalah seperangkat status terbatas.
  •  adalah seperangkat simbol terbatas yang disebut alfabet.
  • δ adalah fungsi transisi di mana δ: Q × ∑ → Q
  • 0 adalah kondisi awal dari mana input diproses (q 0 ∈ Q).
  • F adalah seperangkat status akhir / status Q (F ⊆ Q).

Representasi grafis dari DFA

DFA diwakili oleh digraf yang disebut diagram keadaan .
  • Verteks mewakili negara.
  • Busur berlabel alfabet input menunjukkan transisi.
  • Keadaan awal dilambangkan dengan satu busur masuk yang kosong.
  • Keadaan akhir ditunjukkan oleh lingkaran ganda.

Contoh

Biarkan otomat terbatas deterministik menjadi →
  • Q = {a, b, c},
  • ∑ = {0, 1},
  • 0 = {a},
  • F = {c}, dan
Fungsi transisi δ seperti yang ditunjukkan oleh tabel berikut -
Keadaan saat iniStatus Selanjutnya untuk Input 0Status Selanjutnya untuk Input 1
SebuahSebuahb
bcSebuah
cbc
Representasi grafisnya adalah sebagai berikut -
Representasi Grafis DFA

Dalam NDFA, untuk simbol input tertentu, mesin dapat berpindah ke kombinasi status apa pun di dalam mesin. Dengan kata lain, kondisi pasti tempat mesin bergerak tidak dapat ditentukan. Oleh karena itu, itu disebut Non-deterministic Automaton . Karena memiliki jumlah negara hingga, mesin ini disebut Mesin Hingga Non-deterministik atau Non-deterministic Finite Automaton .

Definisi Resmi suatu NDFA

NDFA dapat diwakili oleh 5-tupel (Q,, δ, q 0 , F) di mana -
  • Q adalah seperangkat status terbatas.
  •  adalah seperangkat simbol terbatas yang disebut huruf.
  • δ adalah fungsi transisi di mana δ: Q × ∑ → 2 Q
    (Di sini set daya Q (2 Q ) telah diambil karena dalam kasus NDFA, dari suatu keadaan, transisi dapat terjadi pada kombinasi dari keadaan Q)
  • 0 adalah kondisi awal dari mana input diproses (q 0 ∈ Q).
  • F adalah seperangkat status akhir / status Q (F ⊆ Q).

Representasi Grafis dari NDFA: (sama seperti DFA)

NDFA diwakili oleh digraf yang disebut diagram keadaan.
  • Verteks mewakili negara.
  • Busur berlabel alfabet input menunjukkan transisi.
  • Keadaan awal dilambangkan dengan satu busur masuk yang kosong.
  • Keadaan akhir ditunjukkan oleh lingkaran ganda.
Contoh
Biarkan otomat hingga non-deterministik menjadi →
  • Q = {a, b, c}
  • Β = {0, 1}
  • 0 = {a}
  • F = {c}
Fungsi transisi δ seperti yang ditunjukkan di bawah ini -
Keadaan saat iniStatus Selanjutnya untuk Input 0Status Selanjutnya untuk Input 1
Sebuaha, bb
bca, c
cb, cc
Representasi grafisnya adalah sebagai berikut -
Representasi Grafis NDFA

DFA vs NDFA

Tabel berikut mencantumkan perbedaan antara DFA dan NDFA.
DFANDFA
Transisi dari keadaan adalah ke keadaan berikutnya tunggal khusus untuk setiap simbol input. Karena itu disebut deterministik .Transisi dari status dapat ke beberapa status berikutnya untuk setiap simbol input. Karena itu disebut non-deterministik .
Transisi string kosong tidak terlihat di DFA.NDFA mengizinkan transisi string kosong.
Mengulangi diizinkan dalam DFADi NDFA, mundur tidak selalu mungkin.
Membutuhkan lebih banyak ruang.Membutuhkan lebih sedikit ruang.
Suatu string diterima oleh DFA, jika transit ke keadaan akhir.Sebuah string diterima oleh NDFA, jika setidaknya satu dari semua transisi yang mungkin berakhir dalam keadaan akhir.

Akseptor, Klasifikasi, dan Transduser

Akseptor (Pengenal)

Otomat yang menghitung fungsi Boolean disebut akseptor . Semua status akseptor menerima atau menolak input yang diberikan padanya.

Penggolong

Sebuah classifier memiliki lebih dari dua negara akhir dan memberikan satu output ketika berakhir.

Transduser

Otomat yang menghasilkan output berdasarkan input saat ini dan / atau keadaan sebelumnya disebut transduser . Transduser dapat terdiri dari dua jenis -
  • Mesin Mealy - Output tergantung pada kondisi saat ini dan input saat ini.
  • Moore Machine - Output hanya tergantung pada kondisi saat ini.

Penerimaan oleh DFA dan NDFA

Sebuah string diterima oleh DFA / NDFA jika DFA / NDFA dimulai dari keadaan awal berakhir pada keadaan penerima (salah satu dari status akhir) setelah membaca string sepenuhnya.
String S diterima oleh DFA / NDFA (Q,, δ, q 0 , F), iff
δ * (q 0 , S) ∈ F
Bahasa L yang diterima oleh DFA / NDFA adalah
{S | S ∈ ∑ * dan δ * (q 0 , S) ∈ F}
String S ′ tidak diterima oleh DFA / NDFA (Q,, δ, q 0 , F), iff
δ * (q 0 , S ′) ∉ F
Bahasa L ′ tidak diterima oleh DFA / NDFA (Pelengkap bahasa yang diterima L) adalah
{S | S ∈ ∑ * dan δ * (q 0 , S) ∉ F}
Contoh
Penerimaan String oleh DFA

Mari kita perhatikan DFA yang ditunjukkan pada Gambar 1.3. Dari DFA, string yang dapat diterima dapat diturunkan.


String diterima oleh DFA di atas: {0, 00, 11, 010, 101, ...........}
String tidak diterima oleh DFA di atas: {1, 011, 111, ........}


Pernyataan masalah

Misalkan X = (Q x , ∑, δ x , q 0 , F x ) menjadi NDFA yang menerima bahasa L (X). Kita harus merancang sebuah DFA setara Y = (Q y , Σ, δ y , q 0 , F y ) sehingga L (Y) = L (X) . Prosedur berikut mengubah NDFA ke DFA yang setara -

Algoritma

Input - Sebuah NDFA
Output - DFA yang setara
Langkah 1 - Buat tabel negara dari NDFA yang diberikan.
Langkah 2 - Buat tabel keadaan kosong di bawah abjad input yang mungkin untuk DFA yang setara.
Langkah 3 - Tandai status awal DFA dengan q0 (Sama seperti NDFA).
Langkah 4 - Cari tahu kombinasi States {Q 0 , Q 1 , ..., Q n } untuk setiap alfabet input yang memungkinkan.
Langkah 5 - Setiap kali kita menghasilkan status DFA baru di bawah kolom alfabet masukan, kita harus menerapkan langkah 4 lagi, jika tidak, lanjutkan ke langkah 6.
Langkah 6 - Negara-negara bagian yang berisi negara bagian terakhir NDFA adalah negara bagian terakhir dari DFA yang setara.

Contoh

Mari kita perhatikan NDFA yang ditunjukkan pada gambar di bawah ini.
NDFA
qδ (q, 0)δ (q, 1)
Sebuah{a, b, c, d, e}{d, e}
b{c}{e}
c{b}
d{e}
e
Dengan menggunakan algoritma di atas, kami menemukan DFA yang setara. Tabel status DFA ditunjukkan di bawah ini.
qδ (q, 0)δ (q, 1)
[Sebuah][a, b, c, d, e][d, e]
[a, b, c, d, e][a, b, c, d, e][b, d, e]
[d, e][e]
[b, d, e][c, e][e]
[e]
[c, e][b]
[b][c][e]
[c][b]
Diagram keadaan DFA adalah sebagai berikut -
State Diagram DFA


Finite State Automata

Finite state automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.
Finite State Automata (FSA) adalah model matematika yang dapat menerima input dan mengeluarkan output yang memiliki state yang berhingga banyaknya dan dapat berpindah dari satu state ke state lainnya berdasarkan input dan fungsi transisi. Finite state automata tidak memiliki tempat penyimpanan/memory, hanya bisa mengingat state terkini.
Finite State Automata dinyatakan oleh pasangan 5 tuple, yaitu:
M=(Q , Σ , δ , S , F )
Q = himpunan state
Σ = himpunan simbol input
δ = fungsi transisi δ : Q × Σ
S = state awal / initial state , S ∈ Q
F = state akhir, F ⊆ Q
Karakteristik Finite Automata
1.Setiap Finite Automata memiliki keadaan dan transisi yang terbatas.
2.Transisi dari satu keadaan ke keadaan lainnya dapat bersifat deterministik atau non-deterministik.
3.Setiap Finite Automata selalu memiliki keadaan awal.
4.Finite Automata dapat memiliki lebih dari satu keadaan akhir.
jika setelah pemrosesan seluruh string, keadaan akhir dicapai, artinya otomata menerima string tersebut.
Setiap FSA memiliki:
1.Himpunan berhingga (finite) status (state)
•Satu buah status sebagai status awal (initial state), biasa dinyatakan q0.
•Beberapa buah status sebagai status akhir (final state).
2.Himpunan berhingga simbol masukan
3.Fungsi transisi
Menentukan status berikutnya dari setiap pasang status dan sebuah simbol masukan.
Cara Kerja Finite State Automata
Finite State Automata bekerja dengan cara mesin membaca memori masukan berupa tape yaitu 1 karakter tiap saat (dari kiri ke kanan) menggunakan head baca yang dikendalikan oleh kotak kendali state berhingga dimana pada mesin terdapat sejumlah state berhingga.
Finite Automata selalu dalam kondisi yang disebut state awal (initial state) pada saat Finite Automata mulai membaca tape. Perubahan state terjadi pada mesin ketika sebuah karakter berikutnya dibaca. Ketika head telah sampai pada akhir tape dan kondisi yang ditemui adalah state akhir, maka string yang terdapat pada tape dikatakan diterima Finite Automata (String-string merupakan milik bahasa bila diterima Finite Automata bahasa tersebut).
Finite State Diagram (FSD)
Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga disebut State Transition Diagram. Sistem transisi adalah sistem yang tingkah lakunya disajikan dalam bentuk keadaan-keadaan (states). Sistem tersebut dapat bergerak dari state yang satu ke state lainnya sesuai dengan input yang diberikan padanya.
Fungsi Transisi (d) adalah representasi matematis atas transisi keadaan.
S = himpunan alfabet.
Q = himpunan keadaan-keadaan.
d = Q x S à Q
Finite State Diagram terdiri dari:
1.Lingkaran menyatakan state
Lingkaran diberi label sesuai dengan nama state tersebut. Adapun pembagian lingkaran adalah:
•Lingkaran bergaris tunggal berarti state sementara
•Lingkaran bergaris ganda berarti state akhir
2.Anak Panah menyatakan transisi yang terjadi.
Label di anak panah menyatakan simbol yang membuat transisi dari 1 state ke state lain. 1 anak panah diberi
label start untuk menyatakan awal mula transisi dilakukan.
Contoh FSA : pencek parity ganjil
Image
Misal input : 1101
Genap 1 Ganjil 1 Genap 0 Genap 1 Ganjil : diterima mesin
Misal input : 1100
Genap 1 Ganjil 1 Genap 0 Genap 0 Genap : ditolak mesin
Dari contoh diatas, maka:
Q = {Genap, Ganjil}
Σ = {0,1}
S = Genap
F = {Ganjil }
Image
atau
δ(Genap,0) = Genap
δ(Genap,1) = Ganjil
δ(Ganjil,0) = Ganjil
δ(Ganjil,1) = Genap
Sebuah FSA dibentuk dari lingkaran yang menyatakan state:
• Label pada lingkaran adalah nama state
• Busur menyatakan transisi/ perpindahan
• Label pada busur yaitu symbol input
• Lingkaran yang didahului sebuah busur tanpa label menyatakan state awal
• Lingkaranb ganda menyatakan state akhir/ final.
Jadi sebuah mesin otomata dapat dinyatakan dalam diagram transisi, fungsi transisi dan tabel transisi.
Jenis FSA
Ada dua jenis FSA :
1. Deterministic Finite Automata (DFA) : dari suatu state ada tepat satu state berikutnya untuk setiap simbol masukan yang diterima. Deterministik artinya tertentu/sudah tertentu fungsi transisinya.
Notasi matematis DFA:
• M = nama DFA
• Q = himpunan keadaan DFA
• S = himpunan alfabet
• d = fungsi transisi
• q0 = keadaan awal
• F = keadaan akhir
M = (Q, S, d, q0, F)
Contoh : Pengujian untuk menerima bit string dengan banyaknya 0 genap, serta banyaknya 1 genap.
0011 : diterima
10010 : ditolak, karena banyaknya 0 ganjil
Diagram transisi-nya :
Image
DFA nya:
Q = {q0 , q1 , q2 , q3 }
Σ = {0,1}
S = q0
F = { q0}
fungsi transisi adalah:
Image
δ( q0,011)= δ( q2,11) =δ( q3,1)= q2  Ditolak
δ( q0,1010)= δ( q1,010) =δ( q3,10)=δ( q2,0)= q0 Diterima
2. Non-deterministic Finite Automata (NFA) : dari suatu state ada 0, 1 atau lebih state    berikutnya untuk setiap simbol masukan yang diterima.
Non-Deterministic Finite Automata:
• Otomata berhingga yang tidak pasti untuk setiap pasangan state input, bisa memiliki 0 (nol) atau lebih pilihan untuk state berikutnya.
• Untuk setiap state tidak selalu tepat ada satu state berikutnya untuk setiap simbol input yang ada.
• Dari suatu state bisa terdapat 0,1 atau lebih busur keluar (transisi)
berlabel simbol input yang sama.
• Untuk NFA harus dicoba semua kemungkinan yang ada sampai
terdapat satu yang mencapai state akhir.
• Suatu string x dinyatakan diterima oleh bahasa NFA, M= (Q, _, d, S, F) bila {x | d (S,x) memuat sebuah state di dalam F}
Kedua finite automata di atas mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua finite automata itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat.
DFA dapat menuntun recognizer(pengenal) lebih cepat dibanding NDFA. Namun demikian, DFA berukuran lebih besar dibanding NDFA yang ekivalen dengannya. Lebih mudah membangun NDFA dibanding DFA untuk suatu bahasa, namun lebih mudah mengimplementasikan DFA dibanding NDFA.


Referen :

Push Down Automata

Struktur Dasar PDA

Automat pushdown adalah cara untuk menerapkan tata bahasa bebas konteks dengan cara yang sama kita merancang DFA untuk tata bahasa biasa. DFA dapat mengingat sejumlah informasi yang terbatas, tetapi PDA dapat mengingat jumlah informasi yang tak terbatas.
Pada dasarnya otomat pushdown adalah -
"Mesin negara terbatas" + "setumpuk"
Automat pushdown memiliki tiga komponen -
  • rekaman input,
  • unit kontrol, dan
  • tumpukan dengan ukuran tak terbatas.
Kepala tumpukan memindai simbol atas tumpukan.
Tumpukan melakukan dua operasi -
  • Push - simbol baru ditambahkan di bagian atas.
  • Pop - simbol teratas dibaca dan dihapus.
PDA mungkin atau mungkin tidak membaca simbol input, tetapi harus membaca bagian atas tumpukan di setiap transisi.
PDA
PDA dapat secara resmi digambarkan sebagai 7-tupel (Q, ∑, S, δ, q 0 , I, F) -
  • Q adalah jumlah negara terbatas
  •  adalah alfabet input
  • S adalah simbol stack
  • δ adalah fungsi transisi: Q × (ε ∪ {ε}) × S × Q × S *
  • 0 adalah kondisi awal (q 0 ∈ Q)
  • I adalah simbol stack top awal (I ∈ S)
  • F adalah seperangkat status penerimaan (F ∈ Q)
Diagram berikut menunjukkan transisi dalam PDA dari keadaan q 1 ke keadaan q 2 , dilabeli sebagai a, b → c -
Transisi dalam PDA
Ini berarti pada status 1 , jika kita menemukan string input 'a' dan simbol teratas dari stack adalah 'b' , maka kita pop 'b' , tekan 'c' di atas stack dan pindah ke status 2 .

Terminologi Terkait dengan PDA

Deskripsi sesaat

Deskripsi instan (ID) PDA diwakili oleh triplet (q, w, s) di mana
  • q adalah negara
  • w adalah input yang tidak digunakan
  • s adalah isi stack

Notasi Turnstile

Notasi "turnstile" digunakan untuk menghubungkan pasangan ID yang mewakili satu atau banyak gerakan PDA. Proses transisi dilambangkan dengan simbol pintu putar "⊢".
Pertimbangkan PDA (Q,, S, δ, q 0 , I, F). Transisi dapat secara matematis diwakili oleh notasi turnstile berikut -
(p, aw, Tβ) ⊢ (q, w, αb)
Ini menyiratkan bahwa saat mengambil transisi dari keadaan p ke keadaan q , simbol input 'a' dikonsumsi, dan bagian atas tumpukan 'T' diganti oleh string baru 'α' .
Catatan - Jika kita menginginkan nol atau lebih gerakan dari PDA, kita harus menggunakan simbol (⊢ *) untuk itu Ada dua cara berbeda untuk mendefinisikan penerimaan PDA.

Penerimaan Keadaan Akhir

Dalam keadaan penerimaan terakhir, PDA menerima string ketika, setelah membaca seluruh string, PDA berada dalam keadaan akhir. Dari kondisi awal, kita dapat membuat gerakan yang berakhir pada kondisi akhir dengan nilai stack apa pun. Nilai tumpukan tidak relevan selama kita berakhir dalam keadaan akhir.
Untuk PDA (Q, ∑, S, δ, q 0 , I, F), bahasa yang diterima oleh himpunan status akhir F adalah -
L (PDA) = {w | (q 0 , w, I) ⊢ * (q, ε, x), q ∈ F}
untuk setiap string tumpukan input x .

Penerimaan Stack Kosong

Di sini PDA menerima string ketika, setelah membaca seluruh string, PDA telah mengosongkan tumpukannya.
Untuk PDA (Q, ∑, S, δ, q 0 , I, F), bahasa yang diterima oleh tumpukan kosong adalah -
L (PDA) = {w | (q 0 , w, I) ⊢ * (q, ε, ε), q ∈ Q}

Contoh

Bangun PDA yang menerima L = {0 n 1 n | n ≥ 0}

Larutan

PDA untuk L.
Bahasa ini menerima L = {ε, 01, 0011, 000111, .............................}
Di sini, dalam contoh ini, jumlah 'a' dan 'b' harus sama.
  • Awalnya kami menaruh simbol khusus '$' ke tumpukan kosong.
  • Kemudian pada kondisi 2 , jika kita menemukan input 0 dan top adalah Null, kita dorong 0 ke stack. Ini mungkin berulang. Dan jika kita menjumpai input 1 dan top adalah 0, kita letakan 0 ini.
  • Kemudian pada status 3 , jika kita menemukan input 1 dan top adalah 0, kita beri tanda 0. Ini juga dapat diulang. Dan jika kita menjumpai input 1 dan atas adalah 0, kita meledakkan elemen atas.
  • Jika simbol khusus '$' ditemukan di atas tumpukan, itu muncul dan akhirnya pergi ke negara penerima q 4 .

Contoh

Bangun PDA yang menerima L = {ww R | w = (a + b) *}
Larutan
PDA untuk L1
Awalnya kami menaruh simbol khusus '$' ke tumpukan kosong. Pada kondisi 2 , w sedang dibaca. Dalam kondisi 3 , setiap 0 atau 1 muncul ketika cocok dengan input. Jika ada input lain yang diberikan, PDA akan mati. Ketika kita mencapai simbol khusus '$', kita pergi ke negara penerima 4 .



Referensi :