I'm looking for the fastest way to find all neighbours of a vertex in an undirected Graph.  Please improve on the code if possible.neighbours[g_Graph, v_] := Module[  {vl = VertexList[g],   pos},  pos = Position[vl, v][[1, 1]];  Pick[VertexList[g], AdjacencyMatrix[g][[pos]], 1] ]I need it to work fast both for sparse and dense graphs.It is essential to the performance of this solution that it uses SparseArrays.This is a bottleneck in my application.  Since my graph is constantly changing, trying to precompute neighbours or using memoization will complicate things significantly.I'd like to stress that speed is essential here.  Here's a graph to test on:max = 4000;c = 0.3;tg = RandomGraph[{max, Round[c max^2]}];neighbours[tg, 1]; // Timing
Fastest way to find all neighbours of a vertex in a graph
graph;wolfram mathematica