pub trait GraphicAlgorithm<H> { type Output; // Required method fn process(self, graph: H) -> Result<Self::Output>; }
this trait is used to denote an algorithm that can be applied to a hypergraph
the type of output that this algorithm produces
run the algorithm on the graph and return the output