【数据结构与算法】图论

一、基础概念对比

概念 定义 重要性质
简单回路 顶点不重复的回路。回路是路径,简单回路是简单路径 是特殊的简单路径
极大连通子图 再添加任意顶点/边后不再连通的子图 包含所有连通顶点和边(无向图)
弱连通图 有向图的基图(忽略方向)连通

有向图带方向不连通,去掉方向才连通,则是弱连通
强连通⇒弱连通,反之不成立
完全图 无向:n(n−1)/2n(n-1)/2n(n1)/2
有向:n(n−1)n(n-1)n(n1)
边数达到理论最大值
拓扑序列 有向无环图的线性序列(u→v则u在前) 存在拓扑序⇔无环;若有向图中存在拓扑序列,则该图没有回路

二、存储结构对比

结构 空间复杂度 适用场景 优缺点
邻接矩阵 O(n²) 稠密图/频繁判断边 优点:随机访问快
缺点:稀疏图浪费空间
邻接表 O(n+e) 稀疏图/遍历操作 优点:节省空间
缺点:判断两顶点是否相邻效率低
十字链表 O(n+e) 有向图 同时存储入边和出边
邻接多重表 O(n+e) 无向图 删除边操作高效

三、关键算法分析

1. 遍历算法对比

算法 数据结构 时间复杂度 应用场景 特殊性质
BFS 队列 O(n+e) 无权图最短路径(例题9) 按层遍历
DFS 栈/递归 O(n+e) 拓扑排序、强连通分量 递归退出顺序=逆拓扑序(例题6)

2. 拓扑排序实现

void TopologicalSort(Graph G) {
   
   
    // 1. 计算各顶点入度
    // 2. 将入度为0的顶点入队
    while (!QueueEmpty(Q)) {
   
   
        v = DeQueue(Q);
        print(v);
        for (w : v的邻接点) {
   
   
            if (--indegree[w] == 0)
                EnQueue(Q, w);
        }
    }
}
  • 关键说明
    • 存在拓扑序⇔无环
    • 邻接矩阵有向图,则该图拓扑序列:存在,可能不唯一。

四、图的性质定理

1. 度与边数e关系

图类型 公式 推论
无向图 ∑deg(v)=2e\sum deg(v) = 2edeg(v)=2e 奇度顶点必有偶数个
有向图 ∑deg+(v)=e\sum deg^+(v) = edeg+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值