function [ affinity ] = CalcAffinityByCommonNeighbors( data, actual_graph_size, num_missing_nodes ) %UNTITLED Summary of this function goes here % Detailed explanation goes here %since missing nodes are only connected to one node we will artificially %connect them to their only neighbor's neighbors, and keep the connection to %the neighbor itself. if nargin > 1 data = ConnectMissingNodesToNeighborsNeighbors(data, actual_graph_size, num_missing_nodes); end affinity = zeros(size(data,1), size(data,2)); for i = 1 : size(data,1) num_neighbors_i = sum(data(i,:)); for j = i : size(data,1) num_neighbors_j = sum(data(j,:)); num_common_neighbors = sum((data(i,:)) > 0 & (data(j,:) > 0)); if data(i,j) > 0 num_common_neighbors = num_common_neighbors + 2; %add one for each direction of the link end % num_common_neighbors = 0; % if data(i,j) == 1 % num_common_neighbors = 1; % end % for k = 1 : size(data,1) % if data(i,k) == 1 && data(j,k) == 1 % num_common_neighbors = num_common_neighbors + 1; % end % end %set the lowest affinity to epsilon %affinity(i,j) = max(max(num_common_neighbors / num_neighbors_i, num_common_neighbors / num_neighbors_j), eps); affinity(j,i) = affinity(i,j); end end end