5
กำลังกู้คืนป่าแยกวิเคราะห์จากตัวแยกวิเคราะห์ Earley หรือไม่
เมื่อไม่นานมานี้ฉันอ่านหนังสือบนตัวแยกวิเคราะห์ Earleyและคิดว่าเป็นหนึ่งในอัลกอริทึมที่หรูหราที่สุดที่ฉันเคยเห็นมา อย่างไรก็ตามอัลกอริทึมในความหมายดั้งเดิมของมันคือตัวจดจำและไม่ใช่ตัวแยกวิเคราะห์ซึ่งหมายความว่ามันสามารถตรวจจับได้ว่าสตริงนั้นตรงกับ CFG เฉพาะหรือไม่ แต่ไม่สร้างทรีสำหรับแยกวิเคราะห์ คำถามของฉันคือวิธีการกู้คืนไม่ใช่ทรีการแยกวิเคราะห์แต่เป็นการแยกวิเคราะห์ฟอเรสต์ของ parses ที่เป็นไปได้ทั้งหมดของสตริงอินพุตที่กำหนด ใน "เทคนิคการแยกวิเคราะห์: คู่มือการปฏิบัติ" ของกรุนและจาค็อบพวกเขาแสดงให้เห็นถึงอัลกอริธึมที่สามารถใช้ในการกู้คืนป่าแยกจากผลของ Earley Recognizer แต่มันขึ้นอยู่กับวิธีการแยกวิเคราะห์ของอังเกอร์ซึ่งรันไทม์ O (n k + 1 ) โดยที่ k คือความยาวของการผลิตที่ยาวที่สุดในไวยากรณ์ ซึ่งหมายความว่ารันไทม์ไม่ใช่พหุนามในขนาดของไวยากรณ์ ยิ่งกว่านั้นกระดาษต้นฉบับของ Earley บนอัลกอริทึมซึ่งแนะนำอัลกอริทึมสำหรับการกู้คืนการแยกวิเคราะห์ป่าไม่ถูกต้อง (ดูตัวอย่างหน้า 762 ของบทความนี้โดย Tomita) แม้ว่าหลาย ๆ แหล่งข้อมูลยังอ้างว่าเป็นวิธีที่เหมาะสมในการกู้คืนการแยกวิเคราะห์ . คำถามของฉันคือว่าเป็นไปได้ในเวลาพหุนามเพื่อกู้คืนการแยกวิเคราะห์ฟอเรสต์ที่กำหนด ฉันได้พบกระดาษที่นี่ที่ให้อัลกอริทึมสำหรับการผลิตการแยกวิเคราะห์ป่าขนาดลูกบาศก์สำหรับการแยกวิเคราะห์ใด ๆ โดยใช้การจำลองของ PDA ดังนั้นดูเหมือนว่ามันควรจะเป็นไปได้ แต่ฉันยังไม่พบวิธีที่จะทำเช่นนี้ เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยไม่ต้องแปลงไวยากรณ์อินพุตเป็น CNF (ซึ่งแน่นอนจะแก้ปัญหา) เนื่องจากป่าแจงป่าผลลัพธ์ที่ได้จะยุ่งสวย ขอบคุณสำหรับความช่วยเหลือใด ๆ …