【发布时间】:2023-03-03 09:02:22
【问题描述】:
大小为n 的实例被划分为大小为n-a 的p≥2 实例,其中a 是一个小的integer,p 是一个constant。这个操作(即划分实例)的计算成本是一个单位,有C(0)=1.
我试图找出这种设计的复杂性。我无法将单词放入等式中,我认为递归应该是这样的:
C(n) = (n-a)*C(n/p) + 1
这对吗?
【问题讨论】:
-
不,不是。再读一遍这个问题,确定创建的子问题的数量和每个子问题的大小。目前,这些等式是错误的。
-
请记住,公式是:C(size) = (子问题的数量)*C(子问题的大小) + (划分成本)。你都知道,只要正确解释公式。我不会直接回答这个问题,我希望你这样做。
-
也知道,如果没有人回答,而您确实想通了,您就可以回答自己的问题。如果您这样做,请务必提供可靠的解释以及您的答案。
-
我不赞成这个问题,因为我相信 SO 不是家庭作业帮助的地方。它没有为 SO 存档添加任何有用的东西:没有人会搜索“低效的分而治之算法”,而且该示例非常简单和人为,对工作的程序员有任何帮助。当你没有像其他人那样学习时,它也会占用其他人的时间。 (我知道我们都有自己的特殊情况,有时非常困难,但这是我的看法。)
-
@SergeyOrshanskiy 这是应该避免分而治之算法的两种情况之一......作为程序员,我认为知道何时编写迭代或递归代码很重要。
标签: algorithm complexity-theory big-o divide-and-conquer