wolffd@0: wolffd@0:

Example of more complex parameter tieing

wolffd@0: wolffd@0: We now give a more complex pattern of parameter tieing. wolffd@0: (This example is due to Rainer Deventer.) wolffd@0: The structure is as follows: wolffd@0:

wolffd@0: wolffd@0: wolffd@0:

wolffd@0: Since nodes 2 and 3 in slice 2 (N7 and N8) wolffd@0: have different parents than their counterparts in slice 1 (N2 and N3), wolffd@0: they must be put into different equivalence classes. wolffd@0: Hence we define wolffd@0:

wolffd@0: eclass1 = [1 2 3 4 5];
wolffd@0: eclass2 = [1 6 7 4 5];
wolffd@0: 
wolffd@0: The dotted bubbles represent the equivalence classes. wolffd@0: Node 7 is the representative node for equivalence class wolffd@0: 6, and node 8 is the rep. for class 7, so we need to write wolffd@0:
wolffd@0: bnet.CPD{6} = xxx_CPD(bnet, 7, xxx);
wolffd@0: bnet.CPD{7} = xxx_CPD(bnet, 8, xxx);
wolffd@0: 
wolffd@0: In general, you can use the following code fragment: wolffd@0:
wolffd@0: eclass = bnet.equiv_class(:);
wolffd@0: for e=1:max(eclass)
wolffd@0:   i = bnet.rep_of_eclass(e);
wolffd@0:   bnet.CPD{e} = xxx_CPD(bnet,i);
wolffd@0: end
wolffd@0: 
wolffd@0: