public void GenerateTest()
{
// Example taken from http://en.wikipedia.org/wiki/Viterbi_algorithm
double[,] transition =
{
{ 0.7, 0.3 },
{ 0.4, 0.6 }
};
double[,] emission =
{
{ 0.1, 0.4, 0.5 },
{ 0.6, 0.3, 0.1 }
};
double[] initial =
{
0.6, 0.4
};
HiddenMarkovModel hmm = new HiddenMarkovModel(transition, emission, initial);
double logLikelihood;
int[] path;
int[] samples = hmm.Generate(10, out path, out logLikelihood);
double expected = hmm.Evaluate(samples, path);
Assert.AreEqual(expected, logLikelihood);
}