feat: complete q3
This commit is contained in:
parent
a7d3d8a969
commit
c57e6e4626
@ -107,7 +107,6 @@ def joinFactors(factors: List[Factor]):
|
||||
|
||||
|
||||
for factor in factors:
|
||||
print(factor)
|
||||
'''
|
||||
print(factor.unconditionedVariables())
|
||||
print(factor.conditionedVariables())
|
||||
@ -186,7 +185,30 @@ def eliminateWithCallTracking(callTrackingList=None):
|
||||
"unconditionedVariables: " + str(factor.unconditionedVariables()))
|
||||
|
||||
"*** YOUR CODE HERE ***"
|
||||
raiseNotDefined()
|
||||
conditioned_variables = set(factor.conditionedVariables())
|
||||
unconditioned_variables = set(factor.unconditionedVariables())
|
||||
|
||||
# remove the elimination_variable from unconditioned variables
|
||||
unconditioned_variables.remove(eliminationVariable)
|
||||
|
||||
# new variable_domains_dict, removing the elimination variable
|
||||
variable_domains_dict = {}
|
||||
for variable, domains in factor.variableDomainsDict().items():
|
||||
if variable != eliminationVariable:
|
||||
variable_domains_dict[variable] = domains
|
||||
|
||||
new_factor = Factor(unconditioned_variables, conditioned_variables, variable_domains_dict)
|
||||
|
||||
for fill_assignment in new_factor.getAllPossibleAssignmentDicts():
|
||||
prob = 0
|
||||
eliminate_variable_domains = factor.variableDomainsDict()[eliminationVariable]
|
||||
for var in eliminate_variable_domains:
|
||||
old_assignment = fill_assignment.copy()
|
||||
old_assignment[eliminationVariable] = var
|
||||
prob += factor.getProbability(old_assignment)
|
||||
new_factor.setProbability(fill_assignment, prob)
|
||||
return new_factor
|
||||
|
||||
"*** END YOUR CODE HERE ***"
|
||||
|
||||
return eliminate
|
||||
|
||||
Loading…
Reference in New Issue
Block a user