P问题、NP问题、NPC问题、NP-Hard问题

news2024/11/16 6:20:49

经常听到老师讲,某一个问题(比如说,车辆路径规划问题Vehicle Routing Problem)是一个NP-Hard问题,此外,我们在阅读文章的时候,也经常会读到某一个问题是NP-Hard问题的陈述,与此同时,我们会看到NPC问题、P问题与NP问题。那么这些问题之间究竟是如何定义的呢?这些“问题们”究竟是什么关系呢?

一、前期知识

(1)关于时间复杂度

时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。

比如说,不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度。

再比如,数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。

(2)关于约化

即如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B。就是说,问题A可以“变成”问题B,我们可以用问题B的解法解决问题A。也就是说,问题B是要更难的,B的时间复杂度高于或者等于A的时间复杂度。

二、问题概念

(1)P问题: Polynomial Time Problem, 是指的能在多项式时间内解决的问题;

(2)NP问题: Non-deterministic Polynomial Time Problem, 不能在多项式时间内解决或者说是无法确定能不能在多项式时间内解决,但是能在多项式时间内验证一个解的问题;

(3)NPC问题: NP Complete Problem, 也称NP完全问题,指的是所有NP问题在多项式时间内都能约化(Reducibility)成它,并且它本身就是一个NP问题的问题。换句话说,如果解决了此NPC问题,那么所有的NP问题也都能得到解决;

(4)NPH问题: NP Hard Problem, 也称NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的问题,但它本身不一定是NP问题。

从上面的图形中,我们也做出如下的解释和说明:(图片来源于https://mp.weixin.qq.com/s/81vVCe8ZEVHSkT-AmA__ng)

NPC问题是指要满足如下两个条件的问题:

  1. 该问题是一个NP问题;

  1. 所有的NP问题都可以在多项式时间内约化到该问题。

关于NP-Hard问题

如果一个问题被归属到NP-Hard问题,那么直到P=NP问题被验证之前,NP-Hard问题都不能在多项式时间内被解决。换句话说,如果我们发现一个问题是NP-Hard问题,那么我们(一般情况下)就没有必要花精力去试图找到一个高效算法(如多项式时间)求解,相反,可以关注近似算法等来解决该类问题。这些近似算法有很多,而群智能算法就属于这些近似算法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python程序设计-第3章Python函数与模块

第3章Python函数与模块一.预习笔记 3.1 函数定义:def 函数名称 (参数1,参数2 …): 函数体 * 函数是某一个功能或者某一段程序代码的一个封装 * 函数名是用户自己定义的名称,与变量的命名规则相同,用字母开头&#x…

Java线程池个人整理笔记

一、线程池有哪些优点 总体来说,线程池有如下的优势: (1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 (2)提高响应速度。当任务到达时,任务可以不需要等到线程创建…

配置Linux18.04系统/解决无法安装vmwatools的问题

一、解决无法安装vmwatools的问题 1.关闭虚拟机中的Linux18.04系统 2.打开虚拟机设置 3.修改所有的CD/DVD 、软盘 连接为:使用物理驱动器->自动检测(如下图) 4.打开虚拟机,都点是; 5.解决解压桌面上的vmware-…

春节特献!一文纵览2022年全球量子计算行业要闻!

(图片来源:网络)岁聿云暮,一元复始。如果说2018年是量子计算技术变革元年,那么2022年全球量子计算已正式步入市场探索加速期。随着中国、美国、欧盟等国家相继出台各种量子信息相关战略纲要和旗舰计划,越来…

数据的解析的介绍(1)

1.xpath 注意:提前安装xpath插件 (1)打开chrome浏览器 (2)点击右上角小圆点 (3)更多工具 (4)扩展程序 (5)拖拽xpath插件到扩展程序中 &#xff0…

王道操作系统笔记(五)———— 经典同步问题

前言:PV 操作题目分析步骤 关系分析: 找出题目中描述的各个进程,分析它们之间的同步、互斥关系。整理思路: 根据各进程的操作流程确定 P、V 操作的大致顺序。设置信号量: 并根据题目条件确定信号量初值。(…

数据结构与算法基础——栈和队列

栈只能在表尾进行插入删除操作 队列先进先出 队列和栈都是线性表,不过是插入和删除的 位置被限制了。 队列头进尾出

Dubbo 入门系列之基于 Dubbo API 开发微服务应用

目标 从零上手开发基于 Dubbo 的微服务 难度 低 环境要求 系统:Windows、Linux、MacOS JDK 8 及以上(推荐使用 JDK17) Git IntelliJ IDEA(可选) Docker (可选) 动手实践 本章将通过手把…

网络编程-UDP数据报套接字

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1. 网络编程基础 1.1 为什么需要网络编程? 1.2 什…

好友关注-Feed流实现方案

9.3 好友关注-Feed流实现方案 当我们关注了用户后,这个用户发了动态,那么我们应该把这些数据推送给用户,这个需求,其实我们又把他叫做Feed流,关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”…

简聊商城项目的表设计

零、前言 1、优惠卷设计 电商项目中的优惠券系统这样设计,同事直呼 666 ! 2、SPU和SKU的定义及他们之间的关系 SPU全称Standard Product Unit,即标准化产品单元。 简单理解就是某一种产品。 SKU全称Stock Keeping Unit,即库存量…

ChatGPT官方API可以抢先体验了

ChatGPT官方API目前还在内测当中,OpenAI官网上也没有任何接口介绍和文档。这对于开发和调用来说不怎么方便。但是,比较好的地方在于内测过程中调用是免费的,没有次数限制。此外,API接口调用不需要梯子或代理(使用代理反…

【原创】如何做一张原创8BIT音乐的NES音乐卡片

我陷入了深思。。。。。。 第一步是创作一首8BIT音乐。我介绍两个NES用的音乐工具:FamiTracker 和 FamiStudio。 选FamiTracker的原因是,有完美教程呀。红鸡将他的教程放到B站了:红激教你做音乐 一共11集,非常亲民地道的教学&a…

C++11 lambda表达式

作者:小萌新 专栏:C进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍C11的lambda表达式 lambda表达式lambda表达式的概念lambda表达式语法lambda表达式交换两个数lambda表达式的底层原理lambda表达式的…

【ChatGPT 中文版小程序】无需注册体验 ChatGPT 的攻略

本文导读什么是ChatGPT?ChatGPT能做什么?功能测试如何解锁有趣功能?我想部署同样的一个小程序,请问如何做?什么是ChatGPT? 最近网上非常火爆的CHATGPT,它是OpenAI开发的一款开源的自然语言处理…

专访量子计算上市公司IonQ CEO

(图片来源:网络)IonQ的CEO Peter Chapma,从70年代中期就从事高科技行业,至今已有45年左右。在接受媒体采访时,Peter Chapman谈到IonQ扩展计算机和提供业务价值的计划、量子客户的最佳应用程序开发合作伙伴、…

DEFCON议题解读|Dll劫持新思路——修改环境变量

简介 在2022年的Defcon大会上,安全研究人员Wietze Beukema通过对进程级环境变量的研究,提出了一种Dll劫持新思路,下面就其中涉及的技术点展开介绍。 **01 **环境变量 每一个进程都有一个环境块,其中包含一组环境变量及其值。有两种类型的环…

RabbitMQ的消息模型

文章目录1、简单队列2、work 模式3、发布/订阅模式4、路由模式FanoutDirect5、主题模式6.工作模式总结7、四种交换器RabbitMQ官方提供了5个不同的Demo示例,对应了不同的消息模型: 1、简单队列 一个生产者对应一个消费者!! publi…

Linux shell 命令行环境下使用阿里云盘

阿里云盘在内测的时候我就在使用,整体体验相当的好,最起码不会限速,比起下载速度只有十几 KB 的某垃圾云盘要强太多了。 当然除了使用各系统的客户端进行下载之外,我还想要在命令行进行操作,主要原因也是我有一台 NAS…

AcWing 487. 金明的预算方案(有依赖的背包问题 + 分组背包问题)

AcWing 487. 金明的预算方案一、问题二、分析三、代码一、问题 二、分析 这道题属于一个背包问题,但是这道题中有一个很神奇的条件。就是我们想要购买某个物品的附件的话,前提是我们要购买这个物品的主件。 因此,我们可以将这道题画成下面这…