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
matlab.zip_authority_删除点 网络_复杂网络 删除
版权申诉
170 浏览量
2022-09-21
19:26:38
上传
评论
收藏 854B ZIP 举报
四散
- 粉丝: 51
- 资源: 1万+