Class PropAntiArborescences

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

    public class PropAntiArborescences
    extends Propagator<IntVar>
    AntiArborescences propagation (simplification from tree constraint) based on dominators loops (i.e., variables such that x[i]=i) are considered as roots Can use the simple LT algorithm which runs in O(m.log(n)) worst case time Or a slightly more sophisticated one, linear in theory but not necessarily faster in practice
    Author:
    Jean-Guillaume Fages
    • Constructor Detail

      • PropAntiArborescences

        public PropAntiArborescences​(IntVar[] succs,
                                     int offSet,
                                     boolean linear)
        AntiArborescences propagation (simplification from tree constraint) based on dominators
        Parameters:
        succs - array of integer variables
        offSet - int
        linear - boolean
    • 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.
      • 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