การนับในกรณีทั่วไป
ปัญหาที่คุณสนใจนั้นเรียกว่า #SAT หรือการนับแบบ ในความรู้สึกมันเป็นปัญหาคลาสสิก # P- สมบูรณ์ การนับรุ่นทำได้ยากแม้กระทั่ง -SAT! ไม่น่าแปลกใจที่วิธีการที่แน่นอนสามารถจัดการกับอินสแตนซ์ที่มีตัวแปรหลายร้อยตัวเท่านั้น มีวิธีการประมาณเช่นกันและพวกเขาอาจจัดการกับอินสแตนซ์ที่มีตัวแปรประมาณ 1,000 ตัว2
วิธีการนับที่แน่นอนมักขึ้นอยู่กับการค้นหาแบบละเอียด DPLL หรือการรวบรวมความรู้บางประเภท วิธีการโดยประมาณมักจะถูกจัดประเภทเป็นวิธีการที่ให้การประเมินที่รวดเร็วโดยไม่มีการรับรองและวิธีการที่ให้ขอบเขตที่ต่ำกว่าหรือสูงกว่าด้วยการรับประกันความถูกต้อง นอกจากนี้ยังมีวิธีการอื่น ๆ ที่อาจไม่เหมาะกับหมวดหมู่เช่นการค้นพบแบ็คดอร์หรือวิธีการที่ยืนยันในคุณสมบัติโครงสร้างบางอย่างที่จะเก็บไว้ในสูตร (หรือกราฟข้อ จำกัด )
มีการนำไปปฏิบัติจริง ตัวนับรุ่นที่แน่นอนบางตัวคือ CDP, Relsat, Cachet, sharpSAT และ c2d การเรียงลำดับของเทคนิคหลักที่ใช้โดยนักแก้ปัญหาที่แน่นอนคือการนับบางส่วน, การวิเคราะห์องค์ประกอบ (ของกราฟข้อ จำกัด ที่ต่ำกว่า), การแคชสูตรและส่วนประกอบและการใช้เหตุผลอย่างชาญฉลาดที่แต่ละโหนด วิธีอื่นที่อิงตามการรวบรวมความรู้จะแปลงสูตรอินพุต CNF ไปเป็นรูปแบบโลจิคัลอื่น จากแบบฟอร์มนี้สามารถนับจำนวนโมเดลได้อย่างง่ายดาย (เวลาพหุนามในขนาดของสูตรที่สร้างขึ้นใหม่) ตัวอย่างเช่นหนึ่งอาจแปลงสูตรเป็นไดอะแกรมการตัดสินใจแบบไบนารี (BDD) จากนั้นเราสามารถข้าม BDD จากลีฟ "1" กลับไปที่รูท หรืออีกตัวอย่างหนึ่ง c2d ใช้คอมไพเลอร์ที่เปลี่ยนสูตร CNF ให้เป็นรูปแบบปกติของการแยกสลายที่กำหนดขึ้นได้ (d-DNNF)
φφ
Gogate and Dechter [3] ใช้เทคนิคการนับแบบที่รู้จักกันในชื่อ SampleMinisat มันขึ้นอยู่กับการสุ่มตัวอย่างจากพื้นที่การค้นหาย้อนกลับฟรีของสูตรบูลีน เทคนิคนี้สร้างจากแนวคิดของการสุ่มตัวอย่างความสำคัญอีกครั้งโดยใช้ตัวแก้ SAT ที่ใช้ DPLL เพื่อสร้างพื้นที่การค้นหาที่ไม่มีรอยย้อนกลับ สิ่งนี้อาจทำได้อย่างสมบูรณ์หรือใกล้เคียงที่สุด การสุ่มตัวอย่างสำหรับการประมาณการโดยมีการรับประกันนั้นเป็นไปได้ อาคารใน [2], Gomes และคณะ [4] แสดงให้เห็นว่าการใช้การสุ่มตัวอย่างกับกลยุทธ์แบบสุ่มที่แก้ไขแล้วสามารถทำให้ขอบเขตที่พิสูจน์ได้ลดลงในการนับรวมทั้งหมดด้วยการรับประกันความถูกต้องน่าจะเป็นสูง
นอกจากนี้ยังมีงานที่สร้างขึ้นบนการเผยแพร่ความเชื่อ (BP) ดู Kroc และคณะ [5] และ BPCount ที่พวกเขาแนะนำ ในกระดาษเดียวกันผู้เขียนให้วิธีที่สองที่เรียกว่า MiniCount สำหรับการให้ขอบเขตบนการนับรูปแบบ นอกจากนี้ยังมีกรอบสถิติที่อนุญาตให้ผู้ใช้คำนวณขอบเขตบนภายใต้สมมติฐานทางสถิติ
อัลกอริทึมสำหรับ # 2-SAT และ # 3-SAT
O ( 1.3247)n)O ( 1.6894)n)O ( 1.6423n)
เช่นเดียวกับที่เป็นปัญหาถ้าคุณต้องการแก้ไขอินสแตนซ์ในทางปฏิบัติมากขึ้นอยู่กับขนาดและโครงสร้างของอินสแตนซ์ของคุณ ยิ่งคุณรู้มากเท่าใดคุณก็ยิ่งมีความสามารถในการเลือกวิธีการที่เหมาะสม
[1] Vilhelm Dahllöf, Peter Jonsson และ Magnus Wahlström การนับจำนวนความพึงพอใจที่ได้รับมอบหมายใน 2-SAT และ 3-SAT ในการประชุมทางไกลระหว่างประเทศครั้งที่ 8 (COCOON-2002), 535-543, 2002
[2] W. Wei และ B. Selman แนวทางใหม่ในการนับรูปแบบ ในการดำเนินการของ SAT05: การประชุมนานาชาติครั้งที่ 8 เรื่องทฤษฎีและการประยุกต์ใช้การทดสอบความพึงพอใจเล่ม 3569 ของเอกสารการบรรยายในวิทยาการคอมพิวเตอร์, 324-339, 2005
[3] R. Gogate และ R. Dechter การนับโดยประมาณโดยการสุ่มตัวอย่างพื้นที่ค้นหาที่ไม่มีรอยย้อนกลับ ในการดำเนินการของ AAAI-07: การประชุมระดับชาติที่ 22 ด้านปัญญาประดิษฐ์, 198–203, แวนคูเวอร์, 2007
[4] CP Gomes, J. Hoffmann, A. Sabharwal และ B. Selman จากการสุ่มตัวอย่างจนถึงการนับแบบ ในการดำเนินการของ IJCAI-07: การประชุมร่วมกันระหว่างประเทศครั้งที่ 20 เรื่องปัญญาประดิษฐ์, 2293–2299, 2007
[5] L. Kroc, A. Sabharwal และ B. Selman การเผยแพร่การใช้ประโยชน์จากความเชื่อการค้นหาย้อนหลังและสถิติสำหรับการนับรูปแบบ ใน CPAIOR-08: การประชุมนานาชาติครั้งที่ 5 เรื่องบูรณาการของ AI และ OR ในการเขียนโปรแกรมข้อ จำกัด เล่ม 5015 ของบันทึกการบรรยายในวิทยาการคอมพิวเตอร์, 127–141, 2008
[6] K. Kutzkov ขอบเขตบนใหม่สำหรับปัญหา # 3-SAT ตัวประมวลผลข้อมูล 105 (1), 1-5, 2007