construct a nearest neighbor or k-nearest neighbor graph
construct a farthest neighbor or k-farthest neighbor graph
NearestNeighborGraph( P, opts )
NearestNeighborGraph( P, k, opts )
FarthestNeighborGraph( P, opts )
FarthestNeighborGraph( P, k, opts )
Matrix or list of lists representing set of points
(optional) one or more options as specified below
directed : truefalse
Specifies whether the resulting graph should be directed or undirected. If directed, an arc exists from a to b if b is among the k nearest or furthest neighbors, depending on which routine was called. If undirected, an edge exists between a to b whenever an arc would exist in either direction in the directed case. The default is false.
norm : positive real or one of Euclidean or infinity.
Specifies the norm to be used in computing distances. The default is 2, the Euclidean norm.
For more information on norms, see LinearAlgebra[Norm].
vertices : list of integers, strings or symbols
Specifies the vertices to be used in the generated graph.
weighted : true or false
If weighted=true, the result is a weighted graph whose edge weights correspond to the distance between points using the specified norm. Default is false.
The NearestNeighborGraph(P,opts) command returns a nearest neighbor graph for the point set P.
The NearestNeighborGraph(P,k,opts) command returns a k-nearest neighbor graph for the point set P.
The FarthestNeighborGraph(P,opts) command returns a farthest neighbor graph for the point set P.
The FarthestNeighborGraph(P,k,opts) command returns a k-farthest neighbor graph for the point set P.
The parameter P must be a Matrix or list of lists representing a set of points.
Let P be a set of points in an arbitrary number of dimensions and p be a norm.
The directed nearest neighbor graph is the graph in which an arc exists from a to b if b is the nearest point to a in P according to norm p.
The directed k-nearest neighbor graph is the directed graph in which an arc exists from a to b if b is among the k nearest to a in P according to norm p.
The undirected nearest neighbor graph and nearest neighbor graphs are obtained from their directed equivalents by simply converting all arcs to undirected edges.
The farthest and k-farthest neighbor graphs are defined similarly by replacing "nearest" with "farthest" in the definition.
The nearest neighbor graph is not guaranteed to be connected.
The (undirected) nearest neighbor graph has the following relationships with other graphs:
The nearest neighbor graph is a subgraph of the Gabriel graph.
The nearest neighbor graph is a subgraph of the sphere of influence graph.
Generate a set of random two-dimensional points and draw a nearest neighbor graph and a 2-nearest neighbor graph.
points≔9.8501769734180382.975030438619586.067018374966383.318865936399664.374679554674173.867160763967357.36705572946662.3439977588303123.623426484493352.687336738732847.002754735000322.245948836755274.921349155896362.047182022071892.151343470907396.310726263708048.231962435594463.756326714414190.944187743180533.8527464913022⋮⋮60 × 2 Matrix
NNG≔Graph 1: an undirected unweighted graph with 60 vertices and 42 edge(s)
Generate a directed k nearest neighbor graph for k=3 on the same data.
kNNG≔Graph 2: a directed unweighted graph with 60 vertices and 180 arc(s)
Draw the farthest neighbor graph on the same data.
FNG≔Graph 3: an undirected unweighted graph with 60 vertices and 58 edge(s)
The GraphTheory[GeometricGraphs][NearestNeighborGraph] and GraphTheory[GeometricGraphs][FarthestNeighborGraph] commands were introduced in Maple 2020.
For more information on Maple 2020 changes, see Updates in Maple 2020.
Download Help Document
What kind of issue would you like to report? (Optional)