the connected components via . This algorithm works by creating a forest, i.e. a collection of rooted trees, where the parent of a vertex $v \in V$ is denoted by $p_v \in V$, and each root satisfies $p_v = v$. The algorithm merges the trees of all vertices contained in a hyperedge, for all hyperedges. After this is completed, each vertex is directly attached to its root, which represents its connected component.

$G^0 \gets G$; $j \gets 0$; coarsen $G^j$ to $G^{j + 1}$ with surjective $\pi^j : V_{G^j} \rightarrow V_{G^{j + 1}}$; $j \gets j + 1$; let $x^j$ be a random visual representation for $G^j$ (so pick $x^j(v) \in {\mathbf{R}}^d$ at random for all vertices $v \in V_{G^j}$); improve $x^j$ by ; \[algline:vmovisrepimp\] \[algline:vmovisreppar\] $x^{j - 1}(v) \gets $ scale $x^j(\pi^j(v))\, + $ small random displacement; $j \gets j - 1$;

Secondly, we apply to each connected component to generate a visual representation. We create a hierarchy of coarsenings of the hypergraph and visual representations for these coarser hypergraphs, to avoid getting stuck in local energy minima. Here, we follow the graph visualization algorithm from [@Hu2005]. We coarsen hypergraphs by creating a maximal matching that is constructed greedily 