【问题标题】:Computational complexity with "fixed dimension"“固定维度”的计算复杂度
【发布时间】:2016-02-04 08:52:34
【问题描述】:

当我读到一篇科学论文时:

算法的计算复杂度为O(N^d),其中N 是数据的数量,d 是维度。因此与固定 维度,算法复杂度是多项式的。

现在,这让我想到,(如果我没记错的话)big-O 表示法是在二进制输入的数量中定义的。因此,如果我固定数据的维度,很自然会得出多项式解决方案。此外,如果我还要修复N,输入的数量,我会得到O(1) 解决方案,请参阅连接的帖子: Algorithm complexity with input is fix-sized

我的问题是,如果您认为这是多项式复杂性的有效论证?真的可以修复一维和输入数据并声称多项式复杂度吗?

【问题讨论】:

  • 不确定你在问什么,引用语句中的推理肯定是正确的。
  • 是的,引文中的推理听起来是正确的。我在这里的困惑是说输入的大小是D = N x d。因此,为了说明该算法是多项式的,我希望复杂度是D 的多项式函数,而不是N
  • “输入的大小是 D = N x d”:这不是那里所说的。相反,输入的大小为 N,并且算法有一个参数 d。
  • 声明是一回事,如何定义大 O 表示法 Ordo 是另一回事,因为大 O 表示法是根据输入位定义的,因此如果我有 N 个数据点维度为 d,则输入数据应为 N x d。如果你明白我的意思,仍然不知道。
  • big-O 表示法的定义中没有任何内容表明自变量是以位为单位测量的,即使它必须是输入大小。符号只是关于函数的增长。

标签: algorithm big-o time-complexity


【解决方案1】:

是的,这是合理的做法。

这确实取决于最初的问题,但在大多数情况下,我会说固定维数是合理的。我希望这篇论文能够声称诸如“用于实际目的的多项式复杂性”之类的东西,或者提出一些论据,说明限制 d 是合理的。

您可以与复杂度为 O(d^N) 的解决方案进行比较,其中固定维数并不意味着解决方案是多项式的。因此,当 d 较小时,所呈现的显然更好。

【讨论】:

    【解决方案2】:

    作为大学时代的快速回忆。 Big-O 符号只是算法执行方式的 UPPER 界限。 在数学上,f(x) 是 O(g(x)) 意味着存在一个常数 k>0 和 x0 使得

    f(x) x0

    要回答您的问题,您不能固定 N,它是自变量。 如果你修正 N,说

    【讨论】:

    • 主要问题不是我们是否可以修复 N,但是我完全同意你所说的。问题是我们是否可以修复 d。
    【解决方案3】:

    这仅适用于某些算法。我不清楚在某些情况下“维度”应该是什么。

    例如SubSetSum 是 NP 完全的,因此没有已知的具有多项式复杂度的算法。但输入只是 N 个数字。您也可以将其视为 N 个位长 d。但该算法仍然具有多项式复杂度。

    同样适用于格的最短向量问题 (SVP)。输入是 N x N 基(可以说是整数条目),您寻找最短的非零向量。这也是一个难题,目前还没有多项式复杂度的算法。

    【讨论】:

    • 这里的维度意味着输入是N个向量,每个向量有d个维度
    【解决方案4】:

    对于许多问题来说,让问题变得困难的不仅仅是输入数据的大小,而是该数据的某些属性或参数。例如。许多图问题的复杂性分别以节点数和边数给出。

    有时,这些参数之间的差异可能很大,例如,如果你有类似 O(n^d) 的东西,当 n 增长时复杂度只是多项式,而当 d 增长时是指数。

    如果您现在碰巧有一个应用程序,您知道像尺寸这样的参数的值始终相同或存在(小)最大值,那么将此参数视为固定可以在内部为您提供有用的信息。所以像这样的陈述在科学论文中很常见。

    但是,您不能只修复任何参数,例如您的内存是有限的,因此数据的排序是恒定的时间,因为该参数的界限是如此之大,以至于将其视为固定不会给您任何有用的见解。

    因此,修复所有参数通常不是一种选择,因为数据大小必须在一个方面发生变化。如果您的复杂性增长非常缓慢,这可能是一种选择。

    例如如果常数也非常小,则具有 O(log n) 操作的数据结构有时被认为具有有效的常数复杂度。或作为联合查找结构的数据结构,其中操作的摊销复杂度为 O(α(n)),其中 α 是阿克曼函数的倒数,该函数增长如此缓慢以至于不可能超过 10 或任何大小 n 任何可以想象的硬件都可以处理。

    【讨论】:

    • 确实,例如在使用支持向量机进行聚类时,如果没有太多维度,枚举所有可能的支持向量的技巧是可行的。
    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 2012-12-31
    • 2019-03-11
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多