static IObservable<IDictionary<S, Tuple<P, S>>> ViterbiRx<O…

Twetch ·

static IObservable<IDictionary<S, Tuple<P, S>>> ViterbiRx<O, S, P>
(IObservable<Tuple<O, IEnumerable<S>>> obsStates, Func<S, P> startingProb, Func<S, S, P> transitionProb, Func<S, O, P> emissionProb, Func<P, P, P> mul) {

Replies

Twetch ·

Tuple.Create(mul(mul(source.Value.Item1, transitionProb(source.Key, target)), emissionProb(target, o.Item1)), source.Key)).Max()));}

Twetch ·

return obsStates.Scan((IDictionary<S, Tuple<P, S>>)null, (v, o) => o.Item2.ToDictionary(target => target, target => v == null ? Tuple.Create(mul(startingProb(target), emissionProb(target, o.Item1)), target) : v.Select(source =>