【算法基础】P问题、NP问题、NP-Hard问题、NP-Complete问题

news/2024/5/16 17:49:32/文章来源:https://blog.csdn.net/weixin_41838721/article/details/128040604

P问题、NP问题、NP-Hard问题、NP-Complete问题

  • 前提
    • 1. 时间复杂度:
    • 2. 约化(Reducibility)
  • P问题
  • NP问题
  • NPHard问题
  • NP-Complete问题
  • 其它:

前提

1. 时间复杂度:

在这里插入图片描述

2. 约化(Reducibility)

  • 如果能找到一个变化法则,对任意一个A程序的输入,都能按照这个法则变换成B程序的输入,使两程序的输出相同,那么我们说,问题A可以约化为问题B。
  • 一个问题A可以约化为问题B的含义是,可以用问题B的解法解决问题A。(也可以简单理解,问题A是B的一种特殊情况。)
  • 例如求解一元一次方程这个问题可以约化为求解一元二次方程,即可以令对应项系数不变,二次项的系数为0,将A的问题的输入参数带入到B问题的求解程序去求解。
  • 约化还具有传递性,A可以化约为B,B可以约化为C,那么A也可以约化为C

P问题

  • 可以在多项式时间内,解决的问题
  • 复杂度在以下区间内:
    在这里插入图片描述
  • 该算法的时间复杂度是多项式级的,比如n个数中间找到最大值,或者n个数排序。

NP问题

  • 可以在多项式时间内,验证一个解的问题
  • (Non-deterministic Polynomial非确定性多项式问题)
  • 理解:
  • 不知道这个问题存不存在一个多项式时间的算法,所以叫非确定性(non-deterministic),但是我们可以在多项式时间内验证并得出这个问题的一个正确解。举例:

著名NP类问题:旅行家推销问题(TSP)。即有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的环路,这个环路路径小于a。我们知道这个问题如果单纯的用枚举法来列举的话会有(n-1)! 种,已经不是多项式时间的算法了,(注:阶乘算法比多项式的复杂)。
那怎么办呢?我们可以用猜的,假设人品爆炸猜几次就猜中了一条小于长度a的路径,TSP问题解决了,皆大欢喜。可是,我不可能每次都猜的那么准,也许我要猜完所有种方案呢?
所以我们说,这是一个NP类问题。也就是,我们能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在一个多项式时间的算法,每次都能解决他(注意,这里是不知道,不是不存在)。

所以这就引出了这类讨论的一个千年问题:是否 NP类问题=P类问题?

即,是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法的问题呢?

太让人震惊了,要是解决了这个问题,那岂不是所有的NP问题都可以通过计算机来解决?

为了证明这个千古难题,科学家想出了很多办法。其中之一就是问题的约化。所谓问题约化就是,可以用问题B的算法来解决A ,我们就说问题A可以约化成问题B。约化是具有传递性的,如A约化到B,B约化到C,A就可以约化到C,同时不断约化下去,我们会发现一个很惊人的特性,就是他一定会存在一个最大的问题,而我们只需要解决了这个问题,那其下的所有问题也就解决啦!这就是我们所说的NPC问题的概念

引到NP问题里就是,对于同一类的所有的NP类问题,若他们都可以在多项式时间内约化成最难的一个NP类问题,(我们直观的认为,被约化成的问题应具有比前一个问题更复杂的时间复杂度)当我们针对这个时间复杂度最高的超级NP问题要是能找到他的多项式时间算法的话,那就等于变向的证明了其下的所有问题都是存在多项式算法的,即NP=P!!!!给出NPC问题定义。
在这里插入图片描述
(1)左图

  • P一定属于NP
    多项式时间内解决,那多项式时间内一定能验证
  • NP-Complete一定是NP
  • 是NP的NP-Hard是NP-Complete,也有不是NP的NP-Hard

(2)右图

  • P一定是NP
    多项式时间内解决,那多项式时间内一定能验证
  • NP-Complete一定是NP
  • 是NP的NP-Hard是NP-Complete

NPHard问题

  • 所有NP问题都能多项式时间内归约(可理解为转化)到X(复杂度大于等于原NP问题)问题,X是NP-Hard问题
  • 所有的NP问题都能约化到它,但是它不一定是一个NP问题

NP-Complete问题

  • 所有NP问题都能多项式时间内归约(可理解为转化)到X(复杂度大于等于原NP问题)问题,且X是NP问题,X是NP-Complete问题

  • 定义要满足2个条件: 它得是一个NP问题;所有的NP问题都可以约化到它

  • 证明npc问题思路: 先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它

  • 常见的NP-Complete问题:
    逻辑电路,Hamilton问题、旅行商问题
    在这里插入图片描述

其它:

  • P一定是NP
    多项式时间内解决,那多项式时间内一定能验证
  • NP是否为P未解决

https://www.bilibili.com/video/BV1Wz4y1d7wb/?spm_id_from=333.337.search-card.all.click
https://zhuanlan.zhihu.com/p/73953567
https://zhuanlan.zhihu.com/p/99515528

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_36707.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TOWER 成就徽章 NFT 系列介绍——TOWER 生态系统的第一个灵魂通证(SBT)

2022 年 7 月,团队推出了成就徽章 NFT 系列,记录每个成员在 TOWER 生态系统中的努力。这是第一个不可转让的灵魂 NFT 系列(SBT),代表了每个玩家的独特身份。 关于灵魂通证(SBT) 以太坊联合创始人…

linux的重定向与xshell原理

文章目录一、重定向1.输出重定向&#xff1a;>1.写入指定文件2. 覆盖写2.追加重定向 &#xff1a;>>3.输出重定向&#xff1a;<1.键盘显示2.文件显示4.重定向的一些认知误区1. test.c只显示错误的2. msg.c只显示正确的3.分析4.显示出正确的二 、xshell命令及原理1.…

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023)

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023) 重要信息 会议网址&#xff1a;www.cfima.org 会议时间&#xff1a;2023年6月9-11日 召开地点&#xff1a;中国大理 截稿时间&#xff1a;2023年4月20日 录用通知&#xff1a;投稿后2周内 收录检索&#xff1a;EI,…

关于SD-WAN的十问十答(最强攻略戳这里)

1. WAN和SD-WAN之间的区别&#xff1f; 从底层来看&#xff0c;相较基于硬件物理设施的WAN&#xff0c;SD-WAN是一种覆盖现有网络的软件技术&#xff0c;是部署在物理基础设施下层的流量管理网络。 和常规WAN相比&#xff0c;SD-WAN具有虚拟WAN体系结构和软件驱动技术&#xff…

国内优秀的多用户商城系统盘点(2022年整理)

电商战略时代&#xff0c;越来越多的企业或商家选择将消费者引入自己建设的独立商城&#xff0c;如零食行业的良品铺子、三只松鼠&#xff0c;从而打造属于自己的IP形象。此时&#xff0c;挑选一款优秀的商城源码是企业的不二之选&#xff0c;既降低了电商从业者和创业者的入门…

hive表加载csv格式数据或者json格式数据

先说简单的使用 CREATE TABLE cc_test_serde( id string COMMENT from deserializer, name string COMMENT from deserializer) ROW FORMAT SERDE org.apache.hadoop.hive.serde2.JsonSerDe STORED AS INPUTFORMAT org.apache.hadoop.mapred.TextInputFormat OUTPUTFO…

决策树-相关作业

1. 请使用泰勒展开推导gini不纯度公式&#xff1b; 2. 请说明树的剪枝怎么实现&#xff1b; ●预剪枝&#xff08;pre-pruning&#xff09;通过替换决策树生成算法中的停止准则。&#xff08;例如&#xff0c;最大树深度或信息增益大于某一阈值&#xff09;来实现树的简化。预…

Mybatis-plus通过exists判断记录是否存在

Mybatis-plus通过exists判断记录是否存在一、Controller二、Service三、效果一、Controller GetMapping("/queryNewProductExists")public Boolean queryNewProductExists(RequestParam("name") String name) {return opProductService.queryNewProductExi…

基于sklearn的集成学习实战

集成学习投票法与bagging 投票法 sklearn提供了VotingRegressor和VotingClassifier两个投票方法。使用模型需要提供一个模型的列表&#xff0c;列表中每个模型采用tuple的结构表示&#xff0c;第一个元素代表名称&#xff0c;第二个元素代表模型&#xff0c;需要保证每个模型…

CDGA|从平台自治到规范化的数据治理

数字时代&#xff0c;大型平台构建起局部市场&#xff0c;有众多市场主体在其上从事经济活动和社会交往。 平台上大量生产者消费者聚集产生的交易海量且高频&#xff0c;要处理的纠纷和各种问题数量巨大&#xff0c;远超出传统政府监管能力&#xff0c;事态变化之快速也远超出法…

Python实现BP神经网络ANN单隐层回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 20世纪80年代中期&#xff0c;David Runelhart。Geoffrey Hinton和Ronald W-llians、DavidParker等人分…

Web3D应用开发在线IDE【中文版】

nunuStudio 是一个Web 3D应用程序的集成开发环境&#xff0c;它提供用于在 3D 世界中创建和编辑对象的工具&#xff0c;支持JavaScript和Python对3D场景进行二次开发。nunuStudio中文版 由 BimAnt 提供。 如果你曾经使用过其他类似的框架&#xff08;unity、playcanvas、godot …

国网云(华为组件)使用

一、国网云(华为组件)介绍 一、项目各项环境 各项环境的介绍 MRS-Hive:MRS支持在大数据存储量大,计算资源需要弹性扩展的场景下,用户将数据存储在OBS服务中。使用MRS集群仅做数据计算处理的存算分离模式。DWS(高斯200):云原生数据库Gauss DB(DWS)1:融合分析能力是云原…

构建镜像开源工具 buildah

构建镜像开源工具 buildah tags: images 文章目录构建镜像开源工具 buildah1. 简介2. 特点3. Buildah 和 Podman4. 安装4.1 CentOS4.2 Ubuntu4.3 RHEL74.4 Fedora5. 命令6. 示例6.1 命令行构建一个 httpd 镜像6.2 Dockerfile 构建6.3 构建镜像脚本&#xff08;代替 Dockerfil…

centos7 clamav 杀毒软件安装

壹&#xff1a;编译安装 1&#xff0c;官网获取源码包 clamav官网地址 2&#xff0c;创建clamav 用户和存放病毒库目录 a, 创建clamav 用户和用户组 groupadd clamav && useradd -g clamav clamav && id clamavb,日志存放目录 mkdir -p /henan/clamav/lo…

Linux基本指令(二)

这章我们将继续介绍一些Linux常见的指令. 目录 more指令 less指令&#xff08;重要&#xff09; head指令 tail指令 时间相关的指令 cal指令 find指令 &#xff08;很重要&#xff09; which指令 alias指令 grep指令 xargs指令 zip/unzip指令 tar指令&#xff08;重要&#xff…

小熊U租港交所上市:市值28亿港元 京东联想腾讯是股东

雷递网 雷建平 11月24日小熊U租母公司凌雄科技集团有限公司&#xff08;简称&#xff1a;“凌雄科技”&#xff0c;股票代码为&#xff1a;“02436”&#xff09;今日在港交所上市。凌雄科技发行价为7.6港元&#xff0c;募资总额为3.37亿港元。凌雄科技开盘价为7.9港元&#xf…

Java并发编程实战读书笔记二

第五章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 如下&#xff0c;如果list含有10个元素&#xff0c;线程A调用getLast的同时线程B调用deleteLast&#xff0c;那么getLast可能会报ArrayIndexOutOfBoundsException 改为如下方式能确保size和get一致 Vector迭代也…

搭建ESP8266开发环境

获取工具 安信可一体化开发环境 Source insight (本菜鸟不太喜欢用Eclipse) 安装 安装ESP8266开发环境(Windows) 1)双击运行解压到文件 2)安装方式一:eclipse 双击运行ConfigTool.exe点击 Default 可以检测当前所在路径&#

跳出打工圈!程序员要如何走上创业逆袭路,获得百万、千万?

作者 | 闫辉 责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;程序员的尽头是什么&#xff1f;有人说&#xff0c;程序员尽头就是不做程序员。那么&#xff0c;不做程序员又能做什么&#xff1f;每当打开网络上发布的十大高薪职业排行榜时&…