ความแข็งในการค้นหาคำที่มีความยาวมากที่สุด


10

คำชี้แจงปัญหา :

ให้เป็นหุ่นยนต์แบบเลื่อนลง (อาจเป็นแบบไม่ จำกัด ค่า) และให้เป็นตัวอักษรอินพุต มีคำว่า stที่ยอมรับโดย ?MAwA|w|kM

ปัญหานี้เกิดขึ้นกับ NP หรือไม่? มันได้รับการศึกษา? มีอัลกอริทึมที่อนุญาตให้ค้นหาคำดังกล่าวหรือไม่?


อัลกอริทึมของ Djikstra ไม่ควรทำเล่ห์เหลี่ยม? (ผมส่วนใหญ่อาจจะเข้าใจผิดอะไรบางอย่างที่นี่!)
alpoge

"ความยาวไม่เกิน k"?
alpoge

ยินดีต้อนรับคุณ Kaveh ใช่ฉันลืม "มากที่สุด" ฉันแก้ไขอีกครั้ง
Lamine

1
คำตอบนั้นง่าย - นี่เป็นคำถามทำการบ้านหรือไม่?
Sariel Har-Peled

เราสามารถเข้าถึงคำอธิบายอัตโนมัติหรือว่าเรามีเพียงแค่เป็นกล่องดำ?
Raphael

คำตอบ:


9

คำนวณจุดตัดของภาษา CFG ของคุณด้วยภาษาปกติ i=0kAk (จำนวนนี้จะเพิ่มจำนวนของสถานะด้วย kและการเพิ่มสถานะ "dead end") ตอนนี้ตรวจสอบว่าผลลัพธ์ว่างเปล่า: แปลงเป็นไวยากรณ์ (ฉันคิดว่าผลลัพธ์จะมีขนาดพหุนาม) และ "backtrack" จากการผลิต epsilon

แก้ไข: Kaveh กล่าวว่านี่คือพหุนาม kดังนั้นถ้า k จะได้รับเป็นอินพุทอัลกอริทึมเป็นเลขยกกำลัง |k|. อย่างไรก็ตาม Kaveh พบวิธีแก้ไข แปลงออโตมาตาดั้งเดิมให้เป็น CFG และแทนที่เทอร์มินัลทั้งหมดด้วยเทอร์มินัลคงที่ ตอนนี้ใช้อัลกอริทึมซ้ำเพื่อค้นหาขนาดที่เล็กที่สุดของคำที่สร้างโดยแต่ละเทอร์มินัลที่ไม่ใช่ดังต่อไปนี้

เริ่มต้นความยาวทั้งหมดด้วย และจากนั้นอัปเดตความยาวทั้งหมดด้วยวิธีที่ชัดเจน: ให้การผลิต AatBi (คำสั่งไม่สำคัญ) ใส่ f(A)=min(f(A),t+f(Bi)). อ้างสิทธิ์: สิ่งนี้มาบรรจบกันO(n) การทำซ้ำที่ไหน nคือจำนวนเทอร์มินัลที่ไม่ใช่ เหตุผลก็คือในต้นไม้ที่สร้างคำที่มีความยาวน้อยที่สุดจะไม่มีการใช้เทอร์มินัลสองครั้ง "edge" แต่ละอันจะใช้เวลาในการประมวลผลซ้ำมากที่สุด (ขอบบางอันสามารถ "อัพเดท" พร้อมกัน)


ฉันคิดว่าการแปลง PDA CFG เป็นพหุนาม ขอบคุณ! ดังนั้นปัญหาอยู่ค่ะP.
Lamine

ตกลงเนื่องจากมีวิธีคำนวณความยาวต่ำสุดโดยตรง |k|ไม่ใช่อินพุต แต่ฉันไม่เข้าใจว่าทำไมแทนที่เทอร์มินัลทั้งหมดด้วยเครื่องที่กำหนดไว้แล้ว อัลกอริทึมควรทำงานอย่างถูกต้องกับอาคารเดิม
Lamine

คุณพูดถูกมันไม่สำคัญ
Yuval Filmus

5

เปลี่ยนอักขระตัวอักษรทั้งหมดเป็นอักขระตัวเดียว ตอนนี้คุณมี PDA กำหนดไว้ที่ตัวละครตัวเดียว ภาษาเป็นไวยากรณ์ที่ไม่มีบริบท อย่างไรก็ตามไวยากรณ์อิสระบริบทมากกว่าอักขระเดียวเป็นเรื่องปกติ ดังนั้นแปลง CFG เป็นภาษาปกติแล้วตรวจสอบว่ามีคำยาว k หรือไม่

ตอนนี้การแปลงทั้งหมดเหล่านี้มีแนวโน้มที่จะต้องใช้เวลาชี้แจง แต่ดูเหมือนว่าฉันไม่น่าจะเป็นปัญหาที่สมบูรณ์ NP โดยเฉพาะอย่างยิ่งถ้าคุณอนุญาตให้ใช้เวลาพหุนามk.

ฉันอาจจะผิดและขอโทษสำหรับคำตอบเริ่มต้นของฉัน ...

BTW ความจริงที่ว่า CFG บนตัวอักษรเดียวนั้นตามมาจากทฤษฎีบทของ Parikh แม้ว่าการพิสูจน์โดยตรงจะไม่ยากเกินไป ดูลิงค์สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับทฤษฎีบทของ Parikh - มันเป็นผลลัพธ์ที่สวยงาม ... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf


ไม่ฉันไม่ใช่นักเรียน ปัญหาที่ฉันกล่าวถึงในตอนแรกเป็นปัญหาเครือข่ายที่มีรูปแบบเป็นหุ่นยนต์ ฉันแค่จะรู้ว่ามันคุ้มค่าที่จะมองหาวิธีแก้ปัญหาพหุนามหรือไม่
Lamine

5
คำตอบนี้ไม่ได้เป็นความคิดเห็นใช่หรือไม่
Oleksandr Bondarenko

2
ใช่มันควรจะเป็น Sariel, คุณสามารถย้ายสิ่งนี้ไปที่ความคิดเห็นหรือให้คำตอบได้ไหม?
Suresh Venkat

@Suresh: คุณอาจจะตระหนักถึงเรื่องนี้ แต่ตอนนี้ผู้ดูแลสามารถเปิดคำตอบลงในความคิดเห็น
Tsuyoshi Ito

ฉันย้ายคำตอบดั้งเดิมไปเป็นความคิดเห็น นี่คือคำตอบใหม่
Suresh Venkat

0

วิธีที่ไม่น่าจะเป็นไปได้: เรียกใช้อัลกอริทึมของ Djikstra จากนั้นสำหรับแต่ละรัฐสุดท้ายให้เปรียบเทียบระยะทางด้วยk. ถ้ามีkยอมรับ ปฏิเสธ.

แก้ไข: ข้างต้นใช้งานได้เฉพาะกับ NFA เท่านั้น! ขอโทษด้วยกับเรื่องนั้น.


(แต่เวลาโพลีแน่นอน!)
alpoge

ฉันไม่แน่ใจว่าอัลกอริทึมของ Dijkstra สามารถแก้ไขปัญหาได้ สามารถค้นหาเส้นทางที่สั้นที่สุดระหว่างสถานะเริ่มต้นและเส้นทางสุดท้าย แน่นอนคำที่สามารถยอมรับได้ผ่านเส้นทางนี้สามารถสร้างขึ้นได้ แต่เส้นทางนี้เป็นระดับประถมศึกษาและสามารถยอมรับคำศัพท์ได้ผ่านเส้นทางที่ไม่ใช่องค์ประกอบ มิฉะนั้นปัญหาในการพิจารณาว่าไวยากรณ์ที่ไม่มีบริบทสามารถสร้างคำใด ๆ จะสามารถตัดสินใจได้ แต่มันไม่ได้
Lamine

การทดสอบความว่างเปล่าสำหรับ CFL นั้นสามารถตัดสินใจได้ใช่หรือไม่?
alpoge

(ให้อภัยฉันอีกครั้งถ้าฉันเข้าใจผิด!)
Alp

เราสามารถใช้อัลกอริทึม 'การทำเครื่องหมาย' เพื่อทำสิ่งนี้ (ให้ CFG) - การทำเครื่องหมายเทอร์มินัลจากนั้นทำเครื่องหมายสิ่งต่าง ๆ ที่ได้รับเทอร์มินัลจากนั้นทำเครื่องหมายสิ่งต่าง ๆ ที่ได้รับมา ถ้าตัวแปรเริ่มต้นถูกทำเครื่องหมาย นอกจากนี้อย่าเพิกเฉยต่อคำตอบของฉัน - นั่นคือสิ่งที่คุณควรทำเพื่อ NFA (ไม่แน่นอนสำหรับ PDA!)
alpoge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.