全网首个严格证明的双连通图的基本性质
双连通图的性质和证明
性质
首先讨论边双, 任选两点 , , 一条边 , 一定能找到至少一条简单路径 (不经过同一条边两次), 经过 连接 , .
然后讨论点双, 任选三点 , , , 一定能找到至少一条简单路径 (不经过同一个点两次), 经过 连接 , .
边双连通
说明: 在边双图的讨论中, 两条路径不相交指这两条路径不存在公共边.
对于边双的性质, 可以转化为找两条不相交的, 不经过 的路径, 使得对于 的两个端点 , , 连接 和 , 和 , 或者是连接 和 , 和 .
我们知道定义: 边双图任意两点间至少可以找到两条互不相交的路径.
因为路径在连通图一定能找到, 我们需要保证的是这些路径不交. 首先我们可以避免 , 因为如果有一条 到 的路径经过了 , 我们可以选择将这条路径去掉 , 使其变成 到 的路径, 如果这时 到 的一条路径也经过 , 我们可以直接选择 到 的另一条路径, 根据定义, 可以找到对应路径使得它和上一条路径不相交, 这样就不会有公共边 了.
一定存在简单环
这是最坏的情况, 因为其它情况会存在两条不经过 的路径, 这样可以构造一条 的路径, 它和一条不经过 的简单路径 构成一个简单环.
证明这个结论, 我们讨论随便找一条 的路径, 如果包含 , 则找另一条, 这时得到的路径可能和 的路径有交, 将两条路径的公共部分 记为 , 将剩下的部分记为 和 , 这三部分无交.
取 到 的另一条路径记为 , 假设路径上从 出发沿 经过的第一条 的公共边的靠近 的端点为 , 则记 的 段为 , 段为 , 这时找到简单环 .
对 也有同样的结论.
所以我们现在记两个简单环中, 经过 的, 连接 路径为 , 因为是简单环, 所以 和 无交, 和 无交, 他们都和 无交.
存在 和 无交或 和 无交
则直接找到可行路径 或 .
仅满足 和 无交 (省略讨论 和 无交仍不失一般性)
设 和 的靠近 的交边的靠近 的交点是 , 记 的 段为 , 的 段位 .
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 由 分开, 且 的 段和 无交, 所以 和 无交.
因为 和 都不包含 , 所以 和 都和 无交.
又因为 和 无交, 找到合法路径 .
和 , 有交, 也和 和 有交
设从 出发, 和 或 第一次相交的交边的靠近 的端点为 .
如果 第一次是和 相交, 则直接将 当成 , 按仅 和 无交的情况讨论即可. 接下来只讨论第一次相交是和 的情况.
设 的 段为 , 的 段为 则.
因为从 出发, 和 第一次相交在 之后, 所以 和 无交.
因为从 出发, 和 第一次相交在 , 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 , 都和 无交, 所以 , 都和 无交.
因为 和 无交, 则找到合法路径 .
点双连通
因为不能找出三个点, 所以我们不讨论两个点的点双图这种特殊情况.
说明: 在点双图的讨论中, 两条路径不相交指这两条路径不存在除端点以外的公共点.
首先找到任意路径连接 和 , 这时如果两条路径无交, 则性质成立. 如果有交, 一定可以找一个 点, 使得两条路径在 处相交, 我们把这条路径记为 , 且存在一条 的简单路径, 我们把这条简单路径中, 段记为 , 段记为 .
然后讨论 的情况, 因为我们可以找到至少两条 的不相交简单路径, 所以最多有一条路径是一条边连接两个点组成的, 如果存在这种路径, 我们把它记为 , 因为不存在除 , 外的任何点, 所以它一定和 和 无交, 不影响我们在前面对 记号的定义. 另一条路径记为 , 则 一定包含至少一个除了 和 的点.
和 有交
则设距离 最近的交点为 , 则 的 段记为 , 取 的 段记作 .
和 有交
设距离 最近的交点为 , 记 段为 , 段为 .
如果 和 有交, 则直接取交点为 , 所以一定有 和 无交.
如果 和 有交, 则直接取交点为 , 转化为 和 无交的情况.
因为 和 无交, 则 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为 和 无交, 所以找到一条合法路径 .
和 无交
如果 和 有交, 直接取交点作为 , 则存在 和 无交.
因为 和 无交, 则 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为 和 无交, 和 无交, 所以找到一条合法路径, .
和 无交
假设找一条 到 上除 点之外的点 的简单路径 , 使得这条路径和已有的 无交, 因为两点间有至少两条无交简单路径, 所以一定能找到一个 满足要求.
和 有交
设最靠近 的交点为 , 记 的 段为 , 的 段为 .
如果 和 有交, 取交点为 , 则转化为 和 无交, 却和 有交的情况. 因此这里只讨论 和 无交的情况.
如果 和 有交, 则直接取交点为 , 所以一定存在 和 无交.
如果 和 有交, 则直接取交点为 , 所以一定存在 和 无交.
如果 和 有交, 则转化为 和 有交的对称问题, 交换对象 , , 按 和 讨论即可. 故本情况只讨论 和 无交的情况.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为, 和 无交, 所以找到合法路径 .
和 无交
和 有交
设离 最近的交点为 , 记 的 段为 , 的 段记 .
-
和 有交
直接取交点为 点, 转化为 和 无交的情况.
-
和 无交
-
和 有交
记最靠近 的交点为 , 记 的 段为 , 的 段为 , 则 和 不可能有交, 否则重新将新的交点记作 .
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为 和 无交, 所以找到合法路径: . -
和 无交
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为 和 无交, 和 无交, 和 无交, 所以找到合法路径: .
-
和 无交
如果 和 有交, 则直接取交点为 , 所以一定存在 和 无交.
因为 和 无交, 所以 和 无交.
因为 和 无交, 所以 和 无交.
又因为 和 无交, 和 无交, 和 无交, 所以找到合法路径: .
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)