我们知道下限是解决问题所需的最低工作量。因此,对于给定的问题说x具有最好的算法(最有效的算法来解决这个问题)说算法Y,然后从该算法Y计算的较低界限效率是X可以通过解决X的最小时间。那么为什么我们在最坏的情况下计算该算法的较低效率?为什么不在最好的案例输入?我的意思是下限是最低工作量,因此在最佳案例场景中发生。每次看到一个决策树算法问题来解决某些分类算法的下限时,通常都会提到“最坏的情况下是Blah Blah Blah”这让我感到非常混合!有人请解决我的理解:(。

有帮助吗?

解决方案

在分析算法时,考虑最佳情况的算法几乎没有意义,因为它通常是微不足道的,而不是非常有信息。

您可以说服自己几乎每种算法都可以适应 $ o(n)$ ,其中 $ N $ 是输入的大小,只需运行初步检查,验证输入实例是否属于解决方案琐碎的某些实例。

只是为了给一个具体的例子:可以制作每个排序算法的最佳案例 $ o(n)$ 如果您只需检查数字的数字序列已经被分类了。

焦点通常是最坏的复杂性。一旦您决定要比较关于他们最坏的复杂性的算法,它也有意义,询问问题如何解决问题。

通常不可能给出解决问题所需的时间急剧,因此人们寻求上限和下限。

$ o(f(n))$ 告诉您有一些算法解决了 $ O(f(n))$ 最坏情况时间。

$ \ oomega(g(n))$ 告诉您没有可想到的算法可以取 $ O(g(n))$ 解决问题的时间。

只是清楚:解决问题所需的时间下限表示为输入大小 $ n $ ,并且是最小的数量解决所有实例所必需的工作大小 $ n $ 。直观(不是正式的定义)您可以将其视为 $ \ min_ {a \ in \ mathcal {a}} \ max_ {i \ in \ mathcal {i} _n} t (a,i)$ 其中 $ \ mathcal {a} $ 是解决您问题的所有可能算法的集合, $ \ mathcal {i} _n $ 是所有大小的所有实例 $ n $ ,以及 $ t(a,i)$ $ a \ in \ mathcal {a} $ 来解决实例 $ i \ In \ Mathcal {i} _n $ 。

你似乎想到的是 $ \ min_ {a \ mathcal {a}} \ min_ {i \ in \ mathcal {i} _n} t( a,i)$

问题的下限是有用的,可以建立问题是如何解决的(需要更多时间来解决的问题更难,如果我们看待最简单的情况),那将很少有意义),以及测量算法从最佳算法进行多远。 例如,Merge Sort在最佳时间内解决排序问题,因为其运行时间(渐近)匹配 $ \ oomga(n \ log n)$ 下限排序问题(在基于比较的模型中)。

其他提示

“下限”可以应用于每个场景,并且单独不有意义!(下界的?)随着算法的时间复杂性的大部分时间,因此,为最坏情况(不是最佳案例)应用“下限”的最坏情况场景。 换句话说,随着时间复杂性的,对于最坏情况的情况,对于时间复杂性的“下限”将应用于最坏情况的情况。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top