经典算法思想及其案例

贪心算法:总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法往往是无后性无记忆性,即当前做出的决策不会影响到下一步的决策

分治法:通过分解问题为一个个小问题,知道最后子问题可以求解,原问题的解即子问题的解的合并。这些子问题互相独立且与原问题形式相同,可以递归地解这些子问题,然后将各子问题的解合并得到原问题的解。故分治法和递归往往同时应用于解决问题、

可使用分治法求解的一些经典问题


 (1)二分搜索
(2)合并排序
(3)快速排序
(4)线性时间选择

动态规划算法:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。太太规划问题往往是因为资源有限,每一步的决策会导致资源的损耗,而是后面决策可利用的资源不够多。

解决问题的的重点是找到子问题重叠 即资源的约束,以及到终点的必经路线

可使用动态规划求解的一些经典问题

 (1)poj 2533 最长上升子序列
(2)hdu 2602  01背包
(3) hdu 2084  数塔

(4)hdu 1003  Max Sum

回溯法:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 及深度优先搜索,以及编译原理的上下文无关法

分支限界法:广度优先或最小消耗优先搜索队列、优先队列每个结点只有一次成为活结点的机会找出满足约束条件的一个解或特定意义下的最优解


阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页