From e06ba8ea1346e5045a34508648ac93150aacb01a Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Fri, 17 Jun 2011 17:41:52 +0200 Subject: Reimplemented AI (old one was too slow) git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@443 72836036-5685-4462-b002-a69064685172 --- .../ai/fdsolver/constraint/IfConstraint.java | 108 --------------------- 1 file changed, 108 deletions(-) delete mode 100644 src/jrummikub/ai/fdsolver/constraint/IfConstraint.java (limited to 'src/jrummikub/ai/fdsolver/constraint/IfConstraint.java') diff --git a/src/jrummikub/ai/fdsolver/constraint/IfConstraint.java b/src/jrummikub/ai/fdsolver/constraint/IfConstraint.java deleted file mode 100644 index fc1b484..0000000 --- a/src/jrummikub/ai/fdsolver/constraint/IfConstraint.java +++ /dev/null @@ -1,108 +0,0 @@ -package jrummikub.ai.fdsolver.constraint; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.locks.Condition; - - -import jrummikub.ai.fdsolver.Constraint; -import jrummikub.ai.fdsolver.Propagator; -import jrummikub.ai.fdsolver.Satisfiability; -import jrummikub.ai.fdsolver.Var; - -public class IfConstraint extends Constraint { - Var condition; - Constraint child; - Collection> vars; - boolean negateCond; - - public IfConstraint(boolean negateCond, Var condition, Constraint child) { - this.condition = condition; - this.child = child; - this.negateCond = negateCond; - vars = new ArrayList>(); - vars.addAll(child.getWatchedVars()); - vars.add(condition); - } - - @Override - public Collection> getWatchedVars() { - return vars; - } - - private class IfPropagator implements Propagator { - Propagator child; - Collection> vars; - public IfPropagator(Propagator child) { - this.child = child; - vars = new ArrayList>(); - vars.addAll(child.getWatchedVars()); - vars.add(condition); - } - - @Override - public Collection> getWatchedVars() { - return vars; - } - - @Override - public void propagate() { - if(condition.getRange().contains(negateCond)) { - return; - } - child.propagate(); - } - } - - private class FailPropagator implements Propagator { - @Override - public Collection> getWatchedVars() { - return child.getWatchedVars(); - } - - @Override - public void propagate() { - if (!child.isSatisfiable()) { - condition.invalidate(!negateCond); - } - } - } - - @Override - public Collection getPropagators(boolean negate) { - List props = new ArrayList(); - if (negate) { - props.add(new FilterPropagator(new Filter() { - @Override - public boolean accept(Boolean value) { - return value ^ negateCond; - } - }, condition)); - props.addAll(child.getPropagators(true)); - } else { - for (Propagator p : child.getPropagators(false)) { - props.add(new IfPropagator(p)); - } - props.add(new FailPropagator()); - } - return props; - } - - @Override - public Satisfiability getSatisfiability() { - if (condition.getRange().contains(negateCond)) { - if (condition.getRange().size() == 1) { - return Satisfiability.TAUT; - } else { - if (child.getSatisfiability() == Satisfiability.TAUT) { - return Satisfiability.TAUT; - } else { - return Satisfiability.SAT; - } - } - } - return child.getSatisfiability(); - } - -} -- cgit v1.2.3