数据结构与算法十一:1. 图的基本概念

529 阅读5分钟

这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战

关注我,以下内容持续更新

数据结构与算法(一):时间复杂度和空间复杂度

数据结构与算法(二):桟

数据结构与算法(三):队列

数据结构与算法(四):单链表

数据结构与算法(五):双向链表

数据结构与算法(六):哈希表

数据结构与算法(七):树

数据结构与算法(八):排序算法

数据结构与算法(九):经典算法面试题

数据结构与算法(十):递归

数据结构与算法(十一):图

图(Graph)的定义

图(Graph)由顶点集V(G)和边集E(G)组成,记为G=(V,E)。其中V(G)代表图中的所有顶点的集合,而E(G)是图中的所有边的集合。

图的术语

  • 顶点(Vertex)
    • 顶点的度:顶点v的度是指与v相关联的边的数目,通常记为TD (v)。在有向图中, 顶点的度等于该顶点的入度与出度之和
    • 顶点的出度:顶点v的入度是指以v为起点有向边数,记为ID (v)
    • 顶点的入度:顶点v的出度是指以v为终点有向边数,记为OD (v)
  • 弧头和弧尾: 有向边(u,v)称为弧,边的始点u叫弧尾,终点v叫弧头
  • 邻接和依附:无向图中,对于任意两个顶点vi和vj,若存在边(vi,vj),则称顶点vi和顶点vj互为邻接点,同时称边(vi,vj)依附于顶点vi和顶点vj; image.png
  • 有向图和无向图
    • 无向图:图中每条边都是无方向的
    • 有向图:图中每条边都是有方向的
  • 完全图: 图中任意两个顶点都有一条边连接
    • 无向完全图:无向图中,任意两个顶点之间都存在边。无向完全图的边数是n(n-1),n代表结点的个数。

    • 有向完全图:有向图中,任意两个顶点之间都存在方向互为相反的两条弧。有向完全图的边数是n(n-1)/2,n代表结点的个数。


      含有n个顶点的无向完全图的边数是n(n-1) 含有n个顶点的有向完全图的边数是n(n-1)/2

    image.png
  • 带权图和无权图
    • 带权图:边上带权的图(带权图也叫网图)。其中权是指每条边可以标上具有某种含义的数值
    • 无权图:边上没有权的图。
  • 简单图: 在图中,若不存在顶点到其自身的边,且同一条边不重复出现
    (数据结构中讨论的图都是简单图) image.png
  • 稀疏图和稠密图
    • 稀疏图: 称边数很少的图为稀疏图;
    • 稠密图: 称边数很多的图为稠密图。
  • 路径的长度
    • 非带权图:路径上的边的个数
    • 带权图:路径上各边的权之和
    image.png

image.png

  • 连通: 在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。
  • 连通图强连通图
    • 连通图:在无向图中,如果图中任意一对顶点都是连通的,即有路径, 则称此图是连通图。
    • 强连通图:在有向图中,如果图中任意一对都是连通的,即有路径, 则称此图是强连通图。
  • 连通分量强连通分量
    • 连通分量: 无向图的极大连通子图。(显然任何连通图的连通分量只有一个,即本身。而非连通图有多个连通分量,各个连通分量之间是分离的,没有任何边相连。)
    • 强连通分量: 有向图的极大强连通子图。 IMG_2367 2.JPG IMG_2366.JPG
  • 连通子图: 设G=(V,E)和G'=(V',E'),如果V'是V的子集,并且E'是E的子集,那么称G'是G的子图。如果子图是连通的,那么就是连通子图。
    • 极大连通子图:该子图是图G的连通子图,将G的任何不在该子图的顶点加入,子图将不再连通。
    • 极小连通子图:该子图是图G的连通子图,在该子图中删除任何一条边,子图都将不再连通。
  • 回路: 若路径上第一个顶点与最后一个顶点重合,则称这样的路径为回路或环。
  • 生成树生成森林
    • 生成树: n个顶点的连通图G的生成树是包含G中全部顶点的一个极小连通子图。生成树含有图中全部顶点,但只有n-1条边。如果在生成树上添加1条边,必定构成一个环。若图中有n个顶点,却少于n-1条边,必为非连通图。
    • 生成森林: 在非连通图中,由每个连通分量都可以得到一棵生成树,这些连通分量的生成树就组成了一个非连通图的生成森林。

image.png

  • 最小生成树: 在给定的无向图G = (V, E) 中,(u, v) 代表连接顶点u与顶点v的边,而 w(u, v) 代表此边的权重,若存在E的子集T且为无循环图,使得最小生成树 的w(T) 最小,则此T为G 的最小生成树

拓展: 不同结构中逻辑关系的对比

image.png

在线性结构中,数据元素之间仅具有线性关系;
在树结构中,结点之间具有层次关系;
在图结构中,任意两个顶点之间都可能有关系。

在线性结构中,元素之间的关系为前驱和后继;
在树结构中,结点之间的关系为双亲和孩子;
在图结构中,顶点之间的关系为邻接。

关注我

如果觉得我写的不错,请点个赞 关注我 您的支持是我更文最大的动力!