Коли використовувати SAT проти обмеження задоволення?


18

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

Чи є якісь вказівки чи правила, як розпізнати для даної проблеми, який підхід швидше дає хороші результати? Чи можна запропонувати будь-які поради щодо того, які проблеми можуть бути вирішені краще за допомогою SAT вирішувачів, ніж CSP, або навпаки?

(Очевидно, що є кілька простих проблем, які можна вирішити обома підходами. Також є деякі важкі проблеми, які не можна корисно вирішити жодним підходом. Давайте відкладемо їх. Випадок, коли керівництво найбільше допомагає, - це проблеми, коли будь-який SAT розв'язувачі працюють краще, ніж розв'язувачі CSP, або де вирішувачі CSP працюють краще, ніж розв'язувачі SAT. Як я визнаю, коли розв'язувач SAT, швидше за все, краще підходить, ніж вирішувач CSP, або коли вирішувач CSP може бути краще підходить, ніж SAT вирішувач - тобто, який підхід спробувати спершу?)


1
Зауважте, що проблема не може бути надто складною, якщо ви хочете зменшити її до SAT.
Рафаель

1
Або чому орієнтуватися лише на SAT / CSP, а як щодо SMT?
Juho

Використання засобу вирішення обмежень має перевагу в тому, що ви можете легко спробувати деякі оптимізації (наприклад, методи розбиття симетрії) на не надто важких випадках (і перевірити ефективність таких оптимізацій). Крім того, багато з них можуть виводити стандартний файл CNF як проміжний вихід.
Vor

Чудова точка, @Juho! СМТ також варто подумати - сміливо порівнюйте всі три (SAT, CSP, SMT), якщо у вас є якісь думки з цього приводу.
DW

У мене було те саме питання, дякую за запитання.
xxx ---

Відповіді:


8

Я думаю, що це дуже гарне питання. Ви також можете запитати: коли використовувати SMT-вирішувач? У мене є відчуття, що це може бути важко визначити, перш ніж моделювати проблему і фактично запустити вирішувачі CSP / SAT / SMT і дізнатися це. Добре відомо, що навіть різні вирішувачі виконують дуже різні результати в одних і тих же випадках! Моя інтуїція також походить від того, що потенційно існує багато способів моделювання проблеми. Крім того, існує багато способів пошуку та висновку, залежно від типу обмежень, які використовуються (якщо формалізм, про який йде мова, дозволяє різні типи).

8×89+9+9=2732×32 Загадки судоку, розв'язки SAT були б швидшими, ніж розв'язувачі CSP.

Різні формалізми здатні захоплювати конкретну інформацію про домен та краще її використовувати та по-різному. Детальніше про це дивіться у відповіді та коментарях тут .

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