• 多对多关系

  • 是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成

  • 其定义
    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)、图的最短路径相关推荐

  1. 图的存储 邻接矩阵+邻接表+链式前向星

    图的存储 - 邻接矩阵 在树的问题中,邻接矩阵是空间.时间的极大浪费. 假设树的结点个数为 N = 100000. 建立邻接矩阵需要空间为 1e5*1e5 但是由于只有 N - 1 条边,所以在邻接矩 ...

  2. 【图】什么是图?无向图怎么存储?邻接表和邻接矩阵如何用代码存储图?

    目录 一.概念 图是什么 各种图的定义 二.图的存储结构 邻接矩阵 邻接表 三.代码实现图的存储 1.无向图存储 2.邻接矩阵存储图 核心代码 完整代码 3.邻接表存储有向图(不含权重) 核心代码 完 ...

  3. 7.2图的存储结构(邻接表)

    为什么要采用邻接表: 对于边数相对顶点较少的图,这种结构无疑是存储空间的极大浪费. 所以把数组和链表结合起来存储,这种方式在图结构中适用,称为邻接表(AdjacencyList) 邻接表的处理方法如下 ...

  4. 图的存储结构——邻接表法

    图的存储结构--邻接表法 一.邻接表 ​ 由顶点表和边表构成,顶点表由顶点域(data)和指向第一条邻接边的指针(firstarc)构成,边表(邻接表)结点由邻接点域(adjvex)和指向下一条邻接边 ...

  5. 【 第11关:基于邻接表的深度优先遍历】【编程题实训-图】【头歌】【bjfu-282】

    任务描述 一个连通图采用邻接表作为存储结构.设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程. 编程要求 输入 多组数据,每组m+2数据行.第一行有两个数字n和m,代表有n个顶点和m条边.顶点 ...

  6. 二叉树的存储方式【顺序储存(数组)、链式存储、邻接表存储等】

    其他二叉树知识!二叉树知识汇总 目录 前言: 1.顺序存储结构 2.链式存储结构 3.二维数组直接存储 4.邻接表存储 前言: 顺序存储和链式存储是经典讲解的内容,本文做简单理论介绍,而对于后两种:二 ...

  7. 图的邻接矩阵存储和邻接表存储定义方法

    一.邻接矩阵 #include <iostream> using namespace std; #define MaxVertexNum 100 //顶点最大数目//邻接矩阵存储结构 ty ...

  8. 数据结构之图:邻接矩阵和邻接表、深度优先遍历和广度优先遍历

    简介 线性表是一种线性结构,除了头结点和尾节点,线性表的每个元素都只有一个前取节点和一个后继节点.而树结构则相较于线性表更加复杂,它描述的关系为数据元素之间的父子关系,也是现实世界父子关系的缩影, 一 ...

  9. 图的存储结构---邻接表

    1. 邻接表(无向图) 对于边数相对顶点较少的图,可采取邻接表. 把数组与链表结合在一起来存储,这种方式在图结构也适用,称为邻接表(AdjacencyList). 2. 邻接表(有向图) 以每个顶点出 ...

  10. 【数据结构】图的存储结构—邻接表

    目录 什么是邻接表? 邻接表:定义 邻接表:相关类 邻接表:基本操作 1)创建无向网 2)创建有向网 3)顶点定位 4)插入边 5)第一个邻接点 6)查询下一个邻接点 小试牛刀 对比邻接表与邻接矩阵

最新文章

  1. 网站基于vs,复选框,单选款
  2. pta 7-6 根据后序和中序遍历输出先序遍历 (25 分)
  3. echarts toolbox 自定义工具
  4. 小腿训练三部曲(二)
  5. 使用VLC转码,在HTML5页面播放实时监控
  6. 如何在一分钟内实现微服务系统下的架构可视化
  7. 2011年4月51CTO壁纸点评活动获奖名单【已结束】
  8. throw在java用法_throw()使用小结
  9. 如何查看Excel文件最大行数
  10. SSL证书常见错误和解决办法
  11. HDU - 5894 hannnnah_j’s Biological Test 组合数(插板法)
  12. 2023年个人综合所得税汇算清缴来啦 自然人的补缴退税
  13. windows10自带的画图软件橡皮擦调解大小
  14. 【Java程序设计】Java上机实验(二)
  15. 三分钟快速了解typeScript 类
  16. Midjourney8种风格介绍+使用场景(2)
  17. 一文了解下一代互联网核心技术HTTP/3及技术发展
  18. 【爬虫入门】获取响应内容(即读取网页html的源码)
  19. 浅析各大行业信息化以及云计算应用现状
  20. matlab深度遍历算法,数据结构算法之动态规划(深度优先遍历)

热门文章

  1. 小米连续点击Android,屏幕自动点击
  2. linux文件系统安全模型与()属性相关,《Linux系统安全.》.ppt
  3. 【办公类-19-01-01】办公中的思考——Python,统计教职工的姓氏谁最多?
  4. 鹅肉是凉性还是热性 鹅肉怎么做好吃
  5. 我的世界bukkit服务器开发教程第一章——开发环境
  6. 首阴战法胜率不高?应该是忘记加上一个大前提!
  7. Windows 2D 绘图 (GDI, GDI+, Direct2D)
  8. ubuntu永中office的快捷键
  9. win10忘记密码_电脑忘记密码没关系,这招教你简单轻松改密码
  10. mysql忘记密码win10_win10 mysql8.0.12 忘记root密码如何重置密码