软考(中级)软件设计师核心笔记(8)数据结构——图

四、图

1、定义与存储

(1):形态

)1.完全图

1.有向图:在每对顶点之间,都有两条有向边相互连接,则称该图为完全图

2.无向图:每对顶点之间都有一条边相连,则称该图为完全图

)2.连通图

指任意两个顶点之间都有一个路径相连,1~2有边有路径,2~3有边有路径,1~3有路径

(2):存储

)1.矩阵存储

用一个n阶方阵R,来存放图中各节点的关联信息,其矩阵Rij的定义为:

1.若顶点i到顶点j有邻接边表示为:1

2.若顶点i到顶点j无邻接边表示为:0

其矩阵存储为对称矩阵,完全有向图和无向图均为对称矩阵,非完全有向图为非对称矩阵

节点个数为:n,邻接矩阵为n*n

邻接边数为:e,有向图的邻接边数为e,无向图邻接边数为e*2

|---|---|---|---|---|---|
| | 1 | 2 | 3 | 4 | 5 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 2 | 1 | 0 | 1 | 0 | 0 |
| 3 | 1 | 1 | 0 | 1 | 1 |
| 4 | 0 | 0 | 1 | 0 | 1 |
| 5 | 0 | 0 | 1 | 1 | 0 |

)2.链式存储

首先把每个顶点的邻接顶点用链来表示,然后用一个一维数组来顺序存储上面每个链表头的指针

邻接表:表头n为顶点数,节点数:边的个数,即有向图为e,无向图为e*2

2、遍历

|------|-----------------------------------------------------------------------------------------|----------------------------------------------|
| 遍历方法 | 说明 | 示例 |
| 深度优先 | 1.首次访问触发顶点V 2.依次从V出发搜索V的任意一个邻接点W 3.若W未访问过,则从该出发点继续深度优先遍历 若节点的邻接顶点都被访问过,则返回上一层节点 | V1 > V2 > V4 > V8 > V5 > V3 > V6 > V7 |
| 广度优先 | 1.首次访问触发顶点V 2.然后访问与顶点V邻接的全部未访问顶点W、X、Y 3.然后再一次访问W、X、Y、···邻接的未访问的顶点若节点的邻接顶点都被访问过,则返回上一层节点 | V1 > V2 > V3 > V4 > V5 > V6 > V7 > V8 |

时间复杂度计算:n表示节点,e表示邻接边

1.矩阵:O*(n^2)

2.链表:O*(n+e)

3、拓扑排序

用有向边表示活动之间开始的先后关系。这种有向图称为用顶点表示活动网络,AOV网络

前驱完成后,后继才能开始

针对上图,有效的拓扑排序有:02143567、01243657、02143657、01243567

4、最小生成树与最短路径

(1):图的权值最小生成树(无环图)

可以有多种形态,只要权值相等

1.克鲁斯卡尔算法(贪心算法):将所有边依次排序求得所有最小边,并且可以连接到所有顶点,并且不生成环路
2.普利姆算法(贪心算法):选择任意一个顶点,再选择离当前选择顶点最近的顶点

设:选择顶点3作为首选顶点

1.寻找离3最近的顶点,即5

2.再将3-5作为组合寻找离他们最近的顶点,即0

3.将3-5-0作为组合,寻找离他们最近的顶点,即2

4.将3-5-0-2作为组合,寻找离他们最近的顶点,即1

5.将3-5-0-2-1作为组合,寻找最近的4,即可得出最小生成树

(2):最短路径

起点到终点的最短路径

地杰斯特拉算法(贪心算法):某一点到另一点的最短路径

首先看终点附近最近的节点,取最短路径,以此类推,直至起点

相关推荐
IT199512 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
東隅已逝,桑榆非晚12 小时前
算法2. 双指针法-复写零
c++·笔记·学习·算法
云析赢指标公式网413 小时前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法
无心水13 小时前
22、数学与经济管理(运筹学) 核心考点与学习笔记
人工智能·笔记·学习·架构师·软考·软考架构师·软考系统架构师
xxwl58514 小时前
Nginx 基础学习笔记
笔记·学习·nginx
January120714 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
snysy15 小时前
# 磁盘IO性能fio测试实操笔记
笔记·磁盘io·fio
PaperAccept15 小时前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算
Tairitsu_H15 小时前
[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?
数据结构·c++·图论
无心水16 小时前
20、大数据架构设计理论与实践 核心考点与学习笔记
大数据·笔记·学习·架构师·系统架构设计师·软考系统架构设计师·架构设计师