大数据平台中的时间复杂度表示法

数据挖掘 大数据 算法 地图减少
2022-03-14 11:38:58

我正在为 Hadoop/MapReduce 框架重新设计一些经典算法。我想知道是否有任何既定的方法来表示 Big(O) 类型的表达式来测量时间复杂度?

例如,假设,n(=10 亿)个数字的简单平均计算是使用简单 for 循环的 O(n) + C 操作,或 O(log) 为了简单起见,我假设除法是一个常数时间操作. 如果我打破 MapReduce 的这种大规模可并行化算法,通过将数据划分到 k 个节点上,我的时间复杂度将简单地变为 O(n/k) + C + C'。在这里,C' 可以假设为作业计划时间开销。请注意,没有涉及洗牌,reducer 的工作几乎是微不足道的。

我对使用数据迭代循环的算法进行更完整的分析感兴趣,并涉及大量的洗牌和归约器操作。如果可能的话,我想合并 I/O 操作和数据的网络传输。

1个回答

大 O 时间复杂度旨在分析抽象算法,独立于实现。

如果您对实际实现的系统的性能感兴趣,包括改组、I/O 操作和网络传输,那么查看基准测试/分析会更有用。基准测试/分析通过查找特定操作的观察时间来查找经验性能。