Сформулируйте головоломку судоку, учитывая решения

Я недавно сделал решатель судоку на Java с использованием обратного отслеживания.

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

ИЗМЕНИТЬ

Чтобы сформулировать исходную головоломку, есть ли способ добиться этого?

и дополнительный вопрос,

учитывая загадку и решения.

Если я смогу решить головоломку, используя решения (результат - головоломки)

и в то же время может решать решения с помощью головоломки (результат - решения)

У кого номер больше?

головоломки? или решения?


person Community    schedule 13.05.2015    source источник
comment
Точно не знаю, но, вероятно, вам понадобятся дополнительные ограничения. Определенно существует больше начальных состояний, которые приводят к одному и тому же решению, а это означает, что получение оригинала из решения дает больше возможных ответов. Например, когда я очищаю только одно поле, у меня получается 9 * 9 = 81 оригинальная головоломка, которая приводит к тому же решению.   -  person JohannisK    schedule 13.05.2015
comment
Вторую часть я не понял. (Я не англичанин, извините) Не могли бы вы прояснить это, пожалуйста?   -  person FrancoisBaveye    schedule 13.05.2015
comment
Что было бы больше, сформулированных головоломок? или сформулированные решения?   -  person    schedule 13.05.2015
comment
@ Heru-Luin, JohannisK, проиллюстрировал свое наблюдение о том, что существует большое количество различных головоломок судоку, которые дают одно и то же решение. Он указал, что для любой решенной сетки судоку существует 81 отдельная начальная головоломка с 80 заполненными ячейками, которые дают это решение (считая само решение как тривиальную головоломку). Число взрывается оттуда. Фактически, для любого данного решения судоку существует ровно 2 ^ 81 исходных головоломок судоку, которые дают такое решение (не обязательно однозначно).   -  person John Bollinger    schedule 13.05.2015
comment
Хорошая головоломка имеет только одно решение, но просто показать, что существует масса головоломок, которые дают одно и то же решение. Таким образом, количество решений головоломки больше, чем количество головоломок, которые вы найдете в решении. Если вместо этого вы разрешаете головоломки, у которых есть несколько решений, то в среднем количество головоломок на решение равно количеству решений на головоломку. В конце концов, если в решении есть головоломка, та самая головоломка также имеет указанное решение.   -  person Dorus    schedule 13.05.2015


Ответы (3)


Можно сформулировать одно из множества возможных исходных состояний.

  1. Начните с окончательного решения (присутствуют все числа)
  2. Удалить одно число (выбранное случайно или нет)
  3. Проверьте, можно ли найти этот номер, учитывая текущее состояние платы (у вас уже есть решатель, это должно быть легко)
  4. Если это число можно подсчитать, все в порядке. Вернитесь к 2.
  5. Если этот номер не удается найти, верните его на место. Вернитесь к 2.

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

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

person FrancoisBaveye    schedule 13.05.2015
comment
Что, если вы позволите нам сказать 1000 решений исходной головоломки. как можно сформулировать оригинальную головоломку? - person ; 13.05.2015
comment
Вы не сможете найти одно конкретное исходное состояние платы. Поскольку несколько начальных состояний приводят к одному конечному состоянию, невозможно точно угадать, какое именно начальное состояние было у вас, если вы знаете только конечное состояние головоломки. - person FrancoisBaveye; 13.05.2015
comment
Не могли бы вы поделиться своим мнением по поводу дополнительного вопроса? - person ; 13.05.2015

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

Например, если строка содержит 8 цифр, вы можете заполнить 9-ю. Если вы сделаете это в обратном порядке, если строка содержит 9 цифр, вы можете удалить одну. Это приведет к очень скучной головоломке, но все же верной (действительная головоломка - это головоломка с одним решением).

Чем сложнее будут шаги, которые вы сделаете, тем сложнее будет головоломка. Фактически, перебор головоломки - самая сложная стратегия, ее выполнение в обратном порядке, вероятно, сводится к случайному удалению цифры и проверке грубой силы, есть ли еще только одно уникальное решение. Обратите внимание, что вам не нужно решать всю головоломку: достаточно доказать, что есть только один способ добавить удаленную цифру обратно в головоломку.

Что касается второй части вашего вопроса: это немного похоже на математический вопрос, но позвольте мне ответить:

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

Если вы также разрешите головоломки с несколькими решениями, это изменится. Для каждой головоломки должно быть одно или несколько решений, но все эти решения также принадлежат этой головоломке, поэтому количество решений для головоломок равно количеству головоломок для решений. Недействительные головоломки не меняют этого: поскольку они принадлежат к 0 решениям, вам не нужны дополнительные головоломки, принадлежащие этим решениям.

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

person Dorus    schedule 13.05.2015

Если я могу решить головоломку, используя решения (результат - головоломки), и в то же время могу решать решения, используя головоломку (результат - это решения)

У кого номер больше?

головоломки? или решения?

Нет однозначного ответа.

Каждое решение содержит ровно 2 81 соответствующих головоломки, включая тривиальную. Не у всех из них есть уникальное решение, но у многих есть. Следовательно, если выбранный набор решений содержит только один элемент, то максимальный набор головоломок, которые в совокупности соответствуют набору решений, значительно больше.

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

person John Bollinger    schedule 13.05.2015
comment
Обратите внимание, что если у соответствующей головоломки более одного решения, решить эту головоломку невозможно. В конечном итоге вам придется угадывать решение, а это не соответствует правилам. - person FrancoisBaveye; 13.05.2015
comment
@ Херу-Луин, постулирует вопрос, что загадка может давать решения во множественном числе. То, что некоторые не считают исходную сетку, предлагающую несколько различных решений, действительной головоломкой судоку, не имеет значения. - person John Bollinger; 13.05.2015
comment
Вы правы, это была дополнительная информация. - person FrancoisBaveye; 13.05.2015