aima.core.probability.FiniteProbabilityModel 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.
package aima.core.probability;
import aima.core.probability.proposition.Proposition;
/**
* Artificial Intelligence A Modern Approach (3rd Edition): page 484.
*
* A probability model on a discrete, countable set of worlds. The proper
* treatment of the continuous case brings in certain complications that are
* less relevant for most purposes in AI.
*
* @author Ciaran O'Reilly
*/
public interface FiniteProbabilityModel extends ProbabilityModel {
/**
* P(X,...)
*
* @param phi
* the propositions of interest.
* @return all the possible values of the propositions φ. This is a
* Vector of numbers, where we assume a predefined ordering of the
* domain of the relevant random variables.
*/
CategoricalDistribution priorDistribution(Proposition... phi);
/**
* Get a conditional distribution. Example:
*
* P(X | Y) gives the values of P(X = xi | Y =
* yj) for each possible i, j pair.
*
* @param phi
* the proposition for which a probability distribution is to be
* returned.
* @param evidence
* information we already have.
* @return the conditional distribution for P(φ | evidence).
*/
CategoricalDistribution posteriorDistribution(Proposition phi,
Proposition... evidence);
/**
* Get a distribution on multiple variables. Example, the product rule:
*
* P(X, Y) gives the values of P(X = xi | Y =
* yj)P(Y = yj) for each possible i, j pair.
*
* @param propositions
* the propositions for which a joint probability distribution is
* to be returned.
* @return the joint distribution for P(X, Y, ...).
*/
CategoricalDistribution jointDistribution(Proposition... propositions);
}