One hop nearest neighbor in a graph
4 次查看(过去 30 天)
显示 更早的评论
Hi,
nodeIDs = nearest( G , s , d ) returns all nodes in graph G that are within distance d from node s. But how do we find out one hop away neighbors (just closest nodes only) within a distance, in a graph? I mean the nearest neighbour of a vertex in a graph within a distance must be connected through an edge. (only one edge)
thanks!
0 个评论
采纳的回答
Chunru
2022-6-27
% Example graph
s = [1 1 1 1 1 2 2 2 3 3 3 3 3];
t = [2 4 5 6 7 3 8 9 10 11 12 13 14];
weights = randi([1 10],1,13);
G = graph(s,t,weights);
p = plot(G,'Layout','force','EdgeLabel',G.Edges.Weight);
% All edges from node 1
eid = outedges(G, 1)
% info for edges from the node
e = G.Edges(eid, :)
% min distance
[~, idx] = min(e.Weight)
e(idx, :)
min_node = e(idx, 1).EndNodes(2)
min_dist = e.Weight(idx, 1)
0 个评论
更多回答(1 个)
Steven Lord
2022-6-27
Find the neighbors of the node in the undirected graph then compute the distances between the specified node and its neighbors. Let's take an example: the buckyball graph.
b = bucky;
Update the adjacency matrix with some random weights and make it symmetric.
b = b.*randi(10, size(b));
b = (b + b.')/2;
Make the graph.
g = graph(b);
Find the neighbors of node 42.
n = neighbors(g, 42)
Find the distances from node 42 to the neighbor nodes.
d = distances(g, 42, n)
Check with the original sparse matrix.
b(n, 42)
If you later want to use a directed graph you may need to use successors or predecessors instead of neighbors.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!