Здесь проблема. Даны , где каждый T i ⊆ { 1 , … , n } . Существует ли подмножество S ⊆ { 1 , … , n } с размером не более k таким, что S ∩ T i ≠ ∅ для всех i ? Я пытаюсь свести эту проблему к SAT. Моя идея решения будет иметь переменную х я для каждого из 1 в . Для каждого T i создайте предложение ( x i 1 , если Т я = { я 1 , ... , я K } . Тогда и все эти пункты вместе. Но это явно не полное решение, так как оно не представляет ограничение, которое S должен иметь не более k элементов. Я знаю, что я должен создать больше переменных, но я просто не уверен, как. Итак, у меня есть два вопроса:
- Моя идея решения на правильном пути?
- Как создать новые переменные, чтобы их можно было использовать для представления ограничения мощности ?
complexity-theory
reductions
np-hard
Аден Донг
источник
источник
Ответы:
Похоже, вы пытаетесь вычислить трансверсаль гиперграфа размера . То есть { T 1 , … , T m } - ваш гиперграф, а Sk {T1,…,Tm} S - ваш трансверсал. Стандартный перевод состоит в том, чтобы выразить предложения, как у вас, а затем перевести ограничение длины в ограничение количества элементов.
Поэтому используйте существующую кодировку, т. а затем добавьте предложения, кодирующие ∑ 1 ≤ i ≤ n x i ≤ k .⋀1≤j≤m⋁i∈Tjxi ∑1≤i≤nxi≤k
- ограничение мощности. Существуют различные переводы ограничений кардинальности в SAT.∑1≤i≤nxi≤k
Самый простой, но довольно большой перевод ограничения мощности - это просто . Таким образом, каждая дизъюнкция представляет ограничение ¬ ⋀ i ∈ X x i - для всех подмножеств X в { 1 , … , n }⋀X⊆{1,…,n},|X|=k+1⋁i∈X¬xi ¬⋀i∈Xxi X {1,…,n} размером к + 1. Таким образом, мы гарантируем, что нет возможности установить более k переменных. Обратите внимание, что это не полиномиальный размер в k
Некоторые ссылки на статьи о более компактных переводах ограничений кардинальности, которые имеют полиномиальный размер вk :
Если вы действительно заинтересованы в решении таких проблем, возможно, лучше сформулировать их как псевдобулевы (см. Вики-статью о псевдобулевых задачах ) и использовать псевдобулевы решатели (см. Псевдобулевы соревнования ). Таким образом, ограничения мощности являются просто псевдобулевыми ограничениями и являются частью языка - надеюсь, псевдобулев решатель будет обрабатывать их напрямую и, следовательно, более эффективно.
источник
Я предполагаю, что вы ищете явное сокращение, но если нет, вы всегда можете просто вернуться к теореме Кука-Левина .
источник