One hop nearest neighbor in a graph
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
aasha verghese
am 27 Jun. 2022
Beantwortet: Steven Lord
am 27 Jun. 2022
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 Kommentare
Akzeptierte Antwort
Chunru
am 27 Jun. 2022
% 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 Kommentare
Weitere Antworten (1)
Steven Lord
am 27 Jun. 2022
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 Kommentare
Siehe auch
Kategorien
Mehr zu Directed Graphs finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!