• 图论 最短路,最小生成树


    深度优先搜索&广度优先搜索
    1. 深搜
    a) 随便走,走到无路可走,再后退,退到有路可走
    2. 广搜
    a)
    3. 最短路问题
    a) 单源最短路:求一个点到其余所有点的最短路。
    i. 算法:
    1. dijkstra
    a) 条件:这张图中所有边的长度都>=0;
    b)
    i. 第15-19行太慢,时间复杂度为(n*n+m),所以用小根堆进行优化:
    2. bellman-ford
    a) 时间复杂度为:点数×边数,只试用于范围较小的。
    3. spfa:当既有大数据也有负权边的时候,只能用spfa。(理论上时间复杂度为O(mn)与bellman-ford一样,但实际上一般不同,而bellman-ford一定是O(mn))。

    b) 多源最短路:求所有点到其余所有点的最短路。
    i. 算法:弗洛伊德:
    ii. 如果两个点之间没有最短路,那么认为最短路为无穷大。(memset(a,0x3f,sizeof(a)));
    iii.
    iv.
    1. a为中间点,b为起点,c为终点。(顺序不能变,必须先枚举中间点,再枚举起点,最后枚举终点)
    4. 最小生成树
    a) 生成树:要从一个图中找到一些边,使得这些边和全部点能够组成一棵树。
    b) 最小生成树:把能组成这棵树的边的长度加起来,最小的那棵树被称为最小生成树。
    c) 算法
    i. Prim算法:一般默认1为根,把1放进树,用1去更新其他点到这棵树的距离。(点与树的距离只用算一条边的距离,不需要算到1的距离,也就是不需要算最短路而已)。
    ii. Kruscal算法(本质:贪心):
    1. 把所有边按从小到大排序,然后判断加一条边后会不会出现环,如果不出现,就可以加进去
    iii. 数据结构:
    1. 并查集
    a) 路径压缩:

    1. 拓扑排序:把有向无环图转化成一个序列。
    a)
    i. 没有点指向1和4,所以把1和4放前面,也就是先找入度为0的点。
    ii. 把入度为0的点放入序列中,然后删掉,再继续找新的入度为0的点。
    2. 二分图匹配
    a) 要找到一组匹配数最多的匹配

  • 相关阅读:
    高精准加法和乘法
    高精度加法
    病毒!!!!
    真真真·高精度乘法!!!!!
    急训 Day 1 (2)
    UVA Open Credit System Uva 11078
    SPOJ 375 Query on a tree 树链剖分模板
    安卓数据包的传递 Bundle
    Android studio 如何在Activity之间传递简单的数据
    java关系运算中的控制和使用
  • 原文地址:https://www.cnblogs.com/liumengliang/p/11189958.html
Copyright © 2020-2023  润新知