traking q4

This commit is contained in:
2024-07-03 15:46:29 +00:00
parent 02eabecef9
commit 38061036e4

View File

@ -188,7 +188,32 @@ def inferenceByVariableEliminationWithCallTracking(callTrackingList=None):
eliminationOrder = sorted(list(eliminationVariables))
"*** YOUR CODE HERE ***"
raiseNotDefined()
# print("bn=",bayesNet)
# print("queryVariables=",queryVariables)
# print("evidenceDict=",evidenceDict)
# print("eliminationOrder=",eliminationOrder)
# Initialize current factors list with evidence
currentFactorsList = bayesNet.getAllCPTsWithEvidence(evidenceDict)
# print("currentFactorsList=",currentFactorsList)
# Iteratively join and eliminate variables in the elimination order
for variable in eliminationOrder:
# Join all factors containing the variable, thus making the variable "disappear" in the right part of the factor
currentFactorsList, joinedFactor = joinFactorsByVariable(currentFactorsList, variable)
# Only eliminate if there are more than one unconditioned variable, thus making the variable "disappear" in the left part of the factor
if len(joinedFactor.unconditionedVariables()) > 1:
eliminatedFactor = eliminate(joinedFactor, variable)
currentFactorsList.append(eliminatedFactor)
# Join all remaining factors
finalFactor = joinFactors(currentFactorsList)
# Normalize to get the true conditional probability
normalizedFactor = normalize(finalFactor)
# print("normalizedFactor=",normalizedFactor)
return normalizedFactor
"*** END YOUR CODE HERE ***"