homology-operator¶
从边界构造、以核实现同调的二元算子¶
本项目提出一种定义在原链空间上的二元同调算子。 给定有限带基链窗口及正坐标权重,构造线性投影 \(P\) 与算子 \(L=I+P\):
广义逆满足 \(AGA=A\)、\(DUD=D\)。算子的核心关系是
核中的向量是每个同调类唯一的选定循环代表。对循环 \(z\),\(Pz\) 保持原类, 并满足 \(P(z+y)=Pz+Py\);因此代表选择是一条同时约束全部类的线性规则。 同一个 \(P\) 的带权作用给出质量、距离和共享支撑; 过滤中核之间的投影传输给出完整持久同调模及其 barcode。
一个算子,三种读取¶
读取层次 |
数学对象 |
能回答的问题 |
|---|---|---|
同调 |
\(\ker L\)、\(Pz\) |
有多少独立类?这个循环属于哪个类?选定代表在哪里? |
加权几何 |
\(m_w(Pz)\)、\(m_w(P(z+y))\)、支撑交/并 |
实现这个类要多少代价?类之差如何实现?哪些坐标共享并抵消? |
持久性 |
\(T_{ij}=P_jJ_{ij}\vert_{\ker L_i}\) |
类如何跨尺度传输、合并或死亡?相应区间是什么? |
类距离为零恰好表示同类;非零值记录差类的选定实现成本。 几何单位来自输入权重。\(L\) 的特征值只有 \(0,1\),新增几何信息由带权作用读取。
最小伸长:同时控制全部线性组合¶
可行投影通常不唯一。以最坏循环质量比选择投影,得到最小伸长目标
它与最小伸长线性截面问题等价:每个类输出一个代表,同时保持所有组合的线性关系。 当 Betti 数 \(\beta>0\) 时,\(1\le\Gamma_*\le\beta\)。
六边复形的三个非零类最短质量为 \((8,8,9)\)。 最小总质量基产生输出 \((8,8,12)\),伸长 \(4/3\);最小伸长算子产生 \((8,9,9)\),伸长 \(9/8\)。 共享支撑的抵消解释了这个选择。完整四截面枚举、矩阵与证明见数学算例。
运行这个算子¶
from fractions import Fraction
from homology_operator import (
ChainWindow, HomologyOperator, Matrix, ProjectionProblem, solve_projection,
)
window = ChainWindow(
k=1,
A=Matrix.from_rows((
(1, 1, 1, 0, 0, 0),
(1, 0, 0, 1, 1, 0),
(0, 1, 0, 1, 0, 1),
(0, 0, 1, 0, 1, 1),
)),
D=Matrix.from_rows(((1,), (1,), (0,), (1,), (0,), (0,))),
basis_previous=("v0", "v1", "v2", "v3"),
basis_current=("01", "02", "03", "12", "13", "23"),
basis_next=("012",),
weights=(2, 4, 2, 3, 4, 2),
)
solution = solve_projection(
ProjectionProblem(window, requested_certificate_level="ExactOptimal"),
"ExhaustiveExactSolver",
)
if solution.projection is None:
raise RuntimeError((solution.status, solution.diagnostics))
op = HomologyOperator(window, solution)
z = (1, 0, 1, 0, 1, 0)
y = (0, 1, 1, 0, 0, 1)
assert solution.certificate_level == "ExactOptimal"
assert solution.objective.value == Fraction(9, 8)
assert op.betti() == 2
assert op.selected_mass(z) == 8
assert op.selected_mass(y) == 9
assert op.class_distance(z, y) == 9
assert op.shared_support(z, y) == (0, 2)
assert op.stretch().value == Fraction(9, 8)
代码中的投影经独立合法性与最优证书验证。默认 FeasibleSolver 则构造合法算子,
保持同一读取语义;solver 支持域、搜索代价和认证见契约。
selected_mass 表示选定代表质量,真正最短类质量查询当前不可用。
安装与计算后端¶
Python 3.10+;reference 运行时仅依赖标准库。Python 包版本为 0.0.2;PyPI 上传状态和安装命令见安装。
git clone https://github.com/proffitteoy/homology-operator.git
cd homology-operator
python -m pip install .
可选 Rust 后端提供 packed 代数、复用分解、Factorized/HC action、限定 solver 与批查询。 两种后端实现同一算子契约。输入由调用者提供带基边界窗口; 一般点云、Rips 和复形构造前端须另外提供。 详细说明见安装和native 指南。
按问题继续阅读¶
算子理论:定义、核定理、投影族、伸长界、几何与持久传输证明。
项目采用 MIT License。研究引用请记录实际版本与提交,见 CITATION.cff。