完全理解图(上)——图的概念、存储及遍历

术语

  • 图——由结点的有穷集合V和边的集合E组成,在图中,结点常被称为顶点,若两个顶点之间存在一条边,则表示两个顶点相邻。
  • 有向图——图的每条边都有方向。
  • 无向图——图的每条边没有方向。
  • 弧——有向图中,常将边称为弧,含箭头的一端称为弧头,另一端称为弧尾,记作 < v i , v j v_i,v_j vi,vj>,表示从顶点 v i v_i vi 到顶点 v j v_j vj 有一条边。
  • 顶点的度——无向图中,边记作 ( v i , v j v_i,v_j vi,vj),它等价于在有向图中存在 < v i , v j v_i,v_j vi,vj> 和 < v j , v i v_j,v_i vj,vi> 两条边。与顶点 v 相关的边的条数称为顶点 v 的度。
  • 顶点的入度、出度——有向图中,指向顶点 v 的边的条数称为顶点 v 的入度,由顶点 v 出发的边的条数称为顶点 v 的出度。
  • 有向完全图和无向完全图——若有向图中有 n 个顶点,则最多有 n(n-1) 条边,将具有 n(n-1)条边的有向图称为有向完全图,若无向图中有 n 个顶点,则最多有 n(n-1)/2 条边,将具有 n(n-1)/2 条边的无向图称为完全无向图。
  • 路径和路径长度——在一个图中,路径为相邻顶点序偶所构成的序列。路径长度指路径上边的数目。
  • 简单路径——序列中顶点不重复出现的路径。
  • 回路——若一条路径中第一个顶点和最后一个顶点相同,则这条路径是一条回路。
  • 连通、连通图和连通分量——在无向图中,如果从顶点 v i v_i vi 到顶点 v j v_j vj 有路径,则称 v i v_i vi v j v_j
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
的邻接表是一种常用的存储结构,它将每个顶点的邻居顶点列表存储在一个链表中。邻接表的实现需要考虑两个方面:存储和遍存储方面: 邻接表的实现需要使用链表存储每个顶点的邻居顶点列表。对于无向,每个顶点都需要存储它的所有邻居顶点;对于有向,需要分别存储每个顶点的入度和出度邻居顶点列表。邻接表的实现还需要考虑重边和自环的情况,可以采用链表中的结点权值来表示边的权值。在邻接表中,每个顶点的邻居顶点列表可以按任意顺序存储,但通常按顶点编号递增的顺序进行存储。 遍方面: 的遍算法是算法中的基础,深度优先遍和广度优先遍是两种常用的遍算法。对于邻接表表示的,深度优先遍和广度优先遍的实现需要考虑以下几点: 1. 深度优先遍需要使用栈来保存已经访问的顶点,而广度优先遍需要使用队列来保存已经访问的顶点。 2. 对于无向,每个顶点只需要遍一次即可,而对于有向,需要分别遍每个顶点的入度和出度邻居顶点列表。 3. 在遍过程中,需要标记已经访问过的顶点,以避免重复访问。 4. 遍过程中可以记录每个顶点的访问顺序,以便后续的分析和应用。 总的来说,邻接表是一种常用的存储结构,它的实现需要考虑存储和遍两个方面。在实际应用中,需要根据具体问题选择合适的算法,并根据情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值