今天写数据结构的作业,想了想,还是决定先把这两周学习的知识总结一下吧
图:是由数据元素的集合及数据元素之间的关系集合组成的一种数据结构,G=(V,E),其中,V是顶点集,E是边集
无向图:如果顶点之间没有方向,称为无向图,无向图的边表示一般用圆括号(v,w)
有向图:如果顶点之间有方向,就称为有向图,有向图的边表示一般用尖括号<v,w>,又称为弧
在数据结构的图的讨论中,限制图中不能有自身环及平行边
完全图:在有n个顶点的无向图中,有n(n-1)/2条边,称此图为完全无向图;在有n个顶点的有向图中,有n(n-1)条边,则称此图 为完全有向图
权:边上具有与它相关的系数,即称为权,带权图也被称为网络
邻接点:如果(v,w)是无向图G的一条边,则称V与W互为邻接顶点;如果<v,w>是有向图G中的一条弧,则称顶点v邻接到顶点到w(v是w的前驱),顶点w邻接自v(w是v的后继)
子图:设图G=(V,E)和图G'=(V',E')。若V'属于V,E'属于E,则称图G'是图G的子图
顶点的度:无向图中,顶点V的度表示依附于V的边数,记作TD(v);有向图中,以顶点v为始点的有向边的条数称为v的出度,记 作OD(v),
以顶点v为终点的有向边的条数称为v的入度,记作ID(v),有向图中顶点v的度等于该顶点的入度与出度之和:TD(v)=ID(v)+OD(v)
路径:在图G=(V,E)中,从顶点vi出发,沿一些边或弧经过一些顶点Vp1,Vp2.....,到达顶点vj,则称顶点序列(vi,vp1,vp2.....vj)为从打顶点vi到顶点vj的路径
路径长度:对于不带权的图,路径长度是指此路径上边的数目;带权图,路径长度是指路径上各边的权之和
简单路径和回路:对于一套路径,若路径上各顶点均不相同,则称该路径为简单路径;若顶点上第一个顶点和最后一个顶点相同,则称该路径为回路或环
连通图和连通分量:在无向图中,若从顶点vi到vj有路径,则称顶点vi与vj使连通的,如果无向图中任意两个顶点都是连用的,则称此无向图为连通图。非连通图的极大连通子图(包含所有连通的顶点和这些顶点依附的所有的边)叫做连通分量
强连通图和强连通分量:在有向图中,若对于顶点vi和vj,存在一条从vi到vj和从vj到vi的路径,则称顶点vi和顶点vj时强连通。如果有向图中任意两个顶点都是强连通的,则称此有向图为强连通图。非强连通图的极大强连通子图叫做强连通分量
生成树:一个连通图的生成树是它的极小连通子图(包含图中全部n个顶点及使这些顶点连通的n-1条
图的基本操作一般有:
(1)InsertVertex(vertex):在图中插入一个顶点vertex。
(2)InsertEdge(v1,v2):在图中插入一条边(v1,v2)。
(3)DeleteVertex(v):在图中删除一个顶点v及依附于v的边。
(4)DeleteEdge(v1,v2):在图中删除一条边(或弧)。
(5)GetWeight(v1,v2):在图中取边(v1、v2)上的权。
(6)GetFirstNeighbor(int v ):在图中取顶点v的第一个邻接点。
(7)GetNextNeighbor(int v1,int v2 ):在图中取顶点v1的在v2后的下一个邻接点。
(8)Travers():遍历图,按某种次序依次访问图中的每一个顶点,并使每一个顶点只被访问一次。
(9)IsEmpty():判断图是否为空。