Початок роботи з розв'язуванням SAT


24

Я хочу зробити перший вирішувач SAT. Я знаю конкурс SAT та конференцію SAT, і на цю тему є дуже багато робіт. Я стартер, переповнений стартер. З чого я повинен почати? Врешті-решт я хочу підштовхнути сучасний стан. Я хочу порадити експертів, як почати, щоб я не витрачав час на несуттєві речі занадто рано. Велике дякую.


6
Ви вже реалізували алгоритм DPLL? Ви точно відрегулювали та відшліфували свою реалізацію, щоб вона працювала надзвичайно швидко?
Jukka Suomela

5
Довідник задоволеності - amazon.co.uk/… (можливо, перевірте бібліотеку, вартість досить висока).
MGwynne

1
@Jukka: коментар -> відповідь?
Суреш Венкат

4
Я не згоден з Юккою. Навіщо винаходити колесо? Немає причин повторювати те, що MiniSAT вже надає відкритий код. Якщо ви зацікавлені в додаванні до рамки CDCL, ваше додаток відобразиться в підвищеній продуктивності MiniSAT. Крім того, DPLL сам по собі недостатній; було вдосконалено багато покращень. В основному, дотримуйтесь відповіді Міколаса!
Гек Беннетт

1
Дивіться також пов'язане питання cstheory.stackexchange.com/q/1988
András Salamon

Відповіді:


18

Відмінний огляд для початківців дає наступна стаття з 2009 року.

Існує кілька способів вникнути в технічні аспекти. Можна навіть почати з оригінального паперу Davis-Putnam. Він надзвичайно зрозумілий і має детальні приклади. Обговорюючи оптимізацію SAT в ході курсу, ми виявили, що декілька з них можуть уявити, що вони вже є. Документ «Девіс-Логман-Ловеленд» (я вважаю) менш повчальним, але він такий короткий, що ви можете його прочитати.

Можливо, є шляхи наздогнати розвиток наступних 50 років. Я б рекомендував слайди лекцій. Якщо тільки знайти "DPLL", ви підкажете багато навчальних посібників. Якщо переглядати їх, я впевнений, що туман очиститься - певною мірою. Існує також багато корисних опитувань. Папір Чжан-Малік - гарне місце для початку. У Довіднику задоволеності є кілька статей, які можуть вам бути корисними.

Я другий пропозицією Миколаоса. Код MiniSAT чистий і керованого розміру. Ви можете грати з ним. Є кілька інших вирішувачів, які ви можете спробувати. CryptoMiniSat також досить чистий. Ви також повинні проконсультуватися з роботою Armin Biere , який пише SAT solvers і пише про написання SAT solvers.


17

Я пропоную спершу зрозуміти, які методи справді розширювали вирішувачі, для чого я запропонував би наступний огляд та аналіз .

Тоді я б рекомендував завантажити вихідний код minisat і прочитати його опис .

Звичайно, це може бути індивідуально, але я вважаю, що дивлячись на вихідний код найбільш цінний.


9

Якщо ви перевантажені всією роботою, яка там, чому б вам не почати робити вигляд, що ніхто не працював над проблемою раніше? Якщо ваша мета в кінцевому підсумку побудувати конкурентоспроможний SAT-вирішувач, це буде досить довгий шлях. Почавши просто грати без «перевірки рішень», так би мовити, вам більше виграти, ніж програти.

нмнм

нм


9

Почніть з хорошої роботи з опитування. Легко напасти на предметну частину їжі та плутати різні назви в літературі за однакові методи та те саме ім’я, що застосовуються для різних методик. Також легко відновити старі алгоритмічні битви (списки зустрічей проти списків головної хвости проти двох відстежених літералів для реалізацій DPLL, наприклад), якщо ви не знаєте, що таке сучасний стан.

Рішення задоволеності від Gomes, et. ін. дасть тобі груба кладка землі.

Удосконалення рішень SAT з використанням найсучасніших методик Мантій наблизить вас до сьогодення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.