您的位置:首页 > 其它

2016-01-28 17:37 375 查看
1,相关定义:

  有向边也称为弧(Arc),<A,D>,A指向D,A是弧尾,D是弧头。

  如果任意两个顶点之间都存在边,则称无向完全图/有向完全图,含有n个顶点的无向完全图/有向完全图有n*(n-1)*2……n*(n-1)条边。

  带权图,又称网。

2,连通图

  2.1 无向图:

    如果对于图中任意两个顶点都是连通的,则称G是连通图。

    无向图中的极大连通子图称为连通分量,条件:

    1.要是子图;

    2.子图要是连通的;

    3.连通子图含有极大顶点数;

    4.具有极大顶点数的连通子图包含依附于这些顶点的所有边。

  2.2 有向图:

    在有向图G中,如果对于每一对Vi , Vj ,从Vi 到Vj 都存在路径,则称G是强连通图。有向图中的极大强连通子图称作有向图的强连通分量。

  2.3 连通图的生成树:

    连通图的生成树的生成树是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一棵树的n-1条边。(但是有n-1条边的不一定是生成树)

3,图的存储结构—邻接矩阵:

  无向图:





  有向图:

  


4,图的遍历

  从图中某一顶点出发访遍图中其余顶点,且每个顶点仅被访问一次。

  4.1 深度优先搜索DFS:

  类似树的前序遍历,但这是针对连通图而言,从图的某个顶点v出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,知道图中所有和v有路径想吐的顶点都被访问。对非连通图,只需对它的连通分量分别进行深度优先搜索,若图中尚有顶点未被访问,则另选图中一个未曾访问的顶点作为起始点,重复上述步骤,直到所有顶点都被访问为止

  


  

  4.2 广度优先搜索



5,最小生成树

  最小生成树的边数必然是顶点数减一,|E| = |V| - 1;

  最小生成树不可以有循环;

  最小生成树不必是唯一的;

  我们把构造连通图的最小代价生成树称为最小生成树(minimum cost spanning tree);

  普里姆算法和克鲁斯卡尔算法,Prim算法和Kruskal算法。


  Prim算法:先选一个结点,然后逐加入结点,加入与先有结点中任一结点最近的一个结点,O(V2),v为顶点数,如图:

  


  Kruskal算法:逐一加边,O(eloge)

  


6,最短路径

  6.1 迪杰斯克拉算法dijkstra(两结点之间最短路径)



  邻接矩阵:

  


  求解过程:

终点

从v0到个终点的D值和最短路径的求解过程

i=1

i=2

i=3

i=4

i=5

V1













V2

10

(v0 ,v2)

V3



60

(v0 ,v2 ,v3)

50

(v0 ,v4 ,v3)

V4

30

(v0 ,v4)

30

(v0 ,v4)

V5

100

(v0 ,v5)

100

(v0 ,v5)

90

(v0 ,v4 ,v5)

60

(v0 v4 ,v3 ,v5)

Vi

V2

V4

V3

V5

S

(v0 ,v2)

(v0 ,v4)

(v0 ,v4 ,v3)

(v0 v4 ,v3 ,v5)

6.2 弗洛伊德算法(任一对结点最短路径)

  每一对顶点之间的最短路径

  Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。

Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。

  Floyd-Warshall算法的原理是动态规划。设Di,j,k为从i到j的只以(1…k)集合中的结点为中间结点的最短路径的长度。

  1.若最短路径经过点k,则Di,j,k= Di,k,k-1 + Dk,j,k-1

  2.若最短路径不经过点k,则Di,j,k= Di,j,k-1

因此,Di,j,k= min{Di,j,k-1 , Di,k,k-1 + Dk,j,k-1}

在实际算法中,为了节约空间,可以直接在原来空间上进行迭代,这样空间可降至二维。

for k ← 1 to n do

for i ← 1 to n do

for j ← 1 to n do

if (Di,k + Dk,j < Di,j) then

Di,j ← Di,k + Dk,j;

其中Di,j表示由点i到点j的代价,当Di,j为 ∞ 表示两点之间没有任何连接。



D:表示距离

P:表示路径,即走过的路

D(-1),D(-0), D(1),D(2)分别表示(不经过其他结点,经过结点V0,经过结点V1,经过结点V2)四种情况。

D

D(-1)

D(-0)

D(1)

D(2)

0

1

2

0

1

2

0

1

2

0

1

2

0

0

4

11

0

4

11

0

4

6

0

4

6

1

6

0

2

6

0

2

6

0

2

5

0

2

2

3



0

3

7

0

3

7

0

3

7

0

P

P(-1)

P(0)

P(1)

P(2)

0

1

2

0

1

2

0

1

2

0

1

2

0

AB

AC

AB

AC

AB

ABC

AB

ABC

1

BA

BC

BA

BC

BA

BC

BCA

BC

2

CA

CA

CAB

CA

CAB

CA

CAB

7,拓扑排序



可得多个拓扑排序序列:(C1, C9 , C4 , C2 , C3 , C5 , C7 , C10 , C11 , C12 , C6 , C8 )

8,关键路径

  路径长度最长的路径叫做关键路径

  AOE-网是一个带权的有向无环图,顶点表示事件,弧表示活动,权表示活动持续的时间。  

  例如:



注:

  活动l-e=0,则a2 、a5 、a7是关键活动;

  取ve=vl的顶点:关键路径为(v1, v3, v4, v6)

  关键路径:

  


[align=center] [/align]
[align=center] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: