【算法导论】笔记
文章平均质量分 88
小与米
一只不懈努力的菜鸟,比较熟悉的语言C/C++,喜欢钻研算法 O(∩_∩)O哈哈~
展开
-
【动态规划】矩阵链乘法
矩阵链乘法 求解矩阵链相乘问题时动态规划算法的另一个例子。给定一个n个矩阵的序列(矩阵链),我们希望计算它们的乘积 A1A2...An 为了计算表达式,我们可以先用括号明确计算次序,然后利用标准的矩阵相乘算法进行计算。完全括号化(fully parenthesized):它是单一矩阵,或者是两个完全括号化的矩阵乘积链的积。 例如如果有矩阵链为,则共有5种完全括号化的矩阵乘原创 2015-12-27 14:35:39 · 40945 阅读 · 4 评论 -
【动态规划】原理
动态规划原理 虽然我们已经用动态规划方法解决了两个问题,但你可能还是弄不清应该在何时使用动态规划。接下来,我们关注适合应用动态规划方法求解的最优化问题应该具备的两个要素:最优子结构和子问题重叠。以及再次讨论备忘方法,更深入地讨论在自顶向下方法中如何借助备忘机制来充分利用子问题重叠特性。最优子结构 用动态规划方法求解最优化问题的第一步就是刻画最优解的结构。如果一个问题的最优解原创 2015-12-28 11:34:44 · 1572 阅读 · 0 评论 -
【动态规划】最长公共子序列
最长公共子序列问题 最长公共子序列问题(longest-common-subsequence problem)给定两个序列X=和Y=,求X和Y长度最小的公共子序列(可以不连续)。接下来将展示如何用动态规划方法高效地求解LCS问题。步骤1:刻画最长公共子序列的特征 如果用暴力搜索方法求解LCS问题,就要穷举X的所有子序列,对每个子序列检查它是否也是Y的子序列,记录找到的最长原创 2015-12-29 13:06:31 · 772 阅读 · 0 评论 -
【算法导论】最优二叉搜索树
最优二叉搜索树 假定设定一个程序,实现英语文本到法语的翻译。对英语文本中出现的灭个单词,我们需要查找对应的法语单词。为了实现这些查找槽,我们可以创建一棵二搜索叉树,将n个英语单词作为关键词,对应的法语单词作为关联数据。由于文本中的每个单词都要进行搜索,我们希望花费在搜索上的总时间尽量减少。通过红黑树或其他平衡搜索树结构,我们可以假定每次搜索时间为O(lgn),但是,单词出现的频率是不原创 2015-12-29 21:55:26 · 17806 阅读 · 7 评论 -
【动态规划】钢条切割
花了几天的时间钻研算法导论里的动态规划,做个总结。首先,算法导论真是经典,可惜水平有限,于是乎忽略了一些推理与数学理论,留着有机会再深入,其次可能自己的理解不是很到位,有错误的地方欢迎提出,谢谢。 动态规划(dynamic programming)与分治算法相似,都是通过组合子问题的解来求解原问题(在这里,“programming”指的是一种表格法,并非编写计算机程序)。 一、与分原创 2015-12-26 14:01:34 · 1041 阅读 · 0 评论