图的基本操作
1.Adjacent(G, x, y):判断图G是否存在边<x,y>或(x,y)
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V)
2.Neighbors(G, x):列出图G中与结点x邻接的边
- 无向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(V) - 有向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(V+E)
3.InsertVertex(G, x):在图G中插入顶点x
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(1) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(1)
4.DeleteVertex(G, x):在图G中删除顶点x
- 无向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(E) - 有向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(V+E)
5.AddEdge(G, x, y):若无向边(x,y)或有向边<x,y>不存在,则向图G中添加该边
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(1) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(1)
6.RemoveEdge(G, x, y):若无向边(x,y)或有向边<x,y>不存在,则从图G中删除该边
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V)
7.FirstNeighbor(G, x)
:求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点或图中不存在x,则返回-1
- 无向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(1) - 有向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(1)
8.NextNeighbot(G, x, y)
:假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1
- 无向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(1) - 有向图
邻接矩阵:时间复杂度O(V)
邻接表:时间复杂度O(1)
9.Get_edge_value(G, x, y):获取图G中边(x,y)或<x,y>对应的权值
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V)
10.Set_edge_value(G, x, y, v):设置图G中边(x,y)或<x,y>对应的权值为v
- 无向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V) - 有向图
邻接矩阵:时间复杂度O(1)
邻接表:时间复杂度O(V)
此外,还有图的遍历算法
,包括深度优先遍历和广度优先遍历