图
大胖5566
科学、技术与人文的统一和谐,本人邮箱moodytong@126.com
展开
-
二、基本算法之DFS、BFS和A*
图中节点的遍历和搜索是老生常谈的话题,这里借由python的networkx库,复习一下之前的BFS和DFS,并对A*做一些理解。 1.BFS 广度优先搜索 其基本思想是优先从当前节点的邻居节点开始搜索,如果搜索不到,再搜索邻居的邻居。其在算法设计的时候,主要考虑节点的标记和邻居的保存 利用全局变量time进行计时,在pre列表中保存每个节点的父节点。原创 2012-06-11 13:16:29 · 12188 阅读 · 2 评论 -
一、图的一些基本概念
一 图基本 图这个东西博大精深,而且有图论这门学科,虽然选修过,但最后自己剩下的东西真的不多,而且这玩意需要及时的回顾,不然很容易就忘了。 Kongsiberg七桥问题是很经典的图引入问题,涉及到Euler环和一笔画问题。 一个图,简单说来是由顶点和边组成,我们可以用一个三元组描述即G=(V,E,I),V为图总顶点集合,E为边的集合,I为关联关系。而且图能原创 2010-10-28 22:47:00 · 1843 阅读 · 0 评论 -
三、最短路径之Dijkstra算法
1.Dijkstra算法1.1算法介绍1.2算法原理1.3算法过程1.4算法示例从节点1出发到图中其余节点的最短路径分别是: 2—8,3—15,4--20,5—13,6--18程序:说明:这里假设边的权重最大不超过100,以此代替无穷大;利用s和s1分别保存两个不同的点集合,d中保存l数组import network原创 2012-06-12 13:14:10 · 1109 阅读 · 0 评论 -
强连通分量、Tarjan与蝴蝶结构
1.强连通有向图中强连通分量(stronglyconnected component),指的就是其中的任意顶点与其它任意顶点间有双向路径。求解图中的SCC,主要的算法有Kosaraju、Gabow和Tarjan三种,且时间复杂度都是O(m+n),其中m为图的边数,而n为图的定点数。2.Tarjan算法Tarjan算法基于图深度优先搜索算法,每个强连通分量为搜索树中的一颗子树。搜索时,把原创 2012-06-14 09:52:41 · 1923 阅读 · 0 评论 -
四、最短路径之Bellman-Ford与SPFA
1.简介 针对图中的最短路径计算,Dijkstra基本可以解决大部分问题,但是当图中有负权边出现的时候,该算法不再适用。为了解决该问题,提出了Bellman-Ford算法,适用范围是上去了,但是其复杂度为O(mn),其中m为图边数,n为图顶点数。为此,进行了相关的改进,有两种主要改进方案,其中有一个SPFA算法被广泛使用。2.相关算法与优化 Bellm原创 2012-06-14 22:21:04 · 2090 阅读 · 0 评论 -
五、最小生成树之Kruskal和Prim
1.算法介绍 在实际问题中常常要遇到布线和租用的优化情况,在保持连通的情况下达到最小成本。这就是最小生成树(minimum spanning tree)或最优树(optimal tree)算法的由来。 最小生成树的两个经典算法—Kruskal与Prim,都是用于求无向连通图的最小生成树算法。2.算法过程Kruskal过程:(i):初始化。集合TE和数组visit,其原创 2012-06-15 14:57:37 · 1413 阅读 · 0 评论