- Timestamp:
- 04/13/11 14:13:45 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/EventBenchCore/src/de/ugoe/cs/eventbench/ppm/Trie.java
r6 r9 4 4 import java.awt.Rectangle; 5 5 import java.awt.Shape; 6 import java.util.LinkedHashSet; 6 7 import java.util.LinkedList; 7 8 import java.util.List; 9 import java.util.Set; 8 10 9 11 import javax.swing.JFrame; 10 12 11 13 import org.apache.commons.collections15.Transformer; 14 15 import de.ugoe.cs.eventbench.markov.IncompleteMemory; 12 16 13 17 import edu.uci.ics.jung.algorithms.layout.Layout; … … 21 25 public class Trie<T> { 22 26 27 private Set<T> knownSymbols; 28 23 29 private final TrieNode<T> rootNode; 24 30 25 31 public Trie() { 26 32 rootNode = new TrieNode<T>(); 33 knownSymbols = new LinkedHashSet<T>(); 34 } 35 36 public Set<T> getKnownSymbols() { 37 return new LinkedHashSet<T>(knownSymbols); 38 } 39 40 // trains the current Trie using the given sequence and adds all subsequence of length maxOrder 41 public void train(List<T> sequence, int maxOrder) { 42 IncompleteMemory<T> latestActions = new IncompleteMemory<T>(maxOrder); 43 int i=0; 44 for(T currentEvent : sequence) { 45 latestActions.add(currentEvent); 46 knownSymbols.add(currentEvent); 47 i++; 48 if( i>=maxOrder ) { 49 add(latestActions.getLast(maxOrder)); 50 } 51 } 52 int sequenceLength = sequence.size(); 53 for( int j=maxOrder-1 ; j>0 ; j-- ) { 54 add(sequence.subList(sequenceLength-j, sequenceLength)); 55 } 27 56 } 28 57 29 58 59 // increases the counters for each symbol in the subsequence 30 60 public void add(List<T> subsequence) { 31 if( !subsequence.isEmpty() ) { 61 if( subsequence!=null && !subsequence.isEmpty() ) { 62 knownSymbols.addAll(subsequence); 32 63 subsequence = new LinkedList<T>(subsequence); // defensive copy! 33 64 T firstSymbol = subsequence.get(0);
Note: See TracChangeset
for help on using the changeset viewer.