SMT solver เป็นขั้นตอนการตัดสินใจ + ตัวแก้ SAT
SAT solver เป็นตัวแก้ปัญหาการตัดสินใจ: ปัญหา SAT เป็นปัญหาการตัดสินใจ นอกจากนี้ปัญหาการตัดสินใจนี้คือ "self-reducible":
ปัญหา SAT นั้นสามารถลดตัวเองได้นั่นคือแต่ละอัลกอริทึมที่ตอบถูกต้องหากตัวอย่างของ SAT สามารถแก้ไขได้สามารถใช้เพื่อค้นหาการมอบหมายที่น่าพอใจ
- ( วิกิพีเดีย )
ซึ่งหมายความว่านักแก้ปัญหา SAT สามารถให้การมอบหมายที่น่าพอใจนอกเหนือจากการตัดสินใจปัญหา
TL; DR SMT Solver แก้ปัญหาทั่วไปของปัญหา SAT ขึ้นอยู่กับประเภท / ข้อ จำกัด ที่อนุญาตในทฤษฎี นอกจากนี้พวกเขายังอนุญาตให้เข้ารหัสความสัมพันธ์ประเภทระดับสูงกว่าการเข้ารหัส SAT อนุญาต
( A = B ) ∧ ( B = C)⟹( A = C))
- ดูตัวแก้ปัญหา Beaver SMTที่สามารถแก้ปัญหา SAT ที่เทียบเท่าซึ่งจะต้องแก้ไข
ในขณะที่ตัวแก้ QF_BV SMT มีข้อได้เปรียบเหนือตัวแก้ SAT แต่ฉันไม่คิดว่านี่เป็นข้อได้เปรียบที่ซับซ้อน: พวกเขาทั้งคู่เทียบเท่าและใช้เวลาชี้แจงเพื่อแก้ปัญหากรณีเลวร้ายที่สุดของพวกเขา แต่ในทางปฏิบัติตัวแก้ปัญหา QF_BV SMT อาจเร็วกว่ามากเนื่องจากความรู้พิเศษนี้ ดูคำตอบของฉันสำหรับLimits of SMT solverสำหรับตัวอย่างของสิ่งที่ถือว่า "ยาก" ที่ปัจจุบัน (QF_BV) SMT SMT solver และ SAT solver ทั้งคู่จะสำลัก
นอกจากนี้ยังมีตัวแก้ปัญหา SMT ที่พยายามแก้ปัญหาที่ยากกว่า Boolean Satisfiability (ตัวอย่างเช่นการอนุญาตประเภทและข้อ จำกัด ใน reals หรือการอนุญาตให้ใช้ปริมาณ) เห็นได้ชัดว่าทฤษฎีเหล่านี้มีเหตุผลอย่างน้อยช้าที่สุดเท่าที่นักแก้ปัญหา SAT ตัวแก้ปัญหา SMT เหล่านี้เป็นการแก้ปัญหาทั่วไปของปัญหา SAT แทนที่จะใช้ตัวแปรไบนารี่ "ทฤษฎี" แต่ละตัวช่วยให้ความสัมพันธ์ / ข้อ จำกัด เหนือโดเมนที่แตกต่างกันเช่น reals หรือข้อ จำกัด เชิงปริมาณ (สำหรับทั้งหมด)
บทพิสูจน์ทฤษฎีบท
P= NP
แต่การเปลี่ยนแปลงดังกล่าวอาจซีดจางลงอย่างมีนัยสำคัญเมื่อเทียบกับการปฏิวัติวิธีที่มีประสิทธิภาพสำหรับการแก้ปัญหา NP-complete จะเกิดขึ้นในวิชาคณิตศาสตร์เอง อ้างอิงจากสสตีเฟ่นคุก[19]
... มันจะแปลงคณิตศาสตร์โดยการอนุญาตให้คอมพิวเตอร์ค้นหาหลักฐานทางการของทฤษฎีบทใด ๆ ที่มีการพิสูจน์ความยาวที่สมเหตุสมผลเนื่องจากการพิสูจน์อย่างเป็นทางการสามารถจดจำได้ง่ายในเวลาพหุนาม ตัวอย่างปัญหาอาจรวมถึงปัญหารางวัล CMI ทั้งหมด
- ( วิกิพีเดีย )
[19]: ทำอาหาร, สตีเฟ่น (เมษายน 2000) ปัญหา P กับปัญหา NP นวลคณิตศาสตร์สถาบัน (PDF)
P= NP
แต่สำหรับตอนนี้ทฤษฎีบทอัตโนมัติส่วนใหญ่เป็นผู้พิสูจน์ด้วยการใช้ฮิวริสติกหรืออัลกอริธึมเชิงอธิบาย (แต่ก็ยังมีประโยชน์)
เครื่องมือแก้ข้อ จำกัด
สิ่งเหล่านี้มักจะทำการปฏิรูปตัวแก้ SAT / SMT เป็นภาษาอื่น หากคุณเคยใช้ตัวแก้ SAT / SMT ใด ๆ เพื่อแก้ปัญหาคุณสามารถรักนักแก้ปัญหาที่ไม่สามารถกำหนดค่าได้ นั่นคือแทนที่จะบอกคอมพิวเตอร์ว่าจะทำอะไรคุณบอกสิ่งที่คุณต้องการเช่น คุณสมบัติใดที่คุณต้องการให้เอาต์พุตมีและตัวแก้ SAT / SMT จะอยู่ใน "กรอกข้อมูล" โดยไม่มีการกำหนดค่าโดยไม่รบกวนคุณกับรายละเอียดการใช้งาน กระบวนทัศน์การเขียนโปรแกรมแบบนี้น่าสนใจมากและเรียกว่าการเขียนโปรแกรมแบบ จำกัดและในการรันจะต้องใช้ตัวแก้ข้อ จำกัด (ซึ่งอาจใช้ตัวแก้ SAT / SMT ในแบ็กเอนด์ขึ้นอยู่กับประเภทและข้อ จำกัด ที่อนุญาตให้คุณใช้) .
แต่ฉันเห็นผู้คนเรียก Z3 ว่าเป็นผู้พิสูจน์ทฤษฎีบท ดังนั้นฉันไม่รู้วิธีที่จะทำให้ชัดเจนคำเหล่านั้น
AFAIK, Z3 เป็นชุดเครื่องมือจำนวนมากรวมถึงตัวแก้ปัญหา SMT, ทฤษฎีการพิสูจน์ / การตรวจสอบแบบจำลองภาษาและอีกมากมาย
และคำทั่วไปมากที่สุดสำหรับพวกเขาทั้งหมดคืออะไร?
ฉันคิดว่าลักษณะทั่วไปของปัญหาความพึงพอใจคือทฤษฎีโมดูโลที่น่าพอใจและดังนั้น "SMT solver" จึงเป็นสิ่งทั่วไปที่สุดของทั้งหมดนี้ อย่างไรก็ตามการใช้งานตัวแก้ SMT ที่เกิดขึ้นจริงทั้งหมดไม่ได้แก้ทฤษฎีทั้งหมดดังนั้นจึงไม่ได้หมายความว่าตัวแก้ปัญหา SMT ทั้งหมดจะมีความเท่าเทียมกัน