คำถามติดแท็ก sat-solvers

คำถามเกี่ยวกับโปรแกรมแก้ปัญหาสำหรับปัญหาความน่าพอใจของบูลีน

2
การเข้ารหัสข้อ จำกัด 1-out-of-n สำหรับนักแก้ปัญหา SAT
ฉันใช้ตัวแก้ SAT เพื่อเข้ารหัสปัญหาและเป็นส่วนหนึ่งของอินสแตนซ์ SAT ฉันมีตัวแปรบูลีนซึ่งมีจุดประสงค์ว่าหนึ่งในนั้นควรเป็นจริงและส่วนที่เหลือควรเป็นเท็จ . (บางครั้งฉันเคยเห็นสิ่งนี้อธิบายว่าเป็นการเข้ารหัส "one-hot")x1,x2,…,xnx1,x2,…,xnx_1,x_2,\dots,x_n ฉันต้องการเข้ารหัสข้อ จำกัด "ตรงหนึ่งจากต้องเป็นจริง" ใน SAT วิธีที่ดีที่สุดในการเข้ารหัสข้อ จำกัด นี้เพื่อให้นักแก้ปัญหา SAT ทำงานได้อย่างมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้x1,…,xnx1,…,xnx_1,\dots,x_n ฉันเห็นการเข้ารหัสข้อ จำกัด นี้ได้หลายวิธี: ข้อ จำกัด แบบคู่ ฉันสามารถเพิ่มข้อ จำกัด แบบ pairwiseสำหรับทั้งหมดเพื่อให้แน่ใจว่าอย่างน้อยที่สุดหนึ่งนั้นเป็นจริงแล้วเพิ่มเพื่อให้แน่ใจว่าอย่างน้อยก็เป็นจริง .¬xi∨¬xj¬xi∨¬xj\neg x_i \lor \neg x_ji,ji,ji,jx 1 ∨ x 2 ∨ ⋯ ∨ x nxixix_ix1∨x2∨⋯∨xnx1∨x2∨⋯∨xnx_1 \lor x_2 \lor \cdots \lor x_n สิ่งนี้เพิ่มส่วนคำสั่งและไม่มีตัวแปรบูลีนพิเศษΘ(n2)Θ(n2)\Theta(n^2) การเข้ารหัสแบบไบนารี …


1
เหตุใดนักแก้ปัญหา SAT ล่าสุดทั้งหมดจึงทำงานกับ CNF แทนที่จะเป็นวงจร SAT
หลังจากการเปิดตัวห้องสมุด AIGER เพื่อจัดการกับกราฟกราฟและอินเวอร์เตอร์ในปี 2549 (ฉันคิดว่า) นักแก้ปัญหาวงจร SAT บางตัวได้เปิดตัวในปี 2549-2551 และในการแข่งขัน SAT / การแข่งขันไม่กี่ครั้งที่มีแทร็ก AIG อย่างไรก็ตามตั้งแต่นั้นมาดูเหมือนว่าโฟกัสนั้นได้รับทั้งใน SMT หรือการปรับปรุงตัวแก้ SAT แบบ clausal สำหรับฉันแล้วการให้ความสำคัญกับวงจร SAT ดูเหมือนจะสมเหตุสมผล: หลาย ๆ ปัญหาที่ไม่เกิดขึ้นจริงจะแสดงเป็นวงจร SAT มากกว่า CNF วงจรให้ข้อมูลโครงสร้างที่ไม่สามารถย้อนกลับวิศวกรรมจาก CNF แต่วงจรสามารถเปลี่ยนเป็น CNF ได้เสมอ และอย่างน้อยฟิลด์การสังเคราะห์เชิงตรรกะที่มีความสำคัญทางอุตสาหกรรมดูเหมือนจะเหมาะสมอย่างยิ่งสำหรับ AIGs แล้วเกิดอะไรขึ้น? มันกลับกลายเป็นว่าข้อมูลโครงสร้างพิเศษไม่ได้ช่วยแก้ปัญหา? SAT ที่ใช้ AIG กำลังแก้ไขการทดสอบที่ล้มเหลวหรือไม่

1
เมื่อใดที่จะใช้ SAT vs ข้อพึงพอใจข้อ จำกัด ?
หากฉันมีปัญหาหนักวิธีมาตรฐานหนึ่งคือแสดงว่าเป็นอินสแตนซ์ SAT และลองใช้ตัวแก้ SAT แนวทางมาตรฐานอื่นคือแสดงว่าเป็นปัญหาความพึงพอใจของข้อ จำกัด และลองใช้ตัวแก้ CSP ทั้งสองรู้สึกคล้ายกันอย่างคลุมเครือในสิ่งที่ประเภทของปัญหาที่สามารถแสดงออกตามธรรมชาติในรูปแบบการป้อนข้อมูลของพวกเขา มีแนวทางหรือกฎง่ายๆสำหรับวิธีการรับรู้สำหรับปัญหาที่กำหนดวิธีการใดที่มีแนวโน้มที่จะให้ผลลัพธ์ที่ดี? มีคำแนะนำใด ๆ ที่ทุกคนสามารถเสนอเกี่ยวกับปัญหาประเภทใดบ้างที่สามารถจัดการได้ดีกว่าโดยนักแก้ปัญหา SAT มากกว่าโดยนักแก้ปัญหา CSP หรือในทางกลับกัน? (เห็นได้ชัดว่ามีปัญหาง่าย ๆ บางอย่างที่สามารถแก้ไขได้โดยทั้งสองวิธีนอกจากนี้ยังมีปัญหาบางอย่างที่ไม่สามารถแก้ไขได้อย่างเป็นประโยชน์โดยวิธีใดวิธีหนึ่งลองแยกกันกรณีที่แนวทางที่เป็นประโยชน์ที่สุดคือปัญหาที่ SAT อย่างใดอย่างหนึ่ง ตัวแก้ปัญหาทำงานได้ดีกว่าตัวแก้ CSP หรือที่ตัวแก้ CSP ทำงานได้ดีกว่าตัวแก้ SAT ฉันจะจำได้อย่างไรเมื่อตัวแก้ SAT น่าจะพอดีดีกว่าตัวแก้ CSP หรือเมื่อตัวแก้ CSP มีแนวโน้มที่จะดีกว่า ตัวแก้ SAT - คือวิธีใดที่จะลองก่อน)

3
หนังสือสูตรการเข้ารหัส SAT หรือไม่
นักแก้ปัญหา SAT ได้รับประสิทธิภาพมากขึ้นในการแก้ไขอินสแตนซ์ขนาดใหญ่และถูกใช้เป็นแบ็คเอนด์ในบริบทต่าง ๆ ทุกครั้งที่ต้องการใช้พวกเขาเพื่อแก้ปัญหาในโดเมนเฉพาะเขา / เธอต้องมากับการเข้ารหัสแบบเฉพาะกิจที่ไม่เพียง แต่มีชุดโซลูชั่นที่เหมาะสม แต่ยังวางข้อ จำกัด (แม้แต่ซ้ำซ้อน) ในรูปแบบ ที่ช่วยให้ฮิวริสติกของนักแก้ปัญหาในการหาคำตอบได้เร็ว การเข้ารหัสเช่นนี้ดูเหมือนว่าฉันจะเป็นเรื่องธรรมดามากตัวอย่างเช่น: ยืนยันว่าชุดของโหนดที่เชื่อมโยงกันเป็นต้นไม้หรือเป็น DAG หรือรายการเรียงลำดับ ... มีพื้นที่เก็บข้อมูล / ตำราสูตรของการเข้ารหัสร่วมสำหรับปัญหาที่พบบ่อยกับโซลูชันที่ปรับให้เหมาะสมหรือไม่

3
Multicore SAT Solver
ฉันกำลังพยายามที่จะแก้ปัญหา SAT ข้อ 25k 5k เนื่องจากมันทำงานมาเป็นเวลาหนึ่งชั่วโมง (precosat) และฉันต้องการแก้ปัญหาที่ใหญ่กว่าหลังจากนั้นฉันกำลังมองหา SAT-Solver แบบมัลติคอร์ ดูเหมือนว่าจะมี SAT-Solvers หลายคนฉันจึงค่อนข้างแพ้ ใครช่วยชี้ให้ฉันดีที่สุดสำหรับกรณีของฉัน ฉันก็จะมีความสุขถ้ามีคนให้เวลาฉันโดยประมาณ (ถ้าเป็นไปได้)

1
การแยกประเภทการปรับแต่ง
ที่ทำงานฉันได้รับมอบหมายให้อนุมานข้อมูลบางประเภทเกี่ยวกับภาษาแบบไดนามิก ฉันเขียนลำดับของข้อความไปยังletนิพจน์ที่ซ้อนกันเช่น: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } เนื่องจากฉันเริ่มต้นจากข้อมูลประเภททั่วไปและพยายามอนุมานประเภทที่เฉพาะเจาะจงมากขึ้นตัวเลือกที่เป็นธรรมชาติคือประเภทการปรับแต่ง ตัวอย่างเช่นตัวดำเนินการตามเงื่อนไขส่งคืนการรวมของประเภทของสาขาที่เป็นจริงและเท็จ …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
SAT-solvers สามารถใส่ตัวเลขได้ง่ายหรือไม่?
เครื่องมือแก้ปัญหา SAT สมัยใหม่นั้นเก่งในการแก้ปัญหาตัวอย่างจริงของหลาย ๆ กรณีของ SAT อย่างไรก็ตามเรารู้วิธีสร้างฮาร์ดไดรฟ์ตัวอย่างเช่นใช้การลดแฟ็กตอริ่งเป็น SATและให้หมายเลข RSA เป็นอินพุต นี่ทำให้เกิดคำถาม: ถ้าฉันใช้ตัวอย่างง่ายๆของการแยกตัวประกอบ แทนที่จะใช้สองช่วงเวลาขนาดใหญ่บนบิตเกิดอะไรขึ้นถ้าฉันเอาไพรม์pบนlog n bits และไพรม์คิวบนn / log nบิตให้N = p qและเข้ารหัสF A C T O R ( N )เป็นตัวอย่างของ SAT ยังไม่มีข้อความn / 2n/2n/2พีppเข้าสู่ระบบnlog⁡n\log nn /บันทึกnn/log⁡nn/\log nยังไม่มีข้อความ= p qN=pqN = pqF A C T O R (N))FACTOR(N)\mathrm{FACTOR}(N)NNNจะเป็นจำนวนที่ง่ายต่อการแยกตัวประกอบโดยวิธีการค้นหาแบบตะแกรงหรือบังคับเนื่องจากปัจจัยหนึ่งมีขนาดเล็ก SAT-modern ที่ทันสมัยพร้อมการลดมาตรฐานจากแฟคตอริ่งไปจนถึง SAT …

1
การรวมเข้ากับตัวแก้ SAT
ฉันอ่านวิกิพีเดียว่าการรวมเป็นกระบวนการในการแก้ปัญหาความพึงพอใจ ในเวลาเดียวกันฉันรู้ว่าตัวแก้เช่นนี้เรียกว่า "SAT solvers" หรือ "SMT solvers" ดังนั้นพวกเขาต่างชื่อกันในสิ่งเดียวกันหรือไม่? ถ้าคุณบอกว่ามันแตกต่างกันโปรดชี้ให้เห็นข้อบกพร่องในการรักษาของฉัน

1
ข้อขัดแย้งผลักดันให้เกิดการเรียนรู้การทำให้ชัดเจนย้อนรอย
ในหน้าวิกิพีเดียที่นี่มันอธิบายอัลกอริธึม CDCL ได้ค่อนข้างดี (และดูเหมือนว่าภาพจะถูกถ่ายจากสไลด์ที่สร้างโดย Sharad Malik ที่ Princeton) อย่างไรก็ตามเมื่ออธิบายถึงวิธีการย้อนรอยทั้งหมดมันบอกว่าเป็น "ไปยังจุดที่เหมาะสม" MiniSAT ยังใช้อัลกอริทึมชุด CDCL ที่แตกต่างกันดังนั้นฉันอ่านบทความนี้. สิ่งที่พวกเขาดูเหมือนจะพูดคือคุณควรย้อนกลับจนกว่าประโยคที่เรียนรู้จะเป็นประโยคย่อย นั่นเป็นการชี้แจงอย่างชัดเจน แต่มันก็ไม่สมเหตุสมผลสำหรับฉัน การมอบหมายครั้งสุดท้ายจะเป็นส่วนหนึ่งของประโยคความขัดแย้งที่เรียนรู้เท่าที่ฉันสามารถบอกได้ (บางทีฉันผิดที่นี่?) ดังนั้นเมื่อคุณย้อนกลับไปหนึ่งขั้นตอนคุณจะสร้างหน่วยการเรียนรู้ทันทีค่าที่มอบหมายสุดท้ายจะพลิก และอัลกอริทึมจะดำเนินการตรงตาม DPLL โดยไม่ต้องย้อนรอยย้อนกลับไปไกลพอสมควร นอกจากนี้หน้าวิกิพีเดียไม่ปฏิบัติตามกฎนี้มันย้อนรอยมากขึ้นตามที่ต้องการ ไกลแค่ไหนที่ควรจะย้อนรอย?

2
แนะนำการตรวจสอบลอจิกลำดับแรก
ฉันพยายามสอนวิธีการต่าง ๆ ในการตรวจสอบซอฟต์แวร์ด้วยตนเอง ฉันได้อ่านบทความ เท่าที่ฉันเรียนรู้ตรรกะเชิงประพจน์ที่มีชั่วขณะมักใช้การตรวจสอบแบบจำลองกับนักแก้ปัญหา SAT (ในระบบที่ตอบโต้ต่อเนื่อง) แต่ตรรกะอันดับหนึ่งเกี่ยวกับโลกชั่วคราวเป็นอย่างไร มันใช้ตัวพิสูจน์บทหรือไม่? หรือมันสามารถใช้ SAT ได้ด้วย? พอยน์เตอร์ใด ๆ สำหรับหนังสือหรือบทความสำหรับผู้เริ่มต้นในเรื่องนี้ชื่นชมมาก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.