Graph = untitled
%%
TempGraph=Graph;
NodesToRemovePerStep =1;
NumbersOfNodes = [48];
NumbersOfLinks = [61];
RemainingNodes = 1:NumberOfNodes;
while ~isempty(RemainingNodes)
NodeIndecesToRemove = unique(round(rand(NodesToRemovePerStep,1)*(numel(RemainingNodes)-1))+1);
NodesToRemove = RemainingNodes(NodeIndecesToRemove);
RemainingNodes = setdiff(RemainingNodes,NodesToRemove);
TempGraph = mexGraphNodeRemove(TempGraph,NodesToRemove);
NumbersOfNodes(end+1) = GraphCountNumberOfNodes(TempGraph);
NumbersOfLinks(end+1) = GraphCountNumberOfLinks(TempGraph);
if NumbersOfLinks(end)>0
Components = mexGraphConnectedComponents(TempGraph);
NumbersOfComponents(end+1) = numel(Components);
ComponentsSizes = sort(cellfun('length',Components),'descend');
if ~isempty(ComponentsSizes)
LargestClusterSizes(end+1) = ComponentsSizes(1);
else
LargestClusterSizes(end+1) = 0;
end
if numel(ComponentsSizes)>1
SecondLargestClusterSizes(end+1) = ComponentsSizes(2);
else
SecondLargestClusterSizes(end+1) = 0;
end
else
NumbersOfComponents(end+1) = 0;
LargestClusterSizes(end+1) = 0;
SecondLargestClusterSizes(end+1) = 0;
end
end
h1 = figure;
plot(NumbersOfNodes,'r');
hold on;
h2 = figure;
plot(NumbersOfLinks,'r');
hold on;
%% remove most connected nodes (with heighest outgoing degree):删除出度最大的节点
TempGraph=Graph;
NodesToRemovePerStep =1;
NumbersOfNodes = [48];
NumbersOfLinks = [61];
RemainingNodes = 1:NumberOfNodes;
while ~isempty(Graph)
[Outdegree SortOrder]=sort(Degree(:,1),'descend');
NodesToRemove = Degree(SortOrder(1:min([numel(SortOrder) NodesToRemovePerStep])));
NumbersOfNodes(end+1) = GraphCountNumberOfNodes(TempGraph);
NumbersOfLinks(end+1) = GraphCountNumberOfLinks(TempGraph);
if NumbersOfLinks(end)>0
Components = mexGraphConnectedComponents(TempGraph);
NumbersOfComponents(end+1) = numel(Components);
ComponentsSizes = sort(cellfun('length',Components),'descend');
if ~isempty(ComponentsSizes)
LargestClusterSizes(end+1) = ComponentsSizes(1);
else
LargestClusterSizes(end+1) = 0;
end
if numel(ComponentsSizes)>1
SecondLargestClusterSizes(end+1) = ComponentsSizes(2);
else
SecondLargestClusterSizes(end+1) = 0;
end
else
NumbersOfComponents(end+1) = 0;
LargestClusterSizes(end+1) = 0;
SecondLargestClusterSizes(end+1) = 0;
end
end
figure(h1)
plot(NumbersOfNodes,'g');
xlabel('Step');
ylabel('Number of Nodes');
legend({'Random','Targeted'});
figure(h2)
plot(NumbersOfLinks,'g');
xlabel('Step');
ylabel('Number of Links');
legend({'Random','Targeted'});
评论1