Class PropAtLeastNValues_AC

  • All Implemented Interfaces:
    Comparable<Propagator>, ICause, Identity

    public class PropAtLeastNValues_AC
    extends Propagator<IntVar>
    AtLeastNValues Propagator (similar to SoftAllDiff) The number of distinct values in vars is at least nValues Performs Generalized Arc Consistency based on Maximum Bipartite Matching The worst case time complexity is O(nm) but this is very pessimistic In practice it is more like O(m) where m is the number of variable-value pairs

    BEWARE UNSAFE : BUG DETECTED THROUGH DOBBLE(3,4,6)

    !redundant propagator!

    Author:
    Jean-Guillaume Fages
    • Constructor Detail

      • PropAtLeastNValues_AC

        public PropAtLeastNValues_AC​(IntVar[] variables,
                                     int[] vals,
                                     IntVar nValues)
        AtLeastNValues Propagator (similar to SoftAllDiff) The number of distinct values in vars is at least nValues Performs Generalized Arc Consistency based on Maximum Bipartite Matching The worst case time complexity is O(nm) but this is very pessimistic In practice it is more like O(m) where m is the number of variable-value pairs
        Parameters:
        variables - array of integer variables
        nValues - integer variable
    • Method Detail

      • propagate

        public void propagate​(int evtmask)
                       throws ContradictionException
        Description copied from class: Propagator
        Call the main filtering algorithm to apply to the Domain of the Variable objects. It considers the current state of this objects to remove some values from domains and/or instantiate some variables. Calling this method is done from 2 (and only 2) steps:
        - at the initial propagation step,
        - when involved in a reified constraint.
        It should initialized the internal data structure and apply filtering algorithm from scratch.
        Specified by:
        propagate in class Propagator<IntVar>
        Parameters:
        evtmask - type of propagation event this must consider.
        Throws:
        ContradictionException - when a contradiction occurs, like domain wipe out or other incoherencies.
      • propagate

        public void propagate​(int varIdx,
                              int mask)
                       throws ContradictionException
        Description copied from class: Propagator
        Incremental filtering algorithm defined within the Propagator, called whenever the variable of index idxVarInProp has changed. This method calls a CUSTOM_PROPAGATION (coarse-grained) by default.

        This method should be overridden if the argument reactToFineEvt is set to true in the constructor. Otherwise, it executes propagate(PropagatorEventType.CUSTOM_PROPAGATION.getStrengthenedMask());

        Overrides:
        propagate in class Propagator<IntVar>
        Parameters:
        varIdx - index of the variable var in this
        mask - type of event
        Throws:
        ContradictionException - if a contradiction occurs
      • isEntailed

        public ESat isEntailed()
        Description copied from class: Propagator
        Check wether this is entailed according to the current state of its internal structure. At least, should check the satisfaction of this (when all is instantiated).
        Specified by:
        isEntailed in class Propagator<IntVar>
        Returns:
        ESat.TRUE if entailed, ESat.FALSE if not entailed, ESat.UNDEFINED if unknown