谁能用简单的话解释算法的概率分析?在 Wiki 页面中找不到太多信息。
问问题
442 次
3 回答
2
假设您要确定基于比较的排序算法的预期运行时间。以下是解决此问题的方法:
- 定义算法所有可能输入的分布
- 例如,说所有 N! 排序 N 个不同数字的排列同样可能(1/N!)
- 确定每个可能输入的运行时间
- 通过对所有可能的输入求和输入的概率乘以输入的运行时间来
计算预期运行时间
- 也就是说,E[Runtime] = sum i=1,...,N! { P(i) * 运行时(i) } = 总和i=1,...,N! {运行时(i)}/N!
例如,如果您使用快速排序算法(简单地选择枢轴)执行此操作,您会发现快速排序的预期运行时间为 O(N log N),而最坏情况的运行时间为 O(N 2 )。
于 2013-08-14T18:12:57.800 回答
0
我发现了一个很棒的演示文稿,它用简单的术语解释了这一点
http://www.lsi.upc.edu/~conrado/research/talks/survey-Stellenbosch.pdf
恕我直言,它归结为“给定算法和“典型输入”随机算法的性能是什么”
其中,典型输入实际上取决于您评估算法的目的,您可以为输入值提供均匀或随机分布并测量性能特征
于 2013-08-14T09:31:12.383 回答
0
用简单的语言:
如果你想煮牛排,你会知道牛排的大小会改变烤架上烤好的时间。生牛排是您的输入,烤架是您的功能(即算法),熟牛排是您的输出。
现在,假设我问你:“你的烤架平均烤一块牛排需要多少时间?” 你会怎么做呢?概率分析表明,所有可能大小的牛排都可能适合您。因此,此方法会产生平均运行时间。此方法将为您提供一个代表这种情况的数字,因此您可以比较不同的烤架。希望有帮助!
于 2017-02-04T20:21:42.063 回答