图的小结

G由顶点集V和边集E组成,记为G=VE),其中VG)表示图中G中的顶点的集合;

EG)表示图G中顶点之间的关系集合。(|V|表示图中顶点个数,|E|表示图中边的条数)

无向图,有向图:顾名思义就是有无方向,无向图只有度,有向图的度分为入度和出度。

简单图:没有重复的边,复杂图:有重复的边,可能存在节点到自身的边。

完全图:

无向完全图:任意两个顶点之间都存在边,n个顶点有nn-1/2条边

有向完全图:任意两个顶点之间都存在方向相反的弧,n个顶点有nn-1)条边

连通:若从顶点v到顶点w有路径存在,则称vw是连通,强连通则是vwwv都有路径存在,则vw是强连通。

邻接矩阵:结点数为n的图G=(V,E)的邻接矩阵A是n*n的,将G的顶点编号为v1,v2,…,vn(数组下标),若<vi, vj>属于E,则A[i][j]=1,否则为0。如果边有权重w,则A[i][j]=w

邻接表:为每一个顶点建立一个单链表存放与它相邻的边

DFS:(一般用栈(后进先出的特性)和数组(用于标记)来存储)

过程:随机选择一个点作为起始顶点(如果没有的话)a,访问a的各个邻接顶点,再访问邻接顶点的邻接顶点,若出现这一顶点的邻接顶点都被访问过,就退回上一层,直到全部被访问过。

BFS:(一般用队列(先进先出)和数组(用于标记)来存储)

过程:随机选择一个点作为起始顶点(如果没有的话)a,访问a的各个邻接顶点,然后依次访问a的各个邻接顶点的邻接顶点(一个个来的样子),直至全部被访问过。

最小生成树(不唯一,当带权无向连通图G的各边权值不等时或G)只有结点数减1条边时,最小生成树唯一),权值是唯一的,最小的。

普里姆算法:适用于顶点较多的稠密图

克鲁斯卡尔算法:适用于边较多的稀疏图

Dijkstra(不知道拼对了吗)算法:用于求最短路径。初始化数组,将顶点集合分为v

U-V满足dist[j]=Min{dist[i]}时就将该顶点放入U。刷新最短路径长度。

posted @ 2020-06-14 23:08  许剑瀚  阅读(184)  评论(0编辑  收藏  举报