|
|
@ -124,10 +124,23 @@ final class StateEliminator { |
|
|
* Orders states so that states near target states are eliminated first. |
|
|
* Orders states so that states near target states are eliminated first. |
|
|
* States which do not reach target states are eliminated last. In case |
|
|
* States which do not reach target states are eliminated last. In case |
|
|
* there are no target states, the order is arbitrary |
|
|
* there are no target states, the order is arbitrary |
|
|
|
|
|
*/ |
|
|
|
|
|
private int[] collectStatesBackward() |
|
|
|
|
|
{ |
|
|
|
|
|
return collectStatesBackward(false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Orders states so that states near target states are eliminated first. |
|
|
|
|
|
* States which do not reach target states are eliminated last. In case |
|
|
|
|
|
* there are no target states, the order is arbitrary |
|
|
|
|
|
* <br> |
|
|
|
|
|
* If {@code onlyStatesReachingTarget} is true, only the states that |
|
|
|
|
|
* can reach the target states will be returned. |
|
|
* |
|
|
* |
|
|
* @return list of states in requested order |
|
|
* @return list of states in requested order |
|
|
*/ |
|
|
*/ |
|
|
private int[] collectStatesBackward() |
|
|
|
|
|
|
|
|
private int[] collectStatesBackward(boolean onlyStatesReachingTarget) |
|
|
{ |
|
|
{ |
|
|
int[] states = new int[pmc.getNumStates()]; |
|
|
int[] states = new int[pmc.getNumStates()]; |
|
|
BitSet seen = new BitSet(pmc.getNumStates()); |
|
|
BitSet seen = new BitSet(pmc.getNumStates()); |
|
|
@ -156,6 +169,10 @@ final class StateEliminator { |
|
|
current = next; |
|
|
current = next; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (onlyStatesReachingTarget) { |
|
|
|
|
|
return states; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/* might not find all states when doing as above, |
|
|
/* might not find all states when doing as above, |
|
|
* so add missing ones */ |
|
|
* so add missing ones */ |
|
|
HashSet<Integer> allStates = new HashSet<Integer>(); |
|
|
HashSet<Integer> allStates = new HashSet<Integer>(); |
|
|
|