浅谈图论-1.1图的几种存储方式以及连通

本文介绍了图论中的图的概念,包括点、边、单向图与无向图,以及出度和入度。接着详细讨论了图的四种存储方式:邻接矩阵、邻接点列表、结构体数组和链式前向星,分析了各自的优缺点。
摘要由CSDN通过智能技术生成

前言


图,不是可以三言两语说得通的数据结构,比如树严格来说也是一种图,如果树中带环,就变成了图。

正文

如果不知道本节的重点,请先阅读标题。接下来我们直接开始。

首先,图你可以通俗的理解为几座城市,比如ABCD四座,A和B之间有城际公路,B和C有城际公路,D没有往外的城际公路,那么只要是个酱紫就知道A可以去B去C,B可以去A去C,C可以去A去B,D无处可去。在图中,我们把“城际高速”称为边,城市称作点或结点,而像D这样的城市叫“孤点”或“孤岛”。很通俗易懂,对吧?
然后是单向图与无向图,仍然通过举例来说明。
假设A点和B点连通,
但只能从A点去B点,这就是单向连通;
如果A点可以去B点,B点也可以去A点,这就是双向连通。


那么你可能会说,这样讲图不就是个数学模型嘛?编程上不是什么用也没有吗?那么我们现在引入两个概念,及出度and入度。你可以这么想,一个结点可以直接去到的结点的个数(不可以绕路)叫做出度,而可以直接去到该结点的结点个数(不可以绕路)叫做入度。


还是很简单的道理,有了以上概念,还是要进入代码环节。如何存储图呢?(提前预告一下,关于图的其他知识,比如图的搜索、洪水填充、完全图等知识会在下一节提到)


关于存储图的方法,可谓是群英集萃,目前作者已知的有4种,邻接矩阵、邻接点列表以及结构体数组和链式前向星。下文会分开赘述。


邻接矩阵

顾名思义,邻接矩阵就是把图的结点的连通关系保存在一个矩阵中。
优点很明显,就是可以很清楚地知道A点与B点是否连通。
但缺点也很多,比如空间的限制,假设我现在有10000个结点,a[10001][10001] 这么大的数组是开不出来的。
接下来演示邻接矩阵的存储方法。

#define MAXN 1008
bool a[MAXN][MAXN];
int n,m,nodex,nodey;
cin>>n>>m; // 有n个点,m个邻接关系
for(int i=1;i
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值