• 数据结构学习笔记(四)——图


    五、 图

    1. 图的基本概念

    1. 图的定义

    顶点集V和边集E

    1. 有向图
    2. 无向图
    3. 简单图
    4. 多重图
    5. 完全图(也称简单完全图)
      在无向图中,若任意两个顶点之间都存在边,则称该图为无向完全图。
      在有向图中,若任意两个顶点之间都存在方向相反的两条弧,则称该图为有向完全图。
    6. 子图
    7. 连通、连通图和连通分量
      在无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通的。若图G中任意两个顶点都是连通的,则称图G为连通图,否则称为非连通图。无向图中的极大连通子图称为连通分量。
    8. 强连通图、强连通分量
    9. 生成树、生成森林
    10. 顶点的读、入度和出度
    11. 边的权和网
    12. 稠密图、稀疏图
    13. 路径、路径长度和回路
    14. 简单路径、简单回路
    15. 距离
    16. 有向树

    2. 图的存储及基本操作

    1. 邻接矩阵法

    对于任一有向图,如果他的邻接矩阵中对角线以下(或以上)的元素均为零,则存在拓扑序列(但可能不唯一) 。

    2. 邻接表法

    3. ★十字链表法

    4. ★邻接多重表

    5. 图的基本操作

    3. 图的遍历

    1. 广度优先搜索

    1. BFS算法的性能分析
      无论是邻接表还是邻接矩阵的存储方式,BFS算法都需要借助一个辅助队列Q,n个顶点均需入队一次,在最坏情况下,空间复杂度为O(|V|)。
      采用邻接表存储方式时,每个顶点均需搜索一次(或入队一次),故时间复杂度为O(|V|),在搜索任一顶点的邻接点时,每条边至少访问一次,故时间复杂度为O(|E|),算法总的世界复杂度为O(|V|+|E|) 。采用邻接矩阵存储方式时,查找每个结点的邻接结点所需的时间为O(|V|),故算法总的时间复杂度为O(|V|2)。
    2. BFS算法求解单源最短路径问题
    3. 广度优先生成树

    2. 深度优先搜索

    1. DFS算法的性能分析
    2. 深度优先的生成树和生成森林
    3. 图的遍历与图的连通性

    4. 图的应用

    1. 最小生成树

    1. Prim算法
    2. Kruskal算法

    2. 最短路径

    求解最短路径的算法通常都依赖于一种性质,即两点之间的最短路径也包含了路径上其他顶点间的最短路径。带权有向图G的最短路径问题一般可分为两类:一是单源最短路径,即求图中某一顶点到其他各顶点的最短路径,可通过经典的Dijkstra算法求解;而是求每对顶点间的最短路径,可通过Floyd-Warshall算法来求解。

    1. Dijkstra算法求单源最短路径问题

    2. Floyd算法求各顶点之间最短路径问题

    3. 拓扑排序

    4. 关键路径

    1. 事件Vk的最早发生时间Ve(k)
    2. 事件Vk的最迟发生时间Vl(k)
    3. 活动a¬i的最早开始时间e(i)
    4. 活动ai的最迟开始时间l(i)
    5. 一个活动ai的最迟开始时间l(i)和其最早开始时间e(i)的差额d(i)=l(i)-e(i)
  • 相关阅读:
    OpenTDF 客户端cpp版本SDK的编译和使用
    2023年中国铝压延产量、销售收入及市场规模分析[图]
    文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松
    kafka 之 本地部署单机版
    C1. k-LCM (easy version)-Codeforces Round #708 (Div. 2)
    关爱2700多万听障者,手语服务助力无声交流
    Bigder:自动化测试工程师
    电脑中病毒了一直下载安装软件怎么办?
    Redis 排查大 key 的3种方法,优化必备
    20220814-LQR算法实施落地
  • 原文地址:https://blog.csdn.net/static_eye/article/details/125594522