Кодирование набора одинаковых ограничений как проблему Max-Sat

cs.stackexchange https://cs.stackexchange.com/questions/119097

Вопрос

Предположим, набор переменных $ v $ = $ \ {v_1, ..., v_m \} $ < / span>.

Учитывая общую сумму $ n $ AT-SIGHT-ONE (AMO) Ограничения (на уровне одного элемента в данном наборе true ) Установите [из следующей формы], над набором переменной $ V $ ,

$$ AMO \, (v_1, v4, \ neg v_6, v_ {10}) \\ ... \\ {10}) \\ ... \\ AMO \, (v_2, \ neg v3, v_7 ) $$

Problem: Find an assignment to $V$ that maximize
         the number of satisfiable AMO constraint set. 
.

Я не могу представлять его как проблему с SAT MAX.

Пробовал до сих пор (попытка 1): использование жесткого ограничения для каждого из не более одного ограничения. Это не будет работать как кодирование $ Amo (v_i, ..., v_w) $ будет иметь несколько предложений для каждого $ AMO $ И все они назначали тот же вес (верхний вес). Решением этого набора не может быть максимальным.

Попытка (2): чтобы исправить вышеуказанную проблему, я пробовал относительный вес о пункте; I.E. Для каждого пункта назначить вес пропорциональна размеру пункта. Это даст предпочтение присваиванию удовлетворения более короткого пункта. Но это не работает в экстремальных ситуациях, такими как если бы все оговорки имеют ту же длину.

У меня есть опыт работы с SAT Solvers, но это моя первая попытка проблем с максимумом SAT.

Это было полезно?

Решение

Стандартный способ создания мягких ограничений в MAXSAT - использовать переменные метки:

Для каждого $ amo_j $ connaint, создайте новую переменную $ l_j $ .Затем создайте пункт единицы $ (\ lnot l_j) $ с весом $ 1 $ и добавить литерал $ l_j $ Для каждого пункта стандарта $ amo_j $ Кодировка, которая содержит только жесткие (бесконечные весовые) пункты.

Теперь переменная метки $ l_j $ действует как переключатель: настройка $ l_j= rentral $ «Отключить» $ AMO_J $ Hard Connaint, но не удовлетворяет пунструктуре $ (\ lnot l_j) $ .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top