随笔分类 - # 图论
摘要:二分图 概述: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简而言之,就是顶点集V可分割为两
阅读全文
摘要:文章目录 Prim算法Kruskal算法并查集 总结 Prim算法 概述 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最
阅读全文
摘要:文章目录 链表模拟树和图领接表数据结构讲解 DFS and BFSDFS模板 BFS模板有向图的拓扑序列Dijkstra算法朴素版Dijkstra(稠密图)流程分析 堆优化版Dijkstra(稀疏图) Bellman-FordSPFA概述例题 Floyd概述例题 链表模拟树和图 领接表数据结构讲解
阅读全文
摘要:概述 简介: Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。 算法过程: 1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。 2,对于每一对顶点 u 和 v,看看是否存在一个顶点
阅读全文
摘要:概述 SPFA算法的全称是:Shortest Path Faster Algorithm为了避免最坏情况的出现,在正权图上应使用效率更高的Dijkstra算法。若给定的图存在负权边,类似Dijkstra算法等算法便没有了用武之地,SPFA算法便派上用场了。定理:只要最短路径存在,上述SPFA算法必定
阅读全文
摘要:文章目录 堆优化版DijkstraPython中的堆例题小结 Bellman-Ford算法原理注意点例题给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。小结 总结 堆优化版Dijkstra 用于稀疏图的存储优化,使用邻接表存储图,用优先队列存储每个节点 Python中
阅读全文
摘要:文章目录 有向图的拓扑序列关于拓扑序列的必要知识例题小结 朴素Dijkstra算法流程分析例题小结 总结 有向图的拓扑序列 关于拓扑序列的必要知识 定义:图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。拓扑序列存在的充要
阅读全文
摘要:文章目录 图和树的存储DFS模板例题:树的重心 BFS模板例题:图中点的层次 总结 链表模拟数组 看本篇需要了解,链表的数组模拟 图和树的存储 邻接矩阵,空间是 O ( n 2 ) O(n^2) O(n2)一般使用邻接表来存储 数据结构 h[N]:表头,每个节点的连通的起始点 e[M]:存储节点的值
阅读全文
摘要:文章目录 单链表定义提要题目如下 双向链表题目 总结: 单链表 定义提要 定义了几个变量含义如下 head:指向头结点下标 e[i] : 表示第i个节点的值 ne[i] :表示第i个节点next指针指向节点的下标,-1表示空指针 idx :记录使用到了哪个节点 e和ne通过下标对应联系在一起 题目如
阅读全文