?? random_walk.m
字號:
clear all;
r(001,002)=1;
r(002,003)=1;
r(3,5)=4;
r(5,7)=1;
r(3,4)=1;
r(4,6)=2;
r=0-r
g=1./r
%g_temp=g<Inf;
%g=g.*g_temp+1;
%g=sparse(g)
m(1)=1;
m(7)=1;
m(6)=1;
flag = (m~=0);
ii=[0,0.1,0.05, 0.3, 0.05, 0,0]
[size_r, size_c]=size(r)
for k=1:max(size_r,size_c)
sum_g(k) = 0;
for pp=1:size_r
for q=1:size_c
if(((pp==k) || (q==k)) &&( g(pp,q) ~= Inf))
sum_g(k) = sum_g(k) + g(pp,q);
end
end
end
m(k)=ii(k)/sum_g(k);
end
m(1)=1;
m(7)=1;
m(6)=1;
for k=1:max(size_r,size_c)
for pp=1:size_r
for q=1:size_c
if(((pp==k) || (q==k)) &&( g(pp,q) ~= Inf))
if(pp==k) kk=q;
else kk=pp;
end
p(k,kk) = g(pp,q)/sum_g(k);
end
end
end
end
p=sparse(p)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
node = 4;
WALK_TIME = 100;
COUNT_TIME = 100;
ff = 0;
f(node)=m(node);
for count = 1:COUNT_TIME
next_node = node;
ff = f(node)+ff;
f(node)=m(node);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% walk till the end or
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% time up
for w_time = 1:WALK_TIME
%%%%%%%%%%%%%%%%%%%%
p_rand = rand;
p_temp = 0;
for pp=1:max(size_c,size_r)
if( p(next_node,pp) > 0 )
p_temp = p_temp + p(next_node,pp);
if(( p_rand < p_temp ) || ( p_temp==1))
next_node = pp %%%%%%%%%% search every node, find next node
break;
end
end
end
%%%%%%%%%%%%%%%%%%%
f(node)= f(node) + m(next_node)
if(flag(next_node)==1)
break;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% walk ends
end
fff(node) = ff/count
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -