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 