在多项式时间和强多项式时间中运行的算法的定义


18

维基百科将其定义为

如果算法的运行时间由该算法的输入大小的多项式表达式上限即对于某个常数k ,T n = O n k)),则该算法被称为多项式时间Ťñ=Øñķ

如果[8],该算法将在强多项式时间内运行。

  • 计算算术模型中的运算数受输入实例中整数数的多项式限制;和

  • 算法使用的空间以输入大小的多项式为边界。

Bernhard Korte,Jens Vygen中,组合优化

定义1.4。

理性输入的算法被认为在运行多项式时间内,如果

  • 有一个整数k,它以时间运行,其中n是输入大小,并且Øñķ
  • 中间计算中的所有数字都可以用位存储。Øñķ

任意输入的算法被认为在运行强多项式时间如果

  • 对于任何由n个数字组成的输入,有一个整数k使得它以时间运行Øñķ
  • 它在多项式时间内运行以进行合理的输入。

如果我错了,请纠正我。以下是我注意到的字面差异:

  • 对于多项式时间算法,Korte和Vygen的定义是“维基百科的定义+多项式存储空间”。

  • 对于强多项式时间算法,Korte和Vygen的定义以及Wikipedia的定义都要求输入存储大小中的多项式时间。但是,K和V的任何输入中的数目均需要多项式时间,而Wikipedia的其他要求则是输入大小中的多项式存储空间。

那么,K和V以及Wikipedia对这两个概念的定义分别相等吗?它们之间还有什么其他区别和关系?

谢谢并恭祝安康!


defn之后的Wikipedia部分有一个很好的解释,这还不够清楚吗?它与多少位表示数字有关,非常大的数字会“向上”影响复杂度的测量。认为使用K&V的defns可能相当于“接近”。至于有理投入,则需要证明无理算术并不会在很大程度上增加其大小。认为可以通过查找所有输入的LCD并对该LCD进行所有算术运算来表明这一点。
vzn

@vzn:Wikipedia中的解释(1)对于算术和Turing机器相当不错,但在强力结合的目的和定义方面还很浅,并且(2)在GCD的示例方面是完全错误的。
alexei

Answers:


5

在正式定义之前,请考虑“强/弱”分类的目的是区分什么。

首先,考虑在图灵机上运行其中任何一个。两者都将在二进制编码输入的长度上以多项式多项式的形式运行。因此,在二进制编码输入的长度上,两者执行的算术运算次数必须是多项式。因此,对于这两种Turing Machine,运行时间都会随着输入值数量或数量级的增加而呈多项式增长。为了强调后者,请注意,即使是强壮的人也将在更大的幅度上采取更多的TM步骤(它至少需要读取额外的位)。在任何情况下都不会变成指数(与无关的伪多项式时间一样)。仅使用图灵机,似乎根本无法检测出根本差异。

Ø1个

在输入数数量中以多项式运算多项式运行的算法集是定义明确的,但与以二进制编码输入的长度为单位的TM步数呈指数形式的算法类别重叠(请参见示例)。因此,对于此集合,第二段中的属性将不成立。为了排除不必要的交集,我们为多项式TM空间[*]添加了条件。

在[1]中用两种方式表示:

  • 如果该算法是多项式空间算法,则该算法将在强多项式时间内运行,并执行许多基本算术运算,这些运算受输入数数量中的多项式所限制。
  • 多项式算法是多项式空间算法(在我们的标准图灵机模型中)和算术模型中的多项式时间算法(有关说明,请参见此问题)。

Øñ3Øñ2

[*]第二个条件到处都表示为多项式空间,而对我来说,要求多项式时间更有意义。前者更具包容性,但很奇怪。是否存在比多项式时间花费更多的强多项式算法?请注意,重复平方示例不占用多项式时间,也不占用多项式空间。

[1]马丁·格罗茨切尔;拉兹洛瓦瓦兹(LászlóLovász),亚历山大·施里弗(Alexander Schrijver)(1988)。“复杂性,Oracle和数值计算”。几何算法和组合优化。施普林格。ISBN 0-387-13624-X。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.