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