在几个月前研究项目的数据结构时,我遇到了一个我非常喜欢的术语,可以使用如下:
这[算法/解决方案/数据结构]是盟友最优的
意味着所引用的解决方案的时间(或空间,取决于上下文)复杂性与它解决的问题的基本复杂性相同。
例如,如果我们忽略量子计算并且在一般情况下接受排序问题是O(n log n)
时间,那么就时间复杂度而言,堆排序是最合适的,因为它的复杂性是也是O(n log n)
,而冒泡排序不是?????盟友最优,因为O(n^2)
比O(n log n)
更差。
我不知道我在哪里阅读它,到目前为止我还没有找到谷歌,而且无法记住它从此一直困扰着我!
答案 0 :(得分:1)
也许你在谈论Asymptotically optimal algorithm:
在计算机科学中,一种算法被认为是渐近最优的,如果粗略地说,对于大输入,它在最坏的情况下执行比最佳算法更差的常数因子(独立于输入大小)。
答案 1 :(得分:1)
你是否认为计算上最优?可能是“渐近最优”,就像另一个答案所说的那样。你所描述的似乎是大哥们:
如果一个问题已被证明至少采用f(x),则称为Omega(f(x));算法的最坏情况是big-O(g(x))。当f(x)== g(x)时,也就是说解决方案的最坏情况是问题的最佳情况,算法是big-theta(f(x))。所以heapsort,例如是theta(n * log(n))。