# 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  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)
([1, 2], 4.0)
(, 0.0)
(, 4.0)