diff --git a/IncrementalMinimization/src/DebugException.java b/IncrementalMinimization/src/minimization/DebugException.java similarity index 80% rename from IncrementalMinimization/src/DebugException.java rename to IncrementalMinimization/src/minimization/DebugException.java index ff871d2f..0cef7a85 100644 --- a/IncrementalMinimization/src/DebugException.java +++ b/IncrementalMinimization/src/minimization/DebugException.java @@ -1,5 +1,6 @@ +package minimization; -class DebugException extends Exception +public class DebugException extends Exception { private final Integer maxDepth; diff --git a/IncrementalMinimization/src/minimization/MinimizationAlgorithm.java b/IncrementalMinimization/src/minimization/MinimizationAlgorithm.java new file mode 100644 index 00000000..06785ff9 --- /dev/null +++ b/IncrementalMinimization/src/minimization/MinimizationAlgorithm.java @@ -0,0 +1,10 @@ +package minimization; + +import org.sat4j.specs.TimeoutException; + +import automata.sfa.SFA; + +public interface MinimizationAlgorithm
+{ + public SFA
minimize() throws TimeoutException, DebugException; +} diff --git a/IncrementalMinimization/src/MooreMinimization.java b/IncrementalMinimization/src/minimization/MooreMinimization.java similarity index 84% rename from IncrementalMinimization/src/MooreMinimization.java rename to IncrementalMinimization/src/minimization/MooreMinimization.java index 81eaa0e3..75517552 100644 --- a/IncrementalMinimization/src/MooreMinimization.java +++ b/IncrementalMinimization/src/minimization/MooreMinimization.java @@ -1,3 +1,4 @@ +package minimization; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -13,9 +14,24 @@ import automata.sfa.SFAMove; -public class MooreMinimization +public class MooreMinimization
implements MinimizationAlgorithm
{
- private static List SFA mooreMinimize(SFA aut, BooleanAlgebra ba) throws TimeoutException
+ {
+ MooreMinimization moore = new MooreMinimization (aut, ba);
+ return moore.minimize();
+ }
+
+ private SFA aut;
+ private BooleanAlgebra ba;
+
+ private MooreMinimization(SFA aut, BooleanAlgebra ba)
+ {
+ this.aut = aut;
+ this.ba = ba;
+ }
+
+ private List SFA mooreMinimize(SFA aut, BooleanAlgebra ba) throws TimeoutException
+ public SFA minimize() throws TimeoutException
{
if(aut.isEmpty())
{
@@ -41,7 +57,7 @@ public static SFA mooreMinimize(SFA aut, BooleanAlgebra ba)
}
aut = aut.mkTotal(ba);
int normalizeStateCount = (aut.stateCount()*aut.stateCount())/2;
- HashSet
+public class IncrementalMinimization implements MinimizationAlgorithm
{
protected class EquivTest //tests for equality of two given states in the automata
diff --git a/IncrementalMinimization/src/IncrementalNaive.java b/IncrementalMinimization/src/minimization/incremental/IncrementalNaive.java
similarity index 92%
rename from IncrementalMinimization/src/IncrementalNaive.java
rename to IncrementalMinimization/src/minimization/incremental/IncrementalNaive.java
index 93eda39b..909c6cc2 100644
--- a/IncrementalMinimization/src/IncrementalNaive.java
+++ b/IncrementalMinimization/src/minimization/incremental/IncrementalNaive.java
@@ -1,10 +1,17 @@
+package minimization.incremental;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Stack;
+import minimization.incremental.IncrementalMinimization.EquivTest;
+import minimization.incremental.IncrementalMinimization.EquivTest.EquivRecord;
+
import org.sat4j.specs.TimeoutException;
+import structures.DisjointSets;
+import structures.MintermTree;
import theory.BooleanAlgebra;
import automata.sfa.SFA;
import automata.sfa.SFAInputMove;
diff --git a/IncrementalMinimization/src/IncrementalRecursive.java b/IncrementalMinimization/src/minimization/incremental/IncrementalRecursive.java
similarity index 98%
rename from IncrementalMinimization/src/IncrementalRecursive.java
rename to IncrementalMinimization/src/minimization/incremental/IncrementalRecursive.java
index d9b3a069..ca353eb5 100644
--- a/IncrementalMinimization/src/IncrementalRecursive.java
+++ b/IncrementalMinimization/src/minimization/incremental/IncrementalRecursive.java
@@ -1,3 +1,5 @@
+package minimization.incremental;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -5,8 +7,11 @@
import java.util.LinkedList;
import java.util.List;
+import minimization.incremental.IncrementalMinimization.EquivTest;
+
import org.sat4j.specs.TimeoutException;
+import structures.DisjointSets;
import theory.BooleanAlgebra;
import automata.sfa.SFA;
import automata.sfa.SFAInputMove;
diff --git a/IncrementalMinimization/src/TimeBudgetExceededException.java b/IncrementalMinimization/src/minimization/incremental/TimeBudgetExceededException.java
similarity index 93%
rename from IncrementalMinimization/src/TimeBudgetExceededException.java
rename to IncrementalMinimization/src/minimization/incremental/TimeBudgetExceededException.java
index 2f1f27fa..e5d66bfa 100644
--- a/IncrementalMinimization/src/TimeBudgetExceededException.java
+++ b/IncrementalMinimization/src/minimization/incremental/TimeBudgetExceededException.java
@@ -1,3 +1,4 @@
+package minimization.incremental;
import org.sat4j.specs.TimeoutException;
import automata.sfa.SFA;
diff --git a/IncrementalMinimization/src/DisjointSets.java b/IncrementalMinimization/src/structures/DisjointSets.java
similarity index 99%
rename from IncrementalMinimization/src/DisjointSets.java
rename to IncrementalMinimization/src/structures/DisjointSets.java
index 827e7a39..b30f7da2 100644
--- a/IncrementalMinimization/src/DisjointSets.java
+++ b/IncrementalMinimization/src/structures/DisjointSets.java
@@ -1,3 +1,4 @@
+package structures;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
diff --git a/IncrementalMinimization/src/MintermTree.java b/IncrementalMinimization/src/structures/MintermTree.java
similarity index 98%
rename from IncrementalMinimization/src/MintermTree.java
rename to IncrementalMinimization/src/structures/MintermTree.java
index 004fb008..138433f4 100644
--- a/IncrementalMinimization/src/MintermTree.java
+++ b/IncrementalMinimization/src/structures/MintermTree.java
@@ -1,3 +1,4 @@
+package structures;
import java.util.ArrayList;
import org.sat4j.specs.TimeoutException;
diff --git a/IncrementalMinimization/src/TestDisjointSets.java b/IncrementalMinimization/src/test/TestDisjointSets.java
similarity index 97%
rename from IncrementalMinimization/src/TestDisjointSets.java
rename to IncrementalMinimization/src/test/TestDisjointSets.java
index 7ae1f9e4..553bc128 100644
--- a/IncrementalMinimization/src/TestDisjointSets.java
+++ b/IncrementalMinimization/src/test/TestDisjointSets.java
@@ -1,9 +1,12 @@
+package test;
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
+import structures.DisjointSets;
+
public class TestDisjointSets {
DisjointSets normalize(Integer p, Integer q)
return pair;
}
- public static
> neq = new HashSet
>();
+ HashSet
> neq = new HashSet
>(normalizeStateCount);
for (Integer p : aut.getFinalStates())
{
for (Integer q : aut.getNonFinalStates())
diff --git a/IncrementalMinimization/src/IncrementalMinimization.java b/IncrementalMinimization/src/minimization/incremental/IncrementalMinimization.java
similarity index 98%
rename from IncrementalMinimization/src/IncrementalMinimization.java
rename to IncrementalMinimization/src/minimization/incremental/IncrementalMinimization.java
index 053f2c8f..4d5b0ffa 100644
--- a/IncrementalMinimization/src/IncrementalMinimization.java
+++ b/IncrementalMinimization/src/minimization/incremental/IncrementalMinimization.java
@@ -1,3 +1,5 @@
+package minimization.incremental;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -11,14 +13,18 @@
import java.util.Set;
import java.util.Stack;
+import minimization.DebugException;
+import minimization.MinimizationAlgorithm;
+
import org.sat4j.specs.TimeoutException;
+import structures.DisjointSets;
import theory.BooleanAlgebra;
import automata.sfa.SFA;
import automata.sfa.SFAInputMove;
import automata.sfa.SFAMove;
-public class IncrementalMinimization