
算法—贪心算法
JeffCoding
热爱移动互联网,热爱安卓,热爱Java
展开
-
贪心算法详解
贪心算法基本原理贪心算法的核心就是贪,就是总是做出当前看来最优的选择,因此可知,贪心算法不从整体去考虑,它做出的选择也是局部最优选择,从而达到全局优化选择。虽然贪心算法不一定能得到最优解,但是对很多问题,它是能够得到整体最优解的,因此贪心算法是否能到最优解,需要严格证明。贪心算法产生有化解的条件贪心选择性质: 若一个问题的全局最优解可以通过局部最优解来得到,则说明该问题具有贪心选择性质。优化子原创 2016-12-08 23:18:15 · 14870 阅读 · 3 评论 -
贪心算法 赫夫曼编码问题(Huffman)
赫夫曼编码是一种广泛用于数据压缩的问题,该算法的主要优势在于节约了存储和传输成本。 举一个例子: 假设要传输的数据为那么传输成本就是: 45*3 + 30 * 3 + 29 * 3 + 10 * 3 + 8 * 3 + 5 * 3 = 381个字符我们可以使用赫夫曼编码思想来解决先合并最小频率的2个字符对应的子树,计算合并后的子树的频率;重新排序各个子树;重复步骤1重复步骤2对二叉树原创 2016-12-10 11:06:31 · 4546 阅读 · 1 评论 -
贪心算法 迪杰斯特拉算法求最短路径
之前我们学习过弗洛伊德算法求最短路径,但是使用了三重循环,导致时间复杂度是O(n^3),而迪杰斯特拉算法应该是求最短路径的最好的算法了。迪杰斯特拉算法原理迪杰斯特拉算法实际上是使用贪心算法和bfs来求最短问题的,它的核心思想是,按照顶点来迭代,每一次迭代挑选当前离源点最短的路径(贪心思想),然后以挑选的这个最短路径的顶点作为源点,再发起贪心选择当前离源点最短的路径。它的核心实现使用了三个数组: d原创 2016-12-11 14:19:47 · 12331 阅读 · 2 评论