了解数据结构中的图

    在本教程中,您将学习什么是图。此外,您还将找到图的表示形式。
    图数据结构是节点的集合,这些节点有数据并连接到其他节点。
    让我们通过一个例子来理解这一点。在facebook上,所有事物都是一个节点。包括用户、照片、相册、事件、组、页面、评论、故事、视频、链接、注释……任何有数据的事物都是一个节点。
    每个关系都是从一个节点到另一个节点的联结。无论你发布一张照片,加入一个小组,喜爱一个页面等等,都会为这些节点创建新的联结。
在这里插入图片描述
    节点之间的联结画到纸面就成了边,facebook的一切都是这些节点和边的集合。这是因为facebook使用图数据结构来存储数据。
    更准确地说,图是一种(V,E)数据结构,由下面元素组成:

  • 顶点的集合V
  • 边的集合E,表示为有序的顶点对(u,v)
    在这里插入图片描述
        在图中,
V = {0, 1, 2, 3}
E = {(0,1), (0,2), (0,3), (1,2)}
G = {V, E}
图术语
  • 相邻:如果一个顶点有一条边与另一个顶点相连,则称之为相邻。顶点2和3不相邻,因为它们之间没有边。
  • 从顶点A到顶点B的一系列边称为路径。0-1、1-2是从顶点0到顶点2的路径,0-2也是从顶点0到顶点2的路径。
  • 一个图有边(u,v)不一定意味着也有边(v,u)。图中的边用箭头表示,表示边的方向。
图的表示

    图通常以两种方式表示:

  1. 邻接矩阵
        邻接矩阵是V x V顶点的二维数组。每行和每列代表一个顶点。
        如果元素 a[i][j] 的值为1,则表示存在连接顶点 i 和顶点 j 的边。
        我们上面创建的图的邻接矩阵是:
    在这里插入图片描述
        由于它是一个无向图,对于边(0,2),我们还需要标记边(2,0),使邻接矩阵关于对角线对称。
        在邻接矩阵表示中,边查找(检查顶点A和顶点B之间是否存在边)非常快,但是我们必须为所有顶点之间的每个可能链接保留空间(V x V),因此它需要更多空间。
  2. 邻接表
        邻接表将图表示为链接列表的数组。
        数组的索引表示一个顶点,其链表中的每个元素表示与该顶点形成边的其他顶点。
        我们在第一个示例中创建的图的邻接列表如下:
    在这里插入图片描述
        邻接列表在存储方面非常有效,因为我们只需要存储边的值。对于具有数百万顶点的图,这意味着节省了大量的空间。
图操作

    最常见的图形操作是:

  • 检查图中是否存在该元素
  • 图遍历
  • 向图添加元素(顶点,边)
  • 寻找从一个顶点到另一个顶点的路径
参考文档

[1]Parewa Labs Pvt. Ltd.Graph Data Stucture[EB/OL].https://www.programiz.com/dsa/graph,2020-01-01.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值