Как оптимально перемешать пятнадцать пазлов для всех размеров? - PullRequest
0 голосов
/ 12 июня 2018

Задача состоит в том, чтобы создать «пятнадцать» головоломок разных размеров, гарантируя, что все головоломки разрешимы.Для проверки решаемой головоломки, см. Википедию или Вольфрама.

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

Оптимальная перестановка (а) создаст каждую возможную разрешимую головоломку с равной вероятностью (б) выполнить не более N свопов, где N - количество плиток, и, скорее всего, (в) оставить головоломку разрешимой после каждого свопа.

Существует ли такой метод?


Существует хорошо известный метод, использующий шаги (1) теста Кнута или аналогичного шаффла (2) на валидность (3), при необходимости сделайте еще один обмен.Это составляет 3 отдельных алгоритма, и (из-за шага 3) не создает всех возможных разрешимых головоломок с точно равной вероятностью.Если нет метода, который удовлетворял бы требованиям, то должно быть доказательство этого.


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

Таким образом, вопрос можно переформулировать как поиск минимального набора перестановок, которые генерируют все возможные допустимые тасовки с равной вероятностью.Конечный результат должен быть разрешимой загадкой без необходимости проверять на разрешимость.Гипотетически количество необходимых свопов составляет N-1.

Ответы [ 3 ]

0 голосов
/ 15 июня 2018

Существует хорошо известный метод, использующий шаги (1) теста Кнута или аналогичного шаффла (2) на валидность (3), при необходимости сделайте еще один обмен.Это составляет 3 отдельных алгоритма, и (из-за шага 3) не создает всех возможных разрешимых головоломок с точно равной вероятностью.

Я думаю, что ваш вывод здесь ошибочен.Вот трехэтапный метод:

  1. Перемешать сетку в обычном режиме.
  2. Проверьте, разрешима ли сетка.
  3. Если сетка не разрешима, поменяйте местамиплитка с надписью 1 с плиткой с надписью 2.

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


Доказательство правильности

Из статьи Википедии о 15 головоломках :

Инвариант - это четность перестановкивсе 16 квадратов плюс соотношение расстояния такси (количество строк плюс количество столбцов) пустого квадрата от нижнего правого угла.Это инвариант, потому что каждое движение изменяет как четность перестановки, так и четность расстояния такси.В частности, если пустой квадрат находится в правом нижнем углу, тогда головоломка разрешима тогда и только тогда, когда перестановка оставшихся частей является четной.

Из статьи Википедии о четностиперестановка :

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

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

Следовательно, такая операция изменит разрешимость головоломки.Другими словами, применение этой операции (например, перестановка плиток с метками 1 и 2) всегда превращает неразрешимую головоломку в разрешимую и наоборот.(Эта операция также является биекцией, потому что она обратима.)


Доказательство того, что требования (b) и (c) не могут быть выполнены одновременно

Рассмотрим начальную сетку 2x2:

1 2
3 _

и сетка "цели":

_ 3
2 1

Можем ли мы перейти от первой сетки ко второй сетке, используя не более 4 свопов (требование (b)) и сохраняя сеткуразрешима после каждого свопа (требование (c))?

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

Таким образом, мы неоднократно меняем пространство с соседней плиткой по часовой стрелке, пока не получим желаемую сетку,Это занимает 6 обменов.Поскольку 6> 4, требование (b) не может быть выполнено при выполнении требования (c).

0 голосов
/ 21 июня 2018

Допустим, шахматная раскраска.Затем, начиная с разрешимой головоломки (четность перестановки), возможны следующие перестановки:

  1. Любые два числа: четность обратная.
  2. Пробел с любым числом на квадратетот же цвет: четность обратная.
  3. Пробел с любым числом на квадрате противоположного цвета: четность не изменяется.

Головоломка может быть выполнена только на каждом этапе (четность), если единственные свопы относятся к типу 3. Если за каждым свопом типа 1 или 2 следует другой аналогичный тип, головоломка будет действовать после каждой такой пары.

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

Решение легко обобщается на головоломки, отличные от 4x4.

0 голосов
/ 15 июня 2018

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

  1. Пробел в 1-м или 3-м ряду с любым квадратом того же цвета
  2. Пробел во 2-й или4-й ряд с любым квадратом противоположного цвета
  3. Любые два числа на квадратах одного цвета.

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

Решение распространяется на головоломки, отличные от 4x4.

...