public void DecodeTest2()
{
double[,] transitions =
{
{ 0.7, 0.3 },
{ 0.4, 0.6 }
};
double[,] emissions =
{
{ 0.1, 0.4, 0.5 },
{ 0.6, 0.3, 0.1 }
};
double[] initial =
{
0.6, 0.4
};
var hmm = new HiddenMarkovModel<GeneralDiscreteDistribution, double>(transitions, GeneralDiscreteDistribution.FromMatrix(emissions), initial);
double logLikelihood;
double[] sequence = new double[] { 0, 1, 2 };
int[] path = hmm.Decode(sequence, out logLikelihood);
double expected = Math.Log(0.01344);
Assert.AreEqual(logLikelihood, expected, 1e-10);
Assert.AreEqual(path[0], 1);
Assert.AreEqual(path[1], 0);
Assert.AreEqual(path[2], 0);
}