什么是图

什么是图

图是用来表示一些事物关系的表示方法,树是图的一种,许多问题都可以归纳成图的问题。
图由顶点(node)和边(edge)组成:
在这里插入图片描述

图的种类

有指向性的图叫做有向图,没有指向的图叫做无向图,上面的图片是无向图。
下面是有向图:
在这里插入图片描述

图的边可以带上权值,可以粗略的理解为边的长度,因为权值可以表示距离,也可以表示其他特殊含义。
带权值的图被叫做 带权图

无向图的基本概念

相邻 :如果两个顶点有连接,则称他们相邻。
路径 :相邻顶点的序列叫做路径,如下图,3和4之间的路径为
3-7-1-4 或者 3-9-5-4
在这里插入图片描述
连通图 :任意顶点之间都有路径的图叫做连通图。
:起点和终点一样的路径叫做圈。
:没有圈的连通图叫做树,一棵树的边数恰好是顶点数-1。
森林 :没有圈的 连通图叫做森林。
:顶点连接边数的图叫做度,如上图,1的度是3,4的度是2。

有向图的基本概念

出度 :由顶点向外指出的边的数量为该点的出度。
入度 :指向顶点的变的数量为该点的入度。

图的表示

为了处理图这种结构,我们最常见的有两种图的表示方法:
邻接矩阵邻接表

邻接矩阵

邻接矩阵用一个二维数组 G 表示。
在无向图中,如果 i 和 j 连接,我们就把 G[i][j] 和G[j][i] 设置成1或者对应的权值就行了。
比如我们连接3和1,他们之间的权值是5,数组如下图所示:
在这里插入图片描述
在无向图中,如果表示 i 指向 j ,我们就把 G[i][j] 设置成1或者对应的权值,就不需要设置 G[j][i] 了。

邻接表

用邻接矩阵会浪费大量内存,于是我们可以用邻接表。
邻接表的表示如下图:
在这里插入图片描述
邻接表的实现有很多方法,它比邻接矩阵节省内存,不过实现比矩阵复杂。
在邻接表中查询两点是否有边,我们需要遍历一遍顶点列表才行。
而矩阵不需要,直接用下标索引就行了。
所以邻接表的速度会比邻接矩阵慢一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值