组合函数的复杂性

时间:2011-05-15 20:13:02

标签: algorithm complexity-theory combinatorics

如何对与组合操作有关的算法的复杂性进行分类。

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

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

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

2 个答案:

答案 0 :(得分:1)

如果你坚持同时保留m和n,那么要比Stirling的近似做得更好。单独m的上界是C(m,m / 2),它是2 m /√m的渐近,因而是指数。

答案 1 :(得分:1)

你不能“把它放入复杂性类”,因为它不是一个单变量的运行时间。

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

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

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