A score-based two-phase algorithm where the first phase aims to identify the possible parent
sets, :footcite:t:`scanagatta2015learning`; :footcite:t:`scanagatta2018approximate`. 
The second phase performs an optimisation on a modification of the space of node orders introduced
in :footcite:t:`teyssier2012ordering`, allowing edges from nodes of higher to lower order, provided
that no cycles are introduced.