กลับไปหน้าบทความ

อ่าน 3 นาที

ออโตมาตาแบบซ้อนซ้อน

ใน ทฤษฎีออโต มา ตา ออโตมาตาแบบซ้อนสแต็ก เป็น ออโตมาตาจำกัด ที่สามารถใช้ สแต็ก ที่มีข้อมูลซึ่งสามารถเป็นสแต็กเพิ่มเติมได้ [ 1 ] เช่นเดียวกับ ออโตมาตาแบบส แต็ก...

ออโตมาตาแบบซ้อนซ้อน

ออโตมาตาแบบซ้อนซ้อนมีกลไกการทำงานเหมือนกับออโตมาตาแบบกดลงแต่มีข้อจำกัดในการใช้งานน้อยกว่า

ในทฤษฎีออโตมาตา ออโตมาตาแบบซ้อนสแต็กเป็นออโตมาตาจำกัดที่สามารถใช้สแต็กที่มีข้อมูลซึ่งสามารถเป็นสแต็กเพิ่มเติมได้[ 1 ] เช่นเดียวกับออโตมาตาแบบสแต็ก ออโตมาตาแบบซ้อนสแต็กอาจก้าวขึ้นหรือลงในสแต็กและอ่านสัญลักษณ์ปัจจุบัน นอกจากนี้ยังอาจสร้างสแต็กใหม่ได้ทุกที่ ดำเนินการกับสแต็กนั้น ทำลายมันในที่สุด และดำเนินการกับสแต็กเก่าต่อไป ด้วยวิธีนี้ สแต็กสามารถซ้อนกันแบบเรียกซ้ำได้ในระดับความลึกที่กำหนด อย่างไรก็ตาม ออโตมาตาจะดำเนินการกับสแต็กที่อยู่ด้านในสุดเท่านั้น

ออโตมาตา แบบสแต็กซ้อนกันสามารถรับรู้ภาษาที่มีดัชนีได้ [ 2 ]และในความเป็นจริง คลาสของภาษาที่มีดัชนีก็คือคลาสของภาษาที่ยอมรับโดยออโตมาตาแบบสแต็กซ้อนกันแบบ ทางเดียว ที่ไม่กำหนด[ 1 ] [ 3 ]

ไม่ควรสับสนระหว่างออโตมาตาแบบซ้อนซ้อน (Nested stack automata) กับออโตมาตาแบบพุชดาวน์ฝังตัว (Embedded pushdown automata)ซึ่งมีกำลังการคำนวณน้อยกว่า

คำจำกัดความอย่างเป็นทางการ

ออโตมาตัน

ออโตมาตาแบบสแต็กซ้อนกัน (แบบไม่กำหนดสองทาง) คือทูเปิลQ ,Σ,Γ,δ, q , Z , F ,[,], ] โดยที่

  • Q , Σ และ Γ คือเซตจำกัดที่ไม่ว่างเปล่าของสถานะ สัญลักษณ์อินพุต และสัญลักษณ์สแต็ก ตามลำดับ
  • [, ], และ]เป็นสัญลักษณ์พิเศษที่แตกต่างกันซึ่งไม่มีอยู่ใน Σ ∪ Γ
    • [ ถูกใช้เป็นเครื่องหมายสิ้นสุดด้านซ้ายสำหรับทั้งสตริงอินพุตและสตริงสแต็ก (ย่อย)
    • ] ใช้เป็นเครื่องหมายสิ้นสุดด้านขวาสำหรับสตริงเหล่านี้
    • ]ใช้เป็นเครื่องหมายสิ้นสุดสุดท้ายของสตริงที่แสดงถึงสแต็กทั้งหมด[หมายเหตุ 1 ]
  • อักษรป้อนเข้าแบบขยายถูกกำหนดโดย Σ' = Σ ∪ {[,]}, อักษรสแต็กแบบขยายโดย Γ' = Γ ∪ {]} และเซตของทิศทางการเคลื่อนที่ของอินพุตโดยD = {-1,0,+1}
  • δ ซึ่งเป็นการควบคุมแบบจำกัด เป็นการแมปจากQ × Σ' × (Γ' ∪ [Γ' ∪ { ] , [ ] }) ไปยังเซตย่อยแบบจำกัดของQ × D × ([Γ *D ) โดยที่ δ แมป[หมายเหตุ 2 ]
   Q × Σ' × [Γลงในเซตย่อยของQ × D × [Γ *(โหมดกดลง)
Q × Σ' × Γ'แบ่งเป็นเซตย่อยของQ × D × D(โหมดการอ่าน)
Q × Σ' × [Γ'ลงในเซตย่อยของQ × D × {+1}(โหมดการอ่าน)
Q × Σ' × { ] }ลงในเซตย่อยของQ × D × {-1}(โหมดการอ่าน)
Q × Σ' × (Γ' ∪ [Γ')ลงในเซตย่อยของQ × D × [Γ * ](โหมดการสร้างสแต็ก) และ
Q × Σ' × {[ ] }แบ่งออกเป็นเซตย่อยของQ × D × { ε }(โหมดทำลายสแต็ก)
โดยไม่เป็นทางการ สัญลักษณ์บนสุดของ (ซับ)สแต็กพร้อมกับเครื่องหมายปลายซ้ายก่อนหน้า "[" จะถูกมองว่าเป็นสัญลักษณ์เดียว[ 4 ]จากนั้น δ อ่านว่า
  • สถานะปัจจุบัน
  • สัญลักษณ์อินพุตปัจจุบัน และ
  • สัญลักษณ์สแต็กปัจจุบัน
และผลลัพธ์
  • รัฐถัดไป
  • ทิศทางในการเคลื่อนที่ของข้อมูลป้อนเข้า และ
  • ทิศทางที่จะเคลื่อนที่บนสแต็ก หรือสตริงของสัญลักษณ์ที่จะใช้แทนที่สัญลักษณ์บนสุดของสแต็ก
  • q Qคือสถานะเริ่มต้น
  • Z ∈ Γ คือสัญลักษณ์สแต็กเริ่มต้น
  • FQคือเซตของสถานะสุดท้าย

การกำหนดค่า

การกำหนดค่าหรือคำอธิบายทันทีของออโตมาตอนดังกล่าว ประกอบด้วยสามสิ่ง q , [ a a ... a ... a ], [ Z X ... X ... X ] โดยที่

  • qQคือสถานะปัจจุบัน
  • [ a a ... a ... a ] คือสตริงอินพุต เพื่อความสะดวก จึงกำหนดให้a = [ และa [หมายเหตุ 3 ]ตำแหน่งปัจจุบันในอินพุต คือiโดยที่ 0 ≤ inจะถูกทำเครื่องหมายโดยการขีดเส้นใต้สัญลักษณ์ที่เกี่ยวข้อง
  • [ Z X ... X ... X ]คือสแต็ก รวมทั้งซับสแต็ก เพื่อความสะดวกX = [ Z [หมายเหตุ 4 ]และX = ]ถูกกำหนด ตำแหน่งปัจจุบันในสแต็ก คือjโดยที่ 1 ≤ jmจะถูกทำเครื่องหมายโดยการขีดเส้นใต้สัญลักษณ์ที่เกี่ยวข้อง

ตัวอย่าง

ตัวอย่างการทำงาน (ไม่แสดงข้อความอินพุต):

การกระทำขั้นตอนซ้อนกัน
1:   [ [ k][ p]] 
สร้างซับสแต็ก   2:[ [ k][ p[ r]]]
โผล่3:[ [ k][ p[ s]]] 
โผล่4:[ [ k][ p[]]] 
ทำลายซับสแต็ก5:[ [ k][ p]] 
เลื่อนลง6:[ [ k][ p]] 
เลื่อนขึ้น7:[ [ k][ p]] 
เลื่อนขึ้น8:[ [ k][ p]] 
ดัน9:[ [ k][ nโอพี]] 

คุณสมบัติ

เมื่อออโตมาตาได้รับอนุญาตให้อ่านอินพุตซ้ำ (" ออโตมาตาแบบสองทาง ") สแต็กแบบซ้อนกันจะไม่ส่งผลให้เกิดความสามารถในการจดจำภาษาเพิ่มเติมเมื่อเทียบกับสแต็กธรรมดา[ 5 ]

Gilman และ Shapiro ใช้เครื่องอัตโนมัติแบบซ้อนซ้อนเพื่อแก้ปัญหาคำศัพท์ในกลุ่มที่เป็นอิสระเสมือน คล้ายกับทฤษฎีบท Muller– Schupp [ 6 ]

หมายเหตุ

  1. เดิมที Aho ใช้ "$", "¢" และ "#" แทน "[", "]" และ " ] " ตามลำดับ ดู Aho (1969), หน้า 385 ด้านบน
  2. การวาง ชิดกัน (Juxataposition) หมายถึงการต่อสตริง (เซต)และมีลำดับความสำคัญในการผูกมัดสูงกว่าการรวมเซต (Union) ∪ ตัวอย่างเช่น [Γ' หมายถึงเซตของสตริงทั้งหมดที่มีความยาว 2 โดยเริ่มต้นด้วย "[" และลงท้ายด้วยสัญลักษณ์จาก Γ'
  3. เดิมที Aho ใช้เครื่องหมายสแต็กซ้ายและขวา คือ $ และ ¢ เป็นเครื่องหมายป้อนข้อมูลด้านขวาและด้านซ้ายตามลำดับ
  4. สัญลักษณ์บนสุดของสแต็ก (ย่อย) พร้อมกับเครื่องหมายปิดท้ายด้านซ้ายก่อนหน้า "[" จะถูกมองว่าเป็นสัญลักษณ์เดียว

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ออโตมาตาแบบซ้อนซ้อน

ใน ทฤษฎีออโต มา ตา ออโตมาตาแบบซ้อนสแต็ก เป็น ออโตมาตาจำกัด ที่สามารถใช้ สแต็ก ที่มีข้อมูลซึ่งสามารถเป็นสแต็กเพิ่มเติมได้ [ 1 ] เช่นเดียวกับ ออโตมาตาแบบส แต็ก...

ออโตมาตัน

ออโตมาตาแบบสแต็กซ้อนกัน (แบบไม่กำหนดสองทาง) คือทูเปิล ⟨ Q ,Σ,Γ,δ, q , Z , F ,[,], ] ⟩ โดยที่

การกำหนดค่า

การ กำหนดค่า หรือ คำอธิบายทันที ของออโตมาตอนดังกล่าว ประกอบด้วยสามสิ่ง ''a'' ...''a''], \n[''Z''''X''... ''X'' ...''X''''']'''\n"}},"i":0}}]}"> ⟨ q , [ a a ... a ... a ], [ Z X ... X ... X ] ⟩ โดยที่

ตัวอย่าง

ตัวอย่างการทำงาน (ไม่แสดงข้อความอินพุต):