complexity-theory - 在复杂度类 P 中,接受=决定。为什么不是NP?
问题描述
假设某个问题 L 属于复杂度类 P。那么有一些多项式时间算法 A 来决定该问题。我们有以下定理:如果 A 接受 L,则 A 决定 L。
证明通过注意如果 A 在多项式时间内运行,那么有一些非负常数 c, k 使得 A 的运行时间是 cn^k 其中 n 是输入 L 的大小。所以我们可以构造一个多项式时间算法 A',如果 A 在 time<= cn^k 中返回 1,则调用 A 并返回 1,如果 A 的返回时间超过 cn^k,则返回 0。通过这样做,我们注意到如果 A 试图进入一个无限循环,那么 A' 会在 poly time 中停止该过程并返回 0,这意味着 A' 拒绝 L 的互补。
我的问题是:为什么这个证明对复杂类 NP 不起作用?我们能不能只说如果 L 在 NP 中,那么有一个非确定性的多时间算法 A 决定了 L,所以只定义 A' 如上?
解决方案
“决定”一个问题意味着能够判断给定字符串是否是该语言。如果字符串不在 NP 语言中,则在声明字符串不在语言中之前,没有多项式时间可以等待接受失败,这会使您的算法站不住脚。
对于 P 中的语言,您不知道“多项式时间量”实际上是什么,但您确实知道您的算法将在有限时间内终止任何输入。但是对于 NP,测试不是语言的输入可能永远不会终止,所以你永远无法判断你的输入是不是语言,或者你只是没有等待足够长的时间。
推荐阅读
- c# - can I fill only raw value 100 for "Name" instead of ValueKind = Number : "100
- sql - 需要将字符串列的所有行连接到 Informatica SQL 工作表中的单行
- spring-boot - Tomcat NioEndpoint - 运行套接字处理器时出错
- java - 启动应用程序android后自动打开drawable
- symfony - 使用 Symfony API REST 将登录请求限制为 ROLE_ADMIN
- algorithm - 你如何在 Julia 中获取 f(g(x)) 的泰勒级数?
- android - Retrofit 2.6.2 is not working on Vodafone mobile data but works fine on WiFi
- r - Plot geom_area with no filling and colouring lines by variable/ or geom_line without variables overlapping
- python - Wsgi 脚本和带有 Python 3.5 的最新 django
- javascript - 如何在不悬停的情况下默认设置或显示所有工具提示文本