public bool TryGetProbability(TKey KeyState, TInnerKey ValueState, out double?probability) { MarkovInnerChain <TInnerKey, TItem <TInnerKey> > outInnerChain = new MarkovInnerChain <TInnerKey, TItem <TInnerKey> >(); TItem <TInnerKey> outItem = new TItem <TInnerKey>(); if (Markov.TryGetValue(KeyState, out outInnerChain)) { if (outInnerChain.TryGetValue(ValueState, out outItem)) { probability = outItem.Probability; return(true); } probability = null; return(false); } probability = null; return(false); }
public bool TryGetStateAggragateProbabilities(TKey KeyState, out TItem <TInnerKey>[] probability) { MarkovInnerChain <TInnerKey, TItem <TInnerKey> > outInnerChain = new MarkovInnerChain <TInnerKey, TItem <TInnerKey> >(); List <TItem <TInnerKey> > items = new List <TItem <TInnerKey> >(); if (Markov.TryGetValue(KeyState, out outInnerChain)) { foreach (KeyValuePair <TInnerKey, TItem <TInnerKey> > w in outInnerChain) { items.Add(w.Value); } probability = items.ToArray <TItem <TInnerKey> >(); return(true); } probability = null; return(false); }
public void Add(TKey item, TInnerKey chainItem) { MarkovInnerChain <TInnerKey, TItem <TInnerKey> > newerWorditem; if (Markov.TryGetValue(item, out MarkovInnerChain <TInnerKey, TItem <TInnerKey> > newWorditem)) { TItem <TInnerKey> wordItem = new TItem <TInnerKey>(); newWorditem.PropertyChanged += NewWorditem_PropertyChanged1; if (newWorditem.TryGetValue(chainItem, out wordItem)) { wordItem.Count++; newWorditem.Total = newWorditem.Total + 1; newWorditem[chainItem] = wordItem; } else { TItem <TInnerKey> word = new TItem <TInnerKey> { Name = chainItem }; newWorditem.Total = newWorditem.Total + 1; newWorditem.Add(chainItem, word); } Markov[item] = newWorditem; } else { newerWorditem = new MarkovInnerChain <TInnerKey, TItem <TInnerKey> >(); newerWorditem.PropertyChanged += NewWorditem_PropertyChanged1; TItem <TInnerKey> newerwordItem = new TItem <TInnerKey> { Name = chainItem }; newerWorditem[chainItem] = newerwordItem; newerWorditem.Total = newerWorditem.Total + 1; Markov[item] = newerWorditem; } }