算法
文章平均质量分 71
BigFatSheep
这个作者很懒,什么都没留下…
展开
-
最短路径——Dijkstra算法
Dijkstra算法1.算法概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。作为Dijkstra老爷子在咖啡店用二十分钟推演出的计算荷兰各个城市之间最短距离的算法,Dijkstra算法充满了简洁的美感。2.算法描述输入:在无向图 G=(V, E) 中,假设每条边 E[i] 的长度为 w转载 2017-11-28 14:51:15 · 525 阅读 · 0 评论 -
排序算法汇总
目录目录冒泡排序1.概述2.算法步骤3.算法分析4.实现代码选择排序1.算法概述2.算法步骤3.算法分析4.实现代码插入排序1.概述2.算法步骤3.算法分析4.实现代码快速排序1.概述2.算法步骤3.算法分析4.实现代码堆排序1.概述2.算法分析3.实现代码希尔排序1.算法概述2.算...转载 2017-11-14 14:37:06 · 166 阅读 · 0 评论 -
分治算法
1.分治算法概念分治算法,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。核心思想:使用递归解决问题的算法。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需转载 2017-11-14 13:21:03 · 423 阅读 · 0 评论 -
最小生成树——Prim算法、Kruskal算法和Boruvka算法
最小生成树的三种算法Prim\Kruskal\Boruvka转载 2017-11-09 03:58:26 · 12845 阅读 · 0 评论 -
网络流算法(Network Flow)
网络流概览1.网络流(Network Flow)概念网络流起源于对于交通网络的分析,举一个非正式的例子,网络流算法的目的就是找到带权有向图中从源点到汇点的traffic的大小。我们的目标是在多项式时间内解决问题。我们一般要求的是最大流,如果把源点比作工厂的话,问题就是求从工厂最大可以发出多少货物,是不至于超过道路的容量限制,也就是——最大流。2.网络流的一些定义流量网络:给一个有向图G=(V,E)G转载 2017-12-11 15:08:01 · 20681 阅读 · 0 评论 -
贪心算法(未完成)
贪心算法1.贪心算法概述贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。找到贪心的启发式表达式并不难,难的是证明贪心是最优解。援引自另一位大神:有人说贪心算法是最简单的算法,原因很简单:你我其实都很贪,根本不用学就知道怎么贪。有人说贪心算法是最复杂的算法,原因也很简单:这世上会贪的人太多了,那轮到你转载 2017-11-12 08:04:21 · 560 阅读 · 0 评论 -
动态规划
动态规划概览1.动态规划概念动态规划是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。这里的递推可以理解为一种递归的反向。递推不是关键,关键是如何拆分问题,这就涉及到了对于问题状态的定义和状态转移方程的定义。 动态规划的本质,是对问题状态的定义和状态转移方程的定义。状态的定义:是对问题的重新描述,使得问题在不同的时刻,有不同状态。 状态转移方程:是状态和转载 2017-11-27 14:26:19 · 2313 阅读 · 0 评论