public void ComputeTest()
{
HiddenMarkovModel hmm = DiscreteHiddenMarkovModelFunctionTest.CreateModel2();
int states = hmm.States;
var function = new MarkovDiscreteFunction(hmm);
var target = new ConditionalRandomField<int>(states, function);
double p1, p2;
int[] observations, expected, actual;
observations = new int[] { 0, 0, 1, 1, 1, 2 };
expected = hmm.Decode(observations, out p1);
actual = target.Compute(observations, out p2);
Assert.IsTrue(expected.IsEqual(actual));
Assert.AreEqual(p1, p2, 1e-6);
observations = new int[] { 0, 1, 2, 2, 2 };
expected = hmm.Decode(observations, out p1);
actual = target.Compute(observations, out p2);
Assert.IsTrue(expected.IsEqual(actual));
Assert.AreEqual(p1, p2, 1e-6);
}