美文网首页
数据结构-图

数据结构-图

作者: Ritchie_Li | 来源:发表于2022-04-29 20:43 被阅读0次

图也是一种非线性结构,图中任意两个节点间都可能有直接关系。

相关定义如下:

无向图:图的结点之间连接线是没有箭头的,不分方向。

有向图:图的结点之间连接线是箭头,区分A到B,和B到A是两条线。

完全图:无向完全图中,节点两两之间都有连线,n个结点的连线数为n-1)+n-2+…+1 n*(-1)/2:有向完全图中,节点两两之间都有互通的两个箭头,n个节点的连线数为 n*(n-1)

度、出度和入度:顶点的度是关联与该顶点的边的数目。在有向图中,顶点的度为出 度和入度之和。出度是以该顶点为起点的有向边的数目。入度是以该顶点为终点的有 向边的数目。

路径:存在一条通路,可以从一个顶点到达另一个顶点,有向图的路径也是有方向的。

连通图和连通分量:针对无向图。若从顶点v到顶点u之间是有路径的,则说明v和u之间是连通的,若无向图中任意两个顶点之间都是连通的,则称为连通图。无向图G的极 大连通子图称为其连通分量。

强连通图和强连通分量:,针对有向图。,若有向图任意两个顶点间都互相存在路径,即 存在v到,也存在u到的路径,则称为强连通图。有向图中的极大莲通子图称为其强 连通分量。

网:边带权值的图称为网。

图的存储

邻接矩阵:假设一个图中有n个节点,则使用n阶矩阵来存储这个图中各节点的关 系,规则是若节点i到节点j有连线,则矩阵Ri,j=1,否则为0。因此,如果是一个无 向图,肯定是沿对角线对称的,只需要存储上三角或者下三角就可以了,而有向 图则不一定对称。示例如下图所示:

邻接链表:用到了两个数据结构,先用一个一维数组将图中所有顶点存储起来 而后,对此一维数组的每个顶点元素,使用链表挂上和其有连线关系的结点的编 号和权值,示例如下图所示:

图的遍历

图的遍历是指从图的任意节点出发,沿着某条搜索路径对图中所有节点进行访问且只访问一次,分为以下两种方式:

深度优先遍历:从任一顶点出发,遍历到底,直至返回,再选取任一其他节点出发,重复这个过程直至遍历完整个图;

广度优先遍历:先访问完一个顶点的所有邻接顶点,而后再依次访问其邻接顶点的所有邻接顶点,类似于层次遍历。

图的最小生成树

假设有n个节点,那么这个图的最小生成树有n-1条边(不会形成环路,是树非图),这n-1条边会将所有顶点都连接成一个树,并且这些边的权值之和最小,因此称为最小生成树。

普里姆算法:从任意顶点出发,找出与其邻接的边权值最小的,此时此边的另外一个顶点自动加入树集合中,而后再从这这个树集合的所有顶点中找出与其邻接的边权值最小的,同样此边的另外一个顶点加入树集合中,依次递归,直至图中所有顶点都加入树集合中,此时此树就是该图的最小生成树。

克鲁斯卡尔算法(推荐):这个算法是从边出发的,因为本质是选取权值最小的n-1条边,因此,就将边按权值大小排序,依次选取权值最小的边,直至囊括所有节点,要注意,每次选边后要检查不能形成环路。


图的拓扑序列

AV网(以顶点表示活动的网):在有向图中,以顶点表示活动,用有向边表示活 动之间的优先关系。

AV网用来表示大的工程项目执行计划,因此不能出现有向环,若存在,则意味着 某项活动必须以自身任务的完成为先决条件,因此,若要检测一个工程是否可行, 首先应检查对应的AV网是否存在回路。检测的方法是对有向图构造其顶点的拓扑 有序序列。

构造方法:将有向图的有向边作为活动开始的顺序,若图中一个节点入度为,则 应该最先执行此活动,而后删除掉此节点和其关联的有向边,再去找图中其他没 有入度的结点,执行活动,依次进行,示例如下:

相关文章

  • 图表的数据返回格式

    柱状图、折线图、雷达图的数据结构 饼状图、圆环图、漏斗图、仪表盘的数据结构 地图的数据结构 散点图的数据结构 sc...

  • 14-图和图的存储

    图 如何理解图?前面我们学习了线性表,链表,树等基础数据结构,图这种数据结构就是它们的综合利用。我们都知道,图有边...

  • HashMap源码分析

    HashMap数据结构 HashMap数据结构.png HashMap继承图 HashMap-class.jpg ...

  • 有向无环图的数据结构和拓扑排序

    有向无环图的拓扑排序,首先定义有向图的存储数据结构,邻接链表Bag,实现Iterable接口。 定义有向图的数据结构:

  • OVS 源码分析整理

    OVS 核心代码 OVS 架构 OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码 d...

  • 数据结构之图

    数据结构之图 1. 简介 图结构也是一种非线性数据结构。生活中有很多图结构的例子,比如通信网络、交通网络、人际关系...

  • TensorFlow2简单入门-张量数据结构(Tensor)

    程序 = 数据结构+算法 TensorFlow程序 = 张量数据结构 + 计算图算法语言 TensorFlow中的...

  • 数据结构与算法基础

    思维导图 一、数据结构 1、数据结构基础 1.1、什么是数据结构? 数据结构:是相互之间存在一种或多种特定关系的数...

  • LeetCode刷题计划

    几个重要问题类型 排序 查找 字符串处理 图问题 组合问题 几何问题 数值问题 几种基本数据结构 线性数据结构 图...

  • Java核心类库—— 数据结构

    Java核心类库-------数据结构体系图 1.数据结构 2.栈 3.哈希表

网友评论

      本文标题:数据结构-图

      本文链接:https://www.haomeiwen.com/subject/sqxeyrtx.html