Home    Previous page ออโตมาตาแบบกดลง Next page
ออโตมาตาแบบกดลงเชิงกำหนด
เครื่องหรืออุปกรณ์ที่เรานิยามโดยใช้ ออโตมาตาจำกัดทั้งสามชนิดมีความสามารถในการยอมรับภาษาที่เหมือนกัน และ เรายังพบว่าภาษาที่เครื่องทั้งสามยอมรับนั้นเป็นเพียงภาษาปกติ ต่อไปเราจะแนะนำเครื่องออโตมาตาที่มีความสามารถยอมรับภาษาได้มากกว่าภาษาปกตินั่นคือ ออโตมาตาแบบกดลงเชิงกำหนด และออโตมาตาแบบกดลงเชิงไม่กำหนด
เราพิจารณาว่าออโตมาตาแบบกดลงเชิงกำหนดเป็นเครื่องที่มี แถบบันทึกรับเข้า และตัวควบคุมจำกัดเหมือนออโตมาตาจำกัด แต่มีหน่วยความจำเพิ่มเติมขึ้นมาคือ หน่วยความจำช่วยแบบกองซ้อน ดังรูป

ตัวควบคุมจำกัดจะอยู่ในสถานะใดสถานะหนึ่ง อ่านสัญลักษณ์ที่ปรากฎบนแถบบันทึกรับเข้าผ่านหัวอ่าน และดึงสัญลักษณ์ในกองซ้อนออก โดยดึงเฉพาะตัวที่อยู่บนสุดเท่านั้น เมื่ออ่านเสร็จแล้วตัวควบคุมจำกัดอาจย้ายไปอยู่ในสถานะอื่นหรือคงอยู่สถานะเดิมก็ได้ หัวอ่านของแถบบันทึกรับเข้า จะเคลื่อนขวา 1 เซล แล้วเติมสัญลักษณ์ซ้อนทับลงไปหรืออาจไม่เติมสัญลักษณ์ใด ๆ ลงไปบนกองซ้อน ซึ่งการเติมสัญลักษณ์ในกองซ้อนทับลงไปอาจเติม ได้มากกว่า 1 ตัวในแต่ละครั้ง
บทนิยาม ออโตมาตากดลงเชิงกำหนด (Deterministic Pushdown Automata) หรือเรียกสั้นๆ ว่า ดีพีดีเอ (DPDA) แต่ละเครื่องประกอบด้วย
  1. Q แทนเซตของสถานะจำกัด (the set of states)
  2. แทนเซตของสัญลักษณ์รับเข้าทั้งหมดที่เป็นไปได้ซึ่งเป็นเซตจำกัด (the set of input symbols)
  3. q0 แทนสถานะเริ่มต้น (the initial state)
  4. F แทนเซตของสถานะยอมรับ (the set of accepting state)
  5. แทนเซตของสัญลักษณ์กองซ้อนทั้งหมดซึ่งเป็นเซตจำกัด (the set of stack symbols)
  6. Z0 แทนสัญลักษณ์เริ่มต้นของกองซ้อน ซึ่งเป็นสมาชิกของ ปรากฎที่ตำแหน่งล่างสุดของกองซ้อนเท่านั้น (the initial stack symbol)
  7. แทนฟังก์ชันการผ่าน (transition function) ที่มีโดเมนเป็นสับเซตของ Q × ( {}) × และพิสัยเป็นสับเซตของ Q × * เขียนแทนด้วย
    :partial Q × ( {}) × 2Q × *
    และมีเงื่อนไขว่า สำหรับแต่ละ q Q, a , A ,
    (q, a, A) ต้องมีการเปลี่ยนสถานะเพียงหนึ่งเดียว
    และถ้า (p, ) (q, , A) แล้ว (q, a, A) ต้องไม่มีการเปลี่ยนสถานะไปเป็นสถานะอื่นสำหรับทุก a .
จะใช้สัญลักษณ์ (Q, , , , q0, Z0, F) แทนออโตมาตากดลงเชิงกำหนดเครื่องหนึ่ง
บทนิยามแผนภาพการผ่าน (transition diagram) ของออโตมาตากดลงเชิงกำหนด (Q, , , , q0, Z0, F) เครื่องหนึ่งคือ กราฟเทียมที่มีทิศทางโดย
  1. มี Q เป็นเซตของจุดยอดทั้งหมด และมีลูกศรชี้เข้าที่จุดยอด q0
  2. มีวงกลมสองวงล้อมรอบจุดยอดทุกจุดใน F และ
  3. มีอาร์กเชื่อมจากจุดยอด p ไปจุดยอด q โดยมีสัญลักษณ์ a, A/ เขียนกำกับอยู่ ก็ต่อเมื่อ (q, ) (p, a, A) โดยที่ a , A และ *
ตัวอย่างที่ 1 จงเขียนแผนภาพการผ่านของออโตมาตากดลงเชิงกำหนด M = (Q, , , , q0, Z0, F) ที่มี Q = {q0, q1, q2}, F = {q2}, = {0, 1}, = {0, 1, Z0} และ นิยามดังนี้
(q0, 0, Z0) = {(q0, 00Z0)}, (q0, 0, 0) = {(q0, 000)}, (q0, 1, 0) = {(q1, )}
(q1, 1, 0) = {(q1, )}, (q1, , Z0) = {(q2, )}
ตัวอย่างที่ 2 จงอธิบายการทำงานของออโตมาตากดลงเชิงกำหนดที่กำหนดให้

นิยาม โครงแบบ (Configuration) ของออโตมาตากดลงเชิงกำหนด
กำหนด M = (Q, , , , q0, Z0, F) คือสามสิ่งอันดับ (q, x, ) Q × * × * ซึ่งหมายถึงในขณะนั้น M อยู่ในสถานะ q และหัวอ่านอยู่ที่สัญลักษณ์ตัวแรกสุดทางซ้ายของ x และ เป็นข้อมูลในกองซ้อน โดยสัญลักษณ์ซ้ายสุดคือตัวบนสุดของกองซ้อน เช่น (q0, 0110100, a3a2a1Z0) เป็นโครงแบบของออโตมาตากดลงเชิงกำหนดจากรูปแรก
เราเปลี่ยนโครงแบบได้โดยใช้กฎดังนี้
  1. (q1, x1, 1) เป็น โครงแบบถัดจาก (q, x, ) เขียนแทนด้วย (q, x, ) (q1, x1, 1) ก็ต่อเมื่อ มี a , x1 *, A และ , * ที่ทำให้
    1. x = a x1, = A , 1 = และ (q, a, A) = {(q1, )}
    2. x = x1, = A , 1 = และ (q, , A) = {(q1, )}
  2. โครงแบบ (q', x', ') เป็น โครงแบบที่ได้มาจาก (q, x, ) เขียนแทนด้วยสัญลักษณ์ (q, x, ) (q', x', ') ก็ต่อเมื่อ (q, x, ) = (q', x', ') หรือมีโครงแบบ c1, c2, ..., cn ที่มีสมบัติว่า c1 = (q, x, ), cn = (q', x', ') และ c1 c2 . . . cn-1 cn
M ยอมรับ w ก็ต่อเมื่อ มี q F ที่ทำให้ (q0, w, Z0) (q, , ) เมื่อ * ในกรณีนี้เราเรียก (q0, w, Z0) ว่า โครงแบบเริ่มต้น (initial configuration) และ (q, , ) ว่า โครงแบบยอมรับ (accepting configuration) และ ภาษาที่ M ยอมรับ เขียนแทนด้วย L(M) คือ { w * | M ยอมรับ w} ดังนั้นภาษา L ใด ๆ จะเป็นภาษาที่ M ยอมรับ ก็ต่อเมื่อ L = L(M)
ตัวอย่างที่ 3 จงพิจารณาว่าประโยคต่อไปนี้ยอมรับโดยเครื่องออโตมาตากดลงเชิงกำหนดที่กำหนดให้ใน ตัวอย่างที่ 1 หรือไม่
  1. 0
  2. 1
  3. 011
  4. 0011
  5. 001111
ตัวอย่างที่ 4 จงพิจารณาว่าประโยคต่อไปนี้ยอมรับโดยเครื่องออโตมาตากดลงเชิงกำหนดที่กำหนดให้ในตัวอย่างที่ 2 หรือไม่ พร้อมสรุปภาษาที่ออโตมาตาเครื่องนี้ยอมรับ
  1. a
  2. ab
  3. aa
  4. bb
ตัวอย่างที่ 5 จงสร้างออโตมาตากดลงเชิงกำหนดที่ยอมรับ L = {w2wR | w {0, 1}*}
ตัวอย่างที่ 6 จงสร้างออโตมาตากดลงเชิงกำหนดที่ยอมรับ L = {0, 1}*
ตัวอย่างที่ 7 จงสร้างออโตมาตากดลงเชิงกำหนดที่ยอมรับ L = {w {0, 1}* | n(0, w) = n(1, w)}

ออโตมาตาแบบกดลงเชิงไม่กำหนด
บทนิยาม ออโตมาตากดลงเชิงไม่กำหนด (Nondeterministic pushdown automata) หรือเรียกสั้นๆ ว่า เอ็นพีดีเอ (NPDA) แต่ละเครื่องประกอบด้วย

  1. Q แทนเซตของสถานะจำกัด (the set of states)
  2. แทนเซตของสัญลักษณ์รับเข้าทั้งหมดที่เป็นไปได้ซึ่งเป็นเซตจำกัด (the set of input symbols)
  3. q0 แทนสถานะเริ่มต้น (the initial state)
  4. F แทนเซตของสถานะยอมรับ (the set of accepting state)
  5. แทนเซตของสัญลักษณ์กองซ้อนทั้งหมดซึ่งเป็นเซตจำกัด (the set of stack symbols)
  6. Z0 แทนสัญลักษณ์เริ่มต้นของกองซ้อน ซึ่งเป็นสมาชิกของ ปรากฎที่ตำแหน่งล่างสุดของกองซ้อนเท่านั้น (the initial stack symbol)
  7. แทนฟังก์ชันการผ่าน (transition function) ที่มีโดเมนเป็นสับเซตของ Q × ( {}) × และพิสัยเป็นสับเซตของ Q × * เขียนแทนด้วย
    :partial Q × ( {}) × 2Q × *
    โดยไม่มีเงื่อนไขอื่นเพิ่มเติม เราจะใช้สัญลักษณ์ (Q, ,  , , q0, Z0, F) แทนออโตมาตากดลงเชิงไม่กำหนดเครื่องหนึ่ง
บทนิยามแผนภาพการผ่านของออโตมาตากดลงเชิงไม่กำหนดเหมือนกับของออโตมาตากดลงเชิงกำหนดคือ กราฟเทียมที่มีทิศทางโดย
  1. มี Q เป็นเซตของจุดยอดทั้งหมด และมีลูกศรชี้เข้าที่จุดยอด q0
  2. มีวงกลมสองวงล้อมรอบจุดยอดทุกจุดใน F และ
  3. มีอาร์กเชื่อมจากจุดยอด p ไปจุดยอด q โดยมีสัญลักษณ์ a, A/ เขียนกำกับอยู่ ก็ต่อเมื่อ (q, ) (p, a, A) โดยที่ a , A และ *
นิยาม โครงแบบ (Configuration) ของออโตมาตากดลงเชิงไม่กำหนด
กำหนด M = (Q, , , , q0, Z0, F) คือสามสิ่งอันดับ (q, x, ) Q × * × * ซึ่งหมายถึงในขณะนั้น M อยู่ในสถานะ q และหัวอ่านอยู่ที่สัญลักษณ์ตัวแรกสุดทางซ้ายของ x และ เป็นข้อมูลในกองซ้อน โดยสัญลักษณ์ซ้ายสุดคือตัวบนสุดของกองซ้อน
เราเปลี่ยนโครงแบบได้โดยใช้กฎดังนี้
  1. (q1, x1, 1) เป็น โครงแบบถัดจาก (q, x, ) เขียนแทนด้วย (q, x, ) (q1, x1, 1) ก็ต่อเมื่อ มี a , x1 *, A , , * ที่ทำให้
    1. x = a x1, = A , 1 = และ (q1, ) (q, a, A)
    2. x = x1, = A , 1 = และ (q1, ) (q, , A)
  2. โครงแบบ (q', x', ') เป็น โครงแบบที่ได้มาจาก (q, x, ) เขียนแทนด้วยสัญลักษณ์ (q, x, ) (q', x', ') ก็ต่อเมื่อ (q, x, ) = (q', x', ') หรือมีโครงแบบ c1, c2, ..., cn ที่มีสมบัติว่า c1 = (q, x, ), cn = (q', x', ') และ c1 c2 . . . cn-1 cn
M ยอมรับ สายอักขระรับเข้า w ก็ต่อเมื่อ มี q F ที่ทำให้ (q0, w, Z0) (q, , ) เมื่อ * และ ภาษาที่ M ยอมรับ เขียนแทนด้วย L(M) คือ { w * | M ยอมรับ w} ดังนั้นภาษา L ใด ๆ จะเป็นภาษาที่ M ยอมรับ ก็ต่อเมื่อ L = L(M)
ตัวอย่างที่ 8 จงสร้างออโตมาตากดลงเชิงไม่กำหนดที่ยอมรับ L = {wwR | w {0,1}* }
ตัวอย่างที่ 9 จงสร้างออโตมาตากดลงเชิงไม่กำหนดที่ยอมรับ L = {x {0,1}* | x = xR}
ตัวอย่างที่ 10 จงสร้างออโตมาตากดลงเชิงไม่กำหนดที่ยอมรับ L = {w {0,1}* | 2n(1, w) = n(0, w)}

ออโตมาตาแบบกดลงที่ยอมรับโดยกองซ้อนว่าง
บทนิยาม ออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่าง คือเครื่องออโตมาตากดลงที่อาจเป็นดีพีดีเอหรือเอ็นพีดีเอ ก็ได้ที่มีการนิยามสถานะยอมรับใหม่ดังนี้

M ยอมรับ w โดยกองซ้อนว่าง (accept by empty stack) ก็ต่อเมื่อมี p Q ที่ทำให้ (q0, w, Z0) (p, , ) และภาษาที่ M ยอมรับโดยกองซ้อนว่าง เขียนแทนด้วย N(M) คือ { w * | M ยอมรับ w โดยกองซ้อนว่าง}
เราสามารถแสดงได้ว่า ออโตมาตากดลงแบบปกติ มีความสามารถเหมือนกับ ออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่าง
หมายเหตุ
  • ภาษาที่ M ยอมรับ อาจเรียกอีกแบบหนึ่งว่าเป็น ภาษาที่ M ยอมรับโดยสถานะยอมรับ (accept by accepting state)
  • จากนิยามของการยอมรับโดยกองซ้อนว่าง เราพบว่าสถานะสุดท้ายของเครื่องออโตมาตากดลงไม่มีความสำคัญ เราอาจไม่ใส่ F ในการนิยามเครื่องออโตมาตากดลงเช่น M = (Q, , , , q0, Z0) แทนออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่าง
ตัวอย่างที่ 11 จงสร้างออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่างสำหรับภาษา L = {wwR | w {0,1}* }
ตัวอย่างที่ 12 จงสร้างออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่างสำหรับภาษา L = {x {0,1}* | x = xR}
ตัวอย่างที่ 13 จงสร้างออโตมาตากดลงที่ยอมรับโดยกองซ้อนว่างสำหรับภาษา L = {w {0,1}* | n(1, w) = n(0, w)}

Home | Previous | Next


© Copyright by กรุง สินอภิรมย์สราญ