简单语言算法的概率分析?

时间:2013-08-14 09:17:39

标签: algorithm probability

有人能用简单的词解释算法的概率分析吗?在Wiki页面找不到太多信息。

3 个答案:

答案 0 :(得分:2)

假设您要确定基于比较的排序算法的预期运行时间。以下是解决此问题的方法:

  • 定义算法所有可能输入的分布
    • 例如,说全N!排序的排列N个不同的数字同样可能(1 / N!)
  • 确定每个可能输入的运行时间
  • 通过对所有可能的输入进行求和来计算期望的运行时输入的概率乘以输入的运行时间
    • 即,E [Runtime] = sum i = 1,...,N! {P(i)* Runtime(i)} = sum i = 1,。 ..,N! {Runtime(i)} / N!

例如,如果您使用快速排序算法(通过选择枢轴),您会发现快速排序的预期运行时为O(N log N),而最坏情况运行时为O(N 2 )。

答案 1 :(得分:0)

我找到了一个很棒的演讲,用简单的术语解释了这个

http://www.lsi.upc.edu/~conrado/research/talks/survey-Stellenbosch.pdf

恕我直言,它归结为“给定算法和”典型输入“随机算法的性能是什么”

其中,典型输入实际上取决于您评估算法的目的,您可以为输入值提供统一或随机分布并测量性能特征

答案 2 :(得分:0)

用简单的语言:

如果你想煮牛排,你就会知道牛排的大小会改变烤架上准备的时间。生牛排是你的输入,烤架是你的功能(即alg。),煮熟的牛排是你的输出。

现在,我要问你:"平均烧烤牛排需要多长时间?"你会怎么做? 概率分析表明所有可能的牛排尺寸都可以按照你的方式进行。因此,这种方法会产生平均运行时间。这种方法会为您提供一个代表这种情况的数字,因此您可以比较不同的格栅。 希望有所帮助!