• 第11周 图的学习


    图的基本概念及基本术语

    Graph=V,R

    是顶点的非空有限集;是边的有限集,可为空集

    简单分类:

    有向图  G1={V,R}

                 V(G1)={1,2,3,4}

                 R(G1)={<1,2>,<1,3>,<2,4>,<3,2>,<4,3>}

    无向图  G2={V,R}

                 V(G2)={1,2,3,4}

                 R(G2)={(1,2),(1,4),(2,3),(2,5),(3,4),(3,5)}

    有n个顶点的无向图最多有  n*(n - 1)/ 2 条边。

    有n个顶点的有向图最多有  n*(n - 1) 条边。

    完全图:设|V|=n,|E|=e

                (1)对有向图G,若e=n(n-1),则称G为完全有向图

                (2)对无向图G,若e=n(n-1)/2,则称G为完全无向图

    赋权图

               若【无 / 有】向图的每条边都带一个权,则称相应的图为 赋权【无 / 有】向图

                权是具有某种实际意义的数,如:2个顶点之间的距离,耗费等。

    :带权的图称为赋权图或网。

    邻接点、关联

         (1)若(u,v)是一条无向边,则称 u和v互为邻接点,称 边(u,v)与两个顶点互相关联     

         (2)若<u,v>是一条有向边,则称 顶点u邻接到顶点v;顶点v邻接自顶点u,称 弧<u,v>与顶点u和v互相关联

    顶点的度

    无向图顶点的度:

                关联于该顶点的边的数目,记为D(v)。

    有向图顶点: 在有 n 个顶点的有向图中,每个顶点的度最大可达 2(n-1)。

               (1)以顶点v为终点的边的数目,称为v的入度,记为ID(v)

               (2)以顶点v为起点的边的数目,称为v的出度,记为OD(v)

               (3)顶点v的则定义为该顶点的入度与出度之和,即 D(v)=ID(v)+OD(v)

     

    规律1:边数和结点度数的关系

                     度数是边数的2倍

     规律2:有向图,所有顶点的入度之和

                                = 所有顶点的出度之和

                                = 弧数

    路径、路径长度

    在无向图G中,以上面的图例为例,存在顶点序列{1,2,3,4,5},

    顶点1到顶点3可以是:(1,2,3);(1,2,5,3) ,这就是顶点1和顶点3之间的路径

    路径所包含的边(弧)数称为该路径的长度,比如(1,2,5,3)这条路径的长度就是3。

    简单路:

    若一条路径上除了起点和终点可能相同外,其余顶点均不相同,则称此路径为一条简单路径。

    回路:

    起点和终点相同的路径称为回路 / 环 / 圈

    起点和终点相同的简单路径称为简单回路 / 简单环 / 简单圈

    连通图(无向图具有 n 个顶点的无向图至少应有 n-1 条边才能确保是一个连通图

    在无向图G中,若从顶点u到顶点v有一条路径,则称顶点u和v在图G中是连通的。

    若V(G)中任意2个不同的顶点u和v都是连通的,则称G为连通图

    强连通图(有向图):

    在有向图G中,若对于V(G)中任意2个不同的顶点u和v,都存在从u到v以及从v到u的路径,则称G为强连通图

    连通分支(无向图):

    任何连通图只有一个连通分支,即其自身。而非连通的无向图有多个连通分支。

    强连通分支(有向图):

    强连通图只有一个强连通分支,即其自身。非强连通的有向图有多个强连通分支。

    Graph 图;Vertex 顶点;Arc 弧

    图的基本操作:

    1. CreateGraph(G):创建图G

    2. DestroyGraph(G):销毁图G

    3. LocateVertex(G,v):返回顶点 v 在图G中的位置,若没有顶点v,则返回值为“空”(-1)

    4. GetVertex(G,i):返回图G中第 i 个顶点的值,若 i 大于图G中顶点数,则返回值为“空”(-1)

    5. FirstAdjVertex(G,v):图G中顶点 v 的第一个邻接点。若 v 无邻接点或图G中无顶点 v ,则返回值为"空" (-1)

    6. NextAdjVertex(G,v,w):图G中顶点 v 的下一个邻接点(紧跟在 w 后面) 。                                                                                          若 w 是 v 的最后一个邻接点,则函数返回值为"空"。

    7. InsertVertex(G,u):在图G中增加一个顶点 u 。

    8. Delete Vertex(G,v):删除图G中顶点 v 及与顶点 v 相关联的弧(边)。

    9. InsertArc(G,v,w):在图G中增加一条从顶点 v 到顶点 w 的弧。

    10. DeleteArc(G,v,w):删除图G中从顶点 v 到顶点 w 的弧(边)。

    11. TraverseGraph(G):对图G的每个顶点访问一次且仅访问一次。

  • 相关阅读:
    阻塞队列(BlockingQueue)
    CountDownLatch/CyclicBarrier/Semaphore
    Guava Cache详解
    Java中的常见锁(公平和非公平锁、可重入锁和不可重入锁、自旋锁、独占锁和共享锁)
    CopyOnWriteArrayList详解
    集合类线程安全问题
    原子类的 ABA 问题
    原子类CAS的底层实现
    volatile关键字
    Java 内存模型(Java Memory Model,JMM)
  • 原文地址:https://www.cnblogs.com/lin2001/p/12877675.html
Copyright © 2020-2023  润新知