www.pudn.com > deleted_selected_node.rar > deleted_selected_node.m


function [Nodes_Selected,Saving_list,Deleted_list]=deleted_selected_node(Original_Nodes,num,Select_List,select_ID,Shrink_Original_flag) 
%deleting num nodes from Original_Nodes according to Select_List 
%if select_ID=1, delete num maximum nodes according to Select_List 
%if select_ID=2, delete num minimum nodes according to Select_List 
% 
%Input:Original_Nodes -- N*N adjacent matrix 
%      num -- deleted node num 
%      Selected_list -- N*1 vector, saving deleting information, such as 
%                       degree/BC per node 
%      select_ID -- if select_ID=1, delete num maximum nodes,  
%                   else if select_ID=2, delete num minimum nodes. 
%      Shrink_Original_flag -- Shrink_Original_flag==1,Shrink_Nodes;  
%                              else if Shrink_Original_flag==2,Original_Nodes 
%Output:Nodes_Selected -- if Shrink_Original_flag==1, (N-num)*(N-num) 
%                         adjacent matrix, elseif Shrink_Original_flag==2,  
%                         N*N adjacent matrix. 
%       Saving_list -- N-num list for Shrink_Original_flag=1 or N list for 
%                       Shrink_Original_flag=2.Saving_list(i) saving 
%                       information,such as degree/BC per saved node. 
%       Deleted_list -- num*1 list, Deleted_list(i) saving deleted node ID. 
%                       
 
[N,N]=size(Original_Nodes); 
 
%sort 
[Ascend_Sort_Value,Ascend_Sort_ID]=sort(Select_List); 
 
%get deleted node ID 
Deleted_Node_ID=ones(N,1); 
Deleted_list=zeros(num,1); 
 
for i=1:num 
    if select_ID==1%delete max ID 
        Deleted_Node_ID( Ascend_Sort_ID(N-i+1) )=0; 
        Deleted_list(i)=Ascend_Sort_ID(N-i+1); 
    elseif select_ID==2%delete min ID 
        Deleted_Node_ID( Ascend_Sort_ID(i) )=0; 
        Deleted_list(i)=Ascend_Sort_ID(i); 
    end 
end 
 
Shrink_node_ID=find(Deleted_Node_ID==1); 
 
if Shrink_Original_flag==1 
    Shrink_N=N-num; 
    Nodes_Selected=sparse(Shrink_N,Shrink_N); 
    Saving_list=zeros(Shrink_N,1); 
 
    for i=1:Shrink_N 
        for j=1:Shrink_N 
            if Original_Nodes(Shrink_node_ID(i),Shrink_node_ID(j))>0 
                Nodes_Selected(i,j)=Original_Nodes(Shrink_node_ID(i),Shrink_node_ID(j)); 
            end 
        end 
        Saving_list(i)=Select_List( Shrink_node_ID(i) );        
    end 
elseif Shrink_Original_flag==2%add Shrink_Original_flag on 06/02/07 
    Shrink_N=N-num; 
    Nodes_Selected=Original_Nodes; 
    Deleted_node_ID=find(Deleted_Node_ID==0); 
    Saving_list=Select_List; 
    for i=1:num 
        Nodes_Selected(Deleted_node_ID(i),:)=0; 
        Nodes_Selected(:,Deleted_node_ID(i))=0;  
        Saving_list(Deleted_node_ID(i))=0; 
    end 
end 
 
return