好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

图论(各种基础及算法详解)

基础概念

G=(V, E)
如果无向图中从每一个顶点到其他每个顶点都存在一条路径,则称该无向图是连通的(connected)。具有这样性质的有向图称为是强连通的的(strongly connected)。如果有向图不是强连通的,但它的基础图(underlying graph)(也就是其弧上去掉方向说形成的图)是连通的,那么称该有向图是弱连通的(weakly connected)。完全图(complete graph)是其每一对顶点间都存在一条边的图。

存储表示方式

邻接矩阵

使用|V|*|V|的二维数组来表示图,g[i][j]=1表示定点i到顶点j右边,0则无。(对于无向图,二维矩阵是对称的,对角线都为0)

这种表示方法,查找两点间是否有边的复杂度为O(n^2),而且处理边数较少的图时效率不高(稀疏矩阵)

邻接表

邻接多重表(主要用于存储无向图)

对无向图而言,其邻接多重表和邻接表的差别,仅仅在于同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点。

遍历(搜索)(可用于判断无向图是否连通)(或用于求解连通图的最小生成树算法)

广度优先搜索

深度优先搜索

拓扑排序

最短路径算法

深度或广度优先搜索算法(解决单源最短路径)

Floyd算法

Dijkstra算法

Bellman-Ford算法(解决负权边,解决单源最短路径,前几种方法不能求含负权边的图)

网络流问题

活动网络

最小生成树

查看更多关于图论(各种基础及算法详解)的详细内容...

  阅读:44次