Back to IF2224 Teori Bahasa Formal dan Otomata
Pushdown Automata (PDA): Pengenalan, Definisi, & Komputasi
Questions/Cues
Apa itu Pushdown Automata (PDA)?
Bagaimana cara kerja PDA?
Contoh: Bahasa (Palindrom)
Bagaimana PDA untuk bekerja?
Apa definisi formal PDA (7-tuple)?
Menjelaskan fungsi transisi ()
Apa itu Instantaneous Descriptions (ID)?
Notasi dan
Apa properti (Teorema 6.5 & 6.6) dari komputasi ID?
Reference Points
- Slide 11_2023_Pushdown Automata.pdf (hlm. 1-11)
Apa itu Pushdown Automata (PDA)?
Pushdown Automata (PDA) adalah model komputasi yang lebih kuat daripada Finite Automata (FA).
Pada dasarnya, PDA = NFA + Stack.
NFA (Non-deterministic Finite Automata): Memiliki finite state control (kontrol state terbatas) dan bisa “menebak” (non-determinisme).
Stack: Ini adalah memori tambahan. Stack adalah struktur data LIFO (Last-In, First-Out). Ini memberikan PDA kemampuan untuk “mengingat” urutan simbol tanpa batas, sesuatu yang tidak bisa dilakukan NFA.
Bagaimana Cara Kerja PDA?
Dalam setiap langkah (transisi), PDA melakukan tiga hal secara bersamaan:
Membaca Input: Membaca simbol input berikutnya (atau , yang berarti transisi spontan tanpa membaca input).
Mengubah State: Pindah ke state baru (atau bisa tetap di state yang sama).
Memanipulasi Stack: Mengganti simbol di puncak (top) stack dengan sebuah string baru (yang bisa berisi 0, 1, atau banyak simbol).
Jika string baru = (string kosong): Ini adalah operasi POP (menghapus top stack).
Jika string baru = simbol top lama + simbol baru: Ini adalah operasi PUSH (menambahkan simbol baru di atas).
Jika string baru = simbol top lama: Stack tidak berubah.
Contoh: Bahasa (Palindrom)
Mari kita tinjau bahasa .
adalah string apapun dari 0 dan 1 (misal: “010”).
adalah kebalikan (reverse) dari (misal: “010”).
adalah gabungannya (misal: “010010”). Ini adalah bahasa palindrom dengan panjang genap.
Bahasa ini tidak bisa dikenali oleh NFA biasa karena NFA tidak bisa mengingat seluruh bagian untuk dicocokkan dengan . PDA bisa, menggunakan stack-nya.
Bagaimana PDA untuk bekerja?
PDA ini menggunakan non-determinisme untuk “menebak” di mana titik tengah string (batas antara dan ).
Fase 1: Membaca (State )
- PDA “menebak” bahwa ia masih membaca bagian .
- Setiap kali membaca simbol input (0 atau 1), ia PUSH simbol itu ke dalam stack.
- Contoh: Input “0110”. - Baca ‘0’, push ‘0’. Stack: [0, ] - Baca ‘1’, push ‘1’. Stack: [1, 0, ]
Fase 2: Menebak Titik Tengah (Transisi )
Kapanpun (secara non-deterministik), PDA bisa “menebak” bahwa ia telah mencapai akhir dan akan mulai membaca .
Ia melakukan ini dengan transisi spontan (input ) dari state ke state tanpa mengubah stack.
Fase 3: Membaca (State )
Sekarang PDA berada di state , ia mulai mencocokkan input dengan isi stack.
Jika simbol input cocok dengan simbol di top stack, PDA akan POP stack.
Contoh (lanjutan): Stack: [1, 0, ] - Baca ‘1’, top stack ‘1’. Cocok! Pop stack. Stack: [0, ] - Baca ‘0’, top stack ‘0’. Cocok! Pop stack. Stack: []
Jika input atau top stack tidak cocok, komputasi di jalur itu “mati”.
Fase 4: Penerimaan (Acceptance) (Transisi )
- Setelah semua input habis, jika stack kosong (hanya tersisa simbol awal ), berarti seluruh telah berhasil dicocokkan dengan .
- PDA melakukan transisi spontan (input ) ke accept state .
Apa definisi formal PDA (7-tuple)?
PDA secara formal didefinisikan sebagai 7-tuple:
: Himpunan state (terbatas), misal .
: Alfabet input (terbatas), misal .
: Alfabet stack (terbatas), misal .
: Fungsi transisi (dijelaskan di bawah).
: Start state.
: Simbol awal stack (penanda bahwa stack awalnya kosong).
: Himpunan accepting state, misal .
Menjelaskan Fungsi Transisi ()
Ini adalah bagian paling penting. Fungsinya memetakan:
Mari kita bedah:
Input:
: State saat ini.
: Simbol input yang dibaca (bisa ).
: Simbol di top stack.
Output:
Ini adalah himpunan dari pasangan (state baru, string baru). Himpunan berarti bisa ada beberapa kemungkinan (non-determinisme).
:
: State baru.
: String yang akan menggantikan di stack.
Contoh Transisi :
- (Di , baca ‘0’, top stack ) (Tetap di , ganti dengan . Efek: push ‘0’).
- (Di , baca , top stack ) (Pindah ke , stack tidak berubah. Ini adalah tebakan titik tengah).
(Di , baca ‘0’, top stack ‘0’) (Tetap di , ganti ‘0’ dengan . Efek: pop ‘0’).
Apa itu Instantaneous Descriptions (ID)?
ID adalah “snapshot” atau konfigurasi PDA pada satu waktu. Ini adalah cara formal untuk melacak komputasi.
ID adalah sebuah triple:
: State PDA saat ini.
: Sisa string input yang belum dibaca.
: Seluruh isi stack, dengan simbol teratas ada di paling kiri.
Notasi dan
(“yields”): Menunjukkan satu langkah komputasi.
Kita menulis
Ini berarti ada transisi yang mengandung .
PDA di state , membaca , dengan sisa input . Top stack adalah dengan sisa .
PDA bergerak ke state , sisa input . Top stack diganti , sehingga stack menjadi .
(“yields in 0 or more steps”):
Ini adalah reflexive-transitive closure dari .
berarti ada serangkaian langkah (bisa 0, 1, atau lebih) yang membawa PDA dari konfigurasi pertama ke konfigurasi kedua.
Apa properti (Teorema 6.5 & 6.6) dari komputasi ID?
Ini adalah teorema formal tentang bagaimana komputasi berperilaku.
Theorem 6.5: Jika , maka kita bisa menambahkan “ekor” input () dan “dasar” stack () yang sama, dan komputasinya tetap valid:
Artinya: Komputasi PDA hanya peduli pada bagian atas stack dan awalan input yang dibacanya. Apa yang ada di “dasar” stack atau “akhir” input tidak akan mengganggu komputasi yang sudah terjadi.
Theorem 6.6: Jika (di mana tidak pernah tersentuh), maka bisa dihilangkan:
- Artinya: Jika sebuah komputasi berhasil tanpa pernah membaca bagian akhir dari input, komputasi itu juga valid untuk input yang sudah dipotong (tanpa bagian akhir itu).
Pushdown Automata (PDA) adalah NFA yang diperkuat dengan memori stack (LIFO), yang memungkinkannya untuk mengenali Bahasa Bebas Konteks (Context-Free Languages) seperti palindrom . PDA bekerja dengan membaca input, mengubah state, dan memanipulasi stack (push/pop). Perilaku ini didefinisikan secara formal oleh 7-tuple, terutama fungsi transisi yang bersifat non-deterministik. Untuk melacak proses komputasinya, kita menggunakan Instantaneous Descriptions (ID) yang merepresentasikan snapshot dari (state, sisa input, isi stack) pada satu waktu.
Additional Information
Pendalaman: Non-Determinisme adalah Kunci
Kunci dari PDA adalah non-determinisme. Ada dua transisi dari ketika top stack adalah :
(PUSH - tebak masih di )
(Pindah state - tebak sudah di )
Ketika PDA berada di dan membaca ‘0’, ia akan “mencabang” komputasinya. Satu cabang akan mengambil transisi 1 (tetap di , push ‘0’), dan cabang lainnya akan mengambil transisi 2 (pindah ke , stack tetap).
Sebuah string diterima jika setidaknya satu dari semua kemungkinan cabang komputasi ini berakhir di accept state setelah semua input habis. Jika semua cabang “mati” (karena input tidak cocok dengan stack, dll), string ditolak.
Pendalaman: Kekuatan dalam
Fungsi transisi di mana (string dari simbol stack) sangat kuat:
Jika (string kosong) Ini adalah POP.
Jika Stack tidak berubah.
Jika Ini mengganti dengan . Efeknya adalah PUSH di atas .
Jika Ini mengganti dengan . Efeknya adalah PUSH lalu PUSH . (Atau bisa dilihat sebagai “mengganti dengan string ”).
Eksplorasi Mandiri
Coba lacak komputasi (buat urutan ID) untuk PDA dengan input “0110”.
Coba lacak komputasi untuk input “010” (harus ditolak). Di mana komputasinya “mati”?
Bagaimana Anda memodifikasi PDA ini untuk menerima (misal “01c10”)? (Petunjuk: transisi adalah penanda titik tengah, tidak perlu menebak).
Sumber & Referensi Lanjutan:
Buku: “Introduction to the Theory of Computation” oleh Michael Sipser (Chapter 2, Bagian “Pushdown Automata”).
Konsep Terkait: Context-Free Grammars (CFG). PDA adalah mesin pengenal untuk Context-Free Languages (CFL), yaitu bahasa yang dapat dibangkitkan oleh CFG. Ada teorema yang membuktikan bahwa CFG dan PDA adalah ekuivalen.

