【问题标题】:Analysis of Algorithms: Why Average Case Analysis depends on Probability & Distribution of Inputs算法分析:为什么平均案例分析取决于输入的概率和分布
【发布时间】:2016-11-07 03:21:21
【问题描述】:

我正在学习算法分析。在我进入平均案例分析之前很有趣。与最坏和最好的情况不同,平均情况在数学上并不简单。在寻找最坏和最好的情况时,我可以使用现有的线索(例如 For最坏的情况:喜欢一个需要最多操作/时间的案例)才能开始找到它们。但是,在平均案例中,这样的线索不可用。为了确定什么是平均案例?我必须假设输入的概率和分布。但我没有找到非常简单的解释和示例,这清楚地帮助我意识到,为什么平均案例分析取决于 概率分布 输入。请帮助我提供简单而令人信服的解释和示例。谢谢

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    您可以通过推理平均案例是现实生活中实际案例的理想平均值来考虑这一点。时间/空间复杂度的“实际情况”取决于实际输入。

    但是如果依赖不是线性的,你不能用平均输入计算得到平均复杂度,你需要考虑输入的整个分布。

    例如为了在创建timsort 时比较排序算法的复杂性,使用了一种见解,即输入数组/列表不是随机的,但通常包含已经预先排序的区域 - 因此收集了真实的样本数据并将其用于分析/性能测试...

    我不确定您正在研究的 Probability&Distribution 文献中的确切含义,很可能对于连续/离散函数有 2 个相关概念:“probability density function” and “cumulative distribution function”,在这种情况下我们可以将其视为同义词。

    【讨论】:

    • 感谢@Aprillion 的快速回复,如果依赖不是线性的-您是指时间和实际输入之间的依赖。另外你没有说任何关于概率的内容。你能解释一下吗。谢谢
    【解决方案2】:

    为了定义任何平均值,您必须知道您要对哪些事物进行平均,以及每个事物的可能性有多大。

    这里你平均的是具有特定输入的程序的操作次数。

    因此,您需要知道可能的输入是什么,以及每种输入的可能性有多大。您可以将其称为输入的概率分布,但这听起来比实际更复杂。

    例如,您可以分析快速排序对包含数字 1...N 的随机打乱数组执行的平均比较次数。那么可能的输入是集合{1,2,...,N} 的所有排列,并且每个可能的输入都是同样可能的(因此概率为 1/N!)。计算平均值并不容易,但您可以在大多数优秀的算法书籍中找到推导(例如:Sedgewick)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多