数据结构与算法(C++)– 图(Graph)
数据结构与算法(C++)– 图(Graph)
1、图的基础概念
定义:一个图G=(V, E)由顶点(vertex)的集V和边(edge)的集E组成。
- 边(edge):一对点即为一条边(v, w),其中v, w ∈ V
- 有向图(directed):点对是有序的
- 无向图(undirected):点对是无序的
- 邻接(adjacent):w 邻接到 v,当且仅当(v, w )∈ E
- 权(weight)/值(cost):边上的值
- 路径(path):连通两点间的边
- 长(lengh):路径上的边数
- 简单路径(simple path):路径上的顶点都是互异的
- 环(cycle):有向图中,首尾相连长度至少为1的简单路径。
- 无环(acyclic):有向图中中没有环
- 连通的(connected):无向图中每一个顶点到其它顶点都存在一条路径
- 强连通的(strongly connected):有向图具有连通的性质
- 基础图(underlying graph):无向图去掉边的方向
- 弱连通的(connected):有向图的基础图是连通的
- 完全图(complete graph):每一对顶点都存在一条边
几个关系:
- n 个顶点的无向连通图,至少有 n-1 条边
- n 个顶点的有向强连通图,至少有 n 条边
- n 个顶点的无向完全图,有 n(n-1)/2 条边
- n 个顶点的有向完全图,有 n(n-1) 条边
2、图的表示
图有两种表示方法:邻接矩阵,邻接表
邻接矩阵: 稠密(dense),复杂度为O(|V|^2)
邻接表: 稀疏(sparse),复杂度为O(|E| + |V|)
3、广度优先搜索(Breadth-first search,BFS)
定义: 按照由近到远的层进行搜索
实现: 使用队列(queue)结构实现。首先起点入队,队列出队一个元素,把邻接于该元素的所有顶点入队,循环直到队列为空即所有顶点都被访问过。
4、深度优先搜索(Depth-first search,DFS)
定义: 按照由深到浅的递归进行搜索
实现: 使用栈(stack)结构实现。首先起点入栈,出栈一个元素,把邻接于该元素的所有顶点入栈,循环直到栈为空即所有顶点都被访问过。
5、有向无权图的最短路径
实现: 使用广度优先搜索,复杂度为O(|E| + |V|)。
- 首先把起点的长(dv)设为0其它点的长设为∞
- 使用广度优先搜索算法更新点的dv值(邻接点+1),并记录更新点的父点(pv)
- 直到所有的点都被更新过,停止搜索
数据结构与算法(C++)– 图(Graph)相关推荐
- python函数结构图_Python数据结构与算法之图结构(Graph)实例分析
本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...
- python define graph_Python数据结构与算法之图结构(Graph)实例分析
本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...
- 特征图注意力_从数据结构到算法:图网络方法初探
作者 | 朱梓豪 来源 | 机器之心 原文 | 从数据结构到算法:图网络方法初探 如果说 2019 年机器学习领域什么方向最火,那么必然有图神经网络的一席之地.其实早在很多年前,图神经网络就以图嵌入. ...
- 数据结构与算法之图的应用
数据结构与算法之图的应用 图的定义和基本概念 图的实现 数组〈邻接矩阵〉 邻接表 图的应用 最小生成树 Prim(普里姆)算法 Kruskal(克鲁斯卡尔)算法 最短路径 迪克斯特拉算法 拓扑排序 执 ...
- 数据结构与算法--符号图
数据结构与算法--符号图 为了计算简单,传统的图中,都是使用整数来表示顶点,这样难免会有点抽象,不能直接反映各个顶点代表的信息.在实际生活中,使用图时一般会建立一个一一对应的关系表,如下 顶点 0 1 ...
- python棋盘最短路径_Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例...
本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...
- 数据结构与算法之-----图(拓扑排序)
[ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据 ...
- 数据结构与算法之-----图(搜索算法)
[ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己 ...
- 数据结构与算法——29. 图(Graph)的概念及应用
文章目录 一.图(Graph)的概念 1. 图的相关术语 2. 图的定义 二.图抽象数据类型(ADT Graph) 1. 邻接矩阵实现图 2. 邻接列表实现图 3. python代码实现 三.图的应用 ...
- js数据结构和算法(8)-图
8-图(第11章) 8.1 图的定义 图是一种非线性结构,由一系列顶点及其连接顶点的边组成.比如A和B.A和D是相邻的,而A和E不是相邻的.一个顶点相邻顶点的数量叫作度,比如A的度为3.D的度为4.路 ...
最新文章
- 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
- 第八天学习Java的笔记(方法有参无参,有返回值和无返回值)
- linux中怎样建立批量用户,Linux 大批量建立用户
- java非公平锁_Java多线程 -- 公平锁和非公平锁的一些思考
- lua loadstring传递参数_lua学习之函数篇
- MongoDB经典故障系列一:数据库频繁启动失败怎么办?
- 【设计模式】解释器模式
- 一个存储过程实现(问题答案)
- c语言中两整数相除保留小数的方法
- 维也纳新生生活指南(2018春季版)
- 上海大学计算机学院领军人物,上海大学计算机工程与科学学院研究生导师简介-谢 江高级工程师...
- 刷榜中ASO优化中下载量与评论之间的对应比
- 狂神ajax,Ajax 学习笔记 by狂神说
- 华为鸿蒙wifi认证,鸿蒙 WiFi操作,热点连接
- vmd python 命令_VMD常用命令
- [DirectShow] 033 - Using Windowed Mode
- springboot 解决 NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder
- 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链...
- C++剖析 cout<<“hello world“<<endl;
- 杭电18年计算机考研人数,2018杭州电子科技大学考研报考统计