Abstract: In this paper, we present the first output-sensitive algorithm to compute the persistence diagram of a filtered simplicial complex. For any Γ>0<math><mi is="true">Γ</mi><mo is="true">></mo><mn is="true">0</mn></math>, it returns only those homology classes with persistence at least Γ. Instead of the classical reduction via column operations, our algorithm performs rank computations on submatrices of the boundary matrix. For an arbitrary constant δ∈(0,1)<math><mi is="true">δ</mi><mo is="true">∈</mo><mo stretchy="false" is="true">(</mo><mn is="true">0</mn><mo is="true">,</mo><mn is="true">1</mn><mo stretchy="false" is="true">)</mo></math>, the running time is O(C(1−δ)ΓRd(n)logn)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><msub is="true"><mrow is="true"><mi is="true">C</mi></mrow><mrow is="true"><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></mrow></msub><msub is="true"><mrow is="true"><mi is="true">R</mi></mrow><mrow is="true"><mi is="true">d</mi></mrow></msub><mo stretchy="false" is="true">(</mo><mi is="true">n</mi><mo stretchy="false" is="true">)</mo><mi mathvariant="normal" is="true">log</mi><mspace width="0.2em" is="true"></mspace><mi is="true">n</mi><mo stretchy="false" is="true">)</mo></math>, where C(1−δ)Γ<math><msub is="true"><mrow is="true"><mi is="true">C</mi></mrow><mrow is="true"><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></mrow></msub></math> is the number of homology classes with persistence at least (1−δ)Γ<math><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></math>, n is the total number of simplices in the complex, d its dimension, and Rd(n)<math><msub is="true"><mrow is="true"><mi is="true">R</mi></mrow><mrow is="true"><mi is="true">d</mi></mrow></msub><mo stretchy="false" is="true">(</mo><mi is="true">n</mi><mo stretchy="false" is="true">)</mo></math> is the complexity of computing the rank of an n×n<math><mi is="true">n</mi><mo is="true">×</mo><mi is="true">n</mi></math> matrix with O(dn)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><mi is="true">d</mi><mi is="true">n</mi><mo stretchy="false" is="true">)</mo></math> nonzero entries. Depending on the choice of the rank algorithm, this yields a deterministic O(C(1−δ)Γn2.376)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><msub is="true"><mrow is="true"><mi is="true">C</mi></mrow><mrow is="true"><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></mrow></msub><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2.376</mn></mrow></msup><mo stretchy="false" is="true">)</mo></math> algorithm, an O(C(1−δ)Γn2.28)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><msub is="true"><mrow is="true"><mi is="true">C</mi></mrow><mrow is="true"><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></mrow></msub><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2.28</mn></mrow></msup><mo stretchy="false" is="true">)</mo></math> Las-Vegas algorithm, or an O(C(1−δ)Γn2+ϵ)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><msub is="true"><mrow is="true"><mi is="true">C</mi></mrow><mrow is="true"><mo stretchy="false" is="true">(</mo><mn is="true">1</mn><mo is="true">−</mo><mi is="true">δ</mi><mo stretchy="false" is="true">)</mo><mi is="true">Γ</mi></mrow></msub><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2</mn><mo is="true">+</mo><mi is="true">ϵ</mi></mrow></msup><mo stretchy="false" is="true">)</mo></math> Monte-Carlo algorithm for an arbitrary ϵ>0<math><mi is="true">ϵ</mi><mo is="true">></mo><mn is="true">0</mn></math>. The space complexity of the Monte-Carlo version is bounded by O(dn)=O(nlogn)<math><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><mi is="true">d</mi><mi is="true">n</mi><mo stretchy="false" is="true">)</mo><mo is="true">=</mo><mi is="true">O</mi><mo stretchy="false" is="true">(</mo><mi is="true">n</mi><mi mathvariant="normal" is="true">log</mi><mspace width="0.2em" is="true"></mspace><mi is="true">n</mi><mo stretchy="false" is="true">)</mo></math>.
Loading