摘要: 前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优选择来产生一个全局最优解。书中先从活动选择问题来引入贪心算法,分别采用动态规划方法和贪心算法进行分析。本篇笔记给出活动选择问题的详细分析过程,并给出详细的实现代码进行测... 阅读全文
posted @ 2014-11-06 23:19 Jessica程序猿 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 1、前言: 接着学习动态规划方法,最优二叉查找树问题。二叉查找树参考http://www.cnblogs.com/Anker/archive/2013/01/28/2880581.html。如果在二叉树中查找元素不考虑概率及查找不成功的情况下,可以采用红黑树或者平衡二叉树来搜索,这样可以在O(l... 阅读全文
posted @ 2014-11-06 19:59 Jessica程序猿 阅读(1446) 评论(0) 推荐(1) 编辑
摘要: 1、基本概念 一个给定序列的子序列就是该给定序列中去掉零个或者多个元素的序列。形式化来讲就是:给定一个序列X={x1,x2,……,xm},另外一个序列Z={z1、z2、……,zk},如果存在X的一个严格递增小标序列,使得对所有j=1,2,……k,有xij =zj,则Z是X的子序列。例如:Z={B,... 阅读全文
posted @ 2014-11-06 16:12 Jessica程序猿 阅读(851) 评论(0) 推荐(0) 编辑
摘要: 前言:今天接着学习动态规划算法,学习如何用动态规划来分析解决矩阵链乘问题。首先回顾一下矩阵乘法运算法,并给出C++语言实现过程。然后采用动态规划算法分析矩阵链乘问题并给出C语言实现过程。1、矩阵乘法 从定义可以看出:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A... 阅读全文
posted @ 2014-11-06 10:14 Jessica程序猿 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 前言:动态规划的概念 动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。分治算法是指将问题划分为一些独立的子问题,递归的求解各个问题,然后合并子问题的解而得到原问题的解。例如归并排序,快速排序都是采用分治算法思想。本书在第二章介绍归并排序时,详细介绍了分治算法... 阅读全文
posted @ 2014-11-06 09:11 Jessica程序猿 阅读(810) 评论(0) 推荐(0) 编辑