算法系列15.1——图类题目通用数据结构

  • 无向图,和有向图差别不大,所有的边都成对

  • 表达方式

    • 邻接表
      • 大致上是以点集为单位,与点直接相邻的点写在后面
    • 邻接矩阵
      • 一定是一个正方形的矩阵
      • 大致上是以边为单位,每个可能的边,不管是否有,都在矩阵中
      • 自己到自己是0,没有边是无穷
    • 某一些特殊的图可能可以用数组来表示
  • 图上的算法是有限的,但是可能会突然变换图的表达方式

  • 建议是用自己最喜欢的图结构实现所有的算法,作为模板,遇到题目时编写接口,将新的图结构转换为喜欢的图结构

  • 一个推荐的图结构
    在这里插入图片描述

    • 一个点集,一张哈希表,key表示点编号,Node表示点结构

    • 一个边集,一个hash set

    • 点的描述,Node
      在这里插入图片描述

      • 值value编号,通常可以等于哈希表中的key
      • 入度in
      • 出度out
      • nexts,从他发散出去的边,直接相邻的点有哪些,放在链表< Node >中
      • edges,所有相邻的边
    • 边的描述,Edge在这里插入图片描述

      • 无向边就是两个有向边组合
      • weght权重
      • from来自
      • to到达
    • 使用时只需要编写函数create graph,之后套用算法

      • 通常来说,先创建点,会预留下两个空列表,入度,出度初始化为0
      • 然后创建边
      • 然后更新from点nexts
      • 然后更新入度,出度
      • 更新两个点的edges
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值