算法和能力
文章平均质量分 68
雪狐晨光
流水落花春去也
展开
-
高效算法之贪心算法(第16章)
类似于动态规划,贪心算法通常用于最优化问题,我们做出一组选择来达到最优解。贪心算法的思想是每步选择都追求局部最优。一个最简单的例子是找零问题,为了最小化找零的硬币数量,我们反复选择不大于剩余金额的最大面额的硬币。贪心算法对很多问题都能够获得最优解,而且速度比动态规划快很多。但是,我们并不能简单的判断贪心算法是否有效。贪心算法并不保证得到最优解,但对很多问题确实可以求的最优解。原创 2016-03-15 22:15:21 · 651 阅读 · 0 评论 -
中位数和顺序统计量(第9章)
学习由n个不同的树的集合中选择第i个顺序统计量的问题。 输入:一个包含nn个(互异的)数的集合AA,1≤i≤n1 \leq i \leq n的整数i。 输出:元素x∈Ax \in A,并且 AA中恰好有i个元素小于它。原创 2016-03-03 16:36:59 · 693 阅读 · 0 评论 -
最小生成树:Kruskal算法 和 Prim算法(第23章)
一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树。Kruskal算法 和 Prim算法都是使用贪心策略来解决最小生成树的问题。原创 2016-03-17 21:22:51 · 494 阅读 · 0 评论 -
高效算法之动态规划(第15章)
动态规划通常用来解决最优化问题,在这类问题中,我们通常做出一组选择来表达最优解。在做出这个选择的同时,通常会生成与原问题形式相同的子问题。当多于一个选择子集都生成相同的子问题时,动态规划技术通常很有效,其关键技术就是对每一个这样的子问题都保存其解,当其重复出现的时候即可避免重复求解。这种思想可以将指数时间的算法转换为多项式时间的算法。原创 2016-03-07 21:54:14 · 357 阅读 · 0 评论 -
动态规划之矩阵链乘法(第15章)
适合应用动态规方法的求解最优化问题应该具备两个要素:最优子结构和子问题重叠。使用动态规划方法求解最优化问题的第一步就是刻画最优解的结构。如果一个问题的最优解包含子问题的最优解,我们就成此类问题具有-最优解结构-性质。矩阵链乘法的程序设计思路很好的契合了动态规划的特点。原创 2016-03-09 11:04:33 · 627 阅读 · 0 评论 -
动态规划之最长公共子序列
最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列顺序的基础上。原创 2016-03-10 18:10:15 · 514 阅读 · 0 评论 -
动态规划之最优二叉搜索树
利用最优二叉搜索树来实现树的搜索代价最小。原创 2016-03-11 15:24:20 · 13468 阅读 · 3 评论 -
汉密尔顿路径(哈密顿路径)解析
哈密顿路径也称作哈密顿链,指在一个图中沿边访问每个顶点恰好一次的路径原创 2016-11-22 11:33:44 · 29271 阅读 · 0 评论