考虑计数函数 $ \ {x \} ^ * \ lightarrow \ mathbb n $ 计算符号 $ x $

我对计算该函数的(渐近)复杂性感到困惑,其中输出应该在非机构系统(例如二进制)中。我的直觉暗示这应该是线性的,即 $ o(n)$ 其中 $ n $ 是输入中的符号 $ x $ 中的符号的次数。

就我的理解而言,有多种对计算的解释 - 例如,

  • 单频带图灵机,我最好的想法已经运行时间 $ \ omega(n ^ 2 \ log n)$ 我认为( $ \ log n $ 来自二进制后继函数具有 $ \ oomega(n)$ 运行时,其中 $ n $ 是自然数的二进制表示的长度,而 $ n ^ 2 $ 来自假设图灵机必须通过 $ x $ 达到其当前计数),而且
  • 多频带图灵机,我认为我有一个运行时的想法 $ \ oomga(n \ log n)$
  • 随机访问机器,我根本不知道。

所以我的问题是以下。

各种计算模型中计数功能的计算复杂性是多少?在其中任何一个是线性吗?

如果在所有相关的情况下,我从抽象代数的角度提出,在那里我试图评估某些特定群体中的词问题的计算复杂性。

有帮助吗?

解决方案

图灵机是一个很好的模型,具有几个优点,主要是它们的简单性,但它们不是分析算法时的第一选择。通常在RAM机模型上隐式分析算法,在某些情况下,在 BSS Model

以下是关于各种型号计数的计算复杂性的一些评论:

单磁带图定型机:这些仅被认为是因为它相对容易证明它们上的下限。它们比多磁带图定型机更加逼真。

多磁带图定型机:它是摊销复杂性的标准示例,即可以使用 $ o(1)$ 摊销比特操作。这是因为一半的时间,只有一个比特变化,四分之一的时间,只有两个比特,等等,对于 $ 1/2 + 2的总数/ 4 + 3/8 + \ cdots= 2 $ 。图灵机复杂性是线性的,因此可以在 $ o(n)$ 中实现计数。

RAM机器: RAM机器由最多寄存器和随机存取存储器组成。寄存器是 $ o(\ log n)$ -bits long,其中 $ n $ 是大小输入。寄存器的合理操作采取不断的时间。特别是,增加可以依赖于 $ \ mathit {poly}(n)$ 的计数器cape $ o(1 )$ 最坏情况时间。特别是,您的函数将在 $ o(n)$ 中运行。

bss机器:在大数字执行算术时必须小心。在RAM机器上,算术仅在操作数量的幅度为 $ \ mathit {poly}(n)$ 时,才需要恒定的时间。 BSS机器允许访问在某些字段中存储值的特殊寄存器,例如实数。您可以执行恒定时间的算术和比较,但不能像地板这样的功能。您也不允许使用此类值进行索引。 (如果您没有足够限制自己,您将很快解决多项式时间。)您可以将BSS机器视为适应浮点操作,这在实践中取得不断的时间,同时忽略了它们所涉及的有限精度。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top