มีอัลกอริทึมใด ๆ สำหรับการแก้ SAT ซึ่งไม่ได้ใช้ DPLL หรือไม่ หรืออัลกอริทึมทั้งหมดที่ใช้โดยตัวแก้ SAT นั้นใช้ DPLL หรือไม่
มีอัลกอริทึมใด ๆ สำหรับการแก้ SAT ซึ่งไม่ได้ใช้ DPLL หรือไม่ หรืออัลกอริทึมทั้งหมดที่ใช้โดยตัวแก้ SAT นั้นใช้ DPLL หรือไม่
คำตอบ:
การค้นหาความละเอียด (เพียงใช้กฎการแก้ปัญหาด้วยการวิเคราะห์พฤติกรรมที่ดี) เป็นอีกกลยุทธ์หนึ่งที่เป็นไปได้สำหรับนักแก้ปัญหา SAT ในทางทฤษฎีมันมีพลังทวีคูณมากกว่า (เช่นมีปัญหาที่มีการพิสูจน์สั้นลงแบบเอ็กซ์โปเนนเชียล) มากกว่า DPLL (ซึ่งใช้การแก้ปัญหาแบบต้นไม้ แต่คุณสามารถเพิ่มได้ด้วยการเรียนรู้ nogood เพื่อเพิ่มพลังของมัน) เปิดเท่าที่ฉันรู้) แต่ฉันไม่รู้การใช้งานจริงที่ทำงานได้ดีขึ้น
หากคุณไม่ จำกัด ตัวเองให้ทำการค้นหาเสร็จสิ้น WalkSat เป็นตัวแก้ปัญหาการค้นหาในท้องถิ่นซึ่งสามารถใช้เพื่อค้นหาวิธีแก้ไขที่น่าพอใจและมีประสิทธิภาพสูงกว่าการค้นหาโดยใช้ DPLL ในหลายกรณี ไม่มีใครสามารถใช้มันเพื่อพิสูจน์ว่าไม่น่าพอใจแม้ว่าจะมีการแคชการกำหนดทั้งหมดที่ล้มเหลวซึ่งหมายถึงข้อกำหนดหน่วยความจำแบบเอ็กซ์โปเนนเชียล
แก้ไข: ลืมที่จะเพิ่ม - สามารถใช้เครื่องบินตัดได้ (โดยลด SAT เป็นโปรแกรมจำนวนเต็ม) โดยเฉพาะอย่างยิ่ง Gomory ตัดพอเพียงเพื่อแก้ปัญหาโปรแกรมจำนวนเต็มใด ๆ ในกรณีที่เลวร้ายที่สุดอาจจำเป็นต้องมีเลขชี้กำลัง ฉันคิดว่าหนังสือ Computational Complexity ของ Arora & Barak มีตัวอย่างของระบบการพิสูจน์ที่สามารถใช้ในทางทฤษฎีสำหรับการแก้ SAT อีกครั้งฉันไม่ได้เห็นการใช้งานที่รวดเร็วนอกเหนือจากวิธีการตาม DPLL หรือการค้นหาในท้องถิ่น
การเผยแพร่การสำรวจเป็นอีกหนึ่งอัลกอริทึมที่ใช้กับความสำเร็จในปัญหา SAT บางประเภทโดยเฉพาะอย่างยิ่งการสุ่ม SAT เช่นเดียวกับ WalkSAT มันไม่สามารถใช้เพื่อพิสูจน์ความไม่พอใจ แต่ขึ้นอยู่กับแนวคิดที่แตกต่างกันมาก (อัลกอริธึมการส่งข้อความ) จาก WalkSAT
มีตัวแก้ SAT ตามการค้นหาในท้องถิ่น ตัวอย่างเช่นดูบทความนี้เพื่ออธิบาย
คุณสามารถพูดได้ว่าตัวแก้ CSP ทั้งหมดเป็นตัวแก้ SAT ด้วยเช่นกัน และมีเท่าที่ฉันรู้สองวิธีที่ใช้ใน CSP:
Monte Carlo Tree Search (MCTS)เพิ่งได้ผลลัพธ์ที่น่าประทับใจจากเกมเช่น Go แนวคิดพื้นฐานคร่าวๆคือการจำลองแบบแทรกสอดด้วยการค้นหาต้นไม้ มันมีน้ำหนักเบาและใช้งานง่ายหน้าศูนย์กลางการวิจัยที่ฉันเชื่อมโยงมีตัวอย่างเอกสารและรหัสบางส่วนเช่นกัน
Previti et al. [1] มีการสอบสวนเบื้องต้นของ MCTS ที่นำไปใช้กับ SAT พวกเขาเรียกอัลกอริธึมการค้นหาตาม MCTS UCTSAT ("ขอบเขตความมั่นใจสูงสุดที่ใช้กับต้นไม้ SAT" หากคุณต้องการ) พวกเขาเปรียบเทียบประสิทธิภาพของ DPLL และ UCTSAT กับอินสแตนซ์จากที่เก็บ SATLIB โดยมีเป้าหมายเพื่อดูว่า UCTSAT จะสร้างแผนภูมิการค้นหาที่เล็กกว่า DPLL อย่างมีนัยสำคัญหรือไม่
สำหรับอินสแตนซ์สุ่ม 3-SAT และสีกราฟแบนที่มีขนาดแตกต่างกันไม่มีความแตกต่างอย่างมีนัยสำคัญ อย่างไรก็ตาม UCTSAT ทำงานได้ดีขึ้นสำหรับอินสแตนซ์โลกแห่งความจริง ขนาดต้นไม้โดยเฉลี่ย (ในแง่ของจำนวนโหนด) สำหรับอินสแตนซ์การวิเคราะห์ข้อผิดพลาดวงจร SSA สี่แบบที่แตกต่างกันมีหลายพันรายการสำหรับ DPLL ในขณะที่น้อยกว่า 200 สำหรับ UCTSAT
DPLL ไม่ได้ระบุลำดับการเยี่ยมชมที่ผันแปรอย่างเคร่งครัดและมีงานวิจัยที่น่าสนใจมากมายที่ดูกลยุทธ์การโจมตีที่เรียงลำดับตัวแปรที่เหมาะสมที่สุด บางส่วนนี้รวมอยู่ในตรรกะการเลือกตัวแปรในอัลกอริทึม SAT ในความรู้สึกบางส่วนของการวิจัยนี้เป็นเบื้องต้นในการที่มันแสดงให้เห็นว่าลำดับการโจมตีตัวแปรที่แตกต่างกันนำไปสู่ข้อ จำกัด ตามลำดับที่แตกต่างกัน (ซึ่งมีความสัมพันธ์อย่างมากกับความแข็งตัวอย่าง) ในระยะแรกของการวิจัย