pub mod lattice;
pub mod solver;
pub use lattice::{HmmLattice, HmmLatticeBuilder, ViterbiLattice};
pub use solver::ViterbiSolver;
pub type StateId = usize;
pub type TimeStep = usize;
pub type LogProbability = f64;
#[derive(Debug, Clone, PartialEq)]
pub struct ViterbiPath {
pub states: Vec<StateId>,
pub log_probability: LogProbability,
}
impl ViterbiPath {
pub fn new(states: Vec<StateId>, log_probability: LogProbability) -> Self {
Self {
states,
log_probability,
}
}
pub fn probability(&self) -> f64 {
self.log_probability.exp()
}
}