*
* @param seq The sequence of symbols being evaluated
* @return The most likely sequence of states to produce that sequence
*/
public State[] viterbiPath(ArrayList<String> seq) {
ViterbiCalculator vc = new ViterbiCalculator(taxo.obSeqWithBoundarySymbols(seq), this);
int[] stateSequence = vc.stateSequence();
State[] ms = new State[stateSequence.length];
for (int i = 0; i < stateSequence.length; i++) {
ms[i] = taxo.getState(stateSequence[i]);
}
return ms;