ใครช่วยกรุณาชี้ไปที่หนึ่งหรือมากกว่าเว็บไซต์ที่เป็นไปได้ที่จะดาวน์โหลดการใช้งานการทำงานของแก้ #SAT? ฉันสนใจที่จะคืนค่าโซลูชันที่แน่นอนไม่ใช่การประมาณ
ใครช่วยกรุณาชี้ไปที่หนึ่งหรือมากกว่าเว็บไซต์ที่เป็นไปได้ที่จะดาวน์โหลดการใช้งานการทำงานของแก้ #SAT? ฉันสนใจที่จะคืนค่าโซลูชันที่แน่นอนไม่ใช่การประมาณ
คำตอบ:
คุณสามารถทำเช่นนี้กับSAT4Jเพียงโดย iterating กว่ารุ่นทั้งหมด: http://www.sat4j.org/howto.php#models ฉันจินตนาการว่านักแก้ปัญหา SAT ส่วนใหญ่มีความสามารถนี้
ตัวเลือกหนึ่งคือการใช้ห้องสมุด BDD เช่นJavaBDD ไลบรารีดังกล่าวทั้งหมดมีฟังก์ชันที่นับจำนวนการแก้ปัญหาอย่างรวดเร็วหรืออย่างน้อยก็ทำให้การเขียนฟังก์ชั่นดังกล่าวเป็นเรื่องง่าย อย่างไรก็ตามข้อเสียคือการสร้าง BDD จะช้าในหลายกรณีและอาจต้องใช้หน่วยความจำมาก
ในกรณีที่อินพุตของคุณอยู่ใน CNF ฮิวริสติกแบบง่ายที่เพิ่มความเร็วในการก่อสร้าง BDD มีดังต่อไปนี้ ขั้นแรกให้สร้าง BDD ขนาดเล็กสำหรับแต่ละส่วนและวางลงในลำดับความสำคัญซึ่งรากเป็น BDD ที่เล็กที่สุด ประการที่สองป๊อป BDD สองอันคำนวณและระหว่างพวกเขาแล้วผลักผลลัพธ์ไปยังลำดับความสำคัญ นี่คือแนวคิด: เนื่องจากการคำนวณและระหว่าง BDD ของขนาดและต้องใช้ในทางทฤษฎี แต่ในทางปฏิบัติการลดรันไทม์จึงเหมือนกับการค้นหารหัส Huffmann O ( m n ) ∼ m + n
หัวข้อที่เกี่ยวข้อง: ที่ดีที่สุด SAT Solver
สิ่งที่ดีที่สุดที่ฉันพบคือ "c2d compiler" http://reasoning.cs.ucla.edu/c2d/
มันใช้ d-DNNF และคุณต้องการตัวเลือก-count
MBound Solver มอบให้ที่นี่http://www.cs.cornell.edu/~sabhar/สามารถให้การนับแบบจำลองด้วยการรับประกันความน่าจะเป็น มันเร็วกว่าการแจกแจงโซลูชั่นทั้งหมด
ผมเขียนขนาดเล็กรุ่น / นายกแจงนับ สิ่งนี้สามารถใช้สำหรับการนับรุ่นด้วยการแจงนับรุ่น แต่ไม่สามารถใช้งานได้จริง หากใครสนใจฉันสามารถขยายมันเพื่อนับโมเดลจากรากฟันเทียมที่สำคัญ
เว็บไซต์BeyondNPมีคลังโฆษณาที่ดีของเครื่องมือที่มีอยู่เพื่อแก้ไข #SAT (และปัญหาอื่น ๆ ที่เกี่ยวข้องกับสูตร CNF) คุณอาจพบรายการเครื่องมือสำหรับการนับแบบโดยประมาณและการรวบรวมความรู้ (งานการเปลี่ยน CNF ให้เป็นโครงสร้างข้อมูลที่รวบรัดด้วยความหวังซึ่งมักจะสนับสนุนการนับแบบจำลองพหุนามเวลา)
นอกจากนี้คุณยังอาจพบรายการของเครื่องมือสำหรับpreprocessingสูตร CNF ซึ่งอาจจะเป็นประโยชน์ในการปรับปรุงการแสดงของเคาน์เตอร์รูปแบบต่างๆและมาตรฐาน
นี่คือหนึ่งชื่อ tensorCSP และใช้เครื่องมือที่เรียกว่าเครือข่ายเมตริกซ์ อธิบายไว้ในบทความนี้
Glucose เป็นตัวแก้ SAT ที่มีประสิทธิภาพมากที่พัฒนาขึ้นที่มหาวิทยาลัยบอร์โดซ์