public void AddConstraint(IConstraint constraint) { constraints.Add(constraint); foreach (Variable var in constraint.GetScope()) { cnet[var].Add(constraint); } }
public void AddConstraint(IConstraint <Var, Val> constraint) { Constraints.Add(constraint); foreach (Var var in constraint.GetScope()) { if (_varToConstraints.TryGetValue(var, out var constraints)) { constraints.Add(constraint); } } }
/// <summary> /// Returns for binary constraints the other variable from the scope. /// </summary> /// <param name="var"></param> /// <param name="constraint"></param> /// <returns>a variable or null for non-binary constraints.</returns> public Variable GetNeighbor(Variable var, IConstraint constraint) { IList <Variable> scope = constraint.GetScope(); if (scope.Count == 2) { if (var == scope[0]) { return(scope[1]); } if (var == scope[1]) { return(scope[0]); } } return(null); }
public Var GetNeighbor(Var var, IConstraint <Var, Val> constraint) { var scope = constraint.GetScope().ToArray(); if (scope.Length == 2) { if (var == scope.First()) { return(scope.Last()); } if (var == scope.Last()) { return(scope.First()); } } return(null); }