世界七大数学难题之一:NP问题

NP问题(Non-deterministic polynominal) 是指可以在多项式时间内验证一个解的正确性的问题集合。这意味着如果给定一个解,我们可以在多项式时间内验证该解是否正确。NP问题的一个重要特征是,尽管我们尚未找到在多项式时间内解决它们的算法,但如果我们有了一个解,我们可以在多项式时间内验证该解的正确性。

基本概念:

P问题:(polynominal) 存在多项式时间算法的问题,即在多项式时间内可解的问题;

例如:冒泡排序、希尔排序、堆排序等问题;

NP问题:(Non-deterministic polynominal) 多项式复杂程度的非确定性问题,能在多项式时间内验证出一个正确解的问题,也就是说这个问题不一定在多项式时间内可解,但可以在多项式时间内验证;

例如:找大质数问题,比如13717421拆成两个数相乘,必须是4位乘以4位的,可能很久都解不出来(如果是一个很大很大的数的话),但是我告诉你这是3607*3803得到的,那么很简单就能在多项式时间内验证是否正确,这就是NP问题;

NPC问题(Non-determinism Polynomial complete):存在这样一个NP问题,所有的NP问题都可以约化成它;

NP-Hard问题(Non-determinism Polynomial hard):如果任何一个NP问题都可以通过一个多项式时间算法转换为某个NP问题,即所有的NP问题都可以约化成它。

一些经典的NP问题包括:

布尔可满足性问题(Boolean Satisfiability Problem,SAT): 给定一个布尔表达式,是否存在一种对变量的赋值方式,使得表达式为真。

哈密顿回路问题(Hamiltonian Cycle Problem): 给定一个图,是否存在一条包含图中所有节点的回路。

旅行商问题(Traveling Salesman Problem,TSP): 给定一组城市和它们之间的距离,找到一条访问每个城市一次并返回起始城市的最短路径。

图的着色问题(Graph Coloring Problem): 给定一个图,是否可以用有限种颜色对图中的节点进行着色,使得相邻节点的颜色不相同。

集合覆盖问题(Set Cover Problem): 给定一个集合的集合和一个目标集合,找到最小数量的集合,使得它们的并集等于目标集合。

子集和问题(Subset Sum Problem): 给定一个集合和一个目标值,找到集合中的一个子集,使得子集的元素之和等于目标值。

背包问题(Knapsack Problem): 给定一组物品,每个物品有一个重量和一个价值,以及一个背包的容量限制,找到一个物品子集,使得它们的总重量不超过背包容量,且总价值最大化。

图的最大独立集问题(Maximum Independent Set Problem): 给定一个图,找到一个最大的节点集合,使得这些节点两两不相邻。

图的最大团问题(Maximum Clique Problem): 给定一个图,找到一个最大的完全子图,即图中任意两个节点之间都有边相连。

最长公共子序列问题(Longest Common Subsequence Problem): 给定两个序列,找到它们的最长公共子序列的长度。

分割问题(Partition Problem): 给定一个集合,是否可以将其分割成两个子集,使得两个子集的元素之和相等。

硬币找零问题(Coin Change Problem): 给定一组面额不同的硬币和一个目标金额,找到使用最少数量的硬币凑出目标金额。

连续子数组的最大和问题(Maximum Subarray Problem): 给定一个整数数组,找到一个具有最大和的连续子数组。

背包装载问题(Bin Packing Problem): 给定一组物品和一组容器,每个容器有一个固定的容量,找到一种装载方案,使得物品尽可能均匀地分布在容器中。

最短超字符串问题(Shortest Superstring Problem): 给定一组字符串,找到一个包含所有字符串的最短字符串。

图的最小顶点覆盖问题(Minimum Vertex Cover Problem): 给定一个图,找到一个最小的节点集合,使得每条边都至少与该集合中的一个节点相邻。

多重集划分问题(Multiset Partition Problem): 给定一个多重集,是否可以将其划分成若干个子集,使得每个子集的元素之和相等。

旅行商问题的对偶问题(TSP Dual Problem): 给定一组城市和它们之间的距离,找到一组边,使得图中的每个节点都恰好与这些边相连,并且这些边的总长度最小。

最大二分匹配问题(Maximum Bipartite Matching Problem): 给定一个二分图,找到一个最大的匹配,即图中最大的边集合,使得任意两条边没有公共节点。

最大流问题(Maximum Flow Problem): 给定一个网络图和两个节点,找到从一个节点到另一个节点的最大流量。

图的最长路径问题(Longest Path Problem): 给定一个图,找到一条最长的路径,使得路径中的节点不重复。

子图同构问题(Subgraph Isomorphism Problem): 给定两个图,判断是否存在一个图同构于其中一个图的子图。

拆分图问题(Graph Bisection Problem): 给定一个图,找到一种分割方式,使得两个子图的节点数量尽可能接近。

团问题的变种问题(Variants of Clique Problem): 例如最大权团问题、最小覆盖团问题等,它们都是围绕着图中团的性质展开的。

图的边覆盖问题(Edge Cover Problem): 给定一个图,找到一组边,使得每个节点都至少与其中的一条边相邻。

图的连通分量问题(Connected Components Problem): 给定一个图,找到图中的所有连通分量。

点的双连通分量问题(Biconnected Components Problem): 给定一个无向图,找到图中的所有点的双连通分量。

DAG最长路径问题(Longest Path in DAG Problem): 给定一个有向无环图(DAG),找到一条从源节点到汇节点的最长路径。

最大独立边集问题(Maximum Independent Edge Set Problem): 给定一个图,找到一个最大的边集合,使得这些边两两不相邻。

最大团覆盖问题(Maximum Clique Cover Problem): 给定一个图,找到一组最大的团,使得每个节点都属于至少一个团。

这些问题都是NP问题,但目前尚未找到在多项式时间内解决它们的有效算法。如果一个问题是NP问题,并且有一个在多项式时间内解决它的算法,那么这个问题就属于P类,即NP问题的一个子集。然而,至今尚未发现P类与NP类之间是否存在严格的相等关系,这就是著名的P=NP?问题。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨正国y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值