美文网首页
分治、贪心五大算法

分治、贪心五大算法

作者: 潇萧之炎 | 来源:发表于2019-09-20 00:45 被阅读0次

1、分治
分治(即分而治之),把一个复杂的问题分成多个相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
适用场景:二分搜索、归并排序、快速排序、大整数乘法、第K小元素、最近点对、快速傅里叶变换等。

2、动态规划
动态规划法也是把问题一层一层地分解为规模逐渐减小的同类型的子问题。动态规划通常用来求最优化问题。此类问题可以有很多可行解,我们求出的是一个最优解,可能存在多个最优解。(最优子结构、公共子问题)
与分治法的区别是:分治的子问题是相互独立的,动态规划最好解决有公共子问题的,子问题相关性很大。
使用场景:矩阵连乘、钢条切割、最长公共子序列、最优二叉搜索树、流水作业调度、0/1背包问题等。

维特比算法是动态规划在HMM中的应用,维特比算法用于解决HMM的预测或者叫解码问题。
viterbi有最优解是因为HMM每一步是条件独立的!既然后面的概率和前面的没关系,那前面选最大的概率就行了。
而beam search时后面的概率依赖于前面所有的词,相当于n-gram是满的,viterbi的n-gram是2

背包问题:
https://blog.csdn.net/wind__chaser/article/details/89457771
https://blog.csdn.net/qq_38410730/article/details/81667885

3、贪心
通过局部最优选择达到全局最优选择。贪心算法不一定总产生最优解,贪心算法是否产生优化解,需严格证明贪心算法产生最优解的条件:(最优子结构、贪心选择性)
贪心选择性:当一个问题的全局最优解可以通过局部最优解得到,称这个问题具有贪心选择性。
适用场景:活动选择问题、哈夫曼编码问题、最小生成树问题、单源最短路径问题等。

贪心算法:softmax之后取最大概率。与之对应的是,Beam Search算法
http://www.360doc.com/content/18/0618/09/17563728_763230413.shtml
https://blog.csdn.net/qq_16234613/article/details/83012046
https://www.zhihu.com/question/54356960

分治和动态规划的区别:
动态规划也是一种分治思想(比如其状态转移方程就是一种分治),但与分治算法不同的是,分治算法是把原问题分解为若干个子问题,
自顶向下求解子问题,合并子问题的解,从而得到原问题的解。动态规划也是把原始问题分解为若干个子问题,然后自底向上,
先求解最小的子问题,把结果存在表格中,在求解大的子问题时,直接从表格中查询小的子问题的解,避免重复计算,从而提高算法效率。

动态规划和分治法有些相像,都是把一个问题分成了很多子问题来求解,但是不同的是动态规划会记忆之前解决的子问题的结果,
避免了重复计算。判断一个问题是否能用动态规划求解,要看它是否能划分成合适的子问题,然后写出递推关系式。
动态规划得到的解一定是最优解。

相关文章

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • 二叉树遍历的应用之分治法

    而它属于五大常用算法之一,而五大常用算法为:分治、动态规划、贪心、回溯、分支界定。下面来看一下具体相关的算法。 查...

  • 分治、贪心五大算法

    1、分治分治(即分而治之),把一个复杂的问题分成多个相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问...

  • 分治法,动态规划及贪心算法区别

    原文:分治法,动态规划及贪心算法区别 1.分治法 分治法(divide-and-conquer):将原问题划分成n...

  • 五大常用算法二(贪心,分治)

    贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...

  • 算法--策略-贪心分治

    贪心 贪心策略, 也叫作贪婪策略 每一步都采取当前状态下最优解, 从而推导出全局最优解 应用, 哈夫曼树, 最小生...

  • 贪心算法

    前面小编主要分享了使用到分治策略的经典排序算法,接下来小编要来分享下另外一个经典的算法,也就是贪心算法。贪心算法...

  • 常用几种算法

    贪心,分治,回溯,动态规划四种算法。 贪心算法 场景:我们有m个糖果和n个孩子,现在要把糖果分给这些孩子吃,但是糖...

  • 高级算法设计与分析

    目录 算法基础 算法复杂性 递归与分治 回溯法与分支限界法 贪心算法 动态规划法 NP问题 概率算法 现代优化算法...

  • 算法汇总

    关于算法: 基础技巧:分治、二分、贪心排序算法:快速排序、归并排序、计数排序搜索算法:回溯、递归、深度优先遍历,广...

网友评论

      本文标题:分治、贪心五大算法

      本文链接:https://www.haomeiwen.com/subject/rdeductx.html