X算法

✍ dations ◷ 2025-09-11 15:51:16 #搜寻算法

在计算机科学中,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算法无论在选择行时还是回溯错误的选择时效率都很高。

相关

  • 减肥减肥学(bariatrics)是医学的一个分支,目的在探讨肥胖症的起因、预防及治疗。一般简称为减肥、纤体、瘦身或秀身,是指采用人为手段故意降低体重,特别是减少体内的脂肪。减肥的原因
  • 悲剧公地悲剧(英语:Tragedy of the commons),或共有财悲歌,是一种涉及个人利益与公共利益对资源分配有所冲突的社会陷阱。这个字起源于英国作家威廉·佛司特·洛伊(英语:William Forste
  • 胎儿酒精症候群胎儿酒精谱系障碍(Fetal alcohol spectrum disorders,简称FASDs)又称胎儿酒精症候群,是母亲在妊娠期间酗酒对胎儿所造成的先天异常。症状包含外观异常、身材矮小、体重过轻、小
  • 辞书学辞书学(英语:lexicography)是编纂辞典的工艺和技巧的学问,是语言学的分支学科。辞书学的研究对象主要是语文辞典。有人认为,辞书学的研究对象应包括百科全书、专科辞典及年表等。
  • 眼球摘除术眼球摘除术是一种外科手术。
  • 马耶讷省马耶讷省(法文:Mayenne)是法国卢瓦尔河地区大区所辖的省份。该省编号为53。5个海外省及大区
  • 形式化方法形式化方法,中文也称形式方法、正规方法。在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件
  • 越南疣猪越南疣猪(学名:Sus bucculentus)是猪科猪属的一种,仅分布于越南和老挝,最后一次发现是在1995年猎杀的个体,可能已经灭绝。外貌与野猪相似,身长约1.5米至2米不等,体重可达50公斤以上,
  • 当代中国问题研究院南开大学当代中国问题研究院,是南开大学于2011年成立的研究机构,位于南开大学八里台校区文科创新楼。该研究院致力于当代中国社会发展问题的理论研究。南开大学校长龚克担任院
  • 美国劳工党美国劳工党(英语:American Party of Labor)是美国的一个霍查主义政党。该党成立于2008年。该党的意识形态是共产主义、马克思列宁主义、反修正主义、斯大林主义、霍查主义。该