- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NP问题与计算复杂性 最优化问题与判定问题 最优化问题:求最优的解 判定问题:是否存在解 最优化问题容易在多项式时间内转化为判定问题。 整数序列 最优化形式:求一个整数序列中出现频率最高的数 判定形式:一个整数序列中是否存在出现频率为k的数。 最优化- 判定:枚举k,返回判定有解的最大的一个。 图着色 给定一个简单无向图,要给图的每一个顶点着色,要求相邻的顶点着不同的颜色。 最优化形式:最少需要多少种颜色 判定形式:是否存在最多只需要k种颜色的解 最优化- 判定:枚举k,返回判定有解的最大的一个。 团 给定一个简单无向图。团是其中的一个完全子图。团的大小是指这个完全子图所包含的顶点数目。 最优化形式:求最大团。 判定形式:是否存在顶点数为k的团。 在计算复杂性的研究中,一般只关心判定问题。 多项式时间归约 多项式时间归约是比较两个问题的相对难度的重要手段。 对于两个问题X和Y,用T(X)和T(Y)表示它们的时间复杂度。如果T(Y)=f(T(X)),其中f是一个多项式函数,则写作Y =pX,即Y可以在多项式时间内归约到X。通俗地讲X至少和Y一样难。 定理1:设Y =pX。如果X存在多项式时间解法,则Y同样存在多项式时间解法。 定理2:设Y =pX。如果Y不存在多项式时间解法,则X同样不存在多项式时间解法。 定理3:设Z =pY,Y =pX,则Z =pX P类 可以在多项式时间内得到解的一类问题 NP类 可以在多项式时间内验证某个解是否合法的问题 NP难问题:如果对于某个问题X,任意NP问题Y,都有Y =pX,则称X是NP难的问题 NP完全问题:某个问题是NP难的并且它是一个NP问题。 P包含于NP P=NP?P≠NP? 第一个NP完全问题 可满足性问题(SATISFIABILITY),简称SAT 问题描述:给定一个合取范式CNF,问是否存在变量的某种取值使得CNF的值为真。 例如:(A∨B)∧(~B∨D)∧(~A∨C∨~D) 证明一个问题是NP完全的 定理:如果Y是一个NP完全问题,X是一个NP问题,并且有Y =pX,则X也是NP完全的。 证明:对于任意NP问题Z,根据NP完全的定义有Z =pY,根据传递性得Z =pX。又X是NP问题,根据定义得X是NP完全问题。 3-SAT 如果SAT问题的CNF中每个子句都恰好只有3项,我们称这类SAT问题为3-SAT 独立集 给定一个简单无向图,问是否存在k个顶点的子集使得其中任意两个顶点都不相邻。 集合装箱 给定一个集合U以及一系列它的子集S1、S2……Sn,问是否能够选出其中至少k个子集,使得它们两两互不相交。 顶点覆盖 给定一个简单无向图,问是否存在k个顶点的子集使得图中任意一条边和其中至少一个顶点相连。 集合覆盖 给定一个集合U以及一系列它的子集S1、S2……Sn,问是否能够选出其中最多k个子集,使得它们的并集=U 图的k着色 给定一个简单无向图,问是否能够用不超过k种颜色给图的每一个顶点着色,使得相邻顶点的颜色不同。 特别地:图的3着色判定问题也是NP完全问题 团 给定一个简单无向图,问是否存在顶点数为k的团。 哈密尔顿回路(路径) 给定一个有向图,问是否存在一条回路(路径)经过每个顶点一次且仅有一次。 旅行商问题 给定一张带权完全有向图,问是否存在这样一条路径:它遍历每个顶点一次且仅有一次,并且长度不超过L。 整数子集和 给定一个整数集合,问是否存在某个子集的和等于S。 整数划分 给定一个整数集合,问是否能够把它分成两个集合,使得两部分的和相等。 装箱问题 给定一个整数集合,问是否可以把它划分为最多k个子集,使得每个子集之和均不超过C。 背包问题 给定一个物品集合以及每件物品的体积和价值。问是否能够选出一些物品,使得它们的体积和不超过C且价值和不小于V。 任务调度 给定一个任务集合以及每个任务相应的最早开始时间、最迟完成时间和执行所需时间,问是否存在一个调度使得所有任务都能够完成。 3维匹配 设X、Y、Z是3个大小为n的两两不相交集合。设W是三元组集合{(x,y,z) | x∈X,y∈Y,z∈Z}。问是否存在W的完全匹配。 用搜索解决NP问题 基本思想:回溯法+剪枝。特别地,在最优化形式的问题中可以使用分支定界法。 背包问题 每件物品都有价值和体积两个属性。 定义:性价比=价值/体积 将所有物品按照性价比从大到小排序后用回溯法搜索,则最优解必须满足以下条件:当前背包剩余容积*当前物品性价比 当前最优解 另外还可以用贪心法求出一个较优解作为最优解的初始值,有利于剪枝。 任务调度问题 按照最迟完成时间排序有利于更快找到解和剪枝。 如果交换相邻两个任务不会影响到它们的执行,则要求前一个任务的编号必须小于后一个任务的编号。(可以扩展到相邻三个任务,使得剪枝更强) SAT 子句检测:如果
文档评论(0)