茶艺师学算法打卡14:图

25 阅读1分钟

茶艺师学算法打卡14:图

学习笔记

图是非线性的数据结构,与树相比:

  • 树的节点,在图这里是顶点(vertex)
  • 树的边,在图这里是边(edge)

除了这些,图还有以下概念:

  • 度(degree),用来描述与顶点相连的边数。指向顶点的边数,称之为入度;从顶点出发的边数,称之为出度
  • 边有方向的图,称之为有向图;没有方向,无向图
  • 边上的值,称之为权重(weight)

图的存储方法也有多种,常用的有:

  • 邻接矩阵(Adjacency Matrix)简单来说就是一个矩阵,初始值为0,有连边的为1,无向图正着反着都为1(双向 == 无向),有权重的直接是权重值
  • 邻接表(Adjacency List)这很像数组,数组的每一位插着链表,链表记录着顶点连向的下一个顶点。这样的邻接表默认记录着顶点出度的情况。自然就有逆邻接表,记录着顶点入度的情况

存储方法的选择是基于算法。除了考虑算法,基于数据的规模,小的可以在内存里处理,大一点的可以存硬盘,甚至是基于哈希算法的数据分片分布在不同的机器上。再大点,可以考虑使用数据库。