我最近刚使用回溯在java中做了一个数独求解器。
考虑到解决方案,是否有可能制定问题或难题?
修改
制定原始拼图,有没有办法实现这个目标?
还有一个问题,
给出了谜题和解决方案。
如果我能够使用解决方案解决难题(结果是谜题)
同时能够使用拼图解决方案(结果是解决方案)
哪个号码更大?
谜题?还是解决方案?答案 0 :(得分:4)
可以制定多种可能的原始状态之一。
如果无法删除更多数字,则表示您已达到拼图的原始状态之一。
如果您选择随机删除的数字(步骤2),您可以多次执行此操作,并获得导致相同最终拼图的不同起点。
答案 1 :(得分:1)
如果我能够使用解决方案解决难题(结果是谜题) 并且同时能够使用拼图解决方案(结果是解决方案)
哪个号码更大?
谜题?还是解决方案?
没有明确的答案。
每个解决方案都有2个 81 对应的谜题,包括平凡的谜题。并非所有这些都有一个独特的解决方案,但很多都有。因此,如果所选择的解集仅包含一个元素,那么与解集相对应的最大谜题集就会大得多。
另一方面,the completely blank puzzle affords 6670903752021072936960 solutions。有许多对只共享空白网格作为常见拼图。因此,如果所选择的一组谜题仅包括空白网格,则相应解决方案的集合要大得多。
答案 2 :(得分:1)
从解决方案中创建拼图非常简单。您只需向后应用解决步骤。
例如,如果一行包含8位数字,则可以填写第9行。如果您向后执行此操作,如果一行包含9位数字,则可以删除一个。这将产生一个非常无聊的谜题,但仍然是一个有效的谜题(一个有效的谜题是只有一个解决方案的谜题)。
你所做的步骤越复杂,拼图就越难。实际上,强制拼图是暴力最困难的策略,向后执行它可能归结为随机删除一个数字,然后强力检查是否仍然只有一个独特的解决方案。请注意,您无需解决整个难题:这足以证明只有一种方法可以将删除的数字添加回拼图中。
关于你问题的第二部分:这感觉有点像数学问题,但让我回答:
一个好的谜题只有一个解决方案。由于有多个谜题可以产生相同的解决方案(例如,有81种方法可以填充81个方块中的80个,所有这些方法都可以从不同的谜题中获得相同的解决方案),你可以说有更多的谜题而不是解决方案。
如果您还允许使用多种解决方案的谜题,它会发生变化。对于每个谜题,必须有一个或多个解决方案,但所有这些解决方案也属于该谜题,因此谜题解决方案的数量等于解决方案的谜题数量。无效的谜题不会改变这一点:由于它们属于0个解决方案,因此您不需要属于这些解决方案的其他谜题。
聚苯乙烯。如果它们不需要是唯一可解决的,那么创建谜题也是微不足道的:只需随机删除一些数字即可完成。