Class PropCompactTable

  • All Implemented Interfaces:
    Comparable<Propagator>, ICause, Identity
    Direct Known Subclasses:
    PropCompactTableStar

    public class PropCompactTable
    extends Propagator<IntVar>
    Propagator for table constraint based on "Compact-Table: Efficiently Filtering Table Constraints with Reversible Sparse Bit-Sets" Only for feasible Tuples
    Since:
    28/04/2016
    Author:
    Jean-Guillaume FAGES, Charles Prud'homme
    • Field Detail

      • tuples

        protected Tuples tuples
      • supports

        protected long[][][] supports
      • offset

        protected int[] offset
    • Constructor Detail

      • PropCompactTable

        public PropCompactTable​(IntVar[] vars,
                                Tuples tuples)
        Create a propagator for table constraint Only for feasible Tuples
        Parameters:
        vars - scope
        tuples - list of feasible tuples
    • Method Detail

      • computeSupports

        protected void computeSupports​(Tuples tuples)
      • 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 vIdx,
                              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:
        vIdx - 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