📄 score_add_to_cache.m.svn-base
字号:
function [cache, place] = score_add_to_cache(cache,j,ps,score,scoring_fn)% [cache place] = score_add_to_cache(cache,j,ps,score,scoring_fn)% % j is the son node,% ps is the list of parents of j, for example [12 5 7],% score is the score to add for this familly.% scoring_fn is 'bic' or 'bayesian'.%% place = where the entry was add.%% example for 2 nodes with cache of size 5 :%% cache =% 5 b 0 0 0 --> number of writing in cache +1 and b==1 iff the cache is full% 0 0 1 -239.12 1 --> 1st familly in the cache (node 1 without parents) calculate with bic% 0 0 2 -318.98 1% 1 0 2 -189.23 2 --> 3rd familly in the cache (node 2 with 1 as parent) calculate with bay閟ian% 0 1 1 -251.09 1% .ps2bool. j score 1or2 --> new entry% | | | | |% | | | | |___> 1 for 'bic' or 2 for 'bay閟ian'% | | | |__________> score of the familly% | | |_________________> son node of the familly% | |__________________________> ==1 iff node 2 is parent of son node% |______________________________> ==1 iff node 1 is parent of son node%% If the cache is FULL then the new place is RanDoMly choose.N=size(cache,2)-3;place=0;if ~isempty(find(ps==j)) disp('This is a cyclic entry, nothing was done.');elseif j>N | j<0 disp('This entry is not valid, nothing was done.');else switch scoring_fn case 'bic', fn=1; case 'bayesian', fn=2; otherwise, error(['unrecognized scoring fn ' scoring_fn]); end L=size(cache,1); if cache(1,2)==0 place=cache(1,1); else place=ceil(rand(1)*(L-1))+1; end cache(place,:)=0 cache(place,ps)=1; cache(place,N+1)=j; cache(place,N+2)=score; cache(place,N+3)=fn; cache(1,1)=place+1; if place==L | cache(1,2)~=0 cache(1,2)=1 endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -