图的基础知识
来源:互联网 发布:运营商网络是要收费吗 编辑:程序博客网 时间:2024/04/30 07:19
图的概念
图(Graph)是一种较线性表和树更为复杂的数据结构。在线性表中,数据元素之间仅有线性关系,即每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,虽然每一层上的数据元素可能和下一层中多个元素(孩子) 相关,但只能和上一层中一个元素(双亲)相关;而在图形结构中,结点之间的关系可以是任意的,任意两个数据元素之间都可能相关。
图在各个领域都有着广泛的应用,如电路网络分析、交通运输、管理与线路的铺设、印刷电路板与集成电路的布线等众多直接与图有关的问题,它们必须用图的有关方法进行处理;另外像工作的分配、工程进度的安排、课程表的制订、关系数据库的设计等许多实际问题,如果间接地用图来表示,处理起来比较方便。这些技术领域都是把图作为解决问题的主要数学手段来使用,因此,如何在计算机中表示和处理图结构,就是计算机科学需研究的一项重要课题。
图的种类
若图G中的每条边都是有方向的,则称G为有向图(Digraph)。设其顶点数为n,边数为e,则有0 ≤ e ≤ n(n-1)。在有向图中,一条有向边是由两个顶点组成的有序对,有序对通常用尖括号表示。有向边也称为弧(Arc),边的始点称为弧尾(Tail),终点称为弧头(Head)。例如。若<vi,vj>表示一条有向边,则vi是边的始点(起点),vj是边的终点。因此,<vi,vj>和<vj,vi>是两条不同的有向边。
若图G中的每条边都是没有方向的,则称G为无向图(Undigraph)。设其顶点数为n,边数为e,则有0 ≤ e ≤ n(n-1)/2。无向图中的边均是顶点的无序对,无序对通常用圆括号表示。例如,无序对(vi,vj)和(vj,vi)表示同一条边。
图的表示
图的存储表示方法很多,这里介绍两种最常用的方法,即邻接矩阵法(Adjacency Matrix)与邻接表法(Adjacency List)。
邻接矩阵法
设 G = (V, E) 是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵。
若邻接矩阵表示一个图,则
例如
若邻接矩阵表示一个网络,则
例如
邻接表法
对于无向图,vi的邻接表中每个表结点都对应于与vi相关联的一条边。因此,将邻接表的表头向量称为顶点表。将无向图的邻接表称为边表。n个顶点e条边的无向图的邻接表表示中有n个顶点表结点和2e个边表结点。
对于有向图,vi的邻接表中每个表结点都对应于以vi为始点射出的一条边。因此,将有向图的邻接表称为出边表。n个顶点e条边的有向图,它的邻接表表示中有n个顶点表结点和e个边表结点。
- 图的基础知识
- 图的基础知识
- 图的基础知识
- 【笔记】图的基础知识
- 二分图匹配的基础知识
- 3.2 类图的基础知识
- 图论算法的基础知识
- Java数据结构----图的基础知识
- Java数据结构----图的基础知识
- Android基础知识---ContentProvider的基础知识
- Java 基础知识整理的思维导图
- Oracle基础知识(四) - 触发器的基础知识
- (JAVA基础知识)一些基础知识的细分
- JavaScript基础知识——事件的基础知识
- 模块的一些基础知识
- 模块的一些基础知识
- 线程的基础知识
- 线程的基础知识【转帖】
- 【刘庆源码共享】稀疏线性系统求解算法MGMRES(m) 之 MGMRES类申明(C++)
- Hibernate查询解决方案
- 【刘庆源码共享】稀疏线性系统求解算法MGMRES(m) 之 MGMRES类定义(C++)
- 最近纠结的OFFER
- 窗体百叶窗效果
- 图的基础知识
- Linux上mysql,apache,php,GD2的安装
- 随感
- mysql数据库范式详解
- FCKedit配置
- 【刘庆源码共享】稀疏线性系统求解算法 之 高斯-塞德尔算法(Gauss_Seide)GS类声明(C++)
- linux系统目录介绍
- 【刘庆源码共享】稀疏线性系统求解算法 之 高斯-塞德尔算法(Gauss_Seide)GS类定义(C++)
- MySQL修改root密码的多种方法