Являются ли головоломки «ноль один» NP-полными?


18

Я заинтересован в небольшом варианте мозаики: головоломка: каждый край (квадратной) плитки помечен символом из , и две плитки могут быть расположены рядом друг с другом, если символ на лицевой стороне одной плитки равен а символ на лицевой стороне другой плитки равен , для некоторых . Тогда, учитывая набор тайлов, можно ли их поместить в квадрат (вращая, но не переворачивая тайлы), чтобы все ребра совпали правильно? (Существует также вариант этой проблемы, в котором предусмотрены четыре ребра по ), и части должны правильно вписываться в эту рамку).k ˉ k k { 1 n } m 2 m × m 1 × m{1n,1¯n¯}kk¯k{1n}m2m×m1×m

Я знаю, что эта проблема является NP-полной для достаточно большого , но границы, которые я видел для кажутся довольно большими; Меня интересует проблема для малых значений и, в частности, для , случай «ноль-один» (где каждое ребро помечено либо либо а ребра с должны совпадать с ребрами с ). Здесь есть (с вращательной симметрией) только шесть типов плиток (мозаика со всеми нулями, мозаика со всеми единицами, мозаика с тремя нулями и единицей, мозаика с тремя единицами и нулем и две отдельные плитки с двумя нулями и два, «0011» и «0101»), поэтому проблемный экземпляр - это просто спецификацияn n n = 1 0 1 0 1 мnnnn=10101mи набор из пяти чисел , , , , и (представляющих счет каждого типа плитки) с . Проблема, очевидно, в NP (с заданным в унарном виде), так как решение можно просто показать и затем проверить в полиноме (в Т 0001 Т 0011 Т 0101 Т 0111 Т 1111 Т 0000 + Т 0001 + Т 0011 + Т 0101 + Т 0111 + Т 1111 = м 2 м мT0000T0001T0011T0101T0111T1111T0000+T0001+T0011+T0101+T0111+T1111=m2mm) время, но известно ли, что оно является NP-полным или существует какой-то алгоритм динамического программирования, который можно применить здесь? Как насчет случая «в рамке», в котором спецификация задачи также включает четыре ребра квадрата, которые должны быть сопоставлены? (Очевидно, что если безкадровый случай является NP-завершенным, то почти наверняка, что и без него)


2
Он не может быть NP-полным, так как есть только возможных входных данных, и по теореме Махани вам нужно больше, чем это, чтобы сделать задачу NP-полной (если P = NP). Но если вы используете рамку, это препятствие исчезает. Так что это может быть NP-комплект с рамкой. θ(m10)
Питер Шор

1
Промежуточным этапом было бы доказать, что проблема принятия решения о том, можно ли правильно завершить частично заполненную мозаику из 6 плиток (то есть некоторые части уже на доске и не могут быть перемещены), является NP-полной.
Вор

Ответы:


3

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

  • Для SAT существует очень чистое кодирование выбора того, какой мозаичный элемент идет в каждый квадрат, и немного менее чистое кодирование ограничения относительно количества каждого вида мозаичного изображения (используя битовую арифметику).

  • Для ILP существует очень чистое кодирование ограничения, касающегося количества каждого типа доступных плиток, и немного менее чистое кодирование ограничений, по которым плитки могут быть смежными друг с другом (но это все еще можно выразить, так как вы можете выражать произвольные логические формулы в ILP).

Я ожидаю, что для малого или среднего размера этот подход может работать эффективно.n


Я согласен, что это кажется разумным средством решения проблемы, но я менее заинтересован в конкретном решении случаев проблемы, чем в понимании ее сложности. (Например, если это в P, то почти наверняка есть какой-то подход к динамическому программированию, который легко превзойдет абстрактные решатели SAT / линейного программирования в этой проблеме.)
Steven Stadnicki

@ StevenStadnicki, хорошо, достаточно справедливо. Тем не менее, я изо всех сил пытаюсь примирить ~ "Мне интересно понять его (асимптотическую) сложность (например, является ли он NP-полным)" ~ ~ ~ "Меня интересует проблема для малых значений " ~ , n
DW

Извините, это может привести к путанице в спецификации проблемы; Я использую для обозначения (по существу) числа форм ребер, и меня особенно интересует случай, когда существует только одна форма ребра, которую нужно сопоставить (например, «innie» или «outie»); Меня интересует сложность этой проблемы в зависимости от , размера сетки. мnm
Стивен Стадницки,

@ StevenStadnicki, ааа, моя ошибка! Извините, я недостаточно внимательно прочитал. Это имеет смысл - спасибо.
DW

Не беспокойтесь - я должен был рассмотреть это заранее; когда я вернусь домой, я попытаюсь отредактировать вопрос, чтобы использовать более «традиционную» параметризацию.
Стивен Стадницки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.