package aima.core.probability.bayes; import java.util.List; import java.util.Map; import java.util.Set; import aima.core.probability.RandomVariable; /** * Artificial Intelligence A Modern Approach (3rd Edition): page 590.<br> * <br> * A <b>dynamic Bayesian network</b>, or <b>DBN</b>, is a Bayesian network that * represents a temporal probability model. In general, each slice of a DBN can * have any number of state variables <b>X</b><sub>t</sub< and evidence * variables <b>E</b><sub>t</sub>. For simplicity, we assume that the variables * and their links are exactly replicated from slice to slice and that the DBN * represents a first-order Markov process, so that each variable can have * parents only in its own slice or the immediately preceding slice. * * @author Ciaran O'Reilly * */ public interface DynamicBayesianNetwork extends BayesianNetwork { /** * * @return a Bayesian Network containing just the nodes representing the * prior distribution (layer 0) of the dynamic bayesian network. */ BayesianNetwork getPriorNetwork(); /** * * @return the set of state variables representing the prior distribution. */ Set<RandomVariable> getX_0(); /** * * @return the set of state variables representing the first posterior slice * of the DBN. This along with <b>X</b><sub>0</sub> should represent * the transition model <b>P</b>(<b>X</b><sub>1</sub> | * <b>X</b><sub>0</sub>). */ Set<RandomVariable> getX_1(); /** * * @return the X_1 variables in topological order. */ List<RandomVariable> getX_1_VariablesInTopologicalOrder(); /** * * @return a Map indicating equivalent variables between X<sub>0</sub> and * X<sub>1</sub>. */ Map<RandomVariable, RandomVariable> getX_0_to_X_1(); /** * * @return a Map indicating equivalent variables between X<sub>1</sub> and * X<sub>0</sub>. */ Map<RandomVariable, RandomVariable> getX_1_to_X_0(); /** * * @return the set of state variables representing the evidence variables * for the DBN. This along with <b>X</b><sub>1</sub> should * represent the sensor model <b>P</b>(<b>E</b><sub>1</sub> | * <b>X</b><sub>1</sub>). */ Set<RandomVariable> getE_1(); }