【问题标题】:Analyzing Recursive Algorithms分析递归算法
【发布时间】:2011-07-28 02:25:22
【问题描述】:

我经常被似乎需要神奇的逻辑飞跃(由于墨水短缺导致大量缩小的符号)的递归算法稍微难住了。

我意识到,另一种方法是简单地记住所有常见算法的大 O 表示法,但在某些时候,这种方法会失败。例如,我很高兴公开冒泡排序、插入排序、二叉树插入/删除、归并排序和快速排序的性能,但不要让我提出 AVL 树或 Djikstra 的最短路径算法的性能。我的脑袋。

我在哪里可以得到:

  1. 关于使用单词而不是大量符号的递归算法分析的讨论
  2. 练习题以确认我新获得的理解实际上是正确的

例子:

不好:

西格玛 v e T (1+cv)

可能的“好”等价物:

树中 1 个节点所需的工作量(即 1 + 一个节点的子节点数),然后对树中原始节点为根的每个元素执行一次。

旁注:

我可以简单地观看每个算法的视频,因为没有办法让一个人的声音变成下标(或任何其他扭曲),但我怀疑与阅读文字描述相比,这会花费过多的时间。

更新:

这里是解决问题的 1 个来源:http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/(这解决了上面的 #2)

【问题讨论】:

  • 你应该学会适应用符号来传达这些想法。它高效、准确,是几乎每个人都使用的语言。
  • @Jason:如果您是 CS 学生或专注于数学和理论。对于一个优秀的程序员来说,理解其中的含义就足够了。
  • +1 对杰森的观点。为了让记谱和分析更舒服(实际上比大多数人更好!),我推荐这本精彩的书 Concrete Mathematics: A Foundation for Computer Science 前两章就足够了(可能还有最后一章),但是写得很好,让人忍不住想读其他章节。
  • 我应该评论说我在原始帖子中大大低估了自己。 :D 我对 sigmas、aleph-nulls 等东西非常方便。当我获得学士学位时,我的入门课程要求教科书中的材料呈现方式我只是遇到了麻烦(因此我对墨水短缺的评论)。

标签: algorithm analysis


【解决方案1】:

TopCoders 有大量的教程和详尽的解释。你试过了吗?

http://www.topcoder.com/tc?d1=tutorials&d2=alg_index&module=Static

【讨论】:

  • 好吧,他们关于递归的特别教程(Part 1Part 2)虽然非常好,但没有深入分析。
  • 我已经查看了教程,并且必须同意几乎没有任何关于分析的内容。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多