概率空间和预期运行时间:它们是什么?

时间:2013-03-15 20:50:09

标签: algorithm big-o

我遇到过一个问题,我要计算或说明算法的预期运行时间,并说明这样一个运行时间的概率空间。我坦率地说,我真的不知道我应该做什么。预期运行时间和平均运行时间之间的差异是什么,概率空间是什么?为什么需要它?

1 个答案:

答案 0 :(得分:4)

他们要求您将算法的运行时间建模为在示例空间上定义的随机变量,其中包含该算法的输入,并计算该随机变量的期望相对于在样本空间上定义的某些概率,作为平均值它的概率值。

这是一个例子。考虑一下Quicksort。 Quicksort是一种排序算法,因此将其输入集建模为大小为N的排列集是有意义的。因此,样本空间是大小为N的排列集。赋予该样本空间具有均匀概率,并且然后将运行时间T_N定义为随机变量,该变量将样本空间的元素s映射到输入s上算法的相应运行时间。然后,期望T_N是其在样本空间的元素上的值的平均值,即,在大小为N的排列集合上的平均值。如您所知,E [T_N]是O(N * log(N)) (E [X]是随机变量X的期望。)

前一段中唯一需要注意的是,您必须在数学上定义“运行时间”的含义。在实践中,您必须采取算法所做的一些基本操作,例如排序算法中的交换次数或比较次数,并将它们作为精确定义的随机变量进行研究。是。之后,如果您需要计算环境的预测模型,则需要测量系统执行每个此类基本操作所花费的时间,并将预期运行时间计算为平均基本操作次数的加权总和乘以对于模型中包含的每个操作,系统中该操作的执行时间(后面的示例如下)。

在Quicksort的情况下,已经详细研究了比较次数C_N,并且其期望E [C_N]约为2 * N * ln(N)-0.846 * N.交换次数S_N也是如此,其期望值约为0.333 * N * ln(N)-1.346 * N.这些结果已在本文末尾引用的书的第1章中得到证实。

如果您将比较的运行时间测量为T_c,并将交换的运行时间测量为系统中的T_s,则运行时间的预测将为E [T_N] = T_c * E [C_N] + T_s * E [S_N]。然后,您可以替换E [C_N]和E [S_N]的先前表达式,以获得精确的预测公式。

也许你可以从回顾离散概率理论的基础知识,和/或查看像Sedgewick's和Flajolet“算法分析导论”这样的算法分析教科书中获益。