21 lines
		
	
	
		
			747 B
		
	
	
	
		
			Matlab
		
	
	
		
		
			
		
	
	
			21 lines
		
	
	
		
			747 B
		
	
	
	
		
			Matlab
		
	
	
| 
								 | 
							
								function R = shortcut(Ab, frontals, separators)
							 | 
						||
| 
								 | 
							
								%SHORTCUT This is a simple scalar-level function for computing a "shortcut"
							 | 
						||
| 
								 | 
							
								%of frontals conditioned on separators.  Note that the input matrix Ab is
							 | 
						||
| 
								 | 
							
								%assumed to have a RHS vector in its right-most column, thus this rightmost
							 | 
						||
| 
								 | 
							
								%column index should not be listed in either frontals or separators.  This
							 | 
						||
| 
								 | 
							
								%function computes p(frontals | separators), marginalizing out all other
							 | 
						||
| 
								 | 
							
								%variables (cooresponding to columns) in Ab.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% First marginalize out all others
							 | 
						||
| 
								 | 
							
								cols = 1:size(Ab,2)-1;
							 | 
						||
| 
								 | 
							
								toMarginalizeOut = setdiff(cols, [ frontals separators ]);
							 | 
						||
| 
								 | 
							
								[ cond marg ] = eliminate(Ab, toMarginalizeOut);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% Now eliminate the frontals to get the conditional
							 | 
						||
| 
								 | 
							
								[ cond marg ] = eliminate(marg, frontals);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = cond;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								end
							 | 
						||
| 
								 | 
							
								
							 |