图论基础------存储与查询

图论 (graph) ,其实就是把很多个相同的事物抽象为一个个点,把它们之间的关系抽象为一条边,从而组成一张图。比如我们熟悉的树,他就是一张图。

一. 图的相关定义

图可以分为无向图有向图,他们分定义分别如下:

  1. 无向图:
    两个点之间的一条边没有规定方向,比如: A 点与 B 点之间有一条路径,那么可以从 A 点到 B 点,也可以从 B 点到 A 点。也就是说这条路是双行道。
  2. 有向图:
    两个点之间的边可能有多条,并且规定了方向。A 到 B 有一条路径,A 可以从这条路到 B ,但是从 B 不可以到 A 。也就是像生活中的汽车单行道,是不可以反向过去的。
    图论中的专业术语:

图又分为带权图和无权图。
其实带权图就是在一张图中的任意一条路径都有一个值(题目给出)。而无权图其实就是在两点之间的路径上没有值,(通常把路径上的值置为 1),在储存的时候差别其实也不是很大。

在图中的一些术语:

  • 路径:(无向图)相邻顶点的边
  • 权值:一条路径上的值
  • 连通图:可以从一个任意一个点经过某些路径可以到达任意一个点的图
  • 非连通图:与上文相反
  • 边:两点之间的一条连线(可能两点之间有多条)
  • 有向路径:在有向图中指明了起点和终点的路径
  • 有向环:一条至少含有一条边且起点和终点相同的有向路径(当然只存在于有向图中)
  • 度 :(有向图)
    • 入度:以顶点为起点的边的数目称为这个点的入度
    • 出度:以顶点为终点的边的数目称为这个点的出度
  • 度:(无向图)连接这个顶点的边的条数称为这个点的度
  • 有向无环图:没有环的有向图
  • 圈:(无向图)起点与终点重合的一条路径
  • 树:(无向图)没有圈的连通图
  • 森林:没有圈的非连通图(树和森林其实也是图的一种)

二. 图的储存
对于一张图,我们储存的方式一般有两种:

  • 邻接矩阵,也就是用一个矩阵来表示两条边是否相邻,存在路径则为 1 ,不存在则为 0(无向图)(有向图那么矩阵里面存的就应该是权值)
  • 邻接表,就是用一张表来储存两个点之间的关系(下面会用代码细讲)

邻接矩阵实现(无向图 && 无权值):

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值