Back to IF2224 Teori Bahasa Formal dan Otomata
Topic: Mekanisme Eksekusi & Bahasa PDA
Questions/Cues
Apa itu ID?
Komponen ID (Snapshot)
Simbol vs
2 Jenis Penerimaan
Accept by Final State
Accept by Empty Stack
Contoh Tracing ID
Analisis Rejection
Intuisi Ekuivalensi
Konversi Penerimaan
Reference Points
Bab 6 PDA.pdf (Halaman 22-25, 34-46)
Konsep “State of System”
1. Instantaneous Descriptions (ID)
Agar tidak bingung melacak “sedang apa mesin sekarang?”, kita butuh cara standar untuk memotret kondisi mesin. Foto kondisi ini disebut Instantaneous Description (ID) atau Deskripsi Sesaat.
Format ID:
Sebuah ID terdiri dari 3 komponen utama (Tripel):
(Current State): Di lingkaran mana mesin berhenti saat ini?
(Remaining Input): Apa sisa string input yang belum dibaca? (Input yang sudah dibaca hilang dari pandangan).
(Stack Contents): Apa isi tumpukan saat ini? (Ditulis dari Top ke Bottom).
Contoh:
Artinya: Mesin di state , masih harus membaca string “101”, dan di stack ada di atas .
2. Relasi “Goes-To” ()
Ini adalah notasi matematika untuk menggambarkan “Langkah Pergerakan”.
Simbol Nama Arti One Move Mesin bergerak satu langkah saja. Dari ID A berubah menjadi ID B. Zero or More Moves Mesin bergerak banyak langkah (atau diam). Ini seperti tombol “Fast Forward”. Logika Perubahan ID:
Jika ID1 ID2, artinya ada transisi di fungsi yang memungkinkan perubahan tersebut (state berubah, input berkurang 1 karakter, stack berubah sesuai push/pop).
3. Dua Cara Penerimaan (Acceptance)
Berbeda dengan Finite Automata yang hanya punya satu cara (sampai di Final State), PDA punya dua mode operasi untuk menerima string.
A. Acceptance by Final State ()
Logika: Persis seperti FA biasa.
Syarat Terima: String input habis dibaca () DAN mesin berhenti di salah satu state himpunan (lingkaran ganda).
Kondisi Stack: TIDAK PEDULI. Stack boleh masih penuh, boleh kosong, tidak masalah. Yang penting input habis dan state-nya “Final”.
Notasi Formal:
B. Acceptance by Empty Stack ()
Logika: “Bersih-bersih piring”.
Syarat Terima: String input habis dibaca () DAN tumpukan (Stack) menjadi benar-benar kosong ().
Kondisi State: TIDAK PEDULI. Mesin boleh berhenti di state mana saja, tidak harus “Final State”. Bahkan PDA jenis ini seringkali tidak punya himpunan .
Notasi Formal:
4. Contoh Studi Kasus (Tracing ID)
Menggunakan contoh PDA dari bagian sebelumnya, berikut adalah cara kita menuliskan sejarah pergerakan mesin secara formal.
A. Kasus Diterima (Input:
000111)Mesin membaca input sampai habis dan mencapai state final.
(Push X)
(Push X)
(Push X)
(Baca 1 pertama, Pindah state q→p, Pop X)
(Pop X)
(Pop X, Input Habis)
(Transisi , Masuk Final)
Kesimpulan: Karena , maka input Diterima.
B. Kasus Ditolak (Input:
0001111)Apa yang terjadi jika jumlah angka 1 lebih banyak?
Analisis Kegagalan:
Perhatikan ID terakhir .
Mesin ada di state Final ().
TAPI, input belum habis (masih ada sisa
1di komponen ).Tidak ada transisi yang didefinisikan untuk alias mesin macet.
Kesimpulan: Input Ditolak karena syarat penerimaan adalah input harus terkonsumsi sepenuhnya ().
5. Ekuivalensi Dua Mode
Apakah PDA Final State lebih hebat dari PDA Empty Stack? TIDAK. Keduanya setara.
Teorema Ekuivalensi:
Jika sebuah bahasa bisa dikenali oleh PDA jenis Final State, pasti ada PDA jenis Empty Stack yang bisa mengenali juga, dan sebaliknya.
Intuisi Konversi:
Final State Empty Stack: Buat mesin baru yang jika mencapai final state, ia akan memicu mode “mengamuk” (loop) untuk mengosongkan (pop) semua isi stack sampai habis.
Empty Stack Final State: Bungkus stack asli dengan tanda dasar baru (misal ). Jika mesin mendeteksi stack asli sudah habis (kelihatan ), suruh mesin pindah ke state khusus yang Final.
Contoh Konversi:
1. PDA Empty Stack Asli ()
Mesin ini akan memasukkan untuk setiap , lalu menghapus untuk setiap . Di akhir, ia menghapus .
State Input Top Stack Hasil (Next State, Push/Pop) Keterangan Input pertama, simpan Input selanjutnya, tumpuk Ketemu pertama, mulai hapus Hapus untuk setiap Input habis, hapus (Stack Kosong!)
2. Hasil Konversi ke Final State ()
Kita tambahkan state baru (awal), (akhir), dan simbol .
Transisi Tambahan:
Inisialisasi:
(Taruh di atas , lalu masuk ke logika utama)
Logika Utama:
(Gunakan semua tabel di atas tanpa perubahan)
Loncatan ke Final State:
(Hanya jika stack asli sudah kosong dan mesin melihat “lantai” , barulah ia pindah ke state final )
Ringkasan Perbedaan
Empty Stack: Berhenti dan terima ketika stack benar-benar kosong (setelah transisi terakhir ).
Final State: Berhenti dan terima karena berada di , meskipun di dalam stack mungkin masih tersisa (jika kita tidak melakukan pop pada transisi terakhir).
PDA menggunakan notasi Instantaneous Description (ID) sebagai “snapshot” kondisi mesin untuk melacak proses komputasi. Perubahan antar ID dinotasikan dengan simbol Goes-To ( untuk satu langkah, untuk banyak langkah). Uniknya, PDA memiliki dua mekanisme penerimaan yang setara: Acceptance by Final State (fokus pada posisi state akhir, stack bebas) dan Acceptance by Empty Stack (fokus pada stack kosong, state bebas). Kita bisa mengubah PDA dari satu mode ke mode lainnya tanpa mengurangi kemampuan komputasinya.
Ad Libitum: Detail Teknis Konversi
1. Dari Final State () ke Empty Stack ()
Tujuannya: “Kalau terima, harus kosongkan stack.”
Masalah: bisa saja menerima string tapi stacknya masih penuh.
Solusi:
Tambahkan state baru (state “erase” atau penghapus).
Untuk setiap final state di , tambahkan transisi menuju state .
Di state , buat loop untuk mem-pop semua simbol stack.
Tambahkan juga marker dasar baru agar tidak “tidak sengaja” kosong sebelum waktunya.
2. Dari Empty Stack () ke Final State ()
Tujuannya: “Kalau kosongkan stack, harus masuk final state.”
Masalah: tidak tahu kapan stack kosong karena kalau kosong mesin mati (crash).
Solusi:
Gunakan Start State baru dan Final State baru .
Push marker khusus di paling bawah stack: .
Jalankan simulasi .
Jika mengosongkan stack aslinya, yang tersisa di stack hanyalah .
Tambahkan transisi deteksi: . Jika lihat , lompat ke final!
Spaced Repetition Questions (Review)
1. Apa tiga komponen yang membentuk Instantaneous Description (ID) PDA?
Current State (), Remaining Input (), dan Stack Contents ().
2. Jika ID mesin adalah $(q, \text{"abc"}, \text{XZ})$, string apa yang sudah dibaca mesin sebelumnya?
Tidak bisa diketahui dari ID saja. ID hanya mencatat apa yang tersisa (“abc”), bukan apa yang sudah lewat.
3. Apa syarat string diterima dalam mode "Acceptance by Empty Stack"?
String input harus habis dibaca () DAN tumpukan stack harus benar-benar kosong. Posisi state terakhir tidak dipermasalahkan.
4. Mengapa kita perlu menambahkan marker baru (misal $X_0$) saat mengubah PDA Empty Stack menjadi Final State?
Untuk mendeteksi kapan stack “asli” menjadi kosong. Tanpa marker tambahan, mesin simulasi akan crash atau berhenti tanpa sempat pindah ke Final State saat stack kosong.