(边自学边写,还真有点累啊,) 注:以下代码均为部分,关于图的表示方法参看我的博客: http://www.cnblogs.com/dzkang2011/p/graph_1.html 一、广度优先搜索 广度优先搜索(BFS)是最简单的图搜索算法之一,也是很多重要的图算法的原型 ...
(边自学边写,还真有点累啊,) 注:以下代码均为部分,关于图的表示方法参看我的博客: http://www.cnblogs.com/dzkang2011/p/graph_1.html 一、广度优先搜索 广度优先搜索(BFS)是最简单的图搜索算法之一,也是很多重要的图算法的原型 ...
递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子 ...
【动态规划杂记】状态+转移 参考:夜深人静写算法(二) - 动态规划 核心:划分阶段-状态表示-状态转移方程。 复杂度:状态数O(n^t),转移O(n^e),则称为tD/eD问题。 1.最优化问题和方案数问题常考虑DP,特定数问题不考虑DP。 2.断层思想:划分状态,从计算过的状态去答案 ...
动态规划 1.概念 动态规划常用于的一个问题就是求最值, 比如说最常见的求最长递增子序列啊等待。 其实动态规划的问题核心仍然是穷举,想一下求最值,那最可能的就是把所有结果列出来,谁最大要谁。 动态规划大部分是自底向上的,所以也就脱离了递归,更多的是采用for循环的迭代; 动态规划的典型 ...
搜索算法问题求解 一、需求分析 分别用深度优先、迭代加深、一致代价、A*搜索算法得到从起始点Arad到目标点Bucharest的一条路径,即为罗马尼亚问题的一个解,在求解的过程中记录每种算法得到的解,即输出每种解得到的条路径。 图一:罗马尼亚地图 二、详细代码 测试类 ...
一. 动态规划 动态规划(dynamic programming),与“分治思想”有些相似,都是利用将问题分 为子问题,并通过合并子问题的解来获得整个问题的解。于“分治”的不同之处在 于,对于一个相同的子问题动态规划算法不会计算第二次,其实现原理是将每一个计算过的子问题的值保存在一个表中 ...
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法与数据结构专题的第16篇,也是动态规划系列的第5篇。 今天文章的内容是动态规划当中非常常见的一个分支——状态压缩动态规划,很多人对于状态压缩畏惧如虎,但其实并没有那么难,希望我今天的文章能带你们学到这个经典的应用 ...
动态规划 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适用于动态规划法求解的问题,经分解得到的子问题往往不是相互独立的。在用分治法求解的时候,有些子问题被重复计算了许多次。如果能够保存已解决的子问题 ...