数据结构学习笔记——图

一:基本概念

(Graph):用边连接在一起的顶点的集合。

G=(V,E),其中V的元素称为顶点,E的元素称为边。

顶点(vertices):图中的节点,存放数据。

(edge):(i,j)表示顶点i和顶点j之间的边。

无向边(undirected edge):(i,j)和(j,i)表示的含义一样。

有向边(directed edge):(i,j)表示从顶点i到顶点j的边,(j,i)表示从顶点j到顶点i的边。

邻接(adjacent)和关联(incident):当且仅当(i,j)是图的边,称顶点i和顶点j是邻接的,边(i,j)关联于顶点i和j。

有向边(i,j)是关联至(incident to)顶点j而关联于(incident from)顶点i;顶点i邻接至(adjacent to)顶点j,顶点j邻接于(adjacent from)顶点i。

无向图(undirected graph):所有的边都是无向边的图。。

有向图(directed graph):所有的边都是有向边的图。

一个图不可能包含自连边(self-edge),也就是环(loop)。

(weight):在图的某些应用中,为边赋予的值。

加权有向图(weighted digraph):边加了权值的有向图。

加权无向图(weighted undirected digraph):边加了权值的无向图。

网络(newwork):所有的图都可以看成特殊的网络。

路径:两个顶点之间能到达的通路。

简单路径:除了始点和终点之外,其余所有顶点均不相同的路径。

长度:每一条边都可以有长度,路径的长度是该路径上所有边长度之和。

连通图(connected graph):每一对顶点之间都有一条路径的图

子图(subgraph):图H的顶点和边的集合分别是图G的顶点和边的集合的子集。

环路(cycle):始点和终点相同的简单路径。

生成树(spanning tree):没有环路的连通无向图是一棵树,包含了图中所有顶点的树称为图的生成树。

一个具有n个顶点的连通无向图至少有n-1条边。

二分图(bipartite graph):顶点被分为两个子集,每条边都连接着两个字集中的顶点。

(degree):与一个顶点相关联的边数称为该顶点的度。

入度(in-degree):有向图中关联至该顶点的边数。

出度(out-degree):有向图中关联出该顶点的边数。

完全图(complete graph):一个具有n个顶点和n(n-1)/2条边的图。也就是说任意两个顶点之间都有边。

完全有向图:n个顶点,n(n-1)条边的有向图,也就说任意两个顶点之间都有两条有向边。也叫强连通图

二:图的描述方法

无权图的描述:

邻接矩阵(adjacent matrix):n个顶点的图的邻接矩阵是一个n*n的矩阵,其中每个元素是0或者1。对于无向图来说,两个顶点之间右边就是1,没有边就是0;对于有向图来说,有指向的边是1,没有指向的边是0。

邻接表(adjacent list):邻接表是一个线性表,包含了所有邻接于顶点i的顶点。在一个图的邻接表中,每一个顶点都有一个邻接表。

邻接链表(linked-adjacent-list):用链表描述的邻接表。

邻接数组:用数组描述的邻接表。

加权图的描述:

成本邻接矩阵(cost-adjacent-matrix):把边的权值写入邻接矩阵中即可,对于不存在的边指定一个很大的值。

如果链表的元素同时存放顶点和权值,那么就是加权图的邻接链表。

如果数组的元素同时存放顶点和权值,那么就是加权图的邻接数组。

你可能感兴趣的:(数据结构)