leetcode中图的算法
克鲁斯卡尔算法(无向图)
用于最小生成树的计算: n个点 找到n-1个边 边的权重和最小
思路:
1:计算每两个点之间的距离 并且按照从小到大的顺序排序
2:然后通过并查集的方法 依次寻找不可替代的边
3:一直到找到边的个数为n-1 即找到了最小生成树
[https://leetcode-cn.com/problems/min-cost-to-connect-all-points/]
迪杰斯特拉算法(有向图)
用于计算单源点到某一点的最短路径问题,无负权边
思路:
1:构建领接矩阵 目前的结点到下一个结点信息的数组(因为存在一对多)
2:每次寻找,当前未访问过的点中 距离源点最近的点 并且把该店标记为访问过
3:并更新与其相邻点的距离。
4:直到找到需要寻找的点
leetcode743
拓扑排序
是专门应用于有向图的算法,其附带效果可以检测有向图是否有环
思路:
1:构建邻接表,记录入度数组
2:将入度为0的放入队列中去
3:依次遍历队列 并且更新入度数组 将入度数组为0加入队列 直到队列为空
4:入队的顺序 即为拓扑排序 拓扑排序的结果不唯一 如果出现环 则入队的个数小于节点个数
leetcode210