package aima.core.probability.bayes; import java.util.Set; import aima.core.probability.RandomVariable; /** * Artificial Intelligence A Modern Approach (3rd Edition): page 511.<br> * <br> * A node is annotated with quantitative probability information. Each node * corresponds to a random variable, which may be discrete or continuous. If * there is an arrow from node X to node Y in a Bayesian Network, X is said to * be a parent of Y and Y is a child of X. Each node X<sub>i</sub> has a * conditional probability distribution P(X<sub>i</sub> | * Parents(X<sub>i</sub>)) that quantifies the effect of the parents on the * node. <br> * * @author Ciaran O'Reilly */ public interface Node { /** * * @return the Random Variable this Node is for/on. */ RandomVariable getRandomVariable(); /** * * @return true if this Node has no parents. * * @see Node#getParents() */ boolean isRoot(); /** * * @return the parent Nodes for this Node. */ Set<Node> getParents(); /** * * @return the children Nodes for this Node. */ Set<Node> getChildren(); /** * Get this Node's Markov Blanket:<br> * 'A node is conditionally independent of all other nodes in the network, * given its parents, children, and children's parents - that is, given its * <b>MARKOV BLANKET</b> (AIMA3e pg, 517). * * @return this Node's Markov Blanket. */ Set<Node> getMarkovBlanket(); /** * * @return the Conditional Probability Distribution associated with this * Node. */ ConditionalProbabilityDistribution getCPD(); }