You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GUDHI Python库计算同调群时未输出1维结果的原因咨询

GUDHI Python库计算同调群时未输出1维结果的原因咨询

嗨,我来帮你分析这个问题~ 先还原你的问题场景:

你用GUDHI构建了如下单纯复形并计算持久同调:

import gudhi

# Create a simplicial complex
simplex_tree = gudhi.SimplexTree()
simplex_tree.insert([1, 2, 3])
simplex_tree.insert([2, 3, 4])
simplex_tree.insert([3, 4, 5])

# Compute homology
homology = simplex_tree.persistence()

print("Homology groups:")
for interval in homology:
    dim, (birth, death) = interval
    print(f"Dimension {dim}: birth = {birth}, death = {death}")

得到的输出仅为:

Homology groups:
Dimension 0: birth = 0.0, death = inf

你疑惑为什么没有1维同调群的结果,核心原因如下:

你的单纯复形中不存在1维拓扑洞,1维同调群是平凡的

GUDHI的persistence()方法默认只输出非平凡的同调类——也就是对应复形中真实存在的拓扑特征,比如连通分支、洞、空腔等。我们拆解你的复形结构:

  • 你插入的三个三角形依次共享边:[1,2,3]和[2,3,4]共享边[2,3],[2,3,4]和[3,4,5]共享边[3,4]。
  • 整个结构是链式拼接的平面图形,没有形成任何闭合的环(即1维拓扑洞)。没有洞就意味着1维同调群是平凡群(仅含零元素),所以不会被输出。

补充:0维同调结果的意义

你看到的0维同调结果对应复形的连通分支:整个复形是连通的,所以只有一个0维同调类。birth=0.0表示这个连通分支在过滤初始阶段就存在,death=inf表示它始终不会被“消灭”(复形全程保持连通)。

验证小技巧:查看所有维度的结果(包括平凡类)

如果你想强制看到所有维度的同调类,包括平凡的,可以给persistence()设置min_persistence=0参数:

homology = simplex_tree.persistence(min_persistence=0)

运行后你会看到1维结果显示为birth=0.0, death=0.0,这代表该同调类是平凡的,没有实际拓扑意义。

备注:内容来源于stack exchange,提问作者Encipher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:58:05