网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径
图
多对多关系
是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成
其定义
Graph = (V, E)
V={x | x ∈某个数据对象}
E = {<u, v> | P(u ,v) ∧ (u, v∈V )}
V是具有相同特性的数据元素的集合,V中的数据元素通常称为顶点(Vertex)
E是两个顶点之间关系的集合。P(u, v) 表示u和v之间有特定的关联属性若<u,v>∈E,则<u,v>表示从顶点u的一条弧,并称u为弧尾或起始点,称v为弧头或终止点
此时图中的顶点之间的连线是有方向的,这样的图称为有向图。若<u,v>∈E,则<v,u>∈E,即关系E是对称的,此时可以用一个无序对(u,v)俩代替两个有序对
它表示顶点u和顶点v之间的一条边,此时图中的顶点之间的连线是没有方向的,这种图称为无向图在无向图和有向图中V中的元素都称为顶点,而顶点之间的关系却有不同的效果,即弧或边,为避免麻烦,在不影响理解的前提下,统称为边(edge)
并且还约定顶点集与边集都是有限的,并记顶点和边的数量为|V|和|E|
无向图实际上也是有向图,双向图
加权图
在实际运用中,图不但徐耀表示元素之间是否存在某种关系
而且图的边往往与具有一定实际意义的数有关,即每条边都有与它相关的实数,称为权
这种边上带有权值的图称为带权图
图的存储
- 邻接矩阵:二维数组 顺序存储结构
- 邻接表:链表 链式存储结构
图的遍历
图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次
图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法
深度优先遍历(DFS depth-first search):类似于树的先根遍历,是树的先根遍历的推广(可以采用递归和借助栈的非递归方式实现)
广度优先遍历(BFS breadth-first search):遍历类似于树的层次遍历,它是树的安层遍历的推广(借助队列 非递归方式实现)
深度优先遍历:ABCDEFGHI
广度优先遍历:ABFCIGEDH
图的最短路径
最短路径1:段数最少的最短路径
换乘最少
使用广度优先搜索最短路径2:权值最小的最短路径
时间最少、距离最短(看权值代表什么)
使用迪克斯特拉算法
网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径相关推荐
- 图的存储 邻接矩阵+邻接表+链式前向星
图的存储 - 邻接矩阵 在树的问题中,邻接矩阵是空间.时间的极大浪费. 假设树的结点个数为 N = 100000. 建立邻接矩阵需要空间为 1e5*1e5 但是由于只有 N - 1 条边,所以在邻接矩 ...
- 【图】什么是图?无向图怎么存储?邻接表和邻接矩阵如何用代码存储图?
目录 一.概念 图是什么 各种图的定义 二.图的存储结构 邻接矩阵 邻接表 三.代码实现图的存储 1.无向图存储 2.邻接矩阵存储图 核心代码 完整代码 3.邻接表存储有向图(不含权重) 核心代码 完 ...
- 7.2图的存储结构(邻接表)
为什么要采用邻接表: 对于边数相对顶点较少的图,这种结构无疑是存储空间的极大浪费. 所以把数组和链表结合起来存储,这种方式在图结构中适用,称为邻接表(AdjacencyList) 邻接表的处理方法如下 ...
- 图的存储结构——邻接表法
图的存储结构--邻接表法 一.邻接表 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...
- 【 第11关:基于邻接表的深度优先遍历】【编程题实训-图】【头歌】【bjfu-282】
任务描述 一个连通图采用邻接表作为存储结构.设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程. 编程要求 输入 多组数据,每组m+2数据行.第一行有两个数字n和m,代表有n个顶点和m条边.顶点 ...
- 二叉树的存储方式【顺序储存(数组)、链式存储、邻接表存储等】
其他二叉树知识!二叉树知识汇总 目录 前言: 1.顺序存储结构 2.链式存储结构 3.二维数组直接存储 4.邻接表存储 前言: 顺序存储和链式存储是经典讲解的内容,本文做简单理论介绍,而对于后两种:二 ...
- 图的邻接矩阵存储和邻接表存储定义方法
一.邻接矩阵 #include <iostream> using namespace std; #define MaxVertexNum 100 //顶点最大数目//邻接矩阵存储结构 ty ...
- 数据结构之图:邻接矩阵和邻接表、深度优先遍历和广度优先遍历
简介 线性表是一种线性结构,除了头结点和尾节点,线性表的每个元素都只有一个前取节点和一个后继节点.而树结构则相较于线性表更加复杂,它描述的关系为数据元素之间的父子关系,也是现实世界父子关系的缩影, 一 ...
- 图的存储结构---邻接表
1. 邻接表(无向图) 对于边数相对顶点较少的图,可采取邻接表. 把数组与链表结合在一起来存储,这种方式在图结构也适用,称为邻接表(AdjacencyList). 2. 邻接表(有向图) 以每个顶点出 ...
- 【数据结构】图的存储结构—邻接表
目录 什么是邻接表? 邻接表:定义 邻接表:相关类 邻接表:基本操作 1)创建无向网 2)创建有向网 3)顶点定位 4)插入边 5)第一个邻接点 6)查询下一个邻接点 小试牛刀 对比邻接表与邻接矩阵
最新文章
- 网站基于vs,复选框,单选款
- pta 7-6 根据后序和中序遍历输出先序遍历 (25 分)
- echarts toolbox 自定义工具
- 小腿训练三部曲(二)
- 使用VLC转码,在HTML5页面播放实时监控
- 如何在一分钟内实现微服务系统下的架构可视化
- 2011年4月51CTO壁纸点评活动获奖名单【已结束】
- throw在java用法_throw()使用小结
- 如何查看Excel文件最大行数
- SSL证书常见错误和解决办法
- HDU - 5894 hannnnah_j’s Biological Test 组合数(插板法)
- 2023年个人综合所得税汇算清缴来啦 自然人的补缴退税
- windows10自带的画图软件橡皮擦调解大小
- 【Java程序设计】Java上机实验(二)
- 三分钟快速了解typeScript 类
- Midjourney8种风格介绍+使用场景(2)
- 一文了解下一代互联网核心技术HTTP/3及技术发展
- 【爬虫入门】获取响应内容(即读取网页html的源码)
- 浅析各大行业信息化以及云计算应用现状
- matlab深度遍历算法,数据结构算法之动态规划(深度优先遍历)
热门文章
- 小米连续点击Android,屏幕自动点击
- linux文件系统安全模型与()属性相关,《Linux系统安全.》.ppt
- 【办公类-19-01-01】办公中的思考——Python,统计教职工的姓氏谁最多?
- 鹅肉是凉性还是热性 鹅肉怎么做好吃
- 我的世界bukkit服务器开发教程第一章——开发环境
- 首阴战法胜率不高?应该是忘记加上一个大前提!
- Windows 2D 绘图 (GDI, GDI+, Direct2D)
- ubuntu永中office的快捷键
- win10忘记密码_电脑忘记密码没关系,这招教你简单轻松改密码
- mysql忘记密码win10_win10 mysql8.0.12 忘记root密码如何重置密码