P,NP 和 NPC 问题
时间复杂度
时间复杂度反映的是一个算法随着输入数据规模的扩大,解决时间的增长。比如 问题是 的。选择排序是 的。输出长度为 的全排列是 的。
我们称多项式复杂度为 这样的。
非多项式复杂度长 这样的。
P 问题
指的是一类有多项式时间复杂度解法的问题。
一般 OI 题都是 P 问题。
但是判断是否存在哈密顿回路就不是 P 问题
NP 问题
注意并不是 “not P” 问题。 而是指能 在多项式复杂度时间内 验证解的问题。
上文判断存在哈密顿回路就是 NP 问题。因为我可以在 时间判断一个路径是否包含了恰好一次每个点。
显然 。而人们不知道 是否等于 。
NPC 问题
NP 完全问题。
规约
问题 的解法可以涵盖 的解法, 称 可以约化为 。
比如 解一元一次方程 可以约化为 解一元二次方程。令二次项系数为 。
比如 哈密顿路径 可以约化为 TSP 问题。两点有边就设边权为 ,否则为 。 TSP 求解路径最小值。
这里蕴含了 比 简单的道理。这个过程也许会使得时间复杂度变高。
我们规定约化的过程必须满足从一个输入到另一个输入的变换复杂度为多项式复杂度,否则这个规则毫无意义。
定义
- 属于 NP 问题。
- 可以规约到一个 NPC 问题。
根据传递性,存在一个超级 NPC 问题。所有问题可以规约至他。
有个显然的传递性。
哈密顿路径就是 NPC 问题。
个数集合判断是否可以选出和为 的问题 也是 NPC 问题。
NPC 问题如果可以找到多项式时间复杂度的解法,我们就可以证明 P = NP。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!