Ejemplo n.º 1
0
 public void AddConstraint(IConstraint constraint)
 {
     constraints.Add(constraint);
     foreach (Variable var in constraint.GetScope())
     {
         cnet[var].Add(constraint);
     }
 }
Ejemplo n.º 2
0
 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);
         }
     }
 }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }