mon*_*ole 19 algorithm big-o time-complexity
我为旅行商问题编写了一个强力搜索算法,并对其进行了测试,以查看各种"城市"所需的时间.从下面的图中,我们可以看到,时间大约是成正比的(n-1)!地方n是"城市"的数量.它与n!(毕竟(n-1)! = n! / n)不成正比.
我的问题是,说算法运行是否仍然正确O(n!),或者说我更好O((n-1)!)吗?我以前从未见过后者,但似乎更准确.看来我在这里误解了一些东西.
[t =所用时间,n =城市数量]
Sve*_*ach 48
根据定义,O(f(n))是由f(n)渐近支配的所有函数的集合,即具有常数C和n_0的所有函数g(n)的集合,使得
g(n) < C * f(n) for all n > n_0
Run Code Online (Sandbox Code Playgroud)
根据这个定义,O(n!)实际上是O((n-1)!)的超集,因为函数f(n)= n!是第一组的成员,但不是第二组的成员.这两套实际上并不相同.
但是,说你的问题是O(n!)是正确的,因为这只是一个上边界.说你的问题是Θ(n!)是不正确的,因为这表示直到常数因子的精确渐近行为.
在实践中没有太大的区别,并且,如另一个答案所述,您可以将n重新定义为减去一个城市的数量.
O(n!)够好了.n大或n-1没有区别n.
有关 示例,请参阅https://www.wikiwand.com/en/Time_complexity#/Table_of_common_time_complexities.
| 归档时间: |
|
| 查看次数: |
4119 次 |
| 最近记录: |