public static ZDDNode MakeInitialNode(State state) { ZDDNode node = new ZDDNode(-1); node.mate_ = state.MakeInitialMate(); node.SetNextId(); return node; }
public static ZDDNode MakeInitialNode(State state) { ZDDNode node = new ZDDNode(-1); node.mate_ = state.MakeInitialMate(); node.SetNextId(); return(node); }
public static PseudoZDD Construct(State state) { PseudoZDD zdd = new PseudoZDD(); zdd.CreateRootNode(state); for (int edge = 1; edge <= state.GetNumberOfEdges(); ++edge) { state.Update(); zdd.SetLevelStart(); for (int i = 0; i < zdd.GetCurrentLevelSize(); ++i) { ZDDNode node = zdd.GetCurrentLevelNode(i); for (int child_num = 0; child_num < 2; ++child_num) { ZDDNode child_node = MakeChildNode(node, state, child_num, zdd); if (child_node != PseudoZDD.ZeroTerminal && child_node != PseudoZDD.OneTerminal) { ZDDNode cand_node = zdd.FindNodeFromNextLevel(child_node, state); if (cand_node != null) { child_node = cand_node; } else { child_node.SetNextId(); zdd.AddNodeToNextLevel(child_node, state); } } zdd.SetChildNode(node, child_node, child_num); } } } return(zdd); }