九宫格数独里的方法?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 17:49:18
九宫格数独里的方法?

九宫格数独里的方法?
九宫格数独里的方法?

九宫格数独里的方法?
解法太多了
基本解法举例
  数独解法全是由规则衍生出来的,基本解法分为两类思路,一类为直观法,一类为候选数法.更复杂的解法,最终也会归结到这两大类中. 下边以图示简单介绍几种解法,只要你花几分钟看一遍,马上就可以开始做数独了.
基础摒除法
  基础摒除法就是利用1 ~ 9 的数字在每一行、每一列、每一宫都只能出现一次的规则进行解题的方法.基础摒除法可以分为行摒除、列摒除、九宫格摒除.   实际寻找解的过程为:   寻找九宫格摒除找到了某数在某一个九宫格可填入的位置只余一个的情形;意即找到了 该数在该九宫格中的填入位置.   寻找列摒除找到了某数在某列可填入的位置只余一个的情形;意即找到了该数在该列中的填入位置.   寻找行摒除找到了某数在某行可填入的位置只余一个的情形;意即找到了该数在该行中的填入位置.   基础摒除法的提升方法是区块摒除法,是直观法中使用频率最高的方法之一.   基础摒除法是直观法中最常用的方法,也是在平常解决数独谜题时使用最频繁的方法.单元排除法使用得当的话,甚至可以单独处理中等难度的谜题.   使用单元排除法的目的就是要在某一单元(即行,列或区块)中找到能填入某一数字的唯一位置,换句话说,就是把单元中其他的空白位置都排除掉.   那么要如何排除其余的空格呢?当然还是不能忘了游戏规则,由于1-9的数字在每一行、每一列、每一个九宫格都要出现且只能出现一次,所以:   如果某行中已经有了某一数字,则该行中的其他位置不可能再出现这一数字   如果某列中已经有了某一数字,则该列中的其他位置不可能再出现这一数字   如果某区块中已经有了某一数字,则该区块中的其他位置不可能再出现这一数字.
唯一解法
  如果某行已填数字的单元格达到8个,那么该行剩余单元格能填的数字就只剩下那个还没出现过的数字;同理,如果某列已填数字的单元格达到8个,那么该列剩余单元格能填的数字就只剩下那个还没出现过的数字;如果某九宫格已填数字的单元格达到8个,那么该九宫格剩余单元格能填的数字就只剩下那个还没出现过的数字.   这应该算是直观法中最简单的方法了.基本上只需要看谜题,推理分析一概都用不上,这是因为要使用它所需满足的条件十分明显.同样,也正是因为它简单,所以只能处理很简单的谜题,或是在处理较复杂谜题的后期才用得上.
唯余解法
  唯余解法就是某宫格可以添入的数已经排除了8个,那么这个宫格的数字就只能添入那个没有出现的数字.   唯余解法是直观法中较不常用的方法.虽然它很容易被理解,然而在实践中,却不易看出能够使用这个方法的条件是否得以满足,从而使这个方法的应用受到限制.   与唯一解法相比,唯余解法是确定某个单元格能填什么数的方法,而唯一解法是确定某个数能填在哪个单元格的方法.另外,应用唯一解法的条件十分简单,几乎一目了然.
区块摒除法
  区块摒除法是基础摒除法的提升方法,是直观法中使用频率最高的方法之一. 区块摒除法是直观法中进阶的技法.虽然它的应用范围不如基础摒除法那样广泛,但用它可能找到用基础摒除法无法找到的解.有时在遇到困难无法继续时,只要用一次区块摒除法,接下去解题就会势如破竹了.   当某数字在某个九宫格中可填入的位置正好都在同一行上,因为该九宫格中必须要有该数字,所以这一行中不在该九宫格内的单元格上将不能再出现该数字.   当某数字在某个九宫格中可填入的位置正好都在同一列上,因为该九宫格中必须要有该数字,所以这一列中不在该九宫格内的单元格上将不能再出现该数字.   当某数字在某行中可填入的位置正好都在同一九宫格上,因为该行中必须要有该数字,所以该九宫格中不在该行内的单元格上将不能再出现该数字.   当某数字在某列中可填入的位置正好都在同一九宫格上,因为该列中必须要有该数字,所以该九宫格中不在该列内的单元格上将不能再出现该数字.   区块摒除法实际上是利用区块与行或列之间的关系来实现的,这一点与基础摒除法颇为相似.然而,它实际上是一种模糊排除法,也就是说,它并不象基础摒除法那样利用谜题中现有的确定数字对行,列或九宫格进行排除,而是在不确定数字的具体位置的情况下进行排除的.
余数测试法
  所谓余数测试法就是在某行或列,九宫格所填数字比较多,剩余2个或3个时,在剩余宫格添入值进行测试的解题方法.
唯一候选数法
  唯一候选数法是候选数删减法中最简单的一种方法,就是通览所有单元格的候选数列表,如果哪个单元格中只剩下一个候选数,就可应用唯一候选数法,在该单元格中填入这个数字,并在相应行,列和九宫格的其它单元格候选数列表中删除该数字.
隐性唯一候选数法
  顾名思义,隐式唯一候选数法也是唯一候选数法的一种,但它不如显式唯一候选数法那样显而易见.   当某个数字在某一列各宫格的候选数中只出现一次时,那么这个数字就是这一列的唯一候选数了.这个宫格的值就可以确定为该数字. 这是因为,按照数独游戏的规则要求每一列都应该包含数字1~9,而其它宫格的候选数都不含有该数,则该数不可能出现在其它的宫格,那么就只能出现在这个宫格了. 对于唯一候选数出现行,九宫格的情况,处理方法完全相同.   由于1-9这9个数字要在每行、每列和每个九宫格内至少出现一次,所以如果某个数字在某行、某列或是某个九宫格内所有单元格的候选数列表中只出现一次,那么这个数字就应该填入它出现的那个单元格内,并且从该格所在行、所在列和所在九宫格内其它单元格的候选数列表中删除该数字.
候选数区块删减法
  候选数区块删减法也是比较常用的方法,它的目的是尽量删减候选数,而不一定要生成某一单元格的唯一解(当然,产生唯一解更好).候选数区块删减法是利用九宫格中的候选数和行或列上的候选数之间的交互影响而实现的一种删减方法.   在某一九宫格中,当所有可能出现某个数字的单元格都位于同一行时,就可以把这个数字从该行的其他单元格的候选数中删除.   在某一九宫格中,当所有可能出现某个数字的单元格都位于同一列时,就可以把这个数字从该列的其他单元格的候选数中删除.   在某一行(列)中,当所有可能出现某个数字的单元格都位于同一九宫格中时,就可以把这个数字从该九宫格的其他单元格的候选数中删除.
候选数对删减法
  选数对删减法依据的原理是数字1-9在同一行、同一列和同一九宫格内不能出现2次或2次以上.这样,如果在同一行、同一列和同一九宫格内两个单元格的候选数列表都是{a,b},那么如果其中一个单元格填入的数字为a,另一个单元格填入的数字就应该是b;反之,如果其中一个单元格填入的数字为b,另一个单元格填入的数字就应该是a.也就是说,a,b两个数字就应该分别填入这两个单元格,所以该行、该列或是该九宫格内其它单元格就不应该再填入数字a和b.   所以候选数对删减法就是:在一个行、列或九宫格中,如果有两个单元格都包含且只包含相同的两个候选数,则这两个候选数字应该从该行、该列列或该九宫格的其他单元格的候选数列表中删去.
隐性候选数对删减法
  隐性候选数对删减法依据的原理是数字1-9在同一行、同一列和同一九宫格内至少要出现一次.这样,如果某两个数字a和b在同一行、同一列和同一九宫格内只在两个单元格的候选数列表中出现,那么该行、该列或是该九宫格内其它单元格就不应该再填入数字a和b,所以a和b只能在这两个单元格中出现,所以这两个单元格的候选数列表就都应该是{a,b},可以将其他的数字从这两个单元格的候选数列表中删去.   所以隐性候选数对删减法就是:在同一行,列或区块中,如果一个数对(两个数字)正好只出现且都出现在两个单元格中,则这两个单元格的候选数中的其他数字可以被删除.
三数集删减法
  三数集删减法的原理类似于候选数对删减法.候选数对删减法要求同样的2个数字都出现在某行、列或九宫格的2个单元格中,且这2个单元格的候选数不能包含其他的数字.同样,三数集删减法要求的是3个数字要出现在3个位于同一行、列或九宫格的单元格中,且这3个单元格的候选数中不能包含其他数字.但不同的是,三数集删减法不要求每个单元格中都要包含这3个数字.例如,对于数字集{2,4,5},如果在某行,列或区块中有3个单元格的候选数分别为下面几种情况时,都可应用三数集删减法:   {2, 4, 5}、{2, 4, 5}、{2, 4, 5}   {2, 4}、{4, 5}、{2, 5}   {2, 4, 5}、{2, 5}、{4, 5}   {2, 4, 5}、{4, 5}、{2, 4, 5}   ……   也就是说,要形成三数集,则必须要有3个在同一行、列或九宫格中的单元格,每个单元格中至少要有2个候选数,且它们的所有候选数字也正好都是一个三数集的子集.这个三数集中的3个数字只能填入这3个单元格中,所以该行、列或九宫格中其他的单元格中不可能再填入这3个数字.   但要注意的是,{2, 4, 5}、{2, 4}、{2, 4}这种情况不是三数集.其中{2, 4}和{2, 4}可应用候选数对删减法,所以第一个候选数列表{2, 4, 5}将只能剩下候选数5,这时就可应用唯一候选数法了. [1]
三链数删减法
  找出某一列、某一行或某一个九宫格中的某三个宫格候选数中,相异的数字不超过3个的情形, 进而将这3个数字自其它宫格的候选数中删减掉的方法就叫做三链数删减法.
隐性三链数删减法
  在某行,存在三个数字出现在相同的宫格内,在本行的其它宫格均不包含这三个数字,我们称这个数对是隐形三链数.那么这三个宫格的候选数中的其它数字都可以排除.   当隐形三链数出现在列,九宫格,处理方法是完全相同的.   ------------------------------------------   修改为:在某行,存在三个候选数字分别出现在三个宫格内,   在本行的其它宫格均不包含这三个数字,我们称这个数对是隐形三链数.那么这三个宫格的其它候选数都可以排除.   当隐形三链数出现在列,九宫格,处理方法是完全相同的   或者: 利用“找出某3个数字仅出现在某行、某列或某一个九宫格的某三个宫格候选数中的情形,进而将这三个宫格的候选数删减成该3个数字”的方法就叫做隐性三链数删减法(Hidden Triples).
矩形顶点删减法
  矩形顶点删减法和直观法讲到的矩形摒除法分析方法是一样的.矩形顶点删减法在识别时比较不容易找到,所以最好先使用其它的方法.
三链列删减法
  三链列删减法是矩形顶点删减法的扩展,如果不清楚矩形顶点删减法,可以参考矩形顶点删减法,以便于更容易理解本节内容. 利用“找出某个数字在某三列仅出现在相同三行的情形,进而将该数字自这三行其他宫格候选数中删减掉”; 或“找出某个数字在某三行仅出现在相同三列的情形,进而将该数字自这三列其他宫格候选数中删减掉”的方法 就叫做三链列删减法.
关键数删减法
  在进入到解题后期,利用前面讲到的唯一候选数法、隐性唯一候选数法、 区块删减法、数对删减法、隐性数对删减法、 三链数删减法、隐性三链数删减法、矩形顶点删减法、 三链列删减法都无法有进展的时候,可以考虑使用关键数删减法.关键数删减法就是在后期找到一个数,这个数在行(或列,九宫格)仅出现两次的数字.我们假定这个数在其中一个宫格类,继续求解,如果发生错误,则确定我们的假设错误.如果继续求解仍然出现困难,不妨假设这个数在另外一个宫格,看能不能得到错误.这就是关键数删减法.