zoukankan      html  css  js  c++  java
  • 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)

      关键路径:

      

     
     
  • 相关阅读:
    Tensorflow2(预课程)---2.1、多层感知器-层方式
    pandas.Series转numpy的n维数组
    numpy将多维数组降维成一维
    《仙路争锋》读书感悟---200910(为逆所以顺,为玩所以勤,为生所以死)
    legend3---解决bootstrap栅格系统自动图片高度不齐问题
    python机器学习库numpy---15、模拟e^x的麦克劳林展开式
    400G 光模块的价格
    HTML编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    网页编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    富文本编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
  • 原文地址:https://www.cnblogs.com/lemon-now/p/5166961.html
Copyright © 2011-2022 走看看