コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
            }
        }