6. Computation Methods
单形的符号¶
如果
- 如果
和同维单形构成了闭链,那么 - 如果
不能被 的基线性表出,那么
同时,如果 (1) 发生了,那么说明
进一步,我们可以证明 (1) (2) 不仅是互斥的,还是对立的。
因此,给定
从而,我们还可以用下列算法,通过单形符号来计算 betti number:
- 当
的时候,所有 betti number 均为 0,因此可以从零开始加
加速计算¶
基于线性空间的计算¶
通过递推的方法,我们逐一添加单形。每一次计算出单形的边界,判断 (2) 是否成立。
- 如果不能被表出,就记为负,并将单形添加至边界集合
- 如果能够被表出,就记为正
直接搜索¶
0 维同调群可以通过并查集来搜索出来。
高维同调群可以通过 Alexander duality 归约到 0 维同调群和点集本身1。
Example: 基于线性空间的计算¶
如图,
计算流程
- 根据单形加入的先后顺序,构造一个
的矩阵。 - 从左到右进行列消元
- 实际意义就是:判断后者能否被前者表出
- “从左到右”就是为了避免后面的单形表出前面的单形
- 对于空列,对应的就是 (1) 的情况,也就是正号;对于非空列,自然就是 (2) 的情况,也就是负号。
- 对于非空列,其含义就是:所有红色方块之和(在边界等价关系下)为 0。根据先进后出原则,最下面的方块(i.e. 深红色方块)视作被删去。
从而,列的空与非空,就是单形的符号;而深红色方块,就是同调元的生成与消亡。
谱序列算法¶
不难发现,这个矩阵就是一个上三角矩阵,因此,我们可以通过以下的方法进行消元:
其中:
- 第
列代表第 列,对应着 的单形集合。也就是 中新增的单形。
如图,在第 i 轮的时候,对于每个第
不难发现,由于上图深色的方块之前本身就只有 3 列非零列,因此,在三次消元之后,就完成了这些方块的消元。
稀疏矩阵¶
使用稀疏矩阵来表示这个矩阵,然后进行消元,会更加节省空间和时间。
对偶理论¶
通过 union find,可以在 practically linear time 完成。而更高维的,可以通过 Alexander duality 来计算。
TODO
扩展过滤¶
以嵌入
- essential 生成元(无配对)
- inessential 生成元(有配对,i.e. 有出生和消失时刻)
对于没有配对的生成元,我们不能任由其生长到无穷大。对此,我们可以采用下水平集+上水平集的方式。从而,我们可以得到三个 PD 图:
- 从下往上的时候出生且消亡的生成元对
- 从下往上的时候出生,从上往下消亡的生成元对
- 从上往下的时候出生且消亡的生成元对
第一种的所有点必然在 y=x 之上;第三种必然在 y=x 之下;第二种则可能在 y=x 之上,也可能之下。(如下图所示)