# Get the neighboring vertices and incident edges from a vertex in a graph

I need to get the neighboring vertices and incident edges from a vertex in a graph. I assume NeighborhoodVertices (from the GraphUtilities package) can be used for the former. Anything better?

Or given something like {1 \[UndirectedEdge] 2, 2 \[UndirectedEdge] 3, 3 \[UndirectedEdge] 1}, how to directly get these information? Can I do list matching to some pattern?

A random graph

 g = RandomGraph[{15, 35}, VertexLabels -> "Name", PlotRangePadding -> .2] Edges for the vertex 4:

 EdgeList[g, 4 \[UndirectedEdge] _]


Result: Now vertexes around vertex4:

 VertexList[NeighborhoodGraph[g, 4]]


Result:

 {4, 14, 11, 6, 7, 9, 13, 15}


Illustration:

  HighlightGraph[g, NeighborhoodGraph[g, 4]] There are many other ways. You could also use AdjacencyMatrix to get all that info.

• yes, NeighborhoodVertices[g, 4, 1] can also get the same list with shorter typing. :) – Qiang Li Feb 17 '12 at 22:41
• @QiangLi Only if you use GraphUtilities package - which I do not. ;-) I use built in Graph functionality. – Vitaliy Kaurov Feb 17 '12 at 22:47
• True. :) +1 Thank you. – Qiang Li Feb 17 '12 at 22:55
SeedRandom
g = RandomGraph[{15, 35}, VertexLabels -> "Name",  PlotRangePadding  -> .2];


Neighboring edges can also be obtained using IncidenceList:

IncidenceList[g, 4]


{2 <-> 4, 4 <-> 9, 4 <-> 10, 4 <-> 13, 4 <-> 14}

Neighboring vertices can be obtained using VertexList or VertexComponent on the output of IncidenceList

neighborhoodVerticesAndEdges = {VertexList@#, #} &@IncidenceList[g, 4]


{{2, 4, 9, 10, 13, 14}, {2 <-> 4, 4 <-> 9, 4 <-> 10, 4 <-> 13, 4 <-> 14}}

{Sort@VertexComponent[#, 4], #} &@IncidenceList[g, 4] == neighborhoodVerticesAndEdges


True

or using AdjacencyList:

{Union[AdjacencyList@##, {#2}], IncidenceList@##} &[g, 4]  == neighborhoodVerticesAndEdges


True

Row[{g, HighlightGraph[g, Join @@ neighborhoodVerticesAndEdges]}] 