X算法

✍ dations ◷ 2025-02-23 13:41:44 #搜寻算法

在计算机科学中,X算法可用来求解精确覆盖问题。此名称最早在高德纳的论文《舞蹈链》中出现,他认为此算法是“试错法中最显而易见”的。 就技术而言,X算法是一个深度优先的不确定性回溯算法。由于X算法是一个解决精确覆盖问题的简洁方法,高德纳希望通过该算法体现舞蹈链数据结构的高效性,他把使用后者的X算法称为DLX。

X算法用由0和1组成的矩阵来表示精确覆盖问题,目标是选出矩阵的若干行,使得其中的1在所有列中出现且仅出现一次。

X算法的步骤如下:

选择的不确定性意味着算法将派生出若干独立的子算法,每个子算法都从其父算法中继承了去除部分行列的矩阵。如果其中有一列全为零,则当前情况无解,子算法返回失败,但不一定意味整个问题无解。

实际上,所有子算法形成了一棵搜索树,其中原问题为根节点,树的第层由子算法在第次所选择的行组成。整个算法即用回溯法对搜索树深度优先遍历。

第二步中,无论用什么方法选择列最终都可以得到解,但有的方法效率明显较高。为减少迭代次数,高德纳建议每次都选取1最少的列。

例如,考虑以下精确覆盖问题:全集 = {1, 2, 3, 4, 5, 6, 7} ,现有U的六个子集 S {\displaystyle {\mathcal {S}}} , , , , , },其中:

此问题可用矩阵表示为:

根据高德纳的建议,每次都选取1最少的列,则X算法的执行步骤如下:

第0层

第一步:矩阵非空,故算法继续执行。

第二步:1最少的列为第一列,含有两个1。所以选择第一列:

第三步:A行和B行第一列均为1,所以依次选择这两行继续搜索。

于是算法开始搜索树的第1层第一个分支:

第0层没有其他可选择的行,算法最终停止。

综上所述,用X算法得出本问题只有一个解: S {\displaystyle {\mathcal {S}}^{*}} , , }。

高德纳主要想通过X算法体现舞蹈链的实用性。他发现了使用舞蹈链的X算法效率极高,并把这一过程称为DLX。DLX用矩阵来表示精确覆盖问题,在内部的存储结构为舞蹈链。舞蹈链是一个双向环形链表,每个矩阵中的1都有一个指针指向其左、右、上、下的1。因为精确覆盖问题中的矩阵一般都是稀疏的,所以舞蹈链中的元素很少,既很省时间,又很省空间。可见使用舞蹈链的DLX算法无论在选择行时还是回溯错误的选择时效率都很高。

相关

  • 温带大陆性温带大陆性气候是温带地区最冷月均温小于0ºC,降水较少的一种气候。可细分为温带大陆性湿润气候和温带干旱半干旱气候。
  • 阿比西尼亚阿比西尼亚可以指:
  • 银河平面银河平面是银河系主要的质量形成的盘状平面,垂直于银河平面的方向指向银极。通常的使用,在实际的情况下,"星系平面"和"星系极"这两个项目就是特指地球所在银河系的平面和极点。
  • 麦克默多干燥谷麦克默多干谷(英语:McMurdo Dry Valleys)为南极洲麦克默多湾西岸维多利亚地的一无雪山谷的统称。这些山谷由冰川后退而形成,约200多万年未有降水,是极度干燥的荒漠地区,是南极大陆
  • 华沙犹太区起义犹太地下抵抗运动 犹太战斗组织(ŻOB) 犹太军事联盟(ŻZW) 波兰抵抗运动(英语:第二次世界大战时期的波兰抵抗运动) 波兰救国军纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转
  • 适存度适应度(英语:Fitness),又可称适存度或生殖成就,是生物学,特别是群体遗传学、数理生物学中用来描述拥有某一特定基因型的个体,在繁殖上的成功率或能力。假如带有不同基因型的个体拥
  • 鹈形目鹈形目(学名:Pelecaniformes)在动物分类学上是鸟纲中的一个目,包括6个科。
  • 西伯克西伯克郡(英语:West Berkshire),英国英格兰东南区域的二级行政区(区级),拥有单一管理区地位,有150,700人口,占地704.17平方公里,行政总部位于纽伯里。名誉的伯克郡(一级行政区─郡级)包
  • 阿尔及利亚阿拉伯语阿尔及利亚阿拉伯语,在阿尔及利亚又称达里贾(درجة‎),是一种马格里布阿拉伯语变体,在阿尔及利亚广泛使用。阿尔及利亚阿拉伯语与突尼斯阿拉伯语和摩洛哥阿拉伯语可以实现部分
  • 卡萨布兰卡 (电影)《卡萨布兰卡》(英语:,港台译《北非谍影》)是一部1942年的美国爱情电影,影史上最成功的经典电影之一。本片荣获1944年奥斯卡的最佳影片、最佳导演,和最佳改编剧本奖。这部电影的角