Кодирование набора одинаковых ограничений как проблему Max-Sat
-
28-09-2020 - |
Вопрос
Предположим, набор переменных $ 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 $ действует как переключатель: настройка $ l_j= rentral $ «Отключить» $ AMO_J $ Hard Connaint, но не удовлетворяет пунструктуре $ (\ lnot l_j) $ .