贪心算法
桃三岁
这个作者很懒,什么都没留下…
展开
-
算法设计——荷马史诗(K叉哈夫曼 贪心)
题目题目链接:荷马史诗题目描述:追逐影子的人,自己就是影子。 ——荷马Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使得它变得短一些。一部《荷马史诗》中有 n 种不同的单词,从 1 到 n 进行编号。其中第 i 种单词出现的总次数为 wi。Allison 想要用 k 进制串 si 来替换第 i 种单词,使得其满足如下要求:对原创 2020-05-16 16:01:32 · 476 阅读 · 0 评论 -
算法设计——Fence Repair(2叉哈夫曼树)(贪心)
问题题目链接:Fence Repair题目描述及分析:没啥好说的,就是求一个花费问题,每段木头花的钱就是自己的长度,我们可以用哈夫曼树来解决这个问题,因为使用哈夫曼时我们得到的总权重一定最小。比如长为21的木板,要分为5,8,8三段如果我们先把木板分为5,16那么花费21,然后再将16分为8和8,一共花费37。如果我们先分为13和8,再将13分为5和8,那么花费34所以我们可以通过哈夫曼树找到最小花费。思路,求哈夫曼树的过程为:先将所有元素进行排序放入集合①选出最小的两个元素②将原来最小原创 2020-05-15 15:44:46 · 346 阅读 · 0 评论 -
算法设计——最短路(Floyd)(贪心)
题目链接:最短路求最短路径一般有两种算法:1.弗洛伊德2.迪杰斯特拉关于迪杰斯特拉算法→最短路径两算法的区别:弗洛伊德算法是可以解决任意两点间的最短路径的一种算法Dijkstra算法是用于求解图中某源点到其余各顶点的最短路径的算法那我们来看看弗洛伊德算法思想通过Floyd计算图中各个顶点的最短路径时,需要引入两个矩阵,矩阵D中的元素表示顶点i到顶点j的距离。矩阵P中的元素表示顶点i到顶点j经过了P记录的值所表示的顶点。但在此题中不需要记录P过程顶点数为n的话,就对初始矩阵进行n次更新原创 2020-05-15 15:06:22 · 2781 阅读 · 0 评论 -
算法设计——最小生成树(Kruscal与Prim含练习)(贪心)
两种算法Kruscal与PrimPrim算法思想:这个算法就是先将所有点放入集合S,拿出一点放入集合V①寻找与集合V中相连的且距离最小的顶点②将此顶点从集合S中拿出来放入集合V③重复上述步骤,直到S为空集(代表所有点都已使用)具体过程就是:看看练习:最小生成树Prim以及Agri-Net这一类的题都可以用Prim算法实现只是数据规模形式可能需要修改看看代码:#include<stdio.h>#define MAX 105#define inf 100000in原创 2020-05-15 13:58:41 · 699 阅读 · 0 评论 -
算法设计——Dijkstra最短路径(贪心算法)
问题已知一个图求某个顶点出发到达其他顶点的最短路径分析已知一个图的顶点和其各边权重求某个顶点s出发到达其他顶点的最短路径G=(V,E,W) V={1,2,3…n} s=1那么我们分为以下几个步骤:1.初始S={1}2.对于i∈V-S,计算1到i的相对S的最短距离,长度为dist[i]3.选择V-S中dist值最小的j,将j加入S,修改V-S中的dist值4.继续上述过程,直...原创 2020-04-25 12:38:23 · 1257 阅读 · 0 评论 -
算法设计——哈夫曼编码(贪心算法)
问题已知一组字符的频率,求其哈夫曼编码即构造一棵哈夫曼树(字符均在叶子节点上)如果使用固定编码会导致空间浪费,所以用哈夫曼编码减少浪费分析平均传输位数B=∑(字符出现的频率fX字符所在的叶子在书中的深度d)我们要使平均传输位数最小,那么我们就需要构建哈夫曼树哈夫曼树:每次从已知频率中选择频率最小的两个进行构建,使用了频率最小的后需要将两频率和加起来放在已知中,同时删除使用过的频率最...原创 2020-04-25 11:18:59 · 4838 阅读 · 0 评论 -
算法设计——最优装载问题(贪心算法)
问题描述分析满足贪心选择性质和最优子结构性质贪心选择性质设集合{x1,x2,x3,x4,xn}是箱子重量从小到大的排序,如果集合A是此问题的一个最优解,如果A的第一个箱子k=1,那么A满足贪心选择性质的最优解,如果k!=1,那么存在一个集合B=A-{k}+{1},此时A,B内元素个数一样多,但是B的总重量更小,说明B也是最优解,那么一定存在一个以贪心选择开始的最优解最优子结构性质设(...原创 2020-04-24 23:27:30 · 14446 阅读 · 0 评论 -
算法设计——活动安排(贪心算法)
问题如有以下11个活动:要求最多可进行多少个活动分析对于这种问题,有三种方法:(1)开始时间早的先排序(2)占用时间少的先排序(3)结束时间早的先排序那么哪一种方法是正确的呢?先来看看第一种:开始时间早的先排序这告诉我们,如果开始时间早但占用时间长的话是不能优先排序的那么来看看第二种方法:占用时间少的先排序这说明,如果占用时间少但正好处于两个活动之间(不是指空闲的)...原创 2020-04-24 00:55:07 · 1700 阅读 · 1 评论 -
算法设计——贪心算法概述
此部分包括:特点两大性质:贪心选择性质、最优子结构性质贪心算法与动态规划算法的异同算法正确性证明贪心算法基本步骤----------------------------------------------------------------------------------------------------特点设计要素:(1)适用于组合优化的问题(2)求解过程是多部判断过程...原创 2020-04-24 01:22:34 · 470 阅读 · 0 评论