Настольные пазлы с алгеброй двоичных переменных - Board puzzles with algebra of binary variables - Wikipedia

Настольные пазлы с алгеброй двоичных переменных попросите игроков найти скрытые объекты на основе набора ячеек с подсказками и их соседей, отмеченных как переменные (неизвестные). Переменная со значением 1 соответствует ячейке с объектом. Напротив, переменная со значением 0 соответствует пустой ячейке - без скрытого объекта.

Обзор

Эти головоломки основаны на алгебре с двоичными переменными, принимающими пару значений, например, (нет, да), (ложь, истина), (не существует, существует), (01). Он предлагает игроку быстро установить некоторые уравнения и неравенства для решения. В разделение можно использовать для уменьшения сложности проблемы. Более того, если головоломка подготовлена ​​таким образом, что существует только уникальное решение, этот факт можно использовать для исключения некоторых переменных без расчета.

Проблему можно смоделировать как двоичное целочисленное линейное программирование который является частным случаем целочисленного линейного программирования.[1]

История

Тральщик вместе с его варианты, является наиболее ярким примером головоломок такого типа.

Алгебра с двоичными переменными

Буквы под математическими операторами используются как переменные, каждая из которых может принимать значение либо 0 или же 1 Только. Ниже приведен простой пример уравнения с двоичными переменными:

а + б = 0

Здесь есть две переменные а и б но одно уравнение. Решение ограничено тем, что а и б может принимать только значения 0 или же 1. Здесь есть только одно решение, оба а = 0, и б = 0. Другой простой пример приведен ниже:

а + б = 2

Решение простое: а и б должно быть 1 сделать а + б равно 2.

Еще один интересный случай показан ниже:

а + б + c = 2
а + б 1

Здесь первое утверждение - это уравнение, а второе утверждение - неравенство, указывающее на три возможных случая:

  1. а = 1 и б = 0,
  2. а = 0 и б = 1, и
  3. а = 0 и б = 0,

Последний случай вызывает противоречие на c заставляя c = 2, что невозможно. Следовательно, верен либо первый, либо второй случай. Это приводит к тому, что c должно быть 1.

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

а + б + c + d = 3
c + d = 1

Первый оператор имеет четыре переменных, тогда как второй оператор имеет только две переменные. Последнее означает, что сумма c и d является 1. Используя этот факт в первом утверждении, приведенные выше уравнения можно свести к

а + б = 2
c + d = 1

Алгебра на доске

tentaizu_4x4_example
Рисунок 1: Пример головоломки на доске 4x4

Игру, основанную на алгебре с двоичными переменными, можно визуализировать множеством различных способов. Один общий способ - представить правую часть уравнения как подсказку в ячейке (ячейку подсказки), а соседей ячейки подсказки как переменные. Простой случай показан на рисунке 1. Можно предположить, что соседями являются верхняя / нижняя, левая / правая и угловые ячейки, которые разделяют край или угол. Белые клетки могут содержать скрытый объект или ничего. Другими словами, это двоичные переменные. Они находятся в левой части уравнений. Каждая ячейка с подсказкой (ячейка с синим фоном на рисунке 1) содержит положительное число, соответствующее количеству ее соседей, у которых есть скрытые объекты. Общее количество объектов на доске может быть дополнительной подсказкой. Та же плата с отмеченными переменными показана на рисунке 2.

Приведение к системе уравнений с двоичными переменными

Основное уравнение записывается с использованием общего количества заданных скрытых объектов. На первом рисунке это соответствует следующему уравнению

а + б + c + d + е + ж + грамм + час + я + j + k + м = 3

Остальные уравнения составляются одно за другим для каждой подсказки:

а + б + c + е + ж + час + я + j = 1
ж + грамм + j + м = 1
час + я + j + k = 2
я + j + м = 2

Хотя есть несколько способов решить приведенные выше уравнения, можно применить следующий явный способ:

  1. Из системы уравнений известно, что я + j + м = 2. Однако, поскольку j и м являются соседями ячейки с номером 1, верно следующее: j + м ≤ 1. Это означает, что переменная я должно быть 1.
  2. С я = 1 и переменная я является соседом ячейки подсказки с номером 1, переменные а, б, c, е, ж, час, и j должно быть равно нулю. Тот же результат можно получить, заменив я = 1 во второе уравнение следующим образом: а + б + c + е + ж + час + j = 0. Это эквивалентно а = 0, б = 0, c = 0, е = 0, ж = 0, час = 0, j = 0.
  3. Рисунок 3 получен после шагов 1 и 2. Серые ячейки со знаком «-» - это переменные со значением 0. Ячейка с символом Δ соответствует переменной со значением 1. Переменная k является единственным соседом самой левой ячейки подсказки со значением 2. У этой ключевой ячейки есть один сосед с объектом и только одна оставшаяся ячейка с переменной k. Следовательно, k должно быть 1.
  4. Аналогично переменная м должно быть 1 тоже, потому что это единственная оставшаяся переменная, соседняя с самой правой ключевой ячейкой со значением 2.
  5. С k = 1, м = 1 и я = 1, завершаем маркировку трех скрытых предметов поэтому d = 0, и грамм = 0. Окончательное решение представлено на рисунке 4.
tentaizu_4x4_example_with_variables
Рисунок 2: Бинарные переменные отмечены
tentaizu_4x4_example_solved_parhibited
Рисунок 3: Пример частично решен
tentaizu_4x4_example_with_variables_solved
Рисунок 4: Пример решен

Использование уникальности

В приведенном выше примере (рисунок 2) переменные а, б, c, и е соседи ячейки подсказки 1 и они не соседи ни к какой другой ячейке. Очевидно, что возможны следующие решения:

  • а = 1, б = 0, c = 0, е = 0
  • а = 0, б = 1, c = 0, е = 0
  • а = 0, б = 0, c = 1, е = 0
  • а = 0, б = 0, c = 0, е = 1

Однако, если головоломка подготовлена ​​так, что у нас должно быть только одно (уникальное) решение, мы можем установить, что все эти переменные а, б, c, и е должен быть 0. В противном случае решений будет несколько.

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

tentaizu_4x4_example_partitioned
Рисунок 5: Пример разбиения

Некоторые конфигурации головоломки могут позволить игроку использовать разделение[2] для снижения сложности. Пример приведен на рисунке 5. Каждому разделу соответствует количество скрытых объектов. Сумма скрытых объектов в перегородках должна быть равна общему количеству скрытых объектов на доске. Один из возможных способов определить разбиение - выбрать ведущие ячейки подсказки, у которых нет общих соседей. Ячейки за пределами красных прозрачных зон на рисунке 5 должны быть пустыми. Другими словами, в белых ячейках нет никаких скрытых объектов. Так как в верхней зоне раздела должен быть скрытый объект, третий ряд сверху не должен содержать скрытый объект. Это приводит к тому, что две ячейки переменных в нижнем ряду вокруг ячейки подсказки должны содержать скрытые объекты. Остальное решение простое.

Использование метода проб и проверки

tentaizu_4x4_example_for_inconsistency
Рисунок 6: Пример метода проб и проверки

В некоторых случаях игрок может установить переменную ячейку как 1 и проверьте, нет ли несоответствий. Пример на рисунке 6 показывает проверку несогласованности. Ячейка отмечена спрятанным предметом Δ находится под тестом. Его маркировка приводит к тому, что все переменные (серые ячейки) будут 0. Отсюда следует несоответствие. Ячейка с подсказкой отмечена красным цветом со значением 1 не имеет оставшихся соседей, которые могут включать скрытый объект. Следовательно, в проверяемой ячейке не должно быть скрытых объектов. В алгебраической форме мы имеем два уравнения:

а + б + c + d = 1
а + б + c + d + е + ж + грамм = 1

Здесь а, б, c, и d соответствуют четырем верхним ячейкам серого цвета на рисунке 6. Ячейка с Δ представлен переменной ж, а две другие серые ячейки помечены как е и грамм. Если мы установим ж = 1, тогда а = 0, б = 0, c = 0, d = 0, е = 0, грамм = 0. В первом уравнении, приведенном выше, левая часть будет равна 0 в то время как правая часть имеет 1. Противоречие.

Для того чтобы прийти к выводу, может потребоваться последовательное применение проб и проверок к некоторым головоломкам на нескольких этапах. Это эквивалентно алгоритм двоичного поиска[3] чтобы исключить возможные пути, ведущие к несогласованности.

Сложность

Из-за бинарных переменных система уравнений для решения не обладает свойством линейности. Другими словами, ранг матрицы уравнений не всегда может соответствовать правильной сложности.

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

Примечания

  1. ^ Schrijver 1986
  2. ^ Халмос 1960
  3. ^ Дроздек 2000

Рекомендации

  • Пол Халмос, Наивная теория множеств. Принстон, Нью-Джерси: D. Van Nostrand Company, 1960. Перепечатано Springer-Verlag, Нью-Йорк, 1974. ISBN  0-387-90092-6 (Издание Springer-Verlag).
  • Александр Шрайвер, Теория линейного и целочисленного программирования. John Wiley & Sons, 1986. Переиздано в 1999 году. ISBN  0-471-98232-6.
  • Адам Дроздек, Структуры данных и алгоритмы в C ++, Брукс / Коул, второе издание, 2000 г. ISBN  0-534-37597-9.

внешняя ссылка