/** * Viterbi decoding from observation likelihoods. * * @param {ArrayLike>} prob - P[obs(t) | state=s], indexed * [state][frame]; non-negative. * @param {ArrayLike>} transition - Row-stochastic transition * matrix [n_states x n_states]. * @param {ArrayLike|null} [p_init=null] - Initial state distribution; * uniform when null. * @param {boolean} [return_logp=false] - Also return the log-probability of the * decoded path. * @returns {number[]|{states: number[], logp: number}} */ export function viterbi(prob: ArrayLike>, transition: ArrayLike>, p_init?: ArrayLike | null, return_logp?: boolean): number[] | { states: number[]; logp: number; }; /** * Viterbi decoding from discriminative (mutually exclusive) state posteriors. * * Observation likelihood ∝ P(state | obs) / P(state); computed in * log space as `log(prob) - log(p_state)`. This function forms the ratio and * defers the log/decoding to `viterbi`. * * @param {ArrayLike>} prob - P[state=s | obs(t)], indexed * [state][frame]; each frame (column) should sum to 1. * @param {ArrayLike>} transition - Row-stochastic transition * matrix [n_states x n_states]. * @param {ArrayLike|null} [p_state=null] - Marginal state distribution; * uniform when null. * @param {ArrayLike|null} [p_init=null] - Initial state distribution; * uniform when null. * @param {boolean} [return_logp=false] - Also return the (unnormalized) * log-probability of the decoded path. * @returns {number[]|{states: number[], logp: number}} */ export function viterbi_discriminative(prob: ArrayLike>, transition: ArrayLike>, p_state?: ArrayLike | null, p_init?: ArrayLike | null, return_logp?: boolean): number[] | { states: number[]; logp: number; };