舞蹈链(DancingLinks)算法.docVIP

  • 19
  • 0
  • 约1.98万字
  • 约 38页
  • 2017-01-13 发布于重庆
  • 举报
舞蹈链(DancingLinks)算法

转载-跳跃的舞者,舞蹈链(DancingLinks)算法——求解精确覆盖问题 阅读55次?2013/10/13 13:27:51 出处:/grenet/p/3145800.html 精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1 例如:如下的矩阵 就包含了这样一个集合(第1、4、5行) ? 如何利用给定的矩阵求出相应的行的集合呢?我们采用回溯法 ? 矩阵1: ? 先假定选择第1行,如下所示: 如上图中所示,红色的那行是选中的一行,这一行中有3个1,分别是第3、5、6列。 由于这3列已经包含了1,故,把这三列往下标示,图中的蓝色部分。蓝色部分包含3个1,分别在2行中,把这2行用紫色标示出来 根据定义,同一列的1只能有1个,故紫色的两行,和红色的一行的1相冲突。 那么在接下来的求解中,红色的部分、蓝色的部分、紫色的部分都不能用了,把这些部分都删除,得到一个新的矩阵 矩阵2: 行分别对应矩阵1中的第2、4、5行 列分别对应矩阵1中的第1、2、4、7列 ? 于是问题就转换为一个规模小点的精确覆盖问题 ? 在新的矩阵中再选择第1行,如下图所示 还是按照之前的步骤,进行标示。红色、蓝色和紫色的部分又全都删除,导致新的空矩阵产生,而红色的一行中有0(有0就说明这一列没有1覆盖)。说明,第1行选择是错误的 ? 那么回到之前,选择

文档评论(0)

1亿VIP精品文档

相关文档