X算法

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

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

相关

  • 脂肪脂肪是室温下呈固态的油脂(室温下呈液态的油脂称作油),多来源于人和动物体内的脂肪组织,是一种羧酸酯,由碳、氢、氧三种元素组成。与糖类不同,脂肪所含的碳、氢的比例较高,而氧的比
  • 密克罗尼西亚联邦面积以下资讯是以2013年估计国家领袖国内生产总值(购买力平价) 以下资讯是以2016年估计国内生产总值(国际汇率) 以下资讯是以2016年估计人类发展指数 以下资讯是以2018年估计密
  • 中华全国台湾同胞联谊会中华全国台湾同胞联谊会(英语:All-China Federation Of Taiwan Compatriots),简称全国台联,是中国大陆地区设立的针对台湾统战的团体,在中国大陆各省市并设有分会。1981年12月22日
  • 沙滩滩,分为海滩(有管理的又称海水浴场)、湖滩、河滩,是由海水搬运积聚的沉积物——沙或石砾,堆积而形成的岸,滩可依沙的粗细分为砾(石)滩(shingle beach)、沙滩、台语称海沙埔(台罗:hái-su
  • 黑巫术黑巫术,又称黑魔法,即邪恶的巫术,最早是由日本电子游戏创造的术法概念。主要以伤害别人为目的,透过放蛊、咒诅、秘密仪式、书符等方式,达到谋杀、致病、迷惑、役使、嫁祸等目的,使
  • 阿基坦的希尔佩里克阿基坦的希尔佩里克(Chilperic of Aquitaine)是墨洛温王朝的法兰克国王,出生于630年,于632年逝世,曾经短暂成为阿基坦国王(632年在位)。父亲阿基坦国王查理贝尔特二世是克洛泰尔二
  • 铝箔纸铝箔纸(Aluminium foil),亦作铝箔,俗称锡箔纸、锡纸等,是用压平了的铝制造,主要用于厨房煮食、盛载食物,或用来制作一些可以简单清洁的物料。世界各地使用大量铝箔纸用作保护和包装
  • 东森洋片台EBC东森洋片,是东森电视旗下的频道之一。以播出欧美电影为主。即使中国大陆政府一直不批准台湾任何电视台在中国大陆落地,但在中国大陆一些县级有线数字电视也会提供东森洋片
  • 约翰·波普约翰·波普可以指:
  • 乔纳森·哈姆斯沃思,第四代罗斯米尔子爵乔纳森·哈姆斯沃思,第四代罗斯米尔子爵(英语:Jonathan Harold Esmond Vere Harmsworth, 4th Viscount Rothermere)生于1967年12月3日,是一位英国子爵。他继承了其曾祖父哈罗德·