【问题标题】:In complexity class P, accepts=decides. Why not NP?在复杂度类 P 中,接受=决定。为什么不是NP?
【发布时间】:2018-07-08 16:22:29
【问题描述】:

假设某个问题 L 属于复杂度类 P。那么有一些多项式时间算法 A 来决定该问题。我们有以下定理:如果 A 接受 L,则 A 决定 L。

证明的工作原理是,如果 A 在多项式时间内运行,那么有一些非负常数 c, k 使得 A 的运行时间是 cn^k,其中 n 是输入 L 的大小。所以我们可以构造一个多项式时间算法 A',如果 A 在 time

我的问题是:为什么这个证明不适用于复杂性类 NP?难道不能只说如果L在NP中,那么有一个非确定性的多时间算法A决定了L,那么就如上定义A'?

【问题讨论】:

    标签: complexity-theory np np-complete


    【解决方案1】:

    “决定”一个问题意味着能够判断或不是一个给定的字符串是否在该语言中。如果字符串不是 NP 语言,那么在声明字符串不是该语言之前,没有多项式时间可以等待接受失败,这会使您的算法站不住脚。

    对于 P 中的语言,您不知道“多项式时间”实际上是多少,但您确实知道对于任何输入,您的算法都会在有限的时间内终止。但是对于 NP,测试不是语言的输入可能永远不会终止,所以你永远无法判断你的输入是不是语言还是你没有等待足够长的时间。

    【讨论】:

    • 谢谢!我真的不明白。如果字符串 x 在 NP 语言 L 中并且 A 接受 L,则如果 x 在 L 中,则 A 必须返回 1,否则返回 0 或无(无限循环)。 A 还必须在(非确定性)多项式时间内执行此操作。所以如果A返回1,那么x在L中,如果A返回0,那么x不在L中。如果A花费的时间比多项式时间长,那么我们不能说x不在L中吗?即,算法 A 未能非确定性地为 x 选择证书 y 并(在多时间内)验证 y 确实是 x 的证书。这不是说 x 不在 L 中吗?
    • 我知道上面是错的...我就是不明白为什么
    • 如果程序处于无限循环中,则无法返回任何内容。
    • 由于您不知道 c 或 k,您将如何确定等待的秒数?
    猜你喜欢
    • 2013-10-14
    • 2013-12-03
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2013-11-29
    • 2010-10-28
    相关资源
    最近更新 更多