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!