目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5930k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(171)
赞(0)

图结构

image-20231220173642683

图(graph)是一种非线性数据结构,由顶点(vertex)和 边(edge) 组成

我们可以将图$G$抽象地表示为一组顶点$V$和一组边$E$的集合。以下示例展示了一个包含 5 个顶点和 7 条边的图

image-20231220173011923

常见应用

应用顶点图计算问题
社交网络用户好友关系潜在好友推荐
地铁线路站点站点间的连通性最短路线推荐
物流仓库、交叉口道路、路径最短路径、最优路径规划
生物网络蛋白质、基因生物相互作用生物网络模式、相互作用预测
推荐系统用户、商品用户行为、购买关系个性化推荐、相似商品推荐
金融风险公司、投资者资金流动关系风险评估、投资组合优化

图常见类型

根据边是否具有方向,可分为无向图(undirected graph)和有向图(directed graph)

  • 在无向图中,边表示两顶点之间的"双向"连接关系,例如微信或 QQ 中的"好友关系"
  • 在有向图中,边具有方向性,即 $A \rightarrow B$ 和 $A \leftarrow B$ 两个方向的边是相互独立的,例如微博或抖音上的"关注"与"被关注"关系

image-20231220174410585

根据所有顶点是否连通,可分为连通图(connected graph)和非连通图(disconnected graph)

  • 对于连通图,从某个顶点出发,可以到达其余任意顶点
  • 对于非连通图,从某个顶点出发,至少有一个顶点无法到达

image-20231220174742474

还可以为边添加"权重"变量,从而得到有权图(weighted graph)。例如在"永劫无间"等游戏中,系统会根据共同游戏时间来计算玩家之间的"亲密度",这种亲密度网络就可以用有权图来表示

image-20231220175401219

图数据结构包含以下常用术语

  • 邻接(adjacency):当两顶点之间存在边相连时,称这两顶点"邻接"
  • 路径(path):从顶点 A 到顶点 B 经过的边构成的序列被称为从 A 到 B 的"路径"。边序列 1-2-4-5 是顶点 1 到顶点 5 的一条路径
  • 度(degree):一个顶点拥有的边数。对于有向图,入度(in-degree)表示有多少条边指向该顶点,出度(out-degree)表示有多少条边从该顶点指出

图的表示方式

图的常用表示方式包括"邻接(关联)矩阵"和"邻接表"

关联矩阵

设图的顶点数量为 $n$ ,邻接矩阵(adjacency matrix) 使用一个 $n \times n$ 大小的矩阵来表示图,每一行(列)代表一个顶点,矩阵元素代表边,用 1 或 0 表示两个顶点之间是否存在边

设邻接矩阵为$M$、顶点列表为$V$,那么矩阵元素 $M[i,j]=1$表示顶点 $V[i]$ 到顶点 $V[j]$ 之间存在边,反之 $M[i,j]=0$ 表示两顶点之间无边

image-20231220201515503

邻接矩阵具有以下特性:

  • 顶点不能与自身相连,因此邻接矩阵主对角线元素没有意义
  • 对于无向图,两个方向的边等价,此时邻接矩阵关于主对角线对称
  • 将邻接矩阵的元素从 1 和 0 替换为权重,则可表示有权图

提示

时间复杂度均为 $O(1)$ 空间复杂度$O(n^2)$

邻接表

邻接表(adjacency list)使用$n$个链表来表示图,链表节点表示顶点。第$i$个链表对应顶点$i$,其中存储了该顶点的所有邻接顶点(与该顶点相连的顶点)

image-20231220194843453

提示

邻接表仅存储实际存在的边,而边的总数通常远小于 $n^2$ ,因此它更加节省空间

而查找找又因是链表,所以效率不如邻接矩阵

实时效果反馈

1. 根据图的表示方式,选择下面哪个描述是正确的?

A 关联矩阵表示法中,矩阵元素$a[i,j]$的值表示从顶点 $i$ 到顶点 $j$ 有一条边

B 邻接表表示法中,每一行表示图中的一个顶点,列表示与该顶点相邻的所有顶点

C 关联矩阵表示法中,矩阵的行表示图的边,列表示图的顶点

D 无向图中,每条边都有方向,即从一个顶点指向另一个顶点

答案

1=>B

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2