Big o 你如何证明一种语言在P类中?
我有两种语言:Big o 你如何证明一种语言在P类中?,big-o,time-complexity,complexity-theory,Big O,Time Complexity,Complexity Theory,我有两种语言: A = { <M, w> | M accepts w after running for at most 2^500 steps } B = { <M, w, 1^t> | M accepts w after running for at most t steps } A={M在运行最多2^500步后接受w} B={| M在运行最多t步后接受w} 我需要弄清楚这些语言是否在类p中。如果一种语言在多时间内运行,我知道它在类p中。我很确定语言A是以指数时间
A = { <M, w> | M accepts w after running for at most 2^500 steps }
B = { <M, w, 1^t> | M accepts w after running for at most t steps }
A={M在运行最多2^500步后接受w}
B={| M在运行最多t步后接受w}
我需要弄清楚这些语言是否在类p中。如果一种语言在多时间内运行,我知道它在类p中。我很确定语言A是以指数时间运行的,但我不确定像2^500这样的常数是否会使它变成多边形时间
感谢您的帮助,谢谢 算法时间表示为输入大小的函数。如果,对于任何输入,A需要2^500步,那么它实际上是常数时间(无论输入什么,运行时间都是常数),这肯定是P B采取t步,其中t可能是输入的大小,因此它是线性时间(时间随输入大小线性增加),也就是p
例如,如果您遇到需要2^t步或t!(阶乘)步骤,则不在P中。查找大O符号
一种语言在P中,如果存在一种算法,可以确定给定输入是否属于该语言并在多项式时间内运行。多项式时间,意味着您可以在输入长度中找到多项式函数的上界
要解决您的示例,请执行以下操作:AL₁代码>作为:
对于元素
运行M(w)
因为M(w)
最多取一个常量c=2⁵⁰⁰代码>步骤,AL的复杂性₁
由一个常数限定,该常数是多项式<代码>AL₁ ∈ O(1)
。所以A
在P中
AL₂代码>作为:
对于元素
运行M(w,1t)
由于M(w,1t)
最多需要t
步数,我们必须将输入长度和t
放在一起。请注意,输入由w
和1t
组成1t
表示数字t
输入为一元数(例如1⁵ = 11111₁ = 5.₁₀). 这对于输入长度很重要,例如1²的长度⁵⁶
是256
,但256的长度=2⁸代码>仅为8=log₂(256)
二进制格式。
因此,输入长度为len(w)+t
和AL₂ ∈ O(t)
成立。因此AL的复杂性₂
也由多项式限定,因此语言B
位于P中
C = { <M, w, t> | M accepts w after running for at most t steps }
C={| M在运行最多t个步骤后接受w}
C
基本上类似于B
,但是t
不是一元数字系统,因此t
的长度是logc(t)
。对数的基础C
并不重要,因为它只会产生一个常数因子
输入长度现在是
len(w)+log(t)
,因此O(t)
不是输入长度中必需的多项式。假设len(w)
是一个常量(为了简化),那么t=clogc(t)
在输入长度上是指数型的,因此C
不在P中。一些文本被解释为标记。我对问题进行了编辑,以使其正确显示。更正后的标记会使您的答案的某些部分无效,因为您对答案的外观做出了错误的假设;您可能希望这样做解决这个问题。我重新检查了它,我不确定它在哪里与问题不匹配,它仍然说A需要2^500步,B需要t步,虽然现在它说1^t代表B…不确定这意味着什么,因为1^x代表任何x,但可能我误解了符号。语言A是所有对的集合
,其中m
描述了A在输入时停止的图灵机,最多只需2^500步。问题在于图灵机能否在多项式时间内决定输入是否是这样的一对,而不是M是否在多项式时间内停止。B的问题类似。用另一个图灵机模拟图灵机有开销;我不认为你'我们对此进行了解释。它不会改变语言是否在P中,但会稍微改变分析。@user2357112您是对的。但是有一些不同的方法来定义语言。在大多数情况下,我看到,图灵机不是语言中元素的一部分。所以我决定使用包含该机器的整个元素并添加了一个外部图灵机。我认为可能会有许多不同的图灵机M
,因此,如果我不使用新的图灵机,则可能需要为语言中的每个元素使用不同的图灵机。但是,如果这是个问题,我使用的方法可以解决问题:)