aima.core.probability.bayes.impl.FullCPTNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aima-core Show documentation
Show all versions of aima-core Show documentation
AIMA-Java Core Algorithms from the book Artificial Intelligence a Modern Approach 3rd Ed.
The newest version!
package aima.core.probability.bayes.impl;
import aima.core.probability.RandomVariable;
import aima.core.probability.bayes.ConditionalProbabilityDistribution;
import aima.core.probability.bayes.ConditionalProbabilityTable;
import aima.core.probability.bayes.FiniteNode;
import aima.core.probability.bayes.Node;
/**
* Default implementation of the FiniteNode interface that uses a fully
* specified Conditional Probability Table to represent the Node's conditional
* distribution.
*
* @author Ciaran O'Reilly
*
*/
public class FullCPTNode extends AbstractNode implements FiniteNode {
private ConditionalProbabilityTable cpt = null;
public FullCPTNode(RandomVariable var, double[] distribution) {
this(var, distribution, (Node[]) null);
}
public FullCPTNode(RandomVariable var, double[] values, Node... parents) {
super(var, parents);
RandomVariable[] conditionedOn = new RandomVariable[getParents().size()];
int i = 0;
for (Node p : getParents()) {
conditionedOn[i++] = p.getRandomVariable();
}
cpt = new CPT(var, values, conditionedOn);
}
//
// START-Node
@Override
public ConditionalProbabilityDistribution getCPD() {
return getCPT();
}
// END-Node
//
//
// START-FiniteNode
@Override
public ConditionalProbabilityTable getCPT() {
return cpt;
}
// END-FiniteNode
//
}