数独中的方法?
基本解决方案示例
数独解法都是从规则中推导出来的,基本解法分为两种思路,一种是直观法,一种是候选数法。更复杂的解决方案最终会归结为这两类。下面用图表简单介绍几种解决方案。只要你花几分钟看看它们,你就可以马上开始数独。
基础排除法
基本消法是利用1 ~ 9这个数在每一行、每一列、每一屋只能出现一次的规律来解题的方法。基本排除法可分为行排除法、列排除法和九宫格排除法。实际求解过程如下:(1)求九宫格的解;(2)发现一个九宫格能填的位置只剩一个数的情况;也就是找到了数字在九宫格中的填充位置。寻找列排除解法:寻找一列只有一个数字可以填充的情况;这意味着该列中数字的填充位置已经找到。寻找排它解:寻找一行中只有一个数字可以填充的情况;这意味着这一行数字的填充位置已经找到了。基础排除法的提升方法是分块排除法,是直观法中最常用的方法之一。基本消去法是直观法中最常用的方法,也是解决数独谜题中最常用的方法。如果单位消元法运用得当,甚至可以单独处理中等难度的谜题。使用单元格排除法的目的是找到单元格(即一行、一列或一个块)中唯一可以填充某个数字的地方,换句话说,就是排除单元格中所有其他的空白位置。那么,如何消除剩余的空间呢?当然,我们还是不能忘记游戏规则,因为1-9这个数字在每一行、每一列、每九个方格中只会出现一次,所以如果某个数字已经存在于某一行中,这个数字就不可能出现在该行的其他位置。如果某个数字已经存在于某个列中,则该数字不可能出现在该列的其他位置。如果某个数字已经存在于一个块中,那么
独特的解决方案
如果一行有八个单元格填充了数字,那么该行剩余的单元格只能填充尚未出现的数字;同样,如果一列有八个单元格填充了数字,那么该列剩余的单元格只能填充尚未出现的数字;如果一个九宫格的单元格数量已经达到8个,那么九宫格剩余单元格中可以填充的数字就只是还没有出现的数字。这应该算是直观法中最简单的方法了。基本上只需要看拼图,根本不需要推理分析,因为使用它需要满足的条件很明显。同样,也正是因为简单,所以只能处理非常简单的谜题,或者说只能用在处理更复杂的谜题的后期。
同余解
同余法就是可以加到某个单元格的数已经被排除了,所以这个单元格的数只能加到没有出现的数上。同余法是直观法中不太常用的方法。虽然很容易理解,但在实际操作中,不容易看出是否满足使用这种方法的条件,从而限制了这种方法的应用。与唯一解相比,同余解是确定一个单元格可以填什么数的方法,唯一解是确定某个数可以填哪个单元格的方法。此外,应用唯一解的条件非常简单,几乎一目了然。
区块排除法
块排除法是基本排除法的一种改进方法,也是直观法中最常用的方法之一,块排除法是直观法中的一种高级技术。虽然它的适用范围没有基本排除法那么广,但有可能找到基本排除法找不到的解。有时候遇到困难无法继续的时候,只需要用一次方块消除法,然后问题就铺天盖地了。当一个数字可以完全在同一行的九宫格中填充时,因为该数字必须在九宫格中,所以该数字将不再出现在该行中不在九宫格中的单元格中。当一个数字可以填充在九方形网格的同一列中时,因为该数字必须在九方形网格中,所以该数字将不再出现在该列中不在九方形网格中的单元格中。当一个数可以填入一行中相同的九个方块时,因为该数必须在该行中,所以该数将不再出现在不在该行中的九个方块的单元格中。当一列中的一个数可以填在完全相同的九个方格中时,因为该数必须在列中,所以该数将不再出现在不在列中的九个方格的单元格中。块排除法实际上是利用块与行或列的关系来实现的,与基本排除法颇为相似。但它实际上是一种模糊排除法,也就是说,它不像基本排除法那样,利用谜题中已有的定数来排除行、列或九宫格,而是在数字的具体位置不确定的情况下排除。
剩余检验方法
所谓余数检验法,就是当一行或一列中的数字较多,剩余单元格有两个或三个时,对剩余单元格进行数值相加的解题方法。
唯一候选号码法
唯一候选号法是候选号删除法中最简单的方法,就是浏览所有单元格的候选号列表。如果任一单元格中只剩下一个候选号,则可以应用唯一候选号方法来填充该单元格,并将其从相应行、列和九宫格的其他单元格的候选号列表中删除。
隐式唯一候选数方法
顾名思义,隐式唯一候选数方法也是唯一候选数方法的一种,但不如显式唯一候选数方法明显。当一个数字在一列中每个单元格的候选数字中只出现一次时,它是该列中唯一的候选数字。这个单元格的值可以确定为这个数字。这是因为根据数独的规则,每一列都应该包含数字1 ~ 9,而其他单元格的候选数字不包含这个数字,所以它不能出现在其他单元格中,所以只能出现在这个单元格中。由于九个数字1-9在每一行、列和九个单元格中应该至少出现一次,如果一个数字在一行、列或九个单元格中的所有单元格的候选列表中只出现一次,则应该将其填充在其出现的单元格中,并从该行、列和九个单元格中的其他单元格的候选列表中删除。
候选号码的块删除方法
候选号码的分块删除也是一种常用的方法。其目的是尽可能地删除候选项,不一定要生成一个单元格的唯一解(当然生成唯一解更好)。候选号码分块删除法是利用九宫格中的候选号码与行或列上的候选号码相互作用实现的删除方法。在九宫格中,当某个数字可能出现的所有单元格都位于同一行时,该数字可以从该行其他单元格的候选数字中删除。在九宫格中,当可能出现数字的所有单元格都在同一列中时,该数字可以从该列中其他单元格的候选数字中删除。在一行(列)中,当某个数字可能出现的所有单元格都位于同一个九宫格中时,该数字可以从九宫格中其他单元格的候选数字中删除。
候选对删除方法
选择对删除法的原理是数字1-9不能在同一行、列、九宫格中出现两次以上。这样,如果同一行、列、格的两个单元格的候选数列表为{a,b},那么如果一个单元格中填的数是A,另一个单元格中填的数应该是B;另一方面,如果一个单元格填充了数字B,那么另一个单元格应该填充数字A,也就是说,这两个单元格应该分别填充数字A和B,所以九宫格中的行、列或其他单元格不应该再填充数字A和B。因此,候选号码对的删除方法是:在一个行、列或九宫格中,如果两个单元格都包含相同的两个候选号码,那么这两个候选号码应该从九宫格的行、列或其他单元格的候选号码列表中删除。
隐式候选数字对删除方法
隐性候选数对删除法的原理是,1-9这个数必须在同一行、同一列、同一九宫格中至少出现一次。这样,如果两个数字A和B只出现在同一行、列和九宫格的两个单元格的候选列表中,那么数字A和B就不应该填充在九宫格的行、列或其他单元格中,所以A和B只能出现在这两个单元格中,所以这两个单元格的候选列表应该是{a,b},其他数字可以从这两个单元格的候选列表中删除。因此,隐式候选数字对删除法是:在同一行、列或块中,如果一个数字对(两个数字)恰好只出现在两个单元格中,则可以删除这两个单元格的候选中的其他数字。
三数集删除
三数集删除法的原理类似于候选数对删除法。候选数字对删除法要求一行、一列或九宫格的两个单元格中出现相同的两个数字,并且这两个单元格的候选数字不能包含其他数字。同样,三数集删除法要求三个数要出现在位于同一行、列或九宫格的三个单元格中,并且这三个单元格的候选数不能包含其他数。但不同的是,三数集删除法并不要求每个单元格都要包含这三个数。例如,对于数集{2,4,5},如果一行、一列或一个块中的三个单元格的候选数处于以下情况,则可以应用三个数集删除法:{2,4,5}、{2,4,5}、{2,4}、{4,5}。5}, {2,4,5} ...也就是说,要组成一组三个数,必须有三个单元格在同一行、同一列或同一九宫格中,并且每个单元格必须至少有两个候选项,它们的所有候选项都只是一组三个数的子集。这组三个数字中的三个数字只能填在这三个单元格中,所以不可能在这一行、一列或九宫格的其他单元格中填这三个数字。但是需要注意的是,{2,4,5}、{2,4}和{2,4}不是三个数的集合。其中{2,4}和{2,4}可以应用候选号码对删除方法,因此第一个候选号码列表{2,4,5}将只剩下候选号码5,然后可以应用唯一候选号码方法。[1]
三链号删除法
找出一列、一行或九格候选数中不超过三个不同数,然后将这三个数从其他格的候选中删除的方法称为三链数删除法。
隐式三链编号删除方法
在一行中,同一单元格中有三个数字,但该行中的其他单元格都不包含这三个数字。我们称这个数对为隐形三链数。那么这三个小区的候选中的其他号码就可以排除。当不可见的三重链号出现在一列九个单元格中时,处理方法完全相同..........................................................................................................................................................................处理方法完全一样,或者说“找出某三个数只出现在某一行、某一列或某九格候选数中的情况,然后把这三个单元格的候选数化简为这三个数”的方法叫隐三元组。
矩形顶点删除法
矩形顶点删除法与直观法中提到的矩形排除法相同。矩形顶点删除法在识别中不好找,不如先用其他方法。
三链缺失法
三链删除法是矩形顶点删除法的扩展。如果不清楚矩形顶点删除法,可以参考矩形顶点删除法,以便更容易理解本节内容。用“找出某个数字只出现在某三列的相同三行的情况,然后从这三行的其他方格的候选中删除该数字”;或者说“找出一个数只出现在某三行相同的三列中,然后把这个数从这三列的其他候选中删除”的方法叫做三链列删除法。
键号删除方法
在解题后期,当上面提到的唯一候选数法、隐藏唯一候选数法、块删除法、数对删除法、隐藏数对删除法、三链数删除法、隐藏三链数删除法、矩形顶点删除法、三链列删除法都无法取得进展时,可以考虑使用关键数删除法。关键号删除法是后期找一个只在行(或列,九宫格)出现两次的号。假设这个数在其中一个格类中,继续求解,如果有误差,确定我们的假设误差。如果还是难以继续求解,那我们假设这个数在另一个单元格,看看能不能得到一个错误。这是关键数字减少方法。