X算法

✍ dations ◷ 2024-09-19 23:58:53 #搜寻算法

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

相关

  • 内隐记忆内隐记忆(implicit memory),又称为程序记忆(procedural memory),一种长期记忆的形式,指关于技术、过程、或“如何做”的记忆。记忆有时候会被贮存在程序记忆(procedural memory)中,当
  • 石灰岩石灰岩(灰石)(CaCO3)简称灰岩,又叫石灰石,是以方解石(矿物)为主要成分的碳酸钙岩。石灰岩主要是在浅海的环境下形成的。石灰岩按成因可划分为粒屑石灰岩(流水搬运、堆积形成);生物骨
  • 沙蚕亚目沙蚕亚目(学名:Nereidiformia)是多毛纲足刺亚纲叶须虫目之下的一个亚目。在较旧的分类系统中,本亚目作沙蚕目,后来与叶须虫目合并。原来沙蚕目有几个科(例如:浮蚕科)在合并后没有再
  • 维拉诺瓦维拉诺瓦大学(Villanova University),是位于美国宾夕法尼亚州费城西北郊维拉诺瓦的一所私立大学。它成立于1842年,学校的历史一直可以追溯到1796年,罗马天主教奥斯定会在此建立的
  • 嘉义农林棒球队嘉义农林棒球队,简称嘉农棒球队,是日本时代台湾嘉义农林学校(今国立嘉义大学)的棒球代表队。1931年,首次到台北参赛的嘉农棒球队便夺得全台高校棒球冠军,打破过去十二年由北部地区
  • 班长班长是组织团体的基层单位班或学校进行教育的基本单位班级的负责人。在中国大陆,班长往往是班级委员会(班委会)的负责人,与团支部书记并列为班级中最高的学生干部,主要负责班级的
  • 下一代网络下一代网络(英语:Next Generation Network,缩写为NGN),又称为次世代网络,是在一个统一的网络平台上以统一管理的方式提供多媒体业务,在集成现有的固定电话、移动电话基础上(统称FMC),
  • 魔女嘉莉《魔女嘉莉》(英语:)是斯蒂芬·金所著的恐怖小说,于1974年出版,这是他成名的处女作。作品中叙述了校园欺凌及基督教基本教义派的环境,对主角嘉莉·怀特(Carrie White(英语:Carrie Whi
  • 萨拉·艾哈迈德萨拉·萨米尔·艾哈迈德(阿拉伯语:سارة سمير أحمد‎,英语:Sara Samir Ahmed,1998年1月1日-)是一名埃及女子举重运动员。2014年,在南京青年奥林匹克运动会夺得63公斤级举
  • 假芋假芋(学名:)为天南星科芋属的植物。分布在泰国、印度、孟加拉以及中国大陆的云南等地,生长于海拔850米至1,400米的地区,一般生于山谷林下和灌丛中,目前尚未由人工引种栽培。野芋头