Pushdown Automata : PDA บทที่ 6 พุชดาวน์ออโตมาตา Pushdown Automata : PDA
พุชดาวน์ออโตมาตา เป็นออโตมาตาที่สามารถรองรับภาษาได้มากกว่าภาษาที่ไฟไนต์ออโตมาตารองรับได้ ส่วนประกอบภายในพุชดาวน์ออโตมาตาประกอบด้วย 3 ส่วน อินพุตเทป ซึ่งบรรจุตัวอักษร (Alphabet) หัวอ่านอินพุตเทปเคลื่อนจากซ้ายไปขวาโดยไม่สามารถย้อนกลับมายังตำแหน่งที่เคยอ่านแล้วได้ สแต็ก(Stack) ทำหน้าที่เก็บผลลัพธ์ชั่วคราวที่ได้จากการประมวลผล โดยใช้สัญลักษณ์เริ่มต้นเช่น z, $ หน่วยประมวลผล จะมีสถานะที่เปลี่ยนแปลงได้
Stack -สามารถนำข้อมูลเข้าหรือออกได้ทางเดียวคือส่วนบนของStack (Top Of Stack) -คุณสมบัติดังกล่าวเรียกว่า ไลโฟลิสต์ (LIFO list: Last-In-First-Out list) หรือ พูชดาวน์ลิสต์ (Pushdown List) การทำงานมี PUSH (ใส่ข้อมูลเข้า) และ POP (นำข้อมูลออก)
ส่วนประกอบภายในพุชดาวน์ออโตมาตา
พุชดาวน์ออโตมาตาที่คาดเดาได้ (Deterministic Pushdown Automata : DPDA) นิยาม โดยที่ คือ เซตของสถานะภายในหน่วยประมวลผล คือ เซตของตัวอักษรอินพุต คือ เซตของสัญลักษณ์ที่ถูกบรรจุลงสแต็ก คือ สถานะเริ่มต้นของหน่วยประมวลผล โดยที่ คือ สัญลักษณ์กำหนดจุดเริ่มต้นของสแต็ก เช่น คือ เชตของสถานะสุดท้ายโดยที่ คือ เซตของทรานซิชันฟังก์ชัน เป็นความสัมพันธ์ดังนี้ (โดยมีข้อบังคับว่าทางฝั่งขวาของทรานซิชันเดียวกันจะต้องไม่มีทางเลือก)
การทำงานของทรานซิชันฟังก์ชัน
จากรูปการทำงานของ DPDA เป็นการบังคับว่าหากสถานะภายในคือ q0 อินพุตคือ a และส่วนบนสุดของสแต็กคือ x แล้ว DPDA จะต้องเปลี่ยนสถานะไปเป็น q1 จากนั้นนำ x ออกจากสแต็กและนำตัวอักษร a ใส่ลงไปบนสแต็กแทน แต่ถ้า ทรานซิชันฟังก์ชันมีลักษณะเป็น กรณีนี้ไม่ถือว่าเป็น DPDA เนื่องจากที่สถานะเดียวกันคือ ออโตมาตาสามารถนำตัวอักษร a หรือสตริงว่าง วางลงไปบนสแต็กก็ได้
เราสามารถนำทรานซิชันฟังก์ชันของพุชดาวน์ออโตมาตาเขียนให้อยู่ในรูปทรานซิชันกราฟ เพื่อง่ายต่อการเข้าใจ เช่น สามารถแสดงการเปลี่ยนสถานะของพุชดาวน์ออโตมาตาที่คาดเดาได้ดังนี้ สัญลักษณ์ส่วนบนของ สแต็กซึ่งจะถูกเอาออก สัญลักษณ์ที่จะนำไป ใส่ลงบนสแต็ก ตัวอักษรอินพุต
การนำสตริงใส่ลงไปบนสแต็ก
ทรานซิชันที่อนุญาตให้เกิดขึ้นได้ใน DPDA
ทรานซิชันที่ไม่อนุญาตให้เกิดขึ้นได้ใน DPDA
พุชดาวน์ออโตมาตาที่คาดเดาไม่ได้ (Nondeterministic Pushdown Automata : NPDA) นิยาม โดยที่ คือ เซตของสถานะภายในหน่วยประมวลผล คือ เซตของตัวอักษรอินพุต คือ เซตของสัญลักษณ์ที่ถูกบรรจุลงสแต็ก คือ สถานะเริ่มต้นของหน่วยประมวลผล โดยที่ คือ สัญลักษณ์กำหนดจุดเริ่มต้นของสแต็ก เช่น คือ เชตของสถานะสุดท้ายโดยที่ คือ เซตของทรานซิชันฟังก์ชัน เป็นความสัมพันธ์ดังนี้ (โดยไม่มีข้อบังคับใดๆ)
ทรานซิชันที่อนุญาตให้เกิดขึ้นได้ใน NPDA
ทรานซิชันที่อนุญาตให้เกิดขึ้นได้ใน NPDA
NPDA: Non-Deterministic PDA Example:
Execution Example: Time 0 Input Stack current state
Time 1 Input Stack
Time 2 Input Stack
Time 3 Input Stack
Time 4 Input Stack
Time 5 Input Stack
Time 6 Input Stack
Time 7 Input Stack
Time 8 Input Stack accept
สตริง ใดๆ จะ accept หรือได้รับการยอมรับ เมื่อ เงื่อนไขเหล่านี้ได้บรรลุแล้ว -เมื่อ input ทุกตัวใน tape ถูกใช้งานจนครบ -สามารถไปถึง state สุดท้ายได้ เมื่อการประมวลผลจบลง เราจะไม่สนใจว่า ใน stack มีข้อมูล อะไรบ้าง
แบบฝึกหัด สตริงต่อไปนี้ จะ accepted โดย NPDA: หรือไม่
Another NPDA example NPDA
Execution Example: Time 0 Input Stack current state
Time 1 Input Stack
Time 3 Input Stack
Time 4 Input Stack
Time 5 Input Stack
Time 6 Input Stack
Time 7 Input Stack
Time 8 Input Stack accept
แบบฝึกหัด Input Stack