Class Subcircuit

All Implemented Interfaces:
SatisfiedPresent, UsesQueueVariable

public class Subcircuit extends Alldiff
Subcircuit constraint assures that all variables build a subcircuit. Value of every variable x[i] points to the next variable in the subcircuit. If a variable does not belong to a subcircuit it has value of its position, i.e., x[i] = i.
Version:
4.8
  • Field Details

    • idNumber

      static AtomicInteger idNumber
    • store

      Store store
    • firstConsistencyCheck

      boolean firstConsistencyCheck
    • useSCC

      boolean useSCC
    • useDominance

      boolean useDominance
    • idd

      int idd
    • sccLength

      int sccLength
    • val

      int[] val
    • valueIndex

      Hashtable<Var,Integer> valueIndex
    • firstConsistencyLevel

      int firstConsistencyLevel
    • graphDominance

    • sccCounter

      int sccCounter
    • stack

      int[] stack
    • stack_pointer

      int stack_pointer
    • cycleVar

      BitSet cycleVar
    • random

      Random random
  • Constructor Details

    • Subcircuit

      public Subcircuit(IntVar[] list)
      It constructs a circuit constraint.
      Parameters:
      list - variables which must form a circuit.
    • Subcircuit

      public Subcircuit(List<IntVar> list)
      It constructs a circuit constraint.
      Parameters:
      list - variables which must form a circuit.
  • Method Details

    • consistency

      public void consistency(Store store)
      Description copied from class: Constraint
      It is a (most probably incomplete) consistency function which removes the values from variables domains. Only values which do not have any support in a solution space are removed.
      Overrides:
      consistency in class Alldiff
      Parameters:
      store - constraint store within which the constraint consistency is being checked.
    • alldifferent

      void alldifferent(Store store, LinkedHashSet<IntVar> fdvs)
    • getConsistencyPruningEvent

      public int getConsistencyPruningEvent(Var var)
      Description copied from class: Constraint
      It retrieves the pruning event which causes reevaluation of the constraint.
      Overrides:
      getConsistencyPruningEvent in class Constraint
      Parameters:
      var - variable for which pruning event is retrieved
      Returns:
      it returns the int code of the pruning event (GROUND, BOUND, ANY, NONE)
    • needsListPruning

      boolean needsListPruning()
    • impose

      public void impose(Store store)
      Description copied from class: Constraint
      It imposes the constraint in a given store.
      Overrides:
      impose in class Alldiff
      Parameters:
      store - the constraint store to which the constraint is imposed to.
    • satisfied

      public boolean satisfied()
      Description copied from interface: SatisfiedPresent
      It checks if the constraint is satisfied. It can return false even if constraint is satisfied but not all variables in its scope are grounded. It needs to return true if all variables in its scope are grounded and constraint is satisfied.

      Implementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.

      Specified by:
      satisfied in interface SatisfiedPresent
      Overrides:
      satisfied in class Alldifferent
      Returns:
      true if constraint is possible to verify that it is satisfied.
    • toString

      public String toString()
      Description copied from class: Constraint
      It produces a string representation of a constraint state.
      Overrides:
      toString in class Alldiff
    • sccsBasedPruning

      private void sccsBasedPruning(Store store)
    • sccs

      private int sccs(Store store)
    • visit

      private int visit(int k)
    • dominanceFilter

      private void dominanceFilter()
    • graphDominance

      private boolean graphDominance(int root)
    • reversedGraphDominance

      private boolean reversedGraphDominance(int root)