网络化简

先根据 index 结构确定部分收缩步骤,再在较小的网络上搜索后续路径。

本页目录

化简做什么

网络化简根据 index 结构预先确定一部分收缩步骤,使后续搜索处理的张量更少。这里的化简是结构预处理:它记录哪些张量可以先合并,不读取或计算实际数组。数值执行时,仍需完成这些预先确定的收缩步骤。

simplify 主要检查以下规则:

张量当前保留的不同 index 数量 处理方式
0 与当前 index 最少的另一个张量合并
1 与共享该 index 的张量合并
2 尝试与邻居合并,结果的 index 数量不得超过该邻居

输出 index 或仍被其他张量使用的 index 不会消去。这些规则不涉及低秩分解或奇异值截断。

化简后怎样搜索

pseudocode
prefix, reduced, map = 化简输入网络
reduced_path = 在 reduced 上搜索收缩路径
path = 将 reduced_path 的编号映射回原网络,并接到 prefix 后
stats = 在原网络上校验 path 并计算指标
return path, stats

化简保持原收缩表达式,但会预先固定部分收缩步骤,因此可能改变后续搜索得到的路径。

化简结果

prefix 保存已确定的 SSA 步骤;reduced 是缩减网络;map 记录缩减网络输入对应的原网络节点。stitch 负责将后续路径接回原网络。

接口

simplify 和 stitch 可分别调用;random_greedy_simplified 包含化简、随机贪心、路径拼接及指标计算。Python 的 arctn_simplify 返回化简后的结构信息,不执行数组。参数见 Rust API和 Python API。