比较给定步骤的两种算法的复杂性
Compare the complexity of two algorithms given steps
假设您有一个大小为 n 的数据集和两个处理该数据的算法
以同样的方式设置。算法 A 用了 10 个步骤来处理数据集中的每个项目。算法 B 在 100 个步骤中处理每个项目。会有什么复杂性
属于这两种算法吗?
我从问题中得出算法 A 完成每个项目的处理的复杂度是算法 B 的 1/10,并使用问题中接受的答案中提供的图表:What is a plain English explanation of "Big O" notation? 我是得出结论,算法 B 的复杂度为 O(n^2),算法 A 的复杂度为 O(n),但我很难在没有实现的情况下得出超出此范围的结论。
您需要多个数据点才能开始对时间复杂度做出任何结论。算法A和算法B之间10步和100步的差异可能有很多不同的原因:
Additive Constant difference: 无论输入如何,算法A总是比算法B快90步。在这种情况下,两种算法将具有相同的时间复杂度。
标量乘法差异:无论输入如何,算法 A 总是比算法 B 快 10 倍。在这种情况下,两种算法将具有相同的时间复杂度。
您提出的情况,其中 B 是 O(n^2),A 是 O(n)
很多很多其他的可能性。
假设您有一个大小为 n 的数据集和两个处理该数据的算法 以同样的方式设置。算法 A 用了 10 个步骤来处理数据集中的每个项目。算法 B 在 100 个步骤中处理每个项目。会有什么复杂性 属于这两种算法吗?
我从问题中得出算法 A 完成每个项目的处理的复杂度是算法 B 的 1/10,并使用问题中接受的答案中提供的图表:What is a plain English explanation of "Big O" notation? 我是得出结论,算法 B 的复杂度为 O(n^2),算法 A 的复杂度为 O(n),但我很难在没有实现的情况下得出超出此范围的结论。
您需要多个数据点才能开始对时间复杂度做出任何结论。算法A和算法B之间10步和100步的差异可能有很多不同的原因:
Additive Constant difference: 无论输入如何,算法A总是比算法B快90步。在这种情况下,两种算法将具有相同的时间复杂度。
标量乘法差异:无论输入如何,算法 A 总是比算法 B 快 10 倍。在这种情况下,两种算法将具有相同的时间复杂度。
您提出的情况,其中 B 是 O(n^2),A 是 O(n)
很多很多其他的可能性。