Changeset 93


Ignore:
Timestamp:
07/04/11 10:35:39 (13 years ago)
Author:
sherbold
Message:
  • moved generation of all possible sequences of a fixed length from de.ugoe.cs.eventbench.coverage.CoverageCalculator? to de.ugoe.cs.eventbench.models.IStochasticProcess
Location:
trunk/EventBenchCore/src/de/ugoe/cs/eventbench
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage/CoverageCalculator.java

    r85 r93  
    11package de.ugoe.cs.eventbench.coverage; 
    22 
    3 import java.security.InvalidParameterException; 
    4 import java.util.ArrayList; 
    53import java.util.LinkedHashMap; 
    64import java.util.LinkedHashSet; 
     
    1614         
    1715        private final IStochasticProcess process; 
    18         private final List<List<Event<?>>> sequences; 
     16        private final List<List<? extends Event<?>>> sequences; 
    1917        private final int length; 
    2018         
    21         private Set<List<Event<?>>> containedSubSeqs = null; 
    22         private Set<List<Event<?>>> allPossibleSubSeqs = null; 
    23         private Map<List<Event<?>>, Double> subSeqWeights = null; 
     19        private Set<List<? extends Event<?>>> containedSubSeqs = null; 
     20        private Set<List<? extends Event<?>>> allPossibleSubSeqs = null; 
     21        private Map<List<? extends Event<?>>, Double> subSeqWeights = null; 
    2422         
    2523         
    26         public CoverageCalculator(IStochasticProcess process, List<List<Event<?>>> sequences, int length) { 
     24        public CoverageCalculator(IStochasticProcess process, List<List<? extends Event<?>>> sequences, int length) { 
    2725                this.process = process; 
    2826                this.sequences = sequences; 
     
    4341                } 
    4442                if( allPossibleSubSeqs==null ) { 
    45                         allPossibleSubSeqs = generateSubSequences(process, length); 
     43                        allPossibleSubSeqs = process.generateSequences(length); 
    4644                } 
    4745                return((double) containedSubSeqs.size())/allPossibleSubSeqs.size(); 
     
    5351                } 
    5452                if( allPossibleSubSeqs==null ) { 
    55                         allPossibleSubSeqs = generateSubSequences(process, length); 
     53                        allPossibleSubSeqs = process.generateSequences(length); 
    5654                } 
    5755                if( subSeqWeights==null ) { 
     
    5957                } 
    6058                double weight = 0.0; 
    61                 for( List<Event<?>> subSeq : containedSubSeqs ) { 
     59                for( List<? extends Event<?>> subSeq : containedSubSeqs ) { 
    6260                        weight += subSeqWeights.get(subSeq); 
    6361                } 
     
    6563        } 
    6664         
    67         private Map<List<Event<?>>, Double> generateWeights(IStochasticProcess process, Set<List<Event<?>>> sequences) { 
    68                 Map<List<Event<?>>, Double> subSeqWeights = new LinkedHashMap<List<Event<?>>, Double>(); 
     65        private Map<List<? extends Event<?>>, Double> generateWeights(IStochasticProcess process, Set<List<? extends Event<?>>> sequences) { 
     66                Map<List<? extends Event<?>>, Double> subSeqWeights = new LinkedHashMap<List<? extends Event<?>>, Double>(); 
    6967                double sum = 0.0; 
    70                 for( List<Event<?>> sequence : sequences ) { 
     68                for( List<? extends Event<?>> sequence : sequences ) { 
    7169                        double prob = 1.0; 
    7270                        List<Event<?>> context = new LinkedList<Event<?>>(); 
     
    7977                } 
    8078                if( sum<1.0 ) { 
    81                         for( Map.Entry<List<Event<?>>, Double> entry : subSeqWeights.entrySet() ) { 
     79                        for( Map.Entry<List<? extends Event<?>>, Double> entry : subSeqWeights.entrySet() ) { 
    8280                                entry.setValue(entry.getValue()/sum); 
    8381                        } 
     
    9088        } 
    9189         
    92         // O(symbols^length)     
    93         private Set<List<Event<?>>> generateSubSequences(IStochasticProcess process, int length) { 
    94                 Set<List<Event<?>>> subSequenceSet = new LinkedHashSet<List<Event<?>>>();; 
    95                 if( length<1 ) { 
    96                         throw new InvalidParameterException("Length of generated subsequences must be at least 1."); 
    97                 } 
    98                 if( length==1 ) { 
    99                         for( Event<?> event : process.getEvents() ) { 
    100                                 List<Event<?>> subSeq = new LinkedList<Event<?>>(); 
    101                                 subSeq.add(event); 
    102                                 subSequenceSet.add(subSeq); 
    103                         } 
    104                         return subSequenceSet; 
    105                 } 
    106                 Set<Event<?>> events = process.getEvents(); 
    107                 Set<List<Event<?>>> subSeqsShorter = generateSubSequences(process, length-1); 
    108                 for( Event<?> event : events ) { 
    109                         for( List<Event<?>> subSequence : subSeqsShorter ) { 
    110                                 Event<?> lastEvent = event; 
    111                                 if( process.getProbability(subSequence, lastEvent)>0.0 ) { 
    112                                         List<Event<?>> subSeq = new ArrayList<Event<?>>(subSequence); 
    113                                         subSeq.add(lastEvent); 
    114                                         subSequenceSet.add(subSeq); 
    115                                 } 
    116                         } 
    117                 } 
    118                 return subSequenceSet; 
    119         } 
    120  
    12190        // O(numSeq*lenSeq)      
    122         private Set<List<Event<?>>> containedSubSequences(List<List<Event<?>>> sequences, int length) { 
    123                 Set<List<Event<?>>> containedSubSeqs = new LinkedHashSet<List<Event<?>>>(); 
     91        private Set<List<? extends Event<?>>> containedSubSequences(List<List<? extends Event<?>>> sequences, int length) { 
     92                Set<List<? extends Event<?>>> containedSubSeqs = new LinkedHashSet<List<? extends Event<?>>>(); 
    12493                List<Event<?>> subSeq = new LinkedList<Event<?>>(); 
    12594                boolean minLengthReached = false; 
    126                 for( List<Event<?>> sequence : sequences ) { 
     95                for( List<? extends Event<?>> sequence : sequences ) { 
    12796                        for( Event<?> event : sequence ) { 
    12897                                subSeq.add(event); 
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/DeterministicFiniteAutomaton.java

    r92 r93  
    1919 
    2020        @Override 
    21         public double getProbability(List<Event<?>> context, Event<?> symbol) { 
     21        public double getProbability(List<? extends Event<?>> context, Event<?> symbol) { 
    2222                double result = 0.0d; 
    2323                 
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/HighOrderMarkovModel.java

    r86 r93  
    1919         
    2020        @Override 
    21         public double getProbability(List<Event<?>> context, Event<?> symbol) { 
     21        public double getProbability(List<? extends Event<?>> context, Event<?> symbol) { 
    2222                double result = 0.0d; 
    2323                 
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/IStochasticProcess.java

    r86 r93  
    99public interface IStochasticProcess extends Serializable { 
    1010         
    11         double getProbability(List<Event<?>> context, Event<?> symbol); 
     11        double getProbability(List<? extends Event<?>> context, Event<?> symbol); 
    1212 
    1313        public List<? extends Event<?>> randomSequence(); 
     14         
     15        public Set<List<? extends Event<?>>> generateSequences(int length); 
    1416         
    1517        public int getNumStates(); 
     
    1719        public String[] getStateStrings(); 
    1820         
    19         public Set<Event<?>> getEvents(); 
     21        public Set<? extends Event<?>> getEvents(); 
    2022 
    2123} 
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/PredictionByPartialMatch.java

    r86 r93  
    3434         
    3535        @Override 
    36         public double getProbability(List<Event<?>> context, Event<?> symbol) { 
     36        public double getProbability(List<? extends Event<?>> context, Event<?> symbol) { 
    3737                double result = 0.0d; 
    3838                double resultCurrentContex = 0.0d; 
  • trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java

    r86 r93  
    11package de.ugoe.cs.eventbench.models; 
    22 
     3import java.security.InvalidParameterException; 
     4import java.util.ArrayList; 
     5import java.util.LinkedHashSet; 
    36import java.util.LinkedList; 
    47import java.util.List; 
     
    104107        } 
    105108         
    106         public Set<Event<?>> getEvents() { 
     109        public Set<? extends Event<?>> getEvents() { 
    107110                return trie.getKnownSymbols(); 
     111        } 
     112         
     113        public Set<List<? extends Event<?>>> generateSequences(int length) { 
     114                Set<List<? extends Event<?>>> sequenceSet = new LinkedHashSet<List<? extends Event<?>>>();; 
     115                if( length<1 ) { 
     116                        throw new InvalidParameterException("Length of generated subsequences must be at least 1."); 
     117                } 
     118                if( length==1 ) { 
     119                        for( Event<?> event : getEvents() ) { 
     120                                List<Event<?>> subSeq = new LinkedList<Event<?>>(); 
     121                                subSeq.add(event); 
     122                                sequenceSet.add(subSeq); 
     123                        } 
     124                        return sequenceSet; 
     125                } 
     126                Set<? extends Event<?>> events = getEvents(); 
     127                Set<List<? extends Event<?>>> seqsShorter = generateSequences(length-1); 
     128                for( Event<?> event : events ) { 
     129                        for( List<? extends Event<?>> seqShorter : seqsShorter ) { 
     130                                Event<?> lastEvent = event; 
     131                                if( getProbability(seqShorter, lastEvent)>0.0 ) { 
     132                                        List<Event<?>> subSeq = new ArrayList<Event<?>>(seqShorter); 
     133                                        subSeq.add(lastEvent); 
     134                                        sequenceSet.add(subSeq); 
     135                                } 
     136                        } 
     137                } 
     138                return sequenceSet; 
    108139        } 
    109140 
Note: See TracChangeset for help on using the changeset viewer.