Preliminaries
Computing Betti Numbers
Computing Persistent Homology
Example:
Step 1: Sort the simplices to get a total ordering compatible with the filtration Example:
Step 3: Reduce the matrix Example: for j = 1 to n: while ∃ j' < j with low(j') = low(j) ≠ 0: add column j' to column j ALGORITHM
Step 4: Read the persistence pairs Example:
simplices 2 and 4 enter at the same time, so the pair does not produce a bar
Example: simplices 2 and 4 enter at the same time, so the pair does not produce a bar Now we can draw the barcode:
Data Structures
low array 4 5
Data Structures low array 4 5
Data Structures low array 4 5 7
“Twist” Optimization reduced matrix
“Twist” Optimization Example: same boundary matrix as before unreduced matrix
Runtime Complexity However, in practice, the runtime is often better than cubic. Note that this complexity is just for the matrix reduction, and doesn’t include building the filtration or boundary matrix.
Generating Cycles …
Bit Tree … … … … …… …………
Bit Tree … … … … …… ………… The bit tree supports nearly constant time insertion, deletion, and lookup. The “active” column is converted to a bit tree, then columns are added to it, and then it is converted back to a sparse structure. Bauer et. al. recorded significant speed improvements when using the bit tree for column additions.
Available Software JavaPlex: Dionysus: Perseus: Persistent Homology Algorithms Toolbox (PHAT):
References Ulrich Bauer, et. al. “PHAT – Persistent Homology Algorithms Toolbox.” Herbert Edelsbrunner and John Harer. “Persistent homology: a survey.” in Surveys on discrete and computational geometry: twenty years later. AMS (2008). Afra Zomorodian and Gunnar Carlsson. “Computing persistent homology.” Discrete and Computational Geometry. Vol. 33, no. 2 (2005), p. 249 – 274.