⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deleted_selected_node.m

📁 复杂网络
💻 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -