content: package aima.core.probability.temporal;
  
  import java.util.List;
  
  import aima.core.probability.CategoricalDistribution;
  import aima.core.probability.proposition.AssignmentProposition;
  
  /**
   * Artificial Intelligence A Modern Approach (3rd Edition): page 576.<br>
   * <br>
   * 
   * Generic interface for calling different implementations of the
   * forward-backward algorithm for smoothing: computing posterior probabilities
   * of a sequence of states given a sequence of observations.
   * 
   * 
   * @author Ciaran O'Reilly
   * 
   */
  public interface ForwardBackwardInference extends ForwardStepInference,
  		BackwardStepInference {
  
  	/**
  	 * The forward-backward algorithm for smoothing: computing posterior
  	 * probabilities of a sequence of states given a sequence of observations.
  	 * 
  	 * @param ev
  	 *            a vector of evidence values for steps 1,...,t
  	 * @param prior
  	 *            the prior distribution on the initial state,
  	 *            <b>P</b>(X<sub>0</sub>)
  	 * @return a vector of smoothed estimates for steps 1,...,t
  	 */
  	List<CategoricalDistribution> forwardBackward(
  			List<List<AssignmentProposition>> ev, CategoricalDistribution prior);
  }
  