算法题

1.贪心算法

只考虑当前最优解,即每次求解局部最优解。可以用深度优先搜索来类比贪心算法的过程,只是深搜,所以可能得到的不是全局最优解。而要想得到全局优,求解的问题必须具有无后效性,也就是说,以后的过程不会影响之前的状态,用局部最优解来合成全局最优。该类算法的复杂度与子问题的个数,即树深,有关。
比如,两个最小生成树算法:prim、kruskal,Dijkstra(最短路径算法)

2.动态规划

将原问题转化成结构相同的子问题,通过子问题的求解得到原问题的解。通常使用二维数组来存储自问题的解,以供之后求解所用,避免了递归求解过程中对子问题的重复求解的缺点。可以用已知优化子结构的树,从叶子节点向上搜索并根据当前结点不断做出选择的过程来理解,所以其复杂度与子问题的个数和选择的个数有关。
比如,最长公共子序列,插入最少字符形成回文串,Triangle(leetcode)

3.回溯算法

可以看成从上到下先深度优先搜索树,当不满足决策条件的时回退至最近开叉的地方,继续深搜,所以是深搜和广搜的结合,可求得最优解。比如,N-皇后问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值