นี่ไม่ใช่คำตอบ เป็นการสังเกตที่ง่าย แต่ยาว ฉันหวังว่ามันจะมีประโยชน์
เวอร์ชันการตัดสินใจของปัญหาของคุณคือ: X มีชุดย่อยของ A?
ปัญหานี้เกี่ยวข้องกับปัญหาการประเมินฟังก์ชั่นบูลีนโมโนโทนของ nตัวแปร เซตย่อยของ{1,…,n} เทียบเท่ากับ n- สตริงดังนั้นครอบครัว X เทียบเท่ากับฟังก์ชันบูลีน f ของ nตัวแปร รับฟังก์ชั่นfหนึ่งสามารถกำหนดฟังก์ชั่นโมโนโทนน้อยที่สุดที่ไม่ใหญ่กว่า fคือ g(y)=(∃x⊆y,f(x)). จากนั้นปัญหาต้นฉบับจะถูกลดลงเป็นการประเมินg(A). ในทางกลับกันปัญหาของการประเมินฟังก์ชั่นโมโนโทนบูลสามารถลดลงเป็นปัญหาดั้งเดิมได้f=g หรือโดยการเลือก f ที่ทำให้ X ที่มีขนาดเล็ก
ในทางปฏิบัติ BDDs มักจะทำงานได้ดี ดังนั้นวิธีหนึ่งที่เป็นไปได้คือสร้าง BDD สำหรับfได้มาจากมัน BDD สำหรับ gแล้วประเมินผล g. ขนาดเฉลี่ยของ BDD สำหรับgต้องเพราะมีหลายเสียงเดียวฟังก์ชั่นบูล ดังนั้นในทางทฤษฎีนี่เป็นทางออกที่ไม่ดีΩ((nn/2))
แต่ (1) การวิเคราะห์ที่ดีกว่าอาจเป็นไปได้และ (2) อาจมีการปรับแต่งวิธีการนี้ที่ทำให้ดีขึ้น ตัวอย่างเช่นฉันไม่ได้ใช้ความสัมพันธ์ระหว่างขนาดของและขนาดBDD ของแต่อย่างใด (ต้องมีความสัมพันธ์กัน แต่ฉันไม่รู้ว่ามันง่ายหรือใช้งานได้ที่นี่)Xg
เพื่อความสมบูรณ์อัลกอริธึมที่ง่ายสำหรับการคำนวณ BDD สำหรับจาก BDD สำหรับมีดังต่อไปนี้
นี่เป็นมาตรฐานหรือการทำงานของ BDDsgf
m(x?f1:f0)=x?(m(f0)∨m(f1)):m(f0)
∨