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:

  1. Membaca Input: Membaca simbol input berikutnya (atau , yang berarti transisi spontan tanpa membaca input).

  2. Mengubah State: Pindah ke state baru (atau bisa tetap di state yang sama).

  3. 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 ).

  1. 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, ]
  2. 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.

  3. 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”.

  4. 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).

Summary

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.