平均案例复杂度示例

Average case complexity examples

我找到了很多关于最坏情况和最好情况复杂度的示例,但在大多数情况下,平均情况复杂度与最坏情况复杂度相同。是否有平均情况复杂度与最坏情况复杂度不同的示例?如果有,请在递归和迭代的情况下进行一些处理。

是的,

平均案例复杂度在绝对值上往往介于最佳和最差案例之间。 但是,复杂性取决于输入大小和分布 所以它们用 n 的函数表示,这使得它们要么 大多数时候等于最好的情况或最坏的情况

所以,没有你要找的具体答案。

此外,平均案例复杂度有各种与之相关的约束,例如

* A probability distribution on the inputs has to be specified.
* Simple assumption: all equally likely inputs of size n.
* Sometimes this assumption may not hold for the real inputs.
* The analysis might be a difficult math challenge.
* Even if the average-case complexity is good, the worst-case
one may be very bad.

所以,不太可能被使用

基于使用枢轴进行分区的算法通常在最坏情况下性能不佳,因为可能会选择低效分区(即大多数元素最终都在同一侧):

  • Quicksort 在平均情况下的时间复杂度为 O(n log n),但在最坏的情况下为 O(n2)。
  • Quickselect 在平均情况下的时间复杂度为 O(n),但在最坏的情况下为 O(n2)。

请注意,快速排序和快速选择都可以使用或不使用递归来实现。

基于hashes also typically have poor worst-case performance, because of the possibility of hash collision. For example, basic operations on a hash table的算法在平均情况下是O(1)时间,但在最坏情况下是O(n)时间。

更一般地说,为在大致均匀的数据上实现高效性能而设计的算法可能在非常不均匀的数据上具有更差的性能,例如 interpolation search 在均匀数据上从平均 O(log log n) 降级在最坏的情况下数据到 O(n)。