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
    ,因此,如果我不使用新的图灵机,则可能需要为语言中的每个元素使用不同的图灵机。但是,如果这是个问题,我使用的方法可以解决问题:)