随笔分类 - 3 常用算法思想
穷举、递归与分治、贪心、回溯、数值概率
回溯法的应用举例
摘要:子集合问题 求集合S的所有子集合(不包括空集),可以按照框架一的算法写代码。 1 #include<iostream> 2 using namespace std; 3 int s[4]={3,5,7,9}; 4 int x[4]; 5 int N=4; 6 7 void print() { 8 f
阅读全文
回溯法
摘要:回溯法 所谓”搜索“是指利用计算机的高性能有目的地穷举一个问题的部分或所有的解(候选解),然后依次检查每一个候选解,在检查完所有或部分候选解后,即可找到满足某种条件所需要的解。 回溯法的基本概念 回溯和分枝定界是目前搜索算法中比较常用的两种控制策略。通过它们可以避免对很大的候选解集合进行检查,同时能
阅读全文
动态规划算法
摘要:R.Bellman等人于1951年在研究多阶段决策过程优化问题时所创立的一种用于解决此类过程优化问题的新方法。 逆向递归的方法称为动态规划法(Dynamic Programming). 多阶段决策 有一类问题可以将其活动过程分解成若干个相互联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到
阅读全文
贪心算法应用-最小生成树
摘要:在一个有权连通图(网络)中,生成树的各边权值之和称为生成树的代价。在网络的所有生成树中,权值最小的那颗生成树称为最小代价生成树(Minimum Cost Spanning Tree),简称为最小生成树Minimum Spanning Tree)。讨论问题就是如何寻找一颗各边权的总和最小的生成树。 Q
阅读全文
贪心算法应用-单元最短路径
摘要:最短路径问题是用图中的顶点代表不同的城市,用图中顶点之间的连线即边上权值表示不同城市之间路径的长度,在从一个顶点到另一个顶点之间的所有路径中,求权值之和最小的路径的问题即为最短路径问题。 单元最短路径问题可以描述为在一个带有权值的有向图中,从一个顶点到另一个顶点存在多条通路。要求找一条从初始顶点S(
阅读全文
贪心算法应用-哈夫曼编码
摘要:哈夫曼编码应用于数据文件和图像压缩的编码方式。其压缩率通常在20%~90%之间、在进行远距离通信时,通常需要把将要传送的文字转换为由二进制字符组成的字符串,并使要传送的电文总长度尽可能的短。显然只要将点文章出现次数多的字符采用尽可能短的编码,就可以减少要传送的电文总长度。 哈夫曼编码的核心思想: (
阅读全文
贪心算法
摘要:贪心算法是指在对问题求解时,总是作出当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所得的仅是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 4种硬币,面值为二角五分、一角、五分、一分。现在有人用1
阅读全文
分治法
摘要:分治法就是将一个难以解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之,递归法是分治法的实现手段。 问题:假定给出一个装16个硬币的袋子,袋子中有一个伪造的硬币,其质量比真硬币轻,现在任务是找出这个伪造的硬币。为了完成这个任务,将提供一台可用来比较两组硬币重量的仪器,利用这台仪器,可
阅读全文
递归法
摘要:递归法(Recursion)是一种在函数或方法中调用自身的编程技术,在计算机方法中,使用递归技术往往使函数的定义和算法的描述简洁且易于理解。任何可以用计算机求解的问题所需要的计算时间都与其规模有关。而且规模越小,解题所需要的计算时间通常越小,从而比较容易处理。 简而言之,递归思想就是用与自身问题相似
阅读全文
浙公网安备 33010602011771号