Skip to content

从圈基算法路线进入。终结任务不是报一个“15”,而是交出四条实际圈、二元独立证据、两份算法轨迹,以及哪些检查可以证明基、哪些步骤负责最优性。

输入与第一份合法但较贵的答案 ​

顶点0、1、2、3围成四边形,4在中心。外框边10=01、20=12、30=23、40=30,权均为1;辐条50=04、60=14、70=24、80=34,权依次2、1、1、2。等号右边是端点简写,边40的“30”表示顶点3和0,并非另一条边ID。

只读这份表,先算 r=m−n+c=8−5+1=4。按边ID扫描,保留不成圈的边,得到 T={10,20,30,50}。对四条弦各加上树中唯一路径,交出以下基本圈:

弦ID 基本圈边ID 权
40 10,20,30,40 4
60 10,50,60 4
70 10,20,50,70 5
80 10,20,30,50,80 7

四个圈各自在弦坐标上有独占的1,所以确实是基;总权20。不能把“基本圈基”自动理解成“最小圈基”。

第一条路线:候选8条,消元接受4条 ​

运行Horton算法时,边的第二权分量依次为1、2、4、8、16、32、64、128。这些数只用于平局;报出的目标仍是原权。

每个根建立完整最短路树,将两条根路径异或再加非树边,候选去重后如下。最后一列给出执行器保存的第一份“根、补边”生成见证;一个圈可能有多份生成方式。

原边ID 原权 根、补边ID
20,60,70 3 1、70
10,20,30,40 4 0、30
10,50,60 4 0、60
30,70,80 4 2、80
10,20,50,70 5 0、70
30,40,50,70 5 3、50
40,50,80 5 0、80
20,30,60,80 5 1、80

前四条被接受,后四条被拒绝。以内部第j边对应整数第j位,前四个原向量为98、15、49、196,主元位为6、3、5、7。第五条83满足 83=98xor49;请实际执行两次主元异或,确认剩余为0。不要把消元后的剩余掩码当作新的输出圈。

输出按原顶点写成 1,2,4,1;0,1,2,3,0;0,1,4,0;2,3,4,2。权为3、4、4、4,总和15。每条都闭合且内部不重复顶点;原边ID无歧义。

第二条路线:四次奇偶约束 ​

de Pina算法初始化支撑{40}、{60}、{70}、{80}。四轮实际记录为:

轮次 使用时支撑 选中圈掩码 原权 后续变动
1 15 4 无
2 98 3 第三支撑变为
3 49 4 无
4 196 4 无

请用模2内积逐项验证支撑更新,特别是圈98与{60,70}经过两条标记边,因此为偶。四圈还是同一组,顺序变为4、3、4、4;程序没有执行Horton候选排序。

每轮奇圈搜索对全部五个原顶点求双层最短路。仅列第一分量,五个目标距离分别为

(4,4,4,4,5),(4,3,3,5,3),(4,4,4,4,4),(5,5,4,4,4).

第三轮全为4仍要保留确定的平局规则,不能由距离列表猜输出边。完整JSON同时保存获选根、状态路径及原边序列。第二轮选根1,状态编号约定为 2v+b,路径2、4、8、3对应 (1,0),(2,0),(4,0),(1,1);原边20、70、60,最后的60翻层,投影圈权3。

三项迁移必须实际完成 ​

零权与分离分量 ​

改成五顶点图:7=01、19=12、31=20三边权全为0,90=34权2。m=4,n=5,c=2,r=1,两算法都应返回{7,19,31}这一条权0圈。树分量的90不应进入任何圈。

再试空图 (n,m,c)=(0,0,0)和三个孤点 (3,0,3),二者r均为0且输出空基。它们的分量数不同,不能用固定的连通图公式m−n+1处理。

从奇闭走提取圈 ​

令7=01、19=12、31=20权均1,桥90=23权2。标记S={7},给出闭走3、2、0、1、2、3与边序列90、31、7、19、90,总权7。栈提取应返回{7,19,31},权3;并说明桥往返标记贡献为0,投影不是简单圈。

若把S改为{90},公共oracle应返回NONE。解释这不与主算法每轮成功冲突:主算法的支撑来自非树边空间,并持续保持非零限制;任取一座桥当支撑没有那项保证。

输入身份与证明边界 ​

将边表重新排列但保留ID,结果不变;把ID换成另一组互异整数,最优原权不变,但平局时具体基可以改变。位掩码只对当前排序边表有效,不能跨边表直接重用。

执行器还实际拒绝14类输入,包括自环、平行端点、负权、浮点、重复ID、越界顶点、布尔冒充整数、越界支撑,以及偶闭走冒充奇闭走。任何拒绝都不能被改成空基,因为空基只对已通过输入检查且r=0的图正确。

可重跑交付与检查顺序 ​

下载标准库执行器和完整结果JSON。运行

text
python algorithms-minimum-cycle-basis-check.py
python -O algorithms-minimum-cycle-basis-check.py

两次输出应相同;所有检查用显式异常,不依赖assert。Graph.make验证并正规化输入;horton和de_pina处理已正规化的图;odd_cycle提供含NONE出口的支撑查询;extract_odd_cycle另验证闭走与边身份。其他消元、森林及显示函数是这些入口的内部工具。

建议按以下顺序核验自己的记录:先验证图与边ID,再验证每个输出是简单圈,随后核r与二元秩,再对照候选完备性或支撑/最短路证明。只检查四条圈独立能接受前面的权20基,故还没有证明最优。反过来,报总权15却不给出边身份,无法确认该值由真实圈实现。

主脚本另外枚举本图13条简单圈核算最优值,是小例的交叉检查;正文的完备性和交换证明才覆盖任意合法输入。两页成本分析对大数操作、权值位长、日志与输出分别计费,这个几十行的运行记录不能代表大图性能评测。