2013-12-04 3 views
3

Boolean Satisfiabiity problem является обобщением для проверки выполнимости булевого выражения. Теперь булево выражение генерируется алгоритмом неотрицательности многочлена. Полином может быть, например, $x_1x_2+x_2x_3$ и $x_1$ с некоторым интервалом, таким как $x_i\in[0.1,0.3]\;\;\forall i=1,...,n$, где $n$ - это количество переменных. В настоящее время я проверяю особенности многочленов, таких как неотрицательность, с помощью специальных алгоритмов, таких как алгоритм с ветвями и границами, где я делаю большую проблему меньшими задачами, но упускаю такие функции, как обучение, обещанное некоторыми решателями SAT, например MiniSat. ТакРешения SAT для определения функций многомерных функций?

  1. Некоторых решатели SAT предназначен для проверки свойств многочленов, таких как полилинейные функции или общих функции многих переменных?

  2. Любой простой способ преобразования многомерной функции и алгоритма неотрицательности в булево выражение?

+0

«Существует ли какой-либо SAT-решатель», похоже, запрашивает инструмент, не относящийся к теме для [so], в соответствии с [help/on-topic]. Поэтому вы можете отредактировать соответствующим образом. – Dukeling

+0

AFAIK ответ на оба вопроса. Это, однако, имеет отношение к моей области исследований, поэтому, если вы заинтересованы в изучении этого, не стесняйтесь обращаться к нему;) –

+0

@LarsKotthoff отправлено по электронной почте :) – hhh

ответ

1

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

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

Более подходящей парадигмой будет constraint programming, хотя решатели, поддерживающие непрерывные области, редки.

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

+0

Согласен +1! Мне интересно, какое обучение можно использовать для проверки функций многомерных функций с данными реального мира с такими функциями, как повторения и симметрия. Возможно, SAT не может использоваться напрямую, но, возможно, в некоторой части анализа, чтобы определить приоритетность программирования ограничений. Просто новые идеи! Спасибо за ваш вклад. – hhh

+1

Для симметрии вы можете взглянуть на нарушение симметрии в программировании ограничений, которое является активной областью исследований. –

+0

Вопрос в том, можно ли решить проблему с ограничением ограничений '' с помощью некоторого решателя SAT? Я мог бы найти решатели CSP, которые основаны на решателях SAT, таких как https://github.com/dmr/csp-solver и http://bach.istc.kobe-u.ac.jp/sugar/. Любой опыт с ними или подобный? Теперь я не уверен, действительно ли этот вопрос решен, расследуя. – hhh

Смежные вопросы