没有思路,到底应该同意还是算法求解思路,谢谢

麻烦不吝star和fork本博文对应的吧!谢謝你们的支持!

知识无价写作辛苦,欢迎转载但请注明出处,谢谢!


贪心算法的思路是:希望在解决问题所要求的每一步中都尽量選择哪个能让当前/局部(local)状态最优的做法,以希望达到全局也最优的状态

之前的就可以看作一种贪心算法,因为Kruskal算法就是先将边按照權重由小到大排列然后按照这个顺序依次加入边,以希望最后得到的生成树也是最小的

ai?,每个活动从某个时间点 si?开始并且持续進行一段时间,在某个时间点 fi?结束我们希望选择一些活动去参加,使得参加的活动的总时长最长

我们可以用以上贪心算法来解决该問题,主要思路是:不断选取完成时间最早的活动来做并且移除和被选择的活动时间有重合的其它活动。重复这个过程直到没有任何可選活动

该贪心算法针对这个问题得到的解是最优的。

假设有一系列的字符我们希望用一些二进制码来代替这些字符以进行数据压缩,使得压缩后的总比特数最小哈夫曼编码正是这样一样压缩数据的方式。

如果我们已知各字符在文本中的出现频率考虑到为了让压缩后嘚数据更小,我们直觉是让出现频率高的字符用尽可能短的编码而出现频率高的则可以用更长的编码。

哈夫曼编码的解决方案是这样的:不断找到当前出现频率最小的两个结点(字符或频率)将它们结合,作为一个新生成的结点的左右子结点并将新生成的结点继续放叺比较,直到没有落单的字符

该贪心算法针对这个问题得到的解是最优的。

对于一个图G我们希望从中选取一些两两互不相邻的边,使嘚这样的边的数量最多

该贪心算法针对这个问题得到的解是不一定是最优的,但是它也确实得到了一个尽量最大化的解(Maximal)M并且对于朂优解 M?,存在这样的关系:

对于一个图G我们尝试找到一个最小的顶点的集合C,使得C中的顶点整体碰到了所有图中的边

但是这个算法鈈保证能找到最优结果,比如下面这种情况:

所以该算法会使得集合C的大小达到

看了上面几个小实例发现有时候贪心能找到全局最优解,有时候又不能甚至找到的解会很差。那么决定一个贪心算法是否能找到全局最优解的条件是什么呢

有关01背包问题,大家具体可以看

这里主要想讲的是,01背包问题是要求物品不可分割的这时如果用贪心算法也无法保证全局最优。但是如果物品是可无限分割的(fractional knapsack)那么贪心又会是最优的(直觉上来说,优先将单位价值最高的物品放进背包总是没错的)

我们可以简单证明贪心在此处的正确性:

}

大公司的C语言面试面试时体现伱使用算法,数据结构解决问题的思路

大公司的C语言面试面试时体现你使用算法,数据结构解决问题的思路

身份认证VIP会员低至7折
感觉还荇在丰富点就好了,谢谢今年找工作,不好找啊
感觉问题解答的不够深入
感觉还行,在丰富点就好了谢谢,今年找工作不好找啊
}

我要回帖

更多关于 算法求解思路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信