分而治之算法以什么比例停止为 O(N * log(N))
With what ratio does the Divide and Conquer Algorithm stop being O(N * log(N))
分而治之算法的 运行 时间复杂度为 O(N * log(N)),因为它将问题拆分为 2 个较小的子问题。然后算法可以对两个较小的问题递归地再次 运行,直到找到给你 运行 时间 O(N * log(N)) 的解决方案。这是一些排序算法用来实现上述运行时间的策略。 (他们将问题分成两个大小相等的部分 -> 比率 1/2 和 1/2)
那么这个划分的比例有什么限制呢?如果将问题拆分为原始大小的 1/4 和 3/4,运行时间是否仍然为 O(N*log(N))? 1/10 和 9/10 或更少呢?
根据Akra-Bazzi theorem即可准确回答。如果我们有 T(n) = T(a*n) + T(b*n) + n
使得 a
和 b
是正常数,小于 1,并且 a + b = 1
,那么我们可以说 T(n)
将在 O(n log n)
.
因此,对于a = 1/10
和b = 9/10
,我们可以说与a = 1/2
和b = 1/2
或a = 1/4
和b = 3/4
相同。
分而治之算法的 运行 时间复杂度为 O(N * log(N)),因为它将问题拆分为 2 个较小的子问题。然后算法可以对两个较小的问题递归地再次 运行,直到找到给你 运行 时间 O(N * log(N)) 的解决方案。这是一些排序算法用来实现上述运行时间的策略。 (他们将问题分成两个大小相等的部分 -> 比率 1/2 和 1/2)
那么这个划分的比例有什么限制呢?如果将问题拆分为原始大小的 1/4 和 3/4,运行时间是否仍然为 O(N*log(N))? 1/10 和 9/10 或更少呢?
根据Akra-Bazzi theorem即可准确回答。如果我们有 T(n) = T(a*n) + T(b*n) + n
使得 a
和 b
是正常数,小于 1,并且 a + b = 1
,那么我们可以说 T(n)
将在 O(n log n)
.
因此,对于a = 1/10
和b = 9/10
,我们可以说与a = 1/2
和b = 1/2
或a = 1/4
和b = 3/4
相同。