1.图的定义
图(Graph)是由顶点(vertex)的有穷非空集合和顶点之间边(edge)的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合
a.若顶点之间 Vi 和 Vj 之间没有方向,则为无向边,用无序偶对( Vi , Vj )表示
b.若顶点之间 Vi 和 Vj 之间有方向,则为有向边(也称弧),用有序偶对< Vi , Vj >表示, Vi 为弧尾,Vj为弧头
2.图的基本概念
(1)简单图
图中既无吊环又无多重边,即为简单图
(2)无向图
如果图中任意两个顶点之间的边都是无向边(简而言之就是没有方向的边),则称该图为无向图(Undirected graphs)
(3)有向图
如果图中任意两个顶点之间的边都是有向边(简而言之就是有方向的边),则称该图为有向图(Directed graphs)
(4)完全图
①无向完全图:在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图。(含有n个顶点的无向完全图有(n×(n-1))/2条边)
在无向图中,
顶点的度—TD(v):指依附于该顶点的边的个数,n个顶点e条边的无向图中有以下成立的公式:
权 网
在图中,权(weight)通常是对边赋予的有意义的数值量,边上带权的图称为网或网图(network)
3.图的抽象数据类型定义
ADT Graph
DATA 顶点的有穷非空集合和边的集合
InitGraph
前置条件: 图不存在
输入: 无
功能: 图的初始化
输出: 无
后置条件: 构造一个空的图
DestoryGraph
前置条件: 图已存在
输入: 无
功能: 销毁图
输出: 无
后置条件: 释放图所占的存储空间
GetVex
前置条件: 图已存在
输入: 顶点V
功能: 在图中查找顶点V的数据信息
输出: 顶点V的数据信息
后置条件: 图不变
putVex
前置条件: 图已存在
输入: 顶点V,顶点信息value
功能: 在图中查找顶点V并将value的值赋给顶点V
输出: 无
后置条件: 无
InsertVex
前置条件: 图已存在
输入: 顶点V
功能: 在图中插入一个顶点
输出: 如果插入不成功,抛出异常
后置条件:如果插入成功,图中增加了一个顶点
deleteVex
前置条件: 图已存在
输入: 顶点V
功能: 在图中删除一个顶点
输出: 如果删除不成功,抛出异常
后置条件:如果删除成功,图中少了一个顶点
insertArc
前置条件: 图已存在
输入: 顶点U,顶点V,顶点U和V之间边的信息
功能: 在图中插入一条边
输出: 如果插入不成功,抛出异常
后置条件: 如果插入成功,图中增加了一条边
deleteArc
前置条件: 图已存在
输入: 顶点U,顶点V
功能: 在图中删除顶点U和V之间的边
输出: 如果删除不成功,抛出异常
后置条件: 如果删除成功,图中少了一个顶点
DFSTraverse
前置条件: 图已存在
输入: 遍历的起始顶点V
功能: 从顶点V出发深度优先遍历图
输出: 图中顶点的一个线性排序
后置条件: 图保持不变
BFSTraverse
前置条件: 图已存在
输入: 遍历的起始顶点V
功能: 从顶点V出发广度优先遍历图
输出: 图中顶点的一个线性排序
后置条件: 图保持不变