#SAT Solver скачать

21

Может ли кто-нибудь указать на один или несколько веб-сайтов, где можно загрузить работающую реализацию решателя #SAT? Меня интересуют те, кто возвращает точное количество решений, а не приближение.

Джорджо Камерани
источник
2
Привет Уолтер, твой вопрос близок к тому, что будет официально "по теме" для этого сайта. Тем не менее, если вам некуда задать этот вопрос, и мы можем ответить на него, возможно, это не так уж и плохо ... (Поскольку сайт все еще находится в стадии разработки, я думаю, что мы более открыты, чем другие сайты). Будьте уверены, что смысл этого комментария не в том, чтобы «ругать» или «предупреждать», это просто дружеское замечание.
Райан Уильямс
Привет Райан, спасибо за ваше уведомление. Извините, если этот вопрос близок к границе. Я искал в Интернете и ничего не нашел: только некоторые решатели SAT, но не #SAT решатели. Вот почему я спросил здесь. Конечно, я знаю, что могу написать свой собственный код, который использует решатель SAT в качестве движка для подсчета решений, но я искал что-то уже готовое и готовое к использованию.
Джорджио Камерани
12
Я хотел бы не согласиться. Я думаю, что такие вопросы находятся в рамках и должны быть!
Суреш Венкат
согласен его по объему. fyi / imho не слишком практично создавать решатель #SAT из решателя SAT, если только у него нет исходного кода и даже в этом случае, не очень практично, за исключением очень маленьких формул, из-за очень плохого экспоненциального увеличения. обычно требуются специальные методы, уникальные для #SAT, а не SAT ...
vzn

Ответы:

16

Вы можете сделать это с SAT4J , просто перебирая все модели: http://www.sat4j.org/howto.php#models . Я полагаю, что большинство SAT решателей обладают этой способностью.

Дэйв Кларк
источник
Привет supercooldave, спасибо за указатель. Я не знал, что у SAT4J есть такая способность.
Джорджио Камерани
16

Вы также можете попробовать #SAT solver "sharpSAT" ( веб-сайт , github ) для подсчета количества удовлетворительных заданий формул CNF.

Holger
источник
11

Одним из вариантов является использование библиотеки BDD, такой как JavaBDD . У всех таких библиотек либо есть функция, которая быстро считает решения, либо, по крайней мере, они облегчают написание такой функции. Недостаток, однако, заключается в том, что во многих случаях создание BDD будет медленным и может потребовать много памяти.

mnO(mn)m+n

Раду ГРИГОРЕ
источник
7

Похожие темы: Лучший SAT Solver .

М.С. Дусти
источник
1
Спасибо Садек. Указанная вами тема кажется теоретически ориентированной. В нем перечислены несколько работ по уменьшению верхней границы. Это очень интересно, но я искал готовую рабочую реализацию.
Джорджио Камерани
2
Добро пожаловать. Среди ссылок, приведенных там, была одна, которая была чисто практической: satcompetition.org . Я думаю, что вы можете найти очень хорошие реализации там.
MS Dousti
7

Лучшее, что я нашел, это "c2d compiler". http://reasoning.cs.ucla.edu/c2d/

Он использует d-DNNF, и вам нужна опция -count .

Леон Леон
источник
C2D решает гораздо больше CNF, чем Sharpsat. Для игрушечных целей подойдет и спутниковый решатель "relsat".
Леон Леон
7

Обозреватель MBound, приведенный здесь http://www.cs.cornell.edu/~sabhar/, может дать подсчет моделей с вероятностными гарантиями. Это намного быстрее, чем перечислять все решения.

выбирать
источник
5

Я написал небольшой модельный / простой имплицитный перечислитель . Это уже можно использовать для подсчета моделей с перечислением моделей, но это не очень практично. Если кому-то интересно, я могу расширить его, чтобы он считал модели из простых импликантов.

Миколас
источник
2

Веб-сайт BeyondNP содержит хороший перечень существующих инструментов для решения #SAT (и других сложных проблем, связанных с формулами CNF). Вы также можете найти список инструментов для приблизительного подсчета моделей и компиляции знаний (задача преобразования CNF в, возможно, краткую структуру данных, которая часто поддерживает подсчет моделей за полиномиальное время).

Вы также можете найти список инструментов для предварительной обработки формул CNF, которые могут быть полезны для повышения производительности счетчиков моделей и различных эталонных тестов .

holf
источник