数据结构:图(graph)

基本数据结构中最复杂的一种,也是最常用的

经常用于:
地图应用计算最佳导航路由
社交平台表示好友关系
网络中表示拓扑结构
在这里插入图片描述
https://baike.baidu.com/item/拓扑结构图/2104811

注意一组节点和连接节点的边构成的非线性数据结构

节点 又叫做 顶点

注意其实就是图的一种

只不过是 在只有一个根节点,并且节点之间不会形成环
在这里插入图片描述
在这里插入图片描述

有向图和无向图

根据节点之间的边是否方向,可分为有向图无向图

有向图中,只能按照指定的方向进行
在这里插入图片描述
无向图中可以 以任意方向访问节点,因此 它也容易构成
在这里插入图片描述

连通图和非连通图

非连通图 也叫 隔离图
连通图中的每个节点都有连接的边
在这里插入图片描述

非连通图

多个独立的图构成,它们之间没有边进行连接
在这里插入图片描述

加权图

使用代码表示图的方式

在这里插入图片描述

常见的:
邻接矩阵,邻接节点数组

邻接矩阵表示法中:
图是由一个n乘n的二维数组表示的,n节点的数量表示起始节点表示目标节点

如果 起始节点目标节点 之间有边进行连接,就把该位置的元素设置为一,否则设置为零

或者也可以使用truefalse来表示

注意:对于 无向图 矩阵是对称的有向图不一定
在这里插入图片描述
在这里插入图片描述

有向图

在这里插入图片描述

连接节点数组表示法:
节点使对象或者来表示,每个节点保存了和它直接相连的节点所构成的数组,这种结构和 类似
在这里插入图片描述

无向图的js实现

在这里插入图片描述
Node class表示 图的节点
它里边有 节点的值连接节点数组属性
它也是 一个递归结构
连接节点数组中的元素也是Node类型
是当前节点能够连接到的相邻的节点

然后用一个 Graph class表示 图本身
包含这个图中所有节点

注意:使用零件间的数组表示图
在这里插入图片描述

js绘制 图

https://zhuanlan.zhihu.com/p/112029070
data记录顶点节点的数值firstEdge则指向当前顶点的边表中的第一个节点outNum无向图中表示的是与顶点邻接的边的数量,在有向图中则是出度inNum无向图中没有意义,在有向图中表示顶点的入度

入度有向图的某个顶点作为终点的次数和

出度有向图的某个顶点作为起点的次数和

https://zhuanlan.zhihu.com/p/112764372

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐