图的存储结构

来源:互联网 发布:ct young无网络连接 编辑:程序博客网 时间:2024/06/10 01:15

存储结构

要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以下二种:

  • 邻接矩阵
  • 邻接表

邻接矩阵

我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法。

我们假设A是这个二维数组,那么A中的一个元素aij不仅体现出了结点vi和结点vj的关系,而且aij的值正可以表示权值的大小。

以下是一个无向图的邻接矩阵表示示例:

无向图邻接矩阵

从上图我们可以看到,无向图的邻接矩阵是对称矩阵,也一定是对称矩阵。且其左上角到右下角的对角线上值为零(对角线上表示的是相同的结点)

有向图的邻接矩阵是怎样的呢?

有向图邻接矩阵

对于带权图,aij的值可用来表示权值的大小,上面两张图是不带权的图,因此它们值都是1。

邻接表

我们知道,图的邻接矩阵存储方法用的是一个n*n的矩阵,当这个矩阵是稠密的矩阵(比如说当图是完全图的时候),那么当然选择用邻接矩阵存储方法。
可是如果这个矩阵是一个稀疏的矩阵呢,这个时候邻接表存储结构就是一种更节省空间的存储结构了。
对于上文中的无向图,我们可以用邻接表来表示,如下:

无向图邻接表

每一个结点后面所接的结点都是它的邻接结点。

邻接矩阵与邻接表的比较

当图中结点数目较小且边较多时,采用邻接矩阵效率更高。
当节点数目远大且边的数目远小于相同结点的完全图的边数时,采用邻接表存储结构更有效率。

邻接矩阵的Java实现


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三星手机耗电快怎么办 淘宝被投诉知识产权怎么办 投诉315后卖家仍不处理怎么办 买家投诉卖家不发货怎么办 卖家收到投诉怎么办 淘宝投诉成功后怎么办 三星s7手机发烫怎么办 天猫的换货怎么办 换货商家不发货怎么办 天猫卖家恶意不发货怎么办 快递少发货了怎么办 卖家不想发货怎么办 培训公司不退款怎么办 淘宝七天内发货怎么办 如果驾校不退钱怎么办 驾校迟迟不退款怎么办 遇到技术同行竞争怎么办 遇到童装同行竞争怎么办 做生意遇到同行竞争怎么办? 出租屋床板断了怎么办 床头板不靠墙怎么办 淘宝投诉没人管怎么办 充值卡100充300怎么办 微信充qb冲错号了怎么办 淘宝不退邮费怎么办 退款后收到货怎么办 此项目不能退款怎么办 快递没到手里怎么办 淘宝退货退款超时怎么办 快递柜代收签收怎么办 app充值限制怎么办 机型不支持计步怎么办 退款被拒绝应该怎么办 手机机型不支持吃鸡怎么办 话费交错号码了怎么办 充值话费没到账怎么办 支付宝交错话费怎么办 支付宝不退款怎么办 充话费被退款怎么办 交错话费想追回怎么办 充话费未到帐怎么办