public class EnumerationAsk extends java.lang.Object implements BayesInference
function ENUMERATION-ASK(X, e, bn) returns a distribution over X inputs: X, the query variable e, observed values for variables E bn, a Bayes net with variables {X} ∪ E ∪ Y /* Y = hidden variables // Q(X) <- a distribution over X, initially empty for each value xi of X do Q(xi) <- ENUMERATE-ALL(bn.VARS, exi) where exi is e extended with X = xi return NORMALIZE(Q(X)) --------------------------------------------------------------------------------------------------- function ENUMERATE-ALL(vars, e) returns a real number if EMPTY?(vars) then return 1.0 Y <- FIRST(vars) if Y has value y in e then return P(y | parents(Y)) * ENUMERATE-ALL(REST(vars), e) else return ∑y P(y | parents(Y)) * ENUMERATE-ALL(REST(vars), ey) where ey is e extended with Y = yFigure 14.9 The enumeration algorithm for answering queries on Bayesian networks.
Modifier and Type | Class and Description |
---|---|
protected class |
EnumerationAsk.ObservedEvidence |
Constructor and Description |
---|
EnumerationAsk() |
Modifier and Type | Method and Description |
---|---|
CategoricalDistribution |
ask(RandomVariable[] X,
AssignmentProposition[] observedEvidence,
BayesianNetwork bn) |
protected double |
enumerateAll(java.util.List<RandomVariable> vars,
EnumerationAsk.ObservedEvidence e) |
CategoricalDistribution |
enumerationAsk(RandomVariable[] X,
AssignmentProposition[] observedEvidence,
BayesianNetwork bn)
The ENUMERATION-ASK algorithm in Figure 14.9 evaluates expression trees
(Figure 14.8) using depth-first recursion.
|
public CategoricalDistribution enumerationAsk(RandomVariable[] X, AssignmentProposition[] observedEvidence, BayesianNetwork bn)
X
- the query variables.observedEvidence
- observed values for variables E.bn
- a Bayes net with variables {X} ∪ E ∪ Y /* Y = hidden
variables //public CategoricalDistribution ask(RandomVariable[] X, AssignmentProposition[] observedEvidence, BayesianNetwork bn)
ask
in interface BayesInference
X
- the query variables.observedEvidence
- observed values for variables E.bn
- a Bayes net with variables {X} ∪ E ∪ Y /* Y = hidden
variablesprotected double enumerateAll(java.util.List<RandomVariable> vars, EnumerationAsk.ObservedEvidence e)