
算法导论
文章平均质量分 89
The_sam
这个作者很懒,什么都没留下…
展开
-
算法导论——26.2 FordFulkerson方法,Edmonds-Karp算法java实现
介绍由Ford 和Fulkerson于1956年提出最大流问题的标号算法,故又称 Ford–Fulkerson标号法。其基本思想就是,从一个可行流开始,寻找从s到t的增广链,然而沿增广链增加流量,反复这样,直到找不出增广链位置。更多内容参见博文http://blog.youkuaiyun.com/smartxxyx/article/details/9293665这里值得注意的是,这个方法各种实现算原创 2017-05-09 14:23:35 · 1580 阅读 · 1 评论 -
算法导论——24.3 Dijkstra最短路径算法java实现
Dijkstra算法是由荷兰计算机科学家狄克斯特拉(Dijkstra)于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。 其基本原理是:每次新扩展一个距离最短的点,更新与其相邻的点的距离。当所有边权都为正时,由于不会存在一个距离更短的没扩展过的点,所以这个点的距离永远不会再被改变,因而保证了算法的正确性。不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不原创 2017-05-09 00:44:33 · 1173 阅读 · 0 评论 -
算法导论——24.2 DAG最短路径算法java实现
Bellman-Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题,但是对于DAG,可以有更加简化的算法去计算,使得时间复杂度更低。针对DAG的特点,以拓扑排序为基础,提出了解决DAG的最短路径问题的简单算法。通过理论分析,表明该算法具有理想的运算效率,其中,解决单源点问题的运算时间与E成正比,解决所有点对问题的运算时间与VE成正比。拓扑排序策略对于此类最短路径问题的研究,较传统的方法运算简单、求解直观。原创 2017-05-08 23:43:45 · 2789 阅读 · 0 评论 -
算法导论——24.1 BellmanFord算法java实现
Bellman - ford算法是求含负权图的单源最短路径算法,效率很低,但代码很容易写。其原理为持续地进行松弛(原文是这么写的,为什么要叫松弛,争议很大),在每次松弛时把每条边都更新一下,若在n-1次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。Bellman - ford算法有一个小优化:每次松弛先设一个标识flag,初值为FALSE,若有边更新则赋值为TRUE,最终如果还是FALSE则直接成功退出。Bellman-ford算法浪费了许多时间去做没有必要的松弛,而SPFA算法用队列进行原创 2017-05-08 21:43:11 · 2390 阅读 · 0 评论 -
算法导论——16.1-5动态规划解决活动选择带值问题
原活动问题是用贪心算法解得,实质是就是不重合区间择多问题。新的问题变形后,每个区间的都带上的值,求如何选择才能得到不重合区间且值最大。想了想只能用dp来解决,下面附我的解题思路+代码 1.用act[max][3]记录所有活动的状态(开始时间|结束时间|价值) act[n-1][0]表示第n个活动的开始时间,act[n-1][1]]表示第n个活动的结束原创 2017-03-28 20:54:01 · 2340 阅读 · 0 评论