【问题标题】:complexity of combinatorial function组合函数的复杂度
【发布时间】:2011-05-15 20:13:01
【问题描述】:

如何对涉及组合运算的算法的复杂性进行分类。

假设输入是m,n,复杂度由C(m,n)决定。 (C是从n中选择m的组合函数)。问题是如何对复杂性进行分类,而不是仅仅给出 C(m,n)。

我的意思是,要了解算法的运行时间,您可以说该算法具有多项式、指数时间复杂度。但是如何处理 C(m,n) 呢?

我知道可以使用Stirling's approximation 来近似阶乘,但结果仍然太复杂,无法将其放入复杂度类中。

【问题讨论】:

    标签: algorithm complexity-theory combinatorics


    【解决方案1】:

    如果你坚持保留 m 和 n,那么很难比斯特林的近似值做得更好。单独的 m 的上限是 C(m, m/2),它对 2m/√m 渐近,因此是指数的。

    【讨论】:

    • 不是(2^m)√m(分子中的√m,不是分母)吗?
    • @Ted Hopp 不——只有 2^m 个子集。
    • C(m, m/2) ≈ m! / ((m/2)!)^2 ~ (m^m / √m) / ((n/2)^(n-1)) ~ (2^m)√m。请注意,O(2^m) ≠ O((2^m) √m)。我只是不明白你是怎么得到 O((2^m) / √m) 的。
    • @Ted Hopp Stirling 的公式是 n! ~ √(2πn) (n/e)^n。你把 surd 放在分母中。
    • 是的,你知道。但是对于 C(m, m/2),分母是平方的,当您将斯特林公式应用于比率时,分母中的 squared surd 最终出现在分子中(分母中还有另一个 surd) .
    【解决方案2】:

    您不能“将其放入复杂性类中”,因为它不是单变量运行时间。

    它的“渐近行为”是未定义的,因为我们应该考虑哪个变量接近无限?即使我们说这两种方法都是无限的lim {n->inf, m->inf} nCm 是未定义的,因为它们的相对值是未定义的。 IE。该行为不仅取决于nm 是否大于某个值,还取决于它们的相对值。

    复杂度取决于两个变量,nCm 是一个完全有效的复杂度函数。

    如果您对 m 相对于 n 有一个合理的近似值,那么您可以更轻松地对其进行分类。也许值得研究一些案例,m = O(n)m = O(1)
    或者 m = [kn]0 <= k <= 1 是常数 + Stilring 公式,在一个变量中提供了一个很好的关系,同时仍然能够考虑 m 相对于 k 的值。

    【讨论】:

    • 正如@spartan 指出的那样,nCmm 中的最大值为n/2。此外,m <= n 所以m 不能独立于n 无限接近。
    • @Ted,的确,您可以通过取最大值来给出总的O(2^n),但如果minverseAckerman(n),那么我们基本上高估了线性运行时间为指数运行时间.因此,尽管存在最大值,但它通常没有用。根据您的第二点,m 显然存在限制,我从未提出其他建议,但即使在限制下,我所说的一切都是正确的,并且限制是未定义的。至于你的措辞,我不确定“无限独立”是什么意思。
    • 那是一个错字。它应该说“不能独立于n 接近无穷大”。
    • @Ted,在这种情况下,我认为m 绝对可以独立于n 接近无穷大,尽管有m <= n 的约束。 lim {n->inf, m->inf} ...nm 之间没有任何关系,因此它们的相对增长是未定义/未知的。虽然如果你只是指出m 有一个限制,那么就没有什么好争辩的了。
    • @david - 我想我们对“独立”有不同的定义。当然mn 在统计上不是独立的,而半平面m <= n 也不是整个平面。但我同意你的观点,m 不需要很大,因为n 是。
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2021-01-20
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多