ปัญหาการแปลง (คณิตศาสตร์) เป็นอินสแตนซ์ SAT


22

สิ่งที่ฉันต้องการทำคือเปลี่ยนปัญหาทางคณิตศาสตร์ที่ฉันมีให้เป็นปัญหาความพึงพอใจแบบบูลีน (SAT) แล้วแก้ไขมันโดยใช้ SAT Solver ฉันสงสัยว่ามีคนรู้จักคู่มือคำแนะนำหรืออะไรก็ตามที่จะช่วยฉันแปลงปัญหาเป็นอินสแตนซ์ SAT

นอกจากนี้ฉันต้องการที่จะแก้ปัญหานี้ในเวลาที่ดีกว่าชี้แจง ฉันหวังว่า SAT Solver จะช่วยฉัน


1
SAT ไม่มีวิธีที่มีประสิทธิภาพ ... แต่มาดูสไลด์
Fayez Abdlrazaq Deab


เพียงแค่วิธีที่รวดเร็วและสกปรกก่อนที่จะลองสิ่งอื่นใดในกรณีที่คุณต้องการเพียงแค่บางสิ่งบางอย่างการทดสอบ: cryptlogver เครื่องมือบอกว่ามันเน้น crypto แต่จะทำเคล็ดลับ ยิ่งกว่านั้นไวยากรณ์ของภาษาที่คุณจะใช้นั้นเหมือนกันดังนั้นคุณจะไม่มีปัญหามากมาย การติดตั้งนั้นไม่ใช่เรื่องยาก แต่ควอตัสนั้นใหญ่ดังนั้นจึงต้องซื้อกาแฟสักถ้วย
absinthe_minded

1
ดูคำถามที่เกี่ยวข้องเพิ่มเติมได้ที่cs.stackexchange.com/q/30790
András Salamon

คำตอบ:


20

บทที่ 2 ของคู่มือ SAT (โดย Steven Prestwich)ครอบคลุมถึงวิธีการเปลี่ยนปัญหาการตัดสินใจแยกเป็น CNF ในเชิงลึก (น่าเสียดายที่ฉันไม่คิดว่าจะมีฉบับร่างออนไลน์ - น่าจะดีที่สุดในการปรึกษาห้องสมุดท้องถิ่นของคุณ) การอ้างอิงอื่น ๆ หลายเรื่องที่อ้างถึงในภาพรวมที่แปลกประหลาดของ Magnus Björkภาพรวมเทคนิคการเข้ารหัส SAT ที่ประสบความสำเร็จก็มีประโยชน์เช่นกัน

หากปัญหาของคุณต่อเนื่องหรือคุณมีความสนใจในระบบความไม่เท่าเทียมนักแก้ปัญหาชนิดอื่นก็มีแนวโน้มที่จะมีประโยชน์มากกว่า เมื่อไคล์ชี้นักแก้ปัญหา SMT (เช่นZ3 , YicesหรือOpenSMT ) อาจมีประโยชน์แม้ว่าทฤษฎี SMT มักจะให้ความสำคัญกับการตรวจสอบซอฟต์แวร์คอมพิวเตอร์ดังนั้นนักแก้ปัญหา SMT จึงมักจะได้รับการสนับสนุนที่ดีสำหรับสิ่งต่างๆเช่นนิพจน์ที่เกี่ยวข้องกับช่วงจำนวนเต็ม แต่อาจทำงานได้ไม่ดีกับข้อ จำกัด ในการฉีด สำหรับปัญหาที่แสดงโดยธรรมชาติว่าเป็นระบบของความไม่เท่าเทียมกันCPLEXเป็นสิ่งที่จะต้องเอาชนะ สำหรับปัญหาการตัดสินใจแบบ Combinatorial (เช่นการค้นหาการบรรจุกล่องสี่เหลี่ยมเป็นสี่เหลี่ยม ) ตัวแก้ข้อ จำกัด เช่นMinion มีประสิทธิภาพสูงกว่าตัวแก้ SAT และมักจะใช้งานได้ง่ายกว่า


13

ถ้าคุณกำลังแปลปัญหาทางคณิตศาสตร์อินสแตนซ์ SAT การออกกำลังกายการเรียนรู้เวลาของคุณจะมีมากใช้จ่ายมากขึ้นมีผลการเรียนรู้เกี่ยวกับทฤษฎีโมดูโล satisfiability SMT จะช่วยให้คุณสามารถแสดงสมการและข้อ จำกัด อื่น ๆ ได้อย่างเป็นธรรมชาติมากกว่าในกรณีของ Boolean SAT ตัวแก้ปัญหา SMT บางตัวสนับสนุนตัวระบุปริมาณที่มีอยู่และเป็นสากลช่วยให้คุณสามารถเคลื่อนที่เกินกว่าปัญหา NP และแสดงปัญหา PSPACE

นอกเหนือจากการแสดงออกที่ชัดเจนมากขึ้นแล้วตัวแก้ SMT ยังทำงานได้เร็วขึ้น ไม่ใช่ P = NP ที่เร็วขึ้น แต่มีประสิทธิภาพมากกว่าในการแก้ปัญหา SMT ที่ดีไม่ได้ทิ้งข้อมูลโครงสร้างเชิงทฤษฎีที่จะช่วยนำทางนักแก้ปัญหาในพื้นที่การค้นหา การลดคาร์ปไปยังอินสแตนซ์ SAT โดยตรงจะบังคับให้นักแก้ปัญหา SAT เรียนรู้โครงสร้างทั้งหมดนั้นใหม่ซึ่งมักจะมีค่าใช้จ่ายเป็นจำนวนมาก ตัวอย่างเช่นความจริงที่ว่าการเพิ่มคือการสับเปลี่ยนจะหายไปจากตัวแก้ SAT ที่ใช้ DPLL และการค้นหาในท้องถิ่น ตัวแก้ไม่ทราบว่ามันเกี่ยวข้องกับตัวเลขเลย! เพื่อหลีกเลี่ยงการลองเปลี่ยนลำดับทั้งหมดของ x + y + z = 10 ตัวแก้ SAT จำเป็นต้องใช้โค้ดที่ได้สัดส่วนซึ่งต้องมีการตรวจจับกราฟแบบอัตโนมัติ อัลกอริธึมการรู้จำกราฟอัตโนมัติที่ดีที่สุดในปัจจุบันต้องใช้เลขชี้กำลังเป็นเลขชี้กำลังสำหรับจำนวนจุดยอดในกรณีที่แย่ที่สุด


2
คุณแนะนำตัวแก้ไข smt ใด ๆ
Dchris

5

เครื่องมือสองอย่างที่แปลงภาษาระดับสูงเป็น SMT หรือ CNF

CVCไวยากรณ์ใกล้กับ CAS

CBMCมันแปลงโปรแกรม C เป็น CNF ช่วยให้ยืนยันได้ การยืนยันนั้นเป็นจริงเสมอหรือหากพบการป้อนข้อมูลตัวอย่างแบบเท็จ CBMC คลายการวนซ้ำดังนั้นโปรแกรม C บางโปรแกรมมี CNF / SMT ขนาดใหญ่ชี้แจง


ดูเหมือนว่า CBMC จะไม่แปลงโปรแกรม C ตามอำเภอใจเป็น CNF มันสร้าง CNF ตามโปรแกรม C ที่ดำเนินการวิเคราะห์แบบสแตติกสำหรับจำนวนเต็มมากเกินล้นบัฟเฟอร์ล้นและไม่ชอบ
vy32
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.