图论小知识

来源:互联网 发布:项城市乡镇人口数据 编辑:程序博客网 时间:2024/04/26 18:40

①带有负权回路的图没有最短路径。SPFA可以检查一个图是否含有负权回路:如果某个点进入队列(队列中的点是源点到其的距离发生了变化的点)的次数超过n次,那么这个图肯定存在负环

稀疏图:边数远少于顶点数的平方
稠密图:边数相对较大
③一棵树如果有n个顶点,那么它一定恰好有n-1条边
④二分图是无向图,增广路:一条路径的起点和终点都是未被配对的点,再也找不到增广路,则当前匹配为最大匹配
⑤迪杰斯特拉算法:图中不能有负权边
算法的基本思想是:每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径
⑥贝尔曼算法
进行k轮松弛的话,得到的就是源点最多经过k条边到达其他各个顶点的最短路径长度
最多只需要进行n-1轮松弛,因为在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边
检测一个图是否含有负权回路:如果在进行n-1轮松弛之后仍然可以继续成功松弛,那么此图必然存在负权回路
⑦克鲁斯卡尔算法(贪心)
首先按照边的权值进行从小到大排序,每次从剩余的边中选择权值较小且边的两个顶点不在同一个集合内的边,加入到生成树中,直到加入了n-1条边为止
如果所有的边权都不相等,那么最小生成树是唯一的

正权图:求最短路
负权图:求最长路
⑨可以通过将一条无向边拆成两条有向边来将无向图转换为有向图
⑩普里姆算法没用

次小生成树
k小生成树
生成树计数

迪杰斯特拉:稠密图
迪杰斯特拉+堆优化:稀疏图
⑬奇环不是二分图,偶环是二分图
⑭无向图常化为树边和返祖边
⑮如果一个图的顶点可以分为两个集合X和Y,图的所有边一定是有一个顶点属于集合X,另一个顶点属于集合Y,则称该图为“二分图”( Bipartite Graph )

原创粉丝点击