# Simplex tree user manual¶

## Definition¶

Author: Clément Maria
Introduced in: GUDHI 2.0.0
 Simplex tree representation The simplex tree is an efficient and flexible data structure for representing general (filtered) simplicial complexes. The data structure is described in [4] Simplex tree user manual Simplex tree reference manual

A simplicial complex $$\mathbf{K}$$ on a set of vertices $$V = \{1, \cdots ,|V|\}$$ is a collection of simplices $$\{\sigma\}$$, $$\sigma \subseteq V$$ such that $$\tau \subseteq \sigma \in \mathbf{K} \rightarrow \tau \in \mathbf{K}$$. The dimension $$n=|\sigma|-1$$ of $$\sigma$$ is its number of elements minus 1.

A filtration of a simplicial complex is a function $$f:\mathbf{K} \rightarrow \mathbb{R}$$ satisfying $$f(\tau)\leq f(\sigma)$$ whenever $$\tau \subseteq \sigma$$. Ordering the simplices by increasing filtration values (breaking ties so as a simplex appears after its subsimplices of same filtration value) provides an indexing scheme.

## Implementation¶

There are two implementation of complexes. The first on is the Simplex_tree data structure. The simplex tree is an efficient and flexible data structure for representing general (filtered) simplicial complexes. The data structure is described in :citeboissonnatmariasimplextreealgorithmica.

The second one is the Hasse_complex. The Hasse complex is a data structure representing explicitly all co-dimension 1 incidence relations in a complex. It is consequently faster when accessing the boundary of a simplex, but is less compact and harder to construct from scratch.

## Example¶

import gudhi
st = gudhi.SimplexTree()
if st.insert([0, 1]):
print("[0, 1] inserted")
if st.insert([0, 1, 2], filtration=4.0):
print("[0, 1, 2] inserted")
if st.find([0, 1]):
print("[0, 1] found")
result_str = 'num_vertices=' + repr(st.num_vertices())
print(result_str)
result_str = 'num_simplices=' + repr(st.num_simplices())
print(result_str)
print("skeleton(2) =")
for sk_value in st.get_skeleton(2):
print(sk_value)


The output is:

[0, 1] inserted
[0, 1, 2] inserted
[0, 1] found
num_vertices=3
num_simplices=7
skeleton(2) =
([0, 1, 2], 4.0)
([0, 1], 0.0)
([0, 2], 4.0)
([0], 0.0)
([1, 2], 4.0)
([1], 0.0)
([2], 4.0)