图(Graph)——基本概念、存储、遍历
来源:互联网 发布:吐槽大会 知乎 编辑:程序博客网 时间:2024/06/05 15:05
1. 图的基本概念
图(Graph):G = ( V,E )
V(G):顶点
E(G):边
(1)边:<v,w>
(2)权:与图的边或弧相关的个数
(3)子图:如果图G(V,E)和图G‘(V’,E‘),满足:V’属于V && E’属于E
(4)顶点的度:
无向图:与顶点相连的边数
有向图:
入度:以该顶点为头的弧的数目
出度:以该顶点为尾的弧的数目
(5)路径:顶点的序列V={Vi0,Vi1,……Vin},满足(Vij-1,Vij)属于E 或 <Vij-1,Vij>属于E,(1<j<=n)
路径长度——沿路径边的数目或沿路径各边权值之和
回路——第一个顶点和最后一个顶点相同的路径叫~
简单路径——序列中顶点不重复出现的路径叫~
简单回路——除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫~
(6)连通:从顶点V到顶点W有一条路径,则说V和W是连通的
(1)有向图:边有方向,<v,w> != <w,v>
(2)有向完备图:n个顶点的有向图最大边数是n(n-1)
(3)无向图:边无方向,<v,w> = <w,v>
(4)无向完备图:n个顶点的无向图最大边数是n(n-1)/2
(5)连通图:图中任意两个顶点都是连通的叫~
(6)连通分量:非连通图的每一个连通部分叫~
(7)强连通图:有向图中,如果对每一对Vi,Vj属于V, Vi!=Vj,从Vi到Vj 和从Vj到 Vi都存在路径,则称G是~
2. 存储
2.1 邻接矩阵
2.1.1 定义
图G = ( V, E ),V(G) >= 1; G的邻接矩阵A:
2.1.2 特点
(1)无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2
(2)有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n²
(3)无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和
(4)有向图中,
顶点Vi的出度是A中第i行元素之和
顶点Vi的入度是A中第i列元素之和
2.1.3 网络的邻接矩阵
2.1.4 关联矩阵
设G=(V,E)是有n>=1个顶点,e>=0条边的图,G的关联矩阵A:
2.2 邻接表
2.2.1 定义
有向图
无向图
2.2.2 特点
(1)无向图中顶点Vi的度为第i个单链表中的结点数
(2)有向图中
顶点Vi的出度为第i个单链表中的结点个数
顶点Vi的入度为整个单链表中邻接点域值是i的结点个数
(3)逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表
3. 遍历
3.1 深度优先(DFS)
(1)从图的某一顶点V0出发,访问此顶点;然后依次从V0的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V0相通的顶点都被访问到;
(2)若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止
3.2 广度优先(BFS)
(1)从图的某一顶点V0出发,访问此顶点后,依次访问V0的邻接点(未曾访问);
(2)然后分别从这些邻接点出发,广度优先遍历图,直至图中所有已被访问的顶点的邻接点都被访问到;
(3)若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止
- 图(Graph)——基本概念、存储、遍历
- 图(Graph)——基本概念、存储、遍历
- 图——基本概念(Graph
- Graph(1)--图的基本概念
- 数据结构图之一(基本概念,存储结构,两种遍历)
- Graph 图模块 —— Graph Loading
- Graph(3)--图的遍历(深度优先&广度优先)
- 数据结构——图(概念,存储,遍历)
- 《图论》——图的存储与遍历(Java)
- 图——广度优先遍历(邻接矩阵存储)
- 存储一些基本概念——(二)
- 图的存储结构(存储、遍历)
- Java重修之路(五)数组基本概念,存储方式,遍历,排序,查找,多维数组
- Cocos2D遍历场景图(Scene Graph)
- 图的基本概念表示方法以及两种搜索方式——深度优先遍历和广度优先遍历
- 图的基本概念及存储
- 存储引擎概念(基本概念)
- 数据结构——图的遍历和存储
- 智能指针auto_ptr
- 解决linux磁盘空间不足的问题
- 黑马程序员_日记02(IO)
- 怎么转换cmd的目录
- 重温C++的哪些事
- 图(Graph)——基本概念、存储、遍历
- vs2010编译live555源码
- Shell 中的特殊权限设置
- 【python】敏感词过滤/屏蔽
- 手工不完全恢复(非归档模式下,日志被覆盖)
- 【Leetcode】Remove Duplicates from Sorted Array
- C++ static数据成员的初始化
- Java-J2EE-Myeclipse-SSH网络软件系统自动架构与代码发生
- MinGW-安装和配置