Трансляция информации в сети с использованием Matlab - PullRequest
0 голосов
/ 16 октября 2018

У меня сложная сеть (график), я хочу произвольно выбрать один узел и позволить узлу транслировать информацию через сеть на основе среднего расстояния в сети.Может кто-нибудь, пожалуйста, помогите мне реализовать это в Matlab .... Я не знаю, как это реализовать.Набор данных графика (Power Grid) можно загрузить с http://www -personal.umich.edu / ~ mejn / netdata / .Ниже приведены мои коды для чтения и построения графика.

%Extracting edges from gml file graph
fileName = 'power.gml';
inputfile = fopen(fileName);
Edges=[];
l=0;
k=1;
while 1
      % Get a line from the input file
      tline = fgetl(inputfile);
      % Quit if end of file
      if ~ischar(tline)
          break
      end
      nums = regexp(tline,'\d+','match');
      if length(nums)
          if l==1
              l=3;
              Edges(k,2)=str2num(nums{1});  
              k=k+1;
              continue;
          end
          Edges(k,1)=str2num(nums{1});
          l=1;
      else
          l=0;
          continue;
      end 
end



Edges = Edges+1;
NewEdge = Edges;
%Edges(:,1:2) = sort(Edges(:,1:2)); 
Edges = unique(Edges(:,1:2),'rows','stable');
G = graph(Edges(:,1), Edges(:,2));      % create a graph from A
deg = degree(G);
figure                                  % visualize the graph
plot(G);
title('Power Grid, Before Movement')
NewEdge = NewEdge(randperm(size(NewEdge,1)),:);  % <-- Optional --

nodesize = numnodes(G);
size = nodesize;
not = [];
x = [];
for c = 1:size
[P,d] = shortestpath(G,c,nodesize);
if d == Inf
    not = [not, d];
else
x = [x, d];
end
end

LongestShortestPath = max(x)
disp('Before Change');
AverageDistance = mean(x)
AverageDegree = mean(deg)
...