图算法
1.BFS:树层序遍历
DFS:树先序遍历
均可判断是否为连通图,因为若为非联通的,一遍遍历访问不了所有结点。。
2.最小生成树
prim算法:贪心算法,先找最小权边,将此两点点作为点集合,再找离此集合最小权边的点加入,无限加入。
Kruskal算法:对所有点的集合里从小到大加入边(只要不构成回路)
(可能会构成不同的生成树)
判断最小生成树是否唯一:
1>思路1:第一遍Prim算法求出路径最小权值和且记录路径,然后逐一试探删掉一条记录的路径之后图是否连通,若图连通则判断当前状态最小生成树最小边权和是否和之前的最小权值和相等,逐一遍历完成后若无最小边权和等于第一遍Prim算法求出的最小权值和,则说明最小生成树唯一,反之则说明最小生成树不唯一
2>思路2:通过Kruskal算法构建最小生成树,第一次构建时标记构建边,之后类似思路1逐一试探每一条边的影响,若存在次小生成树最小权值和等于最小生成树权值和则说明最小生成树不唯一,反之则说明最小生成树唯一
Dijkstra算法:;类似prim算法,贪心算法,只不过每次加入点都要修改集合和外面的点的距离。
拓扑排序:删除入度为0的点和其出去的边,无限循环,如果找不到这样的点则为有环的。