如何证明一个问题是NP-hard(NP-complete)
原文地址:https://zhuanlan.zhihu.com/p/53085012、
本文仅做记录笔记已方便理解使用。
判断步骤:
1.是否NP?
→ 算法结果能否在多项式时间内验证正确性
2.是否NP-hard?
→使用一个叫做Reduction的技巧,即,如果能用A问题的求解器去求解另一个已知的NP-hard问题,则A问题是NP-hard的
Reduction是将两个算法建立联系的一个过程。我们说X reduce 到Y,意味着,假设现在有一个Y的黑盒求解器,于是我们设计一个多项式算法来用Y的求解器来求解问题X。
对于NP-hard与NP-Complete的区别
如果我们找到一个特别的问题H,使得所有NP问题都可以reduce到问题H上,那这个问题H肯定特别难,因为我们能用这个问题H解决所有的NP问题,因此我们称这个问题H为NP-Hard问题。
这个经过reduce的问题H不一定是NP问题,于是才有上述示意图的上部分,即有一部分NP hard问题是落在圈外的。如果问题H是属于NP的话,那么问题H就是NP-complete问题,NP-complete是NP和NP-hard的交集。
NP定义: 可以在多项式时间验证结果正确性的问题。
NP-hard定义: 对于问题H,所有NP问题都可以reduce到H。
这意味着,如果NP-hard可以用多项式解决,那么所有NP问题都可以用多项式解决。不过目前还没人找到多项式算法。
总的来说,判断一个NP问题是不是NP-Complete的两个方法:
找到一个NP-Complete问题,经过证明可以reduce to
你的问题,这意味着你的方法可以解决这个NP-Complete问题,那很显然,这个解决方法也是NP-Complete的。
所有的NP问题都可以reduced到你的问题
如何证明一个问题是NP-hard(NP-complete)相关推荐
- 零知识证明之什么是QAP?什么是P/NP、NP完全问题(NPC问题)、NP hard问题?多项式时间
文章目录 一.什么是NP问题 1. 多项式时间 2. 关于阶乘 n! 12字助记词真的安全吗? 3. 现实中的NP类问题 二.P是否等于NP, N=NP是否成立 三.什么是NP完全或NP完备 四.什么 ...
- P、NP、NP完全问题、NP难问题
可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题称为难解的. P类问题:多项式类型,是一类能够用(确定性的)算法在多项式的时间内求解的判定问题. 只有判定问题才属于P 不可判定问 ...
- 计算复杂度:P、NP、NP 完备
时间复杂度是算法的特性,而不是问题的特性.因为一个问题可以用两种以上的算法进行解答,且各自的时间复杂度也不相同.计算机理论科学的计算复杂度理论就是属于这一类的学科. P 指的是用计算机能很快求解的问题 ...
- P vs NP vs NP Complete vs NP Hard
目录 1.写在前面 2.千禧年世纪难题 3.P类和NP类问题特征 4.NPC问题 5.NP-Hard问题 6.总结 1.写在前面 我们看到一个问题,经常会说:"这个没法做,是一个NP问题&q ...
- P/NP/NP完全/NP难
NP完全问题类 这是一类问题,有一个共同的特性:如果其中一个是多项式可解的,那么其他的问题也是多项式可解的. P类 确定性算法的概念:重复相同的输入,每一步执行选择和获得的输出从不改变. 判定问题的P ...
- 时间复杂度与NP/NP难/NP完全问题的最简单理解法
任何关于算法.编程.AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入"学习小组",沙雕博主在线答疑~此外,公众号内还有更多AI.算法.编程和大数据知识分享,以 ...
- np.newaxis——np.ndarray增加维数
numpy.newaxis The newaxis object can be used in all slicing operations to create an axis of length o ...
- 区分range() , np.arange() , np.linspace()
content: range() np.arange() np.linspace() 一.range(start, stop, step) 1.range() 为 python 自带函数 2.生成一个 ...
- python中np没有定义_python中的np.empty_python – np.empty,np.zeros和np.one
我很好奇它使用 np.empty而不是 np.zeros实际上有多大差异,还有关于 np.ones的差异.我运行这个小脚本来测试每个创建一个大型数组所需的时间: import numpy as np ...
- python中除法 / 和// 区别 以及np.divide,np.true_divide,np.floor_divide方法区别
/结果为小数,和平常除法较像 //只保留整数部分的值,若x或者y中任意一个为小数,则结果为小数 >>> x=4 >>> y=4 >>> print ...
最新文章
- JS设计模式(13)状态模式
- threeJS 中数学相关内容
- MongoDB基础知识总结
- 【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
- TCP和UDP套接字编程
- java select下拉标签_java中下拉框select和单选按钮的回显操作
- 全国计算机office二级选择题,全国计算机二级msoffice选择题汇总含答案
- Python下面向对象的三大实例
- 腾讯云的云数据库MYSQL配置
- Java配置环境变量、方法和原因
- 由数据库连接池想到的----处理他人未释放的资源
- 韩版马化腾:在大财阀围堵下仍白手起家的凤凰男,抢滩加密交易平台、公链赛道...
- Office小技巧|Excel表格输入身份证数字就变了乱码怎么办?
- Ai 缺失字体解决方法
- linux自动同步onedrive,Linux下同步onedrive
- 使用mybatis注解实现模糊查询
- chrome捕获大响应失败:Failed to load response data: request content was evicted from inspector cache
- AP模式(路由器的几种模式)
- 第一次软件工程课程作业
- Automated_bounty_Hunter全自动漏*洞赏金猎人使用场景二
热门文章
- 挑战赛 | MagicHub中英混语音识别挑战赛发布基线系统和开发训练集
- vlanif和vlan的区别和联系
- 微信小程序 组件生命周期
- 连接远程Redis服务器超时
- IDEA创建一个structs项目
- JAVA“包“的概念
- 【附源码】Java计算机毕业设计文具商城购物系统(程序+LW+部署)
- vue3+setup+validator验证两次输入密码是否一致(土法)
- 数字图像处理(六) 图像压缩
- CodeSmith for MySQL template