double backtracking(uvec & sequence) { sequence.set_size(observations.n_cols); uword index; double best_likelihood = v.max(index); // cout << index << endl; sequence[backtrack.n_cols - 1] = index; for (int t = backtrack.n_cols - 2; t >= 0; t--) { // cout << "t=" << t << endl; // seq.print(); // cout << "bt[t]=" << backtrack.unsafe_col(t)(seq[t + 1]) << endl; // cout << seq[t + 1] << endl; // cout << backtrack.col(t); // ivec r = backtrack.col(t); // seq[t] = r(seq[t + 1]); sequence[t] = backtrack.unsafe_col(t + 1)(sequence[t + 1]); } return best_likelihood; }