clear;
clf;
alpha=0.85;
n=6;
N =100;

gamma=0.01*N;
K=100;
I=[0:10:K];
pagerank = zeros(K,1)
trustrank = zeros(K,1)

H=[0 1 0 0 1 1;
    0 0 1 0 1 0; 
    0 0 0 1 0 0; 
    1 0 0 0 1 0; 
    0 1 0 0 0 0; 
    0 0 1 0 0 0];

H=H';
ColumnSum=sum(H,1);

for Tobeman=1:6
    
    for m=I       
        NormH=zeros(n+m);    
        for i= 1:n
            for j= 1:n
                if ColumnSum(j)>0
                    NormH(i,j)=H(i,j)/ColumnSum(j);
                end               
                if j==Tobeman NormH(i,j)=H(i,j)/(ColumnSum(j)+m);end                
            end    
        end
        %if(m~=0) NormH(1,6)=1/(1+ColumnSum(6));end
        for i= n+1:n+m
            NormH(i,Tobeman)=1/(ColumnSum(Tobeman)+m);
        end
        NormH(Tobeman,[n+1:n+m])=ones(1,m);     
        
        NormT=NormH;
        
        NormH=alpha*NormH+(1-alpha)/(n+m)*ones(n+m);
        
        
        x=ones(n+m,1);
        i=0;       
        while i< N 
            x=NormH*x; 
            i=i+1;       
        end
        disp(x(Tobeman)/(n+m));
        pagerank(m+1)= x(Tobeman);
        
        
        % TrustRank, Trustset={1}
        A=ones(1,n+m);
        if (Tobeman~=4)
            B=[zeros(3,n+m); A; zeros(n+m-4,n+m)];
        else
            B=[zeros(2,n+m); A; zeros(n+m-3,n+m)];
        end
        
        NormT=alpha*NormT+(1-alpha)*B;
        %sum(NormT)
        x=ones(n+m,1);
        i=0;
        while i< N 
            x=NormT*x; 
            i=i+1;       
        end
        %disp(x(Tobeman)/(n+m));    
        trustrank(m+1)= x(Tobeman);
        
        
        
        NormH=NormH - diag(sum(NormH,1));
        % for i=1:(n+m) 
        %     if i<n+1 && ColumnSum(i)>0  NormH(i,i)=-1; end
        %     if i>n NormH(i,i)=-1;end
        % end  
        
        EXPH{m+1}=zeros(n+m);
        EXPH{m+1}= (n+m)*(eye(n+m) + gamma/N*NormH)^N;  
        
    end %end m
    
    heatrank=zeros(n,m+1);
    for i=1:n
        for m=I
            heatrank(i,m+1)=EXPH{m+1}(Tobeman,i);      
        end
    end
    
    
    INDEX=Tobeman;
    
    
    for i=1:n
        switch i
            case {1}
                %figure(1);          
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'ro-'); hold on;                
                %break;
            case {2}
                %figure(2);
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'r+-'); hold on;
                %plot(I, pagerank(I+1), 'r+-'); 
                %break;
            case {3}
                %figure(3);
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'rx-'); hold on;
                %plot(I, pagerank(I+1), 'r*-');
                %break;
            case {4}
                %figure(4);
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'rs-'); hold on;
                %plot(I, pagerank(I+1), 'rs-'); 
                %break;
            case {5}
                %figure(5);
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'rd-'); hold on;
                %plot(I, pagerank(I+1), 'rd-'); 
                %break;
            case {6}
                %figure(6);
                subplot(2,3,INDEX);
                plot(I, heatrank(i,I+1), 'rv-'); hold on;
                %plot(I, pagerank(I+1), 'rv-');
                %break;
        end       
        %legend('',1); hold on; end
        %if j== 1 plot(I, heatrank(i,I), 'b-'); hold on; end
    end 
    plot(I, pagerank(I+1), 'b*:'); hold on;
    if (Tobeman~=4) plot(I, trustrank(I+1), 'kd:'); hold on;
    end
    
    if (Tobeman==4) plot(I, trustrank(I+1), 'kx:'); hold on;
    end

    
    if(Tobeman>3)
        xlabel('Number of Newly Added Nodes');
    end
    ylabel(strcat('Rank of the Manipulatd Node-', int2str(Tobeman)) );
    if(Tobeman==1)
        legend('DR-Trust 1', 'DR-Trust 2','DR-Trust 3','DR-Trust 4','DR-Trust 5','DR-Trust 6','PageRank','TR-Trust 4',1); 
    end
    
     if(Tobeman==4)
        legend('DR-Trust 1', 'DR-Trust 2','DR-Trust 3','DR-Trust 4','DR-Trust 5','DR-Trust 6','PageRank','TR-Trust 3',1); 
    end
    axis square;
    %AXIS([0 K 0 0.8]);
    
end
% gamma=0.1;
% EXPH =expm(gamma*NormH);

% for gamma=0:0.5:20
%     ExpH= expm(gamma*NormH);
%     %disp([1;0;0;0;0;0]'*ExpH')
% end 

