我理解为算法执行复杂性分析的不同情况的机制,但是已经给出了几个场景,并且已经被问到我将针对每种情况使用哪种类型的分析。
分析类型是“最坏情况”,“平均情况”,“摊销”。
当然为了确保算法尽可能高效,我们总是会选择使用“最坏情况”?
我意识到这是主观的,但使用每种分析方法肯定都有优点吗?
这是我最近在求职面试中给出的4种情景,除了关于飞行员的情况之外,他们无法决定其中任何一种情况。
一家公司发明了一个新的网络搜索引擎,并希望分析一下常见搜索查询返回结果的速度。
一名飞行员驾驶飞机,他在控制杆上的输入通过软件计算转换为机翼表面。飞机的稳定性取决于快速响应;我们想分析飞机是否安全。
如果先前未排序,则在第一次进行查询时对数据库进行排序。我们想要分析使用此数据库系统执行多个连续查询所需的时间。
云计算公司托管天气预报算法,需要保证在4小时内根据压力和其他观测数据计算下一次全国每日预报。
答案 0 :(得分:1)
对于实时系统,您需要最坏情况的复杂性;这涵盖了您的飞机安全和有保障的国家预测。
在许多应用程序中,您可能需要摊销和平均案例分析(前提是您知道“平均情况”分布)或甚至是最坏情况下的平滑分析。在某些系统中,“最佳”算法的选择取决于您是否谈论“最差”或“平均”,有时它们会并行运行多个算法,无论哪个结束都会更快地中止其他算法和输出。
答案 1 :(得分:0)
对软件操作的要求决定了您需要查看的算法的特征。换句话说,没有一般的答案。你所谓的“主观”是“它取决于具体情况”。