Changeset 101 for trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/DeterministicFiniteAutomaton.java
- Timestamp:
- 07/04/11 15:21:50 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/DeterministicFiniteAutomaton.java
r93 r101 7 7 import de.ugoe.cs.eventbench.data.Event; 8 8 9 /** 10 * <p> 11 * Implements a Deterministic Finite Automata (DFA) capable of random session 12 * generation. It is a special case of a first-order Markov model, where the 13 * transition probability is equally high for all following states. 14 * </p> 15 * 16 * @author Steffen Herbold 17 * @version 1.0 18 */ 9 19 public class DeterministicFiniteAutomaton extends FirstOrderMarkovModel { 10 20 11 21 /** 22 * <p> 12 23 * Id for object serialization. 24 * </p> 13 25 */ 14 26 private static final long serialVersionUID = 1L; 15 27 28 /** 29 * <p> 30 * Constructor. Creates a new DeterministicFiniteAutomaton. 31 * </p> 32 * 33 * @param r 34 * random number generator used by probabilistic methods of the 35 * class 36 */ 16 37 public DeterministicFiniteAutomaton(Random r) { 17 38 super(r); 18 39 } 19 40 41 /** 42 * <p> 43 * Calculates the proability of the next state. Each of the following states 44 * in the automaton is equally probable. 45 * </p> 46 * 47 * @see de.ugoe.cs.eventbench.models.IStochasticProcess#getProbability(java.util.List, 48 * de.ugoe.cs.eventbench.data.Event) 49 */ 20 50 @Override 21 public double getProbability(List<? extends Event<?>> context, Event<?> symbol) { 51 public double getProbability(List<? extends Event<?>> context, 52 Event<?> symbol) { 22 53 double result = 0.0d; 23 54 24 55 List<Event<?>> contextCopy; 25 if( context.size()>=trieOrder ) { 26 contextCopy = new LinkedList<Event<?>>(context.subList(context.size()-trieOrder+1, context.size())); 56 if (context.size() >= trieOrder) { 57 contextCopy = new LinkedList<Event<?>>(context.subList( 58 context.size() - trieOrder + 1, context.size())); 27 59 } else { 28 60 contextCopy = new LinkedList<Event<?>>(context); 29 61 } 30 62 31 32 63 List<Event<?>> followers = trie.getFollowingSymbols(contextCopy); 33 34 if ( followers.size()!=0 && followers.contains(symbol)) {64 65 if (followers.size() != 0 && followers.contains(symbol)) { 35 66 result = 1.0d / followers.size(); 36 67 } 37 68 38 69 return result; 39 70 }
Note: See TracChangeset
for help on using the changeset viewer.