void InsertNode(BDDNode node) // Добавление в таблицу { int leftId = (node.GetLow() == null) ? 0 : node.GetLow().GetId(); int rightId = (node.GetHigh() == null) ? 0 : node.GetHigh().GetId(); int varId = node.GetVarId(); if (!nodeTable.ContainsKey(Tuple.Create(varId, leftId, rightId))) { nodeTable.Add(Tuple.Create(varId, leftId, rightId), node); } }
private BDDNode Contraction(int v, BDDNode x, bool pos) // сужение функции { if (v != x.GetVarId()) { return(x); } return((pos) ? x.GetHigh() : x.GetLow()); }