package de.ugoe.cs.eventbench.models; import java.util.LinkedList; import java.util.List; import java.util.Random; import de.ugoe.cs.eventbench.data.Event; public class DeterministicFiniteAutomaton extends FirstOrderMarkovModel { /** * Id for object serialization. */ private static final long serialVersionUID = 1L; public DeterministicFiniteAutomaton(Random r) { super(r); } @Override public double getProbability(List> context, Event symbol) { double result = 0.0d; List> contextCopy; if( context.size()>=trieOrder ) { contextCopy = new LinkedList>(context.subList(context.size()-trieOrder+1, context.size())); } else { contextCopy = new LinkedList>(context); } List> followers = trie.getFollowingSymbols(contextCopy); if( followers.size()!=0 && followers.contains(symbol) ) { result = 1.0d / followers.size(); } return result; } }