Какая разница в сложности может быть между поиском решения головоломки Судоку и доказательством того, что решение является единственным решением?

14

Поэтому обычно судоку составляет , но этот вопрос распространяется и на головоломок с . Существует много правил вычета полиномиального времени, которые могут помочь в поиске решения головоломки Судоку. Но тогда иногда требуется угадывание значений и последующие цепочки выводов, чтобы исключить значение ячейки или комбинацию значений ячеек. Однако, как только найдено правильное решение, это не гарантирует, что решение УНИКАЛЬНО. У действительной головоломки Судоку должно быть только одно правильное решение, но при создании случайных головоломок может потребоваться дополнительное вычисление для проверки.9×9N2×N2N>3

Итак, мой вопрос заключается в том, что если мы допустим определенный набор правил вычета полиномиального времени (скажем, наиболее распространенный набор, описанный в стратегии Судоку), наряду с угадыванием значений и следуя выводам, то насколько труднее будет определить уникальное решение данной головоломки, а не только одно решение с точки зрения количества неуникальных решений? Есть ли асимптотическая разница для некоторых классов головоломок?

user2566092
источник

Ответы:

14

мм

Юваль Фильмус
источник
Спасибо, я не был уверен, что сформулировал свой вопрос достаточно точно, но это бьет по голове. Таким образом, даже если мы найдем одно решение, тогда NP-Complete будет знать, есть ли другое решение. Чистый и опрятный! Спасибо, +1
пользователь2566092
1

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

Если интерес представляет только «действительность», то Ювал Фильмус уже указал вам на доказательство того, что оно завершено.

Однако, если цель состоит в том, чтобы найти новые головоломки Судоку, которые человеку понравится решать, проблема не будет такой сложной. (Необходимость угадывать множество значений, потому что головоломка не может быть решена с использованием «логики», это не весело!) Поэтому лично я бы ограничил количество догадок максимум 4 и отклонил бы любую головоломку, которая не может быть доказана как имеющая Единственное решение в пределах того, что вы считаете разумным.

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

Кроме того, вы можете оценить, насколько сложна головоломка, исходя из сложности правил удержания, в которых она нуждается, и количества догадок, которые были необходимы.

Ян Рингроз
источник
0

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

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

Однако на самом деле это не так, и почти во всех случаях, связанных с поиском комбинаторных конструкций, поиск одного решения всегда быстрее, чем поиск всех решений.

В общем, обе эти проблемы прочно укоренились в экспоненциальном времени выполнения, если не хуже.

lPlant
источник