0

我了解对算法进行不同复杂性分析案例的机制,但已经给出了一些场景,并被问到我将针对每种案例使用哪种类型的分析。

分析的类型是“最坏情况”、“平均情况”、“摊销”。

当然,为了确保算法尽可能高效,我们总是会选择使用“最坏情况”吗?

我意识到这是主观的,但使用每种分析方法肯定都有优点吗?

这是我在最近的一次工作面试中遇到的 4 个场景,除了关于飞行员的场景之外,我无法决定其中的任何一个。

一家公司发明了一种新的网络搜索引擎,并希望分析它返回一组常见搜索查询结果的速度有多快。

一名飞行员驾驶飞机,他在控制杆上的输入通过软件计算转换为机翼表面涂层。飞机的稳定性取决于快速反应;我们要分析飞机是否安全。

如果以前未排序,则在第一次进行查询时对数据库进行排序。我们想分析使用这个数据库系统执行多个连续查询需要多长时间。

托管天气预报算法的云计算公司,需要保证在 4 小时内根据压力和其他观测数据计算下一次全国每日预报。

4

2 回答 2

1

对于实时系统,您需要最坏情况的复杂性;这涵盖了您的飞机安全和有保证的国家预测。

在许多应用程序中,您可能需要摊销和平均情况分析(前提是您知道“平均情况”分布),甚至在最坏情况下进行平滑分析。在某些系统中,“最佳”算法的选择取决于您是在谈论“最差”还是“平均”,有时它们会并行运行多个算法,并且以更快的速度完成其他算法并输出。

于 2018-01-13T00:20:34.807 回答
0

对软件操作的要求决定了您需要查看算法的哪些特征。换句话说,没有普遍的答案。您所说的“主观”是“视情况而定”。

于 2018-01-07T21:02:26.343 回答