数据结构图论

这篇具有很好参考价值的文章主要介绍了数据结构图论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识点
引入
图的定义和相关术语
图的实现
广度优先搜索
深度优先搜索

三元组,自学笔记,数据结构,图论,数据结构,算法

最短路径问题: 

   三元组,自学笔记,数据结构,图论,数据结构,算法      

还有其他前往金门大桥的路线,但它们更远(需要四步)。这个算法发现,前往金门大桥的最短路径需要三步。
这种问题被称为最短路径问题(shortest-path problem)。
生活中经常要找出最短路径,这可能是前往朋友家的最短路径,也可能是国际象棋中把对方将死的最少步数。
解决最短路径问题的算法被称为广度优先(breadth-first search,BFS)搜索。

图的定义

标准定义:在数学中,图是描述于一组对象的结构,其中某些对象对在某种意义上是“相关的”。这些对象对应于称为顶点的数学抽象(也称为节点或点),并且每个相关的顶点对都称为边(也称为链接或线)。通常,图形以图解形式描绘为顶点的一组点或环,并通过边的线或曲线连接。
二元组的定义: 图G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交。它们亦可写成V(G)和E(G)。其中,顶集的元素被称为顶点(Vertex),边集的元素被称为边(edge)。E的元素都是二元组,用(x,y)表示,其中x,y∈V。
三元组的定义: 图G是指一个三元组(V,E,I),其中V称为顶集,E称为边集,E与V不相交;I称为关联函数,I将E中的每一个元素映射到V。如果e被映射到(u,v),那么称边e连接顶点u,v,而u,v则称作e的端点,u,v此时关于e相邻。同时,若两条边i,j有一个公共顶点u,则称i,j关于u相邻。

图:Graph=(V,E)
V:顶点(数据元素)的有穷非空集合;
E:边的有穷集合。

无向图:每条边都是无方向的
有向图:每条边都是有方向的

三元组,自学笔记,数据结构,图论,数据结构,算法三元组,自学笔记,数据结构,图论,数据结构,算法

一个是无向图一个是有向图 

完全图:任意两个点都有一条边相连

三元组,自学笔记,数据结构,图论,数据结构,算法三元组,自学笔记,数据结构,图论,数据结构,算法

 n(n-1)/2 条边                   n(n-1) 条边

 

稀疏图:有很少边或弧的图。

稠密图:有较多边或弧的图。

权和网:图中边或弧所具有的相关数称为权。带权的图称为网。

邻接:有边/弧相连的两个顶点之间的关系。存在(vi, vj),则称vi和vj互为邻接点;
存在<vi, vj>,则称vi邻接到vj,vj邻接于vi

关联(依附):边/弧与顶点之间的关系。
存在(vi, vj)/ <vi, vj>,则称该边/弧关联于vi和vj

顶点的度:与该顶点相关联的边的数目,记为TD(v)

在有向图中, 顶点的度等于该顶点的入度出度之和。


顶点v 的入度是以v 为终点的有向边的条数, 记作ID(v)
顶点v 的出度是以v 为始点的有向边的条数, 记作OD(v)


当有向图中仅1个顶点的入度为0,其余顶点的入度均为1,此时是何形状?

是树!而且是一棵有向树!


路径:接续的边构成的顶点序列。
路径长度:路径上边或弧的数目/权值之和。(有两种可能,弧或者边)
回路(环):第一个顶点和最后一个顶点相同的路径。
简单路径:除路径起点和终点可以相同外,其余顶点均不相同的路径。
简单回路(简单环):除路径起点和终点相同外,其余顶点均不相同的路径。

连通图(强连通图):在无(有)向图G=( V, {E} )中,若对任何两个顶点v、u 都存在从v 到u 的路径,则称G是连通图(强连通图)。

三元组,自学笔记,数据结构,图论,数据结构,算法

 子图:

设有两个图G=(V,{E})、G1=(V1,{E1}),若V1εV,E1 εE,则称G1是G的子图。例:(b)、(c) 是(a) 的子图:

三元组,自学笔记,数据结构,图论,数据结构,算法

连通分量(强连通分量)

 无向图G 的极大连通子图称为G的连通分量。

极大连通子图意思是:该子图是G 连通子图,将G 的任何不在该子图中的顶点加入,子图不再连通。

三元组,自学笔记,数据结构,图论,数据结构,算法

 

 

图的遍历

1遍历定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。
2遍历实质:找每个顶点的邻接点的过程
3图的特点:图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。


图常用的遍历:
深度优先搜索
广度优先搜索

广度优先搜索

广度优先Breadth-First-Search(BFS)搜索是一种用于图的查找算法,可帮助回答两类问题。
第一类问题:从节点A出发,有前往节点B的路径吗?(能否连通)
第二类问题:从节点A出发,前往节点B的哪条路径最短?最短路径问题)
前面计算从双子峰前往金门大桥的最短路径,这个问题属于第二类问题:哪条路径最短。

三元组,自学笔记,数据结构,图论,数据结构,算法

 

第一类问题:先找自己连通的,再找自己连通的连通的

回答第二类问题:朋友是一度关系,朋友的朋友是二度关系。一度关系胜过二度关系,二度关系胜过三度关系,以此类推。

三元组,自学笔记,数据结构,图论,数据结构,算法

 广度优先搜索先在一度关系中查找,再在二度关系中查找。
因此找到的是关系最近的芒果销售商。广度优先搜索不仅查找从A到B的路径,而且找到的是最短的路径。
注意,只有按添加顺序查找时,才能实现这样的目的。
有一个可实现这种按添加顺序检查的数据结构,那就是队列(queue)。

用队列实现:广度优先搜索找卖菠萝的朋友(一个入队一个出队)

三元组,自学笔记,数据结构,图论,数据结构,算法

 队列是一种先进先出(First In First Out,FIFO)的数据结构,而栈是一种后进先出(Last In First Out,LIFO)的数据结构。

知道队列的工作原理,就可以实现广度优先搜索

三元组,自学笔记,数据结构,图论,数据结构,算法

具体代码实现

三元组,自学笔记,数据结构,图论,数据结构,算法

三元组,自学笔记,数据结构,图论,数据结构,算法

 三元组,自学笔记,数据结构,图论,数据结构,算法

 

 Peggy既是Alice的朋友又是Bob的朋友,因此她将被加入队列两次:一次是在添加Alice的朋友时,另一次是在添加Bob的朋友时。因此,搜索队列将包含两个Peggy。

三元组,自学笔记,数据结构,图论,数据结构,算法

 但你只需检查Peggy一次,看她是不是芒果销售商。如果你检查两次,就做了无用功。
因此,检查完一个人后,应将其标记为已检查,且不再检查他。
否则就可能会导致无限循环。

检查一个人之前,要确认之前没检查过他。
可使用一个列表来记录检查过的人。

三元组,自学笔记,数据结构,图论,数据结构,算法

 广度优先搜索的时间

运行时间
若在整个人际关系网中搜索芒果销售商,就意味着你将沿每条边前行,因此运行时间至少为O(边数)。
你还使用了一个队列,其中包含要检查的每个人。将一个人添加到队列需要的时间是固定的,即为O(1),因此对每个人都这样做需要的总时间为O(人数)。
所以,广度优先搜索的运行时间为O(人数+ 边数),这通常写作O(V + E),其中V为顶点(vertice)数,E为边数。

广度优先搜索的基本思想

基本思想:——仿树的层次遍历过程文章来源地址https://www.toymoban.com/news/detail-523236.html

到了这里,关于数据结构图论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【YOLOv8模型网络结构图理解】

    YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨干(backbone)和头部(head)结构。这些配置决定了模型的性能和复杂性。 下面是YOLOv8的配置文件和参数的解释: Backbone主干网络 是模型的基础,负责从输入图像中提取特征。这些特征是后续网络层进

    2024年03月26日
    浏览(66)
  • 一些HTTP、TCP、IP、以太报文结构图

    都是我在学习时候整理的一些报文结构,单独的各图例如下: 模型、URL HTTP 报文 IP 报文 以太网报文 如果图中有错误或希望更多的图例,评论或私聊告诉我就好,我之后再完善上

    2024年01月17日
    浏览(53)
  • yolov7论文学习——创新点解析、网络结构图

    1、提出了E-ELAN,但是只在yolov7-e6e中使用到。 2、yolov7基于拼接模型的缩放方法,在yolov7x中使用到。 3、将重参数化卷积应用到残差模块中或者用到基于拼接的模块中去。RepConvN 4、提出了两种新的标签分配方法 1、 ELAN yolov7使用大量的ELAN作为基础模块。 这么多堆叠其实对应了

    2024年01月17日
    浏览(46)
  • yolov5s-6.0网络模型结构图

    因为在6.0上做的了一些东西,所以将6.0得网络模型画了出来,之前也画过5.0的网络模型,有兴趣的小伙伴可以看下。 yolov5s-5.0网络模型结构图_zhangdaoliang1的博客-CSDN博客_yolov5s模型结构 看了很多yolov5方面的东西,最近需要yolov5得模型结构图,但是网上的最多的是大白老师的,

    2023年04月09日
    浏览(39)
  • YOLOv5/v7 引入 最新 BiFusion Neck | 附详细结构图

    YOLO 社区自前两次发布以来一直情绪高涨!随着中国农历新年2023兔年的到来,美团对YOLOv6进行了许多新的网络架构和训练方案改进。此版本标识为 YOLOv6 v3.0。对于性能,YOLOv6-N在COCO数据集上的AP为37.5%,通过NVIDIA Tesla T4 GPU测试的吞吐量为1187 FPS。YOLOv6-S以484 FPS的速度得到了超过

    2024年02月05日
    浏览(45)
  • word可以画神经网络图吗,如何画神经网络结构图

    大概试了一下用visio绘制这个图,除了最左面的变形图片外其余基本可以实现(那个图可以考虑用其它图像处理软件比如Photoshop生成后插入visio),visio中主要用到的图形可以在更多形状-常规-具有透视效果的块中找到块图形,拖入绘图区后拉动透视角度调节的小红点进行调整

    2024年02月15日
    浏览(52)
  • YOLOv7-tiny网络结构图及yaml文件 详细备注

    池化层,默认表示两倍下采样, 就是表示Conv+BN+LeakyReLU [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]] 结构图 yaml yaml文件中如下表示,直接看最后一层输出通道数,尺寸不会变化,SP模块默认设置卷积Pading为卷积核的一半大小 构建代码 yaml文件中的SP表示如下 结构图 yaml文件表示

    2024年02月03日
    浏览(68)
  • 前端Vue uni-app App/小程序/H5 通用tree树形结构图

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(51)
  • 改进YOLOv8 | 即插即用篇 | C2F模块增加注意力机制 | 附详细结构图 计算机视觉

    摘要: 本文针对目标检测算法YOLOv8进行改进,通过在C2F模块中引入注意力机制,提高目标的定位和分类性能。文章首先介绍了YOLOv8的基本原理和结构,然后详细阐述了注意力机制的原理和作用,并对修改后的C2F模块结构进行了说明。最后,给出了实验结果和源代码。 引言 目

    2024年02月04日
    浏览(652)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包