如果基本情况是 O(n),则递推式是多少?

发布于 2024-10-16 03:02:54 字数 562 浏览 3 评论 0原文

我们必须创建一个算法并找到并解决它的递归问题。找到重复性让我难住了。

foo(A, C)
  if (C.Length = 0)
    Sum(A)
  else
    t = C.Pop()
    A.Push(t)
    foo(A,C)
    foo(A,C)

最初 A 是空的,C.Length = n。我无法给出真正的算法,因为这是不允许的。

我的导师告诉我,我可以尝试使用 2 个变量。这就是我想到的:

T(n, i) = { n                if i =  0
            2*T(n, i-1) + C  if i != 0

我无法解决它,所以我也尝试仅用一个变量来解决递归:

T(n) = { n0                  if n =  0
         2*T(n-1) + C        if n != 0

其中 n0 是 n 的初始值。

如何从基本情况复杂度为 O(n) 的算法中形成递归?

We have to create an algorithm and find and solve its recurrence. Finding the recurrence has me stumped..

foo(A, C)
  if (C.Length = 0)
    Sum(A)
  else
    t = C.Pop()
    A.Push(t)
    foo(A,C)
    foo(A,C)

Initially A is empty and C.Length = n. I can't give the real algorithm because that's not allowed.

My instructor told me that I might try to use 2 variables. This is what I came up with:

T(n, i) = { n                if i =  0
            2*T(n, i-1) + C  if i != 0

I couldn't solve it, so I also tried to solve a recurrence with just one variable:

T(n) = { n0                  if n =  0
         2*T(n-1) + C        if n != 0

Where n0 is the initial value of n.

How do you form a recurrence from an algorithm where the complexity of the base case is O(n)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生生不灭 2024-10-23 03:02:54

如果 C 的大小为 n,则令 f(n) 为复杂度。设 N 为 C 的原始大小

。则 f(0) = N 且 f(n) = 2 * f(n - 1) + c。

其解为 f(n) = N * 2^n + (2^n - 1) * c,因此 f(N) = O(N * 2^N)。

Let f(n) be the complexity if C is of size n. Let N be the original size of C.

Then f(0) = N and f(n) = 2 * f(n - 1) + c.

This has the solution f(n) = N * 2^n + (2^n - 1) * c, and so f(N) = O(N * 2^N).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文