数据结构之图

简介: (3)加权图①在实际应用中,图不但需要表示元素之间是否存在某种关系,而且图的边往往与具有一定实际意义的数有关,即每条边都有与它相关的实数,称为权②这些权值可以表示从一个顶点到另一个顶点的距离或消耗等信息。这种边上具有权值的图称为带权图

数据结构之图



1.图的定义


(1)图是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成.

(2)其形式化的定义如下:Graph = (V,E)


9b00cc0189ed4b1eac738eb1a80df8bd.png


(3)加权图

①在实际应用中,图不但需要表示元素之间是否存在某种关系,而且图的边往往与具有一定实际意义的数有关,即每条边都有与它相关的实数,称为权

②这些权值可以表示从一个顶点到另一个顶点的距离或消耗等信息。这种边上具有权值的图称为带权图


37a5a2b63d28468a851adec7075469b8.png


2.图的存储


(1)邻接矩阵:二维数组 ,顺序结构


b07d5ab94d624340bfde4ea1968f96b0.png


(2)邻接表:链表,链式存储结构


3c845193bafd4afcb9474c905396e4a2.png


3.图的遍历


图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次。

图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。


(1)深度优先遍历:类似于树的先根遍历,是树的先根遍历的推广(可以采用递归和借助栈的非递归方式实现)

(2)广度优先遍历:类似于树的层次,它是树的按层遍历的推广(借助队列、非递归方式实现)


143bc50abe254dcb815e0fd22175474d.png


ff2c9222408a4d8c989333c20f622669.png


b39734e7d01049c58b0225dc2cb28a7e.png


4.最短路径


在许多应用领域,带权图都被用来描述某个网络,比如通信网络、交通网络等。这种情况下,各边的权重就对应于两点之间通信的成本或交通费用。此时,一类典型的问题就是:在任意指定的两点之间如果存在通路,那么最小的消耗是多少。这类问题实际上就是带权图中两点之间最短路径的问题。


13faa4957deb488fb41b982f1101a162.png


(1)最短路径1:段数最少的最短路径

生活案例:换乘最少

解决方案:使用广度优先搜索即可

类似于树的层次遍历,需要借助于队列来实现


(2)最短路径2:权值最小的最短路径

生活案例:时间最少,距离最短

解决方案:使用狄克斯特拉算法

注意:-1 表示无穷大


00968c6248fb4bfa8bebddc59104b58c (1).png


②以V2为顶点


db1faa6bb42e41d683773cae31ce3431.png


③以V3为顶点


83cdfa67c0b94a54a632f7a23a503e8c.png


④以V4为顶点


ec6130287c984edf8a4c92bf0fb303a4.png


⑤以V6为顶点


008d41335cb349f7a18ea51d2178a665.png


⑥以V7为顶点


a4df51ba634e4037879c4a266f078eb0.png


⑦以V5位顶点


41f5fc24bc2e4a94a2b442396077b7db.png


⑧最终


6fe99c25d33749eca987e1cd812660ca.png

目录
相关文章
|
9月前
|
存储 算法 Go
Golang 数据结构:图
Golang 数据结构:图
108 0
|
8月前
|
存储 算法
数据结构===图
数据结构===图
|
7月前
|
算法 Python
逆袭之路!用 Python 玩转图的 DFS 与 BFS,让数据结构难题无处遁形
【7月更文挑战第12天】图的遍历利器:DFS 和 BFS。Python 中,图可表示为邻接表或矩阵。DFS 沿路径深入,回溯时遍历所有可达顶点,适合找路径和环。BFS 层次遍历,先近后远,解决最短路径问题。两者在迷宫、网络路由等场景各显神通。通过练习,掌握这些算法,图处理将游刃有余。
78 3
|
7月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
69 1
|
8月前
|
存储
数据结构学习记录——如何建立图(邻接矩阵、邻接表-图节点的结构、创建并初始化、插入变、完整图的建立)
数据结构学习记录——如何建立图(邻接矩阵、邻接表-图节点的结构、创建并初始化、插入变、完整图的建立)
139 0
|
8月前
|
存储 算法
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
101 0
|
8月前
|
存储 算法 安全
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
57 0
|
8月前
|
存储 C语言
数据结构学习记录——图的遍历(深度优先搜索、广度优先搜索、为什么需要两种遍历、图不连通怎么办)
数据结构学习记录——图的遍历(深度优先搜索、广度优先搜索、为什么需要两种遍历、图不连通怎么办)
99 0
|
8月前
|
存储 机器学习/深度学习
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
105 0
|
9月前
|
存储 机器学习/深度学习 算法
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
111 1