source: trunk/EventBenchCore/src/de/ugoe/cs/eventbench/markov/HighOrderMarkovModel.java @ 12

Last change on this file since 12 was 12, checked in by sherbold, 13 years ago

+ added class TrieBasedModel? as base class for all usage models that calculate probabilities based on a trie
+ extracted everything except the probability calculation from PPM to TrieBasedModel?
+ added HighOrderMarkovModel? based on TrieBasedModel?

  • Property svn:mime-type set to text/plain
File size: 967 bytes
Line 
1package de.ugoe.cs.eventbench.markov;
2
3import java.util.LinkedList;
4import java.util.List;
5import java.util.Random;
6
7import de.ugoe.cs.eventbench.data.Event;
8import de.ugoe.cs.eventbench.ppm.TrieBasedModel;
9
10public class HighOrderMarkovModel extends TrieBasedModel {
11       
12        public HighOrderMarkovModel(int maxOrder, Random r) {
13                super(maxOrder, r);
14        }
15               
16        @Override
17        protected double getProbability(List<Event<?>> context, Event<?> symbol) {
18                double result = 0.0d;
19               
20                List<Event<?>> contextCopy = new LinkedList<Event<?>>(context);
21
22       
23                List<Event<?>> followers = trie.getFollowingSymbols(contextCopy);
24                int sumCountFollowers = 0; // N(s\sigma')
25                for( Event<?> follower : followers ) {
26                        sumCountFollowers += trie.getCount(contextCopy, follower);
27                }
28               
29                int countSymbol = trie.getCount(contextCopy, symbol);
30                if( sumCountFollowers!=0 ) {
31                        result = ((double) countSymbol / sumCountFollowers);
32                }
33               
34                return result;
35        }
36
37}
Note: See TracBrowser for help on using the repository browser.