Должно ли введение дополнительных ограничений улучшить время решения для решателей SMT?

У меня есть приложение SMT (построено на библиотеке Haskell SBV), которое решает некоторые сложные уравнения против одного s переменная в реальной логике с использованием Z3. Поиск решения занимает около 30 секунд в моем случае.

Пытаясь ускорить процесс, я добавил дополнительные ограничения s < 40000, так как у меня есть некоторая оценка решения. Я думал, что такое ограничение уменьшит пространство поиска и заставит решатель быстрее вернуть результат. Однако, это только сделало это медленнее (это даже не закончилось через 10 минут).

Вопрос в следующем: можно ли предположить, что дополнительные ограничения всегда замедляют / ускоряют процесс решения или нет общих правил, и это всегда зависит от обстоятельств?

Я обеспокоен тем, что даже мой 30-секундный алгоритм может содержать некоторые дополнительные ограничения, которые не обязательно нужны, а просто замедляют процесс.

1 ответ

Решение

Я не думаю, что вы можете сделать какие-либо общие предположения по этому поводу. Это может или не может повлиять на время решения, предполагая, sat/unsat статус не меняется.

Равенства, как правило, помогают (так как они распространяются свободно), но для всего остального никто не догадывается. Кроме того, разные решатели могут демонстрировать различное поведение для одного и того же дополнения.

Один из способов думать об этом заключается в том, что лежащий в основе алгоритм DPLL(T), по сути, является очень умным прославленным алгоритмом поиска. Он продолжает выпускать "выученные леммы" в надежде, что найдет противоречие с ранее известным фактом. Новое "ограничение", которое вы добавите, может привести к генерации тонны правильных, но не относящихся к делу лемм, которые приведут его к глубокому концу без какого-либо полезного результата. (Количественные формулы, как правило, выглядят следующим образом: вы можете создавать их миллионами разных способов; но если вы не найдете "правильную" реализацию, все, что они сделают, это в конечном итоге загрязнит ваше пространство поиска.)

По крайней мере, это был мой опыт!

Другие вопросы по тегам