图论入门及基本概念
来源:互联网 发布:儿童电脑编程 编辑:程序博客网 时间:2024/06/06 06:49
1.图的含义
数据结构:点、线性表、树、图
这些数据结构都是对问题的抽象,图是比较复杂的一种。
图用符号记为G(V,E), G表示图的最大集合,V是图中所有点的集合,E是边的集合。 G=graph, V=vertex , E=edge
例如,点表示人, 边映射人与人是否认识,这就是一张人际网图;
点表示网络设备,边映射连通的网线,这就是一张设备网络图
2.图的分类
图分为有向图和无向图。有向和无向是针对边的。
有向图的应用更广泛,因为无向图可以被表示为双向的有向图,所以图的算法经常采用有向图作为输入数据。
3.图的存储
3.1图链表
即用已有的线性表去表示图
假设一个图中有N个节点,那么可以用N个链表去表示,每个链表的开头是V集合中的一个节点,链表的后续内容就是与这个点有关联的点。
3.2图矩阵
用矩阵的方式去存储图
比较:图链表存储复杂度更低;图矩阵的方便之处是可以将图作为矩阵对待,线性代数可以派上用场。
4.基本概念
4.1顶点(vertex):表示某个事物或对象
4.2边(edge):表示事物与事物之间的关系
4.3同构(Isomorphism)
4.4有向图/无向图:每条边都是有向边/无向边的图
4.5权重:每条边都有预支对应的值
4.6路径/最短路径:在图上任取2点,分别作为起点和终点。起点和终点之间不重复经过同一个点或一条边的路线就是一条路径。两个顶点之间存在路径,则称两点相通。
边的权重总和最小的路径称为最短路径。
4.7环(loop):路径的终点添加一条指向起点的边,就构成一条环。
4.8连通图/连通分量:如果图G中任意2个顶点之间都存在路径,则G为连通图。
一个图的最大(顶点数最多)连通子图,称为连通分量。对连通图来说,连通分量是其本身。
5.邻接矩阵
用一个一维数组存放图中所有顶点数据,用一个二维数组存放顶点关系的数据。这个二维数组称为邻接矩阵。
无向图的邻接矩阵一定是对称的,且主对角线一定为0(仅讨论无向简单图)
无向图中,任一顶点i的度为第i列(行)非零元素的个数。
有向图中,顶点i的出度为第i行所有非零元素的个数,顶点i的入度为第i列所有非零元素的个数。
用邻接矩阵表示图工需要n*n的空间由于无向图的邻接矩阵一定具有对称关系,所以扣除对角线为零外,仅需要上三角或下三角的数据即可,即n*(n-1)/2的空间。
6.图的遍历
深度优先遍历DFS和广度优先遍历BFS。
深度优先遍历类似于树的先序遍历,可以用递归或者栈来实现。
广度优先遍历利用队列实现。
7.最小生成树Prim算法、Kruskal算法
.
.
.
参考:http://blog.csdn.net/ppn029012/article/details/8686181
- 图论入门及基本概念
- Oracle RAC 基本概念及入门
- Oracle RAC 基本概念及入门
- Oracle RAC 基本概念及入门
- Oracle RAC 基本概念及入门
- MySQL 基本概念了解及入门
- Oracle RAC学习笔记:基本概念及入门
- Oracle RAC学习笔记:基本概念及入门
- Oracle RAC学习笔记:基本概念及入门
- Oracle RAC学习笔记:基本概念及入门
- storm学习-基本概念及入门示例
- jQuery入门 --基本概念及选择器的使用
- 图的基本概念及介绍
- 图的基本概念及存储
- Oracle RAC学习笔记:基本概念及入门 01
- Oracle RAC学习笔记:基本概念及入门 02
- Oracle RAC学习笔记:基本概念及入门 03
- Oracle RAC学习笔记:基本概念及入门 04
- html图片的并行加载和顺序加载
- 基于Sping实现微服务--准备篇
- 搭建lamp(CentOS7+Apache+MySQL+PHP)环境
- iosUIButton中调整image大小
- Ubuntu 16.04 And CentOS 7 Install Docker
- 图论入门及基本概念
- SQL分类:DDL/DML/DQL/DCL以及作用
- Xmind基础教程-打印
- 兼容更多浏览器自定义getElementsByClassName
- python3接收udp视频数据
- java静态代理,动态代理(JDK,CGLib)
- web前端入门 2017.6.10
- Gradle version 和 Android Plugin Version
- HBase协处理器加载过程(1.2)