@@ -157,7 +157,7 @@ def add(self, node):
157
157
"""Add a node to the net. Its parents must already be in the
158
158
net, and node itself must not."""
159
159
assert node not in self .nodes
160
- assert every (lambda parent : parent in self .variables () , node .parents )
160
+ assert every (lambda parent : parent in self .vars , node .parents )
161
161
self .nodes .append (node )
162
162
self .vars .append (node .variable )
163
163
for parent in node .parents :
@@ -172,12 +172,6 @@ def variable_node(self, var):
172
172
return n
173
173
raise Exception ("No such variable: %s" % var )
174
174
175
- def variables (self ):
176
- """List all of the net's variables, parents before children.
177
- >>> burglary.variables()
178
- ['Burglary', 'Earthquake', 'Alarm', 'JohnCalls', 'MaryCalls']"""
179
- return [n .variable for n in self .nodes ]
180
-
181
175
def variable_values (self , var ):
182
176
"Return the domain of var."
183
177
return [True , False ]
@@ -270,9 +264,10 @@ def enumeration_ask(X, e, bn):
270
264
>>> enumeration_ask('Burglary', dict(JohnCalls=T, MaryCalls=T), burglary
271
265
... ).show_approx()
272
266
'False: 0.716, True: 0.284'"""
267
+ assert X not in e , "Query variable must be distinct from evidence"
273
268
Q = ProbDist (X )
274
269
for xi in bn .variable_values (X ):
275
- Q [xi ] = enumerate_all (bn .variables () , extend (e , X , xi ), bn )
270
+ Q [xi ] = enumerate_all (bn .vars , extend (e , X , xi ), bn )
276
271
return Q .normalize ()
277
272
278
273
def enumerate_all (vars , e , bn ):
@@ -398,7 +393,7 @@ def gibbs_ask(X, e, bn, N):
398
393
'False: 0.738, True: 0.262'
399
394
"""
400
395
counts = dict ((x , 0 ) for x in bn .variable_values (X )) # bold N in Fig. 14.16
401
- Z = [var for var in bn .variables () if var not in e ]
396
+ Z = [var for var in bn .vars if var not in e ]
402
397
state = dict (e ) # boldface x in Fig. 14.16
403
398
for Zi in Z :
404
399
state [Zi ] = choice (bn .variable_values (Zi ))
0 commit comments