Back to IF2224 Teori Bahasa Formal dan Otomata
Ekuivalensi PDA & CFG (Bagian 3: Deterministic Pushdown Automata - DPDA)
Questions/Cues
Apa itu Deterministic PDA (DPDA)?
Apa 2 kondisi determinisme?
Contoh:
Bagaimana hirarki bahasa (Regular, L(DPDA), CFL)?
Kenapa bukan L(DPDA)?
Apa itu Prefix Property?
Hubungan DPDA (Empty Stack) & Prefix Property
Teorema 6.19
Hubungan DPDA & Ambiguitas
Teorema 6.20 & 6.21
Reference Points
- Slide 12_2023_Equivalence PDA and CFG.pdf (hlm. 21-25)
Apa itu Deterministic PDA (DPDA)?
Sebuah Deterministic Pushdown Automata (DPDA) adalah PDA yang tidak pernah memiliki pilihan (non-determinisme) dalam langkah komputasinya.
Untuk setiap konfigurasi (state, input, top stack), hanya ada paling banyak satu langkah selanjutnya yang mungkin.
Dua Kondisi Determinisme
Sebuah PDA bersifat deterministik jika kedua kondisi berikut terpenuhi:
Tidak Ada Pilihan Ganda untuk Input:
selalu berisi paling banyak satu anggota. (PDA tidak bisa memilih antara dan ).
Tidak Ada Pilihan vs Input:
Jika tidak kosong (ada transisi ), maka harus kosong untuk setiap . (PDA tidak bisa memilih antara “melakukan transisi ” atau “membaca input ”).
Contoh:
Bahasa (contoh: “01c10”) dapat dikenali oleh DPDA.
Cara Kerja:
Di , PUSH semua simbol input ke stack.
Jika membaca ‘c’, pindah ke state (tanpa mengubah stack).
Di , POP stack untuk setiap input yang cocok.
Jika stack kosong () di akhir, pindah ke (final state).
Kenapa Deterministik? Simbol ‘c’ bertindak sebagai penanda yang jelas. PDA tidak perlu “menebak” kapan harus beralih dari mode PUSH ke POP.
Hirarki Bahasa (Regular L(DPDA) CFL)
DPDA mendefinisikan kelas bahasa baru, .
Regular L(DPDA): Setiap bahasa Regular dapat dikenali oleh DPDA (yang pada dasarnya mengabaikan stack-nya, seperti DFA).
L(DPDA) CFL:
Ada bahasa yang tidak Regular (contoh: ).
Ada bahasa CFL yang tidak L(DPDA) (contoh: ).
Kenapa bukan L(DPDA)?
Bahasa (palindrom genap, misal “0110”) tidak bisa dikenali oleh DPDA.
Alasan: PDA untuk harus “menebak” di mana titik tengah string (batas antara dan ).
Sebuah DPDA tidak bisa menebak. Jika ia melihat input “0110”, ia tidak tahu apakah harus PUSH ‘1’ (karena masih di ) atau POP ‘1’ (karena sudah di ).
Prefix Property
Sebuah bahasa memiliki prefix property jika tidak ada string di yang merupakan prefix (awalan) dari string lain di .
Contoh Punya: . String “0c0” ada di , tapi “0c01c1” tidak. Tidak ada string yang jadi awalan string lain.
Contoh Tidak Punya: . String “0” ada di dan juga merupakan prefix dari “00” yang juga ada di .
Teorema 6.19: DPDA (Empty Stack) & Prefix Property
Metode penerimaan sangat penting untuk DPDA.
DPDA yang menerima via empty stack () memiliki masalah: jika diterima (stack kosong), DPDA tidak bisa melanjutkan komputasi untuk (karena stack sudah kosong).
Teorema: Sebuah bahasa adalah untuk suatu DPDA jika dan hanya jika memiliki prefix property DAN adalah untuk suatu DPDA (by final state).
DPDA & Ambiguitas
DPDA memiliki hubungan erat dengan grammar yang tidak ambigu.
Ambiguitas: Grammar G bersifat ambigu jika ada setidaknya satu string yang memiliki dua atau lebih leftmost derivation (atau parse tree) yang berbeda.
Teorema 6.20 & 6.21: Jika sebuah bahasa diterima oleh DPDA (baik maupun ), maka dijamin memiliki CFG yang unambiguous.
Poin Penting:
- Himpunan Bahasa Non-Ambigu.
- Kebalikannya tidak berlaku. memiliki grammar non-ambigu (), tapi bukan L(DPDA).
Sebuah Deterministic PDA (DPDA) adalah PDA yang tidak memiliki pilihan (non-determinisme) pada setiap langkahnya, yang diatur oleh dua kondisi ketat. Kelas bahasa yang dikenali DPDA, , lebih kuat dari Regular (bisa mengenali ) tetapi lebih lemah dari CFL (tidak bisa mengenali karena DPDA tidak bisa “menebak”). DPDA yang menerima via empty stack hanya bisa mengenali bahasa dengan prefix property. Yang terpenting, setiap bahasa yang diterima oleh DPDA dijamin dapat dibangkitkan oleh CFG yang tidak ambigu.
Additional Information
vs
Tidak seperti PDA non-deterministik, pada DPDA, pilihan metode penerimaan (final state vs empty stack) sangat berpengaruh.
(by final state) adalah kelas bahasa yang diterima oleh DPDA.
(by empty stack) adalah subset dari yang hanya berisi bahasa-bahasa dengan prefix property.
lebih kuat dari . Contoh: Bahasa dapat diterima oleh DPDA final state, tetapi tidak oleh DPDA empty stack (karena tidak punya prefix property).
Parsing dan DPDA
Konsep DPDA adalah fondasi teoretis untuk parser yang digunakan dalam kompilator (misalnya, parser LALR(1) yang digunakan oleh YACC/Bison). Bahasa pemrograman dirancang agar deterministic context-free sehingga dapat di-parse secara efisien (tanpa backtracking) oleh mesin yang mirip DPDA. Inilah mengapa adalah kelas bahasa yang sangat penting dalam ilmu komputer praktis.
Eksplorasi Mandiri
- Coba buktikan secara informal mengapa tidak dapat diterima oleh DPDA. (Petunjuk: Saat membaca , DPDA tidak tahu apakah harus mencocokkannya dengan atau ).