public static function computeImmediatePredecessors(Digraph $graph)
{
$reversed = $graph->transpose();
$predecessors = new \SplObjectStorage();
foreach ($reversed->vertices() as $vertex) {
$tmp = array();
foreach ($reversed->successorsOf($vertex) as $sub) {
$tmp[] = $sub;
}
$predecessors[$vertex] = Shim::array_unique($tmp);
}
return $predecessors;
}