形式陈述
要优化的是一组圈
给定有限简单无向图 ,,每条边有非负权 。保留孤立点,连通分量数记为 ;空图取 。本页的圈采用简单圈理路路与圈Path and cycle in a graph用相邻顶点序列刻画图中的行走、简单路径与首尾闭合的简单圈。:至少三条边,除首尾外不重复顶点。图可以不连通,不允许自环或平行边。
把一个边集写成 位向量,在 上相加:相同边出现两次便抵消。因此向量加法就是边集的对称差。所有顶点度数为偶数的边集构成空间 ;两个偶度边集异或后仍偶度。简单圈在其中,但两个分离的圈的并也在其中,不能把空间里的每个非零向量都叫简单圈。
圈基是 的一组由简单圈组成的线性无关理路线性无关Linear independence只有全零系数能产生零向量的向量组。生成族。目标为
一条边若出现在三个基圈中,目标便把它计算三次。它不是“所有已选圈的边集并”的权重,也不是最小生成树。
取任意生成森林 。每条非树边 与 中连接其两端的唯一路径组成基本圈 。每个 恰含一条非树边,就是 ,所以这些向量独立。任一偶度边集 与所有满足 的 异或后,只剩森林中的偶度边集;非空森林有叶子,故这个剩余只能为空。因此基本圈张成 ,且
这也证明输入总有圈基。森林的 ,应输出空列表和总权零;不能强求找到第一条圈。
先统一所有最短路的平局
构造要复用许多最短路理路最短路问题Shortest-path problem在有限有向实权图中寻找源点到各顶点的最小有向游走成本。。本页固定一种对所有根都一致的平局规则,使下文的等距圈证明可以直接使用。先按真实边ID排序,给边内部秩 ,用二元权
逐分量相加、按字典序比较。第一分量先比较原权,仅在相等时比较第二分量。每条边的二元权严格为正,即使原权为零。简单路径没有重复边,第二分量就是其边集的二进制编码;固定端点的不同简单路径有不同边集,因而有不同二元权。
于是每对可达点都有唯一的二元最短路。它的反向仍是反向查询的唯一最短路;任一子路径也必须唯一最短,否则替换它会改进整条路。这种跨查询、跨子路径的一致性才是下面完备性证明使用的条件。原ID可以是7、19、90,中的是排序后的内部秩,绝不是原ID本身。[1,印刷p.7]
候选与消元
对每个根 ,求其所在分量的唯一最短路树 ,把根到 的树路径边向量记为 。对该分量中的每条边 ,形成
树边给出零向量,丢弃。非树边给出一条简单圈:两条根路径的共同前缀抵消,剩下的是树中 到 的唯一路径加 。根不一定在这个圈上;不能把有重复前缀的闭走直接当作输出圈。
候选去重后至多 条。按 非减排序,依次尝试加入。以行化简理路行化简Row reduction用初等行变换把矩阵化为阶梯形以求解线性方程组和判定秩。的二元版本检验独立性:在当前向量的最高非零位已有主元行时,异或该行以消去它;剩余为零就拒绝,否则在新的最高位存入剩余行,并接受原圈。保留原圈用于输出,剩余行只是消元工具,未必还是一条简单圈。
算法输出 个圈、其原边ID及原权总和。下文证明候选中包含一个全局最优基;随后拟阵贪心定理理路拟阵贪心定理Matroid greedy theorem完整证明有限独立系统的贪心双向刻画,区分任意实权重的基优化与非负权重的独立集优化,并在四列矩阵上核对每次接受、拒绝及最优值。用于这些圈向量的线性拟阵,保证排序消元选出候选中的最小权基。这里的拟阵元素是一整个圈向量,不是图拟阵中的单条边。
直觉
任意森林能提供一套圈基,却可能让许多基本圈都绕同一条长树路。Horton 不把希望寄托在一棵“刚好选对”的森林上,而是从每个顶点建立最短路树。一个真正便宜的基圈,不能容许两个圈上点之间有更便宜的外部捷径;否则捷径会把它换成更便宜的材料。
没有捷径的圈可以从圈上一点沿两个方向用最短路覆盖,只剩一条边把两侧接起来。因此它会出现在某棵最短路树的候选里。候选远少于全部简单圈,可能仍有冗余;消元负责判定一条新圈究竟增加了一个自由方向,还是已能由前面的圈异或出来。
原边身份与最小圈基
例子与边界
五点图:20怎样降到15
顶点为 ,前四点形成外框,4是中心。边表按ID排序:
| 边ID |
两端 |
原权 |
| 10 |
0–1 |
1 |
| 20 |
1–2 |
1 |
| 30 |
2–3 |
1 |
| 40 |
3–0 |
1 |
| 50 |
0–4 |
2 |
| 60 |
1–4 |
1 |
| 70 |
2–4 |
1 |
| 80 |
3–4 |
2 |
,所以需要四个独立圈。按ID扫描并跳过成圈边,得到森林 ,弦为40、60、70、80。它们的基本圈依次为
总权为20。它们确实是基,问题出在成本。
全部Horton候选去重后有8条;按权扫描首先接受下表四条。位串按边ID10到80从左到右列出,左端是内部第0位,不采用通常整数印刷的高位在左约定。
| 接受顺序 |
原边ID |
八个坐标 |
原权 |
| 1 |
20,60,70 |
01000110 |
3 |
| 2 |
10,20,30,40 |
11110000 |
4 |
| 3 |
10,50,60 |
10001100 |
4 |
| 4 |
30,70,80 |
00100011 |
4 |
四行主元位分别为6、3、5、7,互不相同,故独立;总权为15。下一候选 权5,等于第一、第三个已选圈的异或,消成零。完整图共有13条简单圈,但算法只需这8条候选;这一次的13项枚举用于算例核对,不属于Horton算法。
三个容易误换的对象
圈基允许不同圈共享边。要求基圈边不相交会改变问题,也可能根本无解。反过来,四条不同的圈未必独立,例如三个向量中若 ,即使三条都很短,第三条仍未增加维数。
输出圈的原顶点与边身份必须保留。转成整数位掩码只是内部表示,若把边ID直接当稠密下标,换成7、19、90后便会错。零权也不是删边许可:一个全零三角形仍有一维圈空间,应该输出权零的圈,不能只输出空集。
负权不在本页合同内。无向边一旦为负,在允许重复边的最短路子程序中就能来回降低成本。即使有限多个简单圈仍可比较,也不能继续使用这里的Dijkstra与非负分解证明。多重图则要另处理一边自环圈和二边平行圈;本执行器直接拒绝,不先合并它们。
推论与应用
为什么最优基圈没有外部捷径
在有限多个简单圈基中,取总二元权最小的一组 。其原权总和也最小,因为字典序首先最小化原权。设 ,是圈上两点,圈的两条 – 弧为 。若唯一最短路 不在 内,它不同于这两条弧,因此
两个偶度边集 、 满足 。它们的权分别至多为 、,均严格小于 ;取消重复边只会减少非负二元权。
每个非空偶度边集可拆成边不交的简单圈:沿尚未使用的边走,偶度保证不能停在起点以外;截出一次最短闭段作为简单圈,删去其边后剩余仍偶度,重复即可结束。因而 都由权严格小于 的简单圈异或而成。
令 为其余基圈的张成。若这些更短的简单圈全部属于 ,则 都属于 ,与基的独立性矛盾。所以至少一条更短的简单圈不在 ,可替换 得到更轻的基,又与最优性矛盾。因此 包含任意两个圈上点之间的唯一最短路。[1,Theorem2]
为什么一定进入候选
固定 上的根 。到每个圈上顶点的唯一最短路都在 内,并在 中。它们的并是包含 全部顶点、只使用 边的树,因此恰为 删去一条边 。于是 对 产生的基本圈正是 。对所有根、所有边生成候选,就不会漏掉这组最优基中的任何一条圈。[1,Theorem3]
这说明一致平局为何重要:若分别为不同端点挑不兼容的最短路,前缀不再组成同一棵树,上段“它们的并是一棵树”就没有依据。本页二元扰动给出了可执行的充分方法,而不是假设原权天然没有平局。
执行与成本
完整核验器只使用Python标准库,接受整数或Fraction权重。原图和双层图都调用Dijkstra理路Dijkstra 算法Dijkstra's algorithm在非负边权图中逐次确定最短距离的单源最短路算法。;严格改进才改父边,二元权严格为正保证父链无圈。输入正规化、森林、候选、消元、原ID恢复均在文件内。
为了把位长算清,先数有理加法/比较、整数加法/比较、整段掩码异或/移位/哈希这些大数操作的次数,并不把它直接叫作位运行时间。一次原图Dijkstra使用惰性二叉堆,次数为
记去重候选数为 。当前参考实现的一个安全总次数界为
森林以扫描分量标签实现,需 ;每个根构造路径掩码后扫描m边;排序前逐位提取候选边并求权,最多qm次;消元每项至多r次掩码异或。r=0时程序直接跳过全部最短路,仍支付输入和森林成本。可用更高效森林或位向量实现改进,但不能把其他版本的更快界直接贴到本代码上。
若每个有理权分子、分母至多B位,简单路径或圈的权和可用 位表示;二元扰动另占 位。取 ,这还覆盖全基总权累加时最多m个不同分母及至多r次边重复。上式每个掩码操作至多处理L位;有理运算连同约分可用朴素 安全上界,因而 给出一个不追求紧致的位成本界。真实ID的比较及输出按ID编码长度另计。数值 只需j+1位,不能因它数值很大就称指数时间,也不能因只写了一个Python整数就称常数空间。
保存候选和消元行需要 位向量空间,队列/邻接结构另占 条记录,权值另计。最终r个简单圈的显式边列表至多rn项;若像本单元JSON那样还展开全部候选及消元记录,必须另付报告生成与输出字节数。
de Pina算法理路de Pina 支撑向量圈基算法de Pina minimum cycle basis algorithm · Support-vector minimum cycle basis · de Pina 最小圈基算法维护与已选圈正交的二元支撑,以双层最短路求最轻奇支撑圈,并通过基交换证明逐轮输出的圈基总权最小。用支撑向量逐轮提出奇偶约束,再求最轻满足约束的圈,避免保存整套Horton候选。两者都求同一最优值,但Horton的输出顺序按圈权非减,de Pina没有这个顺序要求。单元终点并排核对两份运行记录。
参考资料