精确覆盖问题

✍ dations ◷ 2025-10-12 16:32:37 #理论计算机科学,NP完全问题

在一个全集X中若干子集的集合为S,精确覆盖是指,S的子集S*,满足X中的每一个元素在S*中恰好出现一次。

在计算机科学中,精确覆盖问题指找出这样的一种覆盖,或证明其不存在。这是一个NP-完全问题,也是卡普的二十一个NP-完全问题之一。

满足以下条件的集合为一个精确覆盖:

合二为一,即X中的元素在S*中出现恰好一次。

S {\displaystyle {\mathcal {S}}} , , , } 是集合 = {1, 2, 3, 4}的一个子集的集合,并满足:

其中一个子集 {, } 是 的一个精确覆盖,因为 = {1, 3} 而 = {2, 4} 的并集恰好是 = {1, 2, 3, 4}。同理, {, , } 也是 .的一个精确覆盖。空集并不影响结论。

通常我们用S的每个子集与X的元素之间包含关系的二元关系来表示精确覆盖问题。

包含关系可以用一个关系矩阵表示。. 矩阵每行表示S的一个子集,每列表示X中的一个元素。矩阵行列交点元素为1表示对应的元素在对应的集合中,不在则为0.

通过这种矩阵表示法,求一个精确覆盖转化为求矩阵的若干个行的集合,使每列有且仅有一个1。同时,该问题也是精确覆盖的典型例题之一。

下图为其中一个例子:

S* = {, , } 便是一个精确覆盖。

包含关系也可以用一个二分图表示。

二分图左侧每个节点表示S的每个集合,右侧每个节点表示X的每个元素,而精确覆盖便是一种匹配,满足右侧的每个点恰好有一条边。

Exact-cover-bigraphExact-cover-bigraph-solved

X算法是高德纳提出的解决该问题的算法,而舞蹈链算法(Dancing Links,DLX)算法是X算法在计算机上的一种高效实现。

相关

  • 脂肪细胞脂肪细胞(英语:adipocyte)是构成脂肪组织的主要细胞,专门用于将能量储存为脂肪。有两种脂肪组织:白色脂肪组织与棕色脂肪组织,也叫做白色脂肪和棕色脂肪,包括了两种脂肪细胞。白色
  • 基辅罗斯基辅罗斯,正式名称为罗斯(古东斯拉夫语:Рѹ́сьскаѧ землѧ,Рѹ́сь,希腊语:Ῥωσία,拉丁语:Rus(s)ia, Ruscia, Ruzzia, Rut(h)enia,俄语:Киевская Русь
  • 宿醉宿醉是指饮用酒精饮料后产生许多不舒服的生理及心理影响,其特征是有明显的不适,而且时间会超过24小时以上。常见的症状有头痛、嗜睡、注意力不集中、口干、头晕、无力、肠胃不
  • 肠道病毒EV71型EV71是肠病毒的一种,多见于东南亚地区的夏季期间,主要病征是手足口病的一系列症状,包括发烧、食欲不振、喉咙痛及口腔溃疡等。也可能导致神经感染。EV71肠病毒于1969年在美国加
  • 圣劳伦斯岛圣劳伦斯岛(英语:St. Lawrence Island、中西伯利亚尤皮克语:Sivuqaq、俄语:Остров Святого Лаврентия),是一个由美国阿拉斯加州负责管辖的岛屿,位于阿拉斯加
  • 马格达莱纳岛马格达莱纳岛(Isla Magdalena)是智利南部的岛屿,位于伊瓦涅斯将军艾森大区,面积约2,025平方公里,部分地区属于马格达莱纳岛国家公园的范围。坐标:44°35′44″S 73°11′25″W / 4
  • 新右派新右派(英语:the New Right)与新左派都是一种社会运动,而新右派乃是相对于“老右派”而产生。其理论基础以弗里德里希·哈耶克、弗里德曼的思想为基本。新右派与新保守主义相同
  • Team NIII 3rd Stage“Fiona.N”公演Team NIII 3rd Stage“Fiona.N”公演是GNZ48的剧场公演,此套公演是GNZ48 Team NIII的第二套原创公演,也是GNZ48“Miss”系列公演的首套公演。《Fiona.N》是GNZ48 Team NIII的
  • 后杭爱省后杭爱省(蒙古语:Архангай аймаг,转写:Arkhangai aimag)位于蒙古国中西部,面积55,313平方公里,人口84,584人(2011年)。建于1931年,首府车车尔勒格(额尔德尼布尔干县)。后杭
  • 保罗·埃申保罗·埃申(英语:Paul Eyschen,1841年9月9日-1915年10月11日)是卢森堡政治人物、政治家、律师与外交官。他是第八任卢森堡首相,自1888年9月22日起任期二十七年,直到1915年10月11日