scale-free network -MATLAB ile

Başlatan snihal-a, 03 Temmuz 2014, 11:02:14

snihal-a

scale-free networkü MATLAB ile programlama yapmam istendi.. Programlama konusunda çok ileri değilim.   Biraz kendim biraz internetten bulup yapmaya çalıştım. Programda 2'lerin neden eklendiğini anlamadım. Ayrıca clustering coefficient, path length ve gammayıda bulmam lazım ama nasıl
*clustering coefficient      C=<k>/N
* path length                   L=ln(N)/ln(<k>)
* gamma                          P(k) ~ k-γ

Yaptığım program:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%scale-free network
%clc
N=100; % ağ boyutu
m_ilk_b_d_s=3;  % ilk baş. düğüm sayısı
adj=zeros(N,N);
for i= 1: m_ilk_b_d_s
adj( i, m_ilk_b_d_s-1) = 1; %adjacency matrix
adj( m_ilk_b_d_s-1, i) = 1; %adjacency matrix
end
k =zeros (N,1) ;
for i = 1:m_i_b_d_s
k( i ) = (sum(adj ( i , : ) )+sum(adj (: , i ) ) ) ; %degree(bağlantı sayısı)
end
while m_i_b_d_s < N
m_i_b_d_s = m_i_b_d_s + 1;
for i = 1:m_i_b_d_s − 1
P = k( i ) /sum(k) ;  %Preferential attachment (yeni düğümün var olan düğüme bağlanma olasılığı)
i f (rand (1,1) <  P
k( i ) = k( i ) + 2;        % bu ikiler niye eklendi?   
k(m) = k(m) + 2;
adj ( i ,m_i_b_d_s) = 1;
adj (m_i_b_d_s, i ) = 1;
end% i f
end;% for
end;% while m
return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

kimlenbu

Ödevini net olarak yazarsan cevap gelme ihtimali yükselir, kodlarını da kod bloğu içine alırsan tadından yenmez. Hatta muhtemelen ödev için verilen kağıtta koda dökülecek olan formüller de vardır, onları da eklersen kodlarına bakan kişi ne yapmaya çalıştığını anlar.

ben wiki'den baktım, kodlarından bir şey anlamadım.

http://en.wikipedia.org/wiki/Barab%C3%A1si%E2%80%93Albert_model