图论基础 总结
零、图论杂项
有时为了方便把点的编号变成从 0 开始,或者添加一个 0 号点。(涉及二进制的、涉及 mod 的)如:万花筒(没找到 wwlw 的博客,wwlw 的博客里应该有,去博客园搜能找到其他博客(这篇、这篇))、P4366 [Code+#4] 最短路。
图论题里可能有些边虽然意义不符合我们想要的,但是连了也没有影响,为了方便不妨连上。如:简单数学题(wwlw 2024.7.31 的 图论 Day 1 PPT 里的一道题)。
注意重边、自环。
要求边被经过
一、最小生成树
- 稠密图——Prim
- 稀疏图——Kruskal
最小生成树不能合并 -> 没有结合律 -> 不能分治。(分治需要结合律(?))
合适的数据范围 -> 合适的算法。根号分治。
外向树。外向生成树。如:P2573 [SCOI2012] 滑雪:(Prim 做法)拓扑序小的对拓扑序大的有影响。先走拓扑序小的 更优(不劣?)(在这个题中是先走高度更高的,这样可以看到更多的(有向)边,使以后选的边可能更优,而且能走到的高度更高的迟早会用这条边走到,所以先走这条边是不劣的)。(这个题的 Kruskal 做法和 Prim 做法差不多)
最小生成树处理连通性问题。
区间相关的东西可以考虑通过 前缀和 或 前缀 xor 和 建立图论模型(转换成连通性问题)(也可以考虑转成左开右闭区间来转换(欲知
Kruskal 重构树
似乎可以理解成树上的笛卡尔树。(???)
分两种:点和边。
边:LCA 的点权 = 最小生成树上(?) 两点间路径上的最大边权。注意空间要开够(?)。
点:类似边的。
Kruskal 重构树可以处理树的链上的最值相关的问题。如:超级加倍(wwlw 2024.7.31 的 图论 Day 1 PPT 里的一道题)
二、最短路
把题抽象成最短路。
自己构的图(图不是数据给的,而是自己对某个题建立了图论模型后自己设计的图) 大概率(?) 不会卡自己(的 SPFA)。(?)
化边为点,新图里没有原来的点,原来的点描述原来的边之间连通的方式。代价与两条边都有关 -> 拆点(把一条边拆成两条边)。排序后前缀、后缀优化建图。如:P6822 [PA2012] Tax。
优化建图:考虑这条边被哪些边等效替代,使得那些边 尽量(?) 被 共用。
最优化 DP,但是有环,转换成最短路问题。
三、强连通分量
缩写:SCC。
缩点。注意自环、重边怎么处理。新图是 DAG(?) ,可以 拓扑(?)。
注意:有题要求从
Tarjan 求 强连通分量、 点双(?) 、 边双(?) 一般(?) 可以当黑盒用。(?)
类比
- DFS 搜索树:返祖边 -> 环。(?)
- 拓扑序(DAG):拓扑序上前面的点往后面的点连边不会形成环。
四、欧拉回路 & 欧拉路径
欧拉路径 大概就是 一笔画。 每条边只能经过 1 次,每个点可以经过多次 (?)。
考虑点的度。
存在 欧拉回路 的条件(且):
- 无向图:连通图(?)。所有点的度都是偶数。
- 有向图:连通图(???)。所有点的入度都等于出度。
存在 欧拉路径 的条件(且):
- 无向图:连通图(?)。只有两个点的入度是奇数(这两个点一个是起点,一个是终点)。其他点的入度都是偶数。
- 有向图:连通图(???)。一个点的出度比入度大
(这个点是起点),另一个点的入度比出度大 (这个点是终点)。其他点的入度都等于出度。
求 欧拉路径(???) :直接 DFS。(?)技巧:邻接表 边从
有个结论:无向图里加边。归纳得出(wwlw 的 PPT 里写的是归纳,我没证)无论怎么加边,图中都会有偶数个奇度数点。记奇度数点的个数为
五、2-SAT
六、优化建图
- 前缀、后缀优化建图。
- 线段树优化建图。
- 拆位,每一个二进制位分别处理。
- 为了方便连没有影响但意义不符要求的边。(这个算是优化建图吗?)
2024.8.2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!