# Erlang Thursday – digraph:in_neighbors/2

Today’s Erlang Thursday is on digraph:in_neighbors/2.

`digraph:in_neighbors/2` takes a graph `G`, and a vertex `V`, and will return a list of all the vertices that have edges originating from them that are directed toward the vertex `V`.

We will continue working with the graph from last week’s post on digraph:get_path/3. ```Graph = digraph:new().
% {digraph,20498,24595,28692,true}
% ['\$v'|0]
% ['\$v'|1]
% ['\$v'|2]
% ['\$v'|3]
E1 = digraph:add_edge(Graph, V1, V2).
% ['\$e'|0]
E2 = digraph:add_edge(Graph, V2, V3).
% ['\$e'|1]
E3 = digraph:add_edge(Graph, V3, V4).
% ['\$e'|2]
E4 = digraph:add_edge(Graph, V2, V4).
% ['\$e'|3]
E5 = digraph:add_edge(Graph, V4, V1).
% ['\$e'|4]
```

With that graph setup again, we can now find the `in_neighbors` of different vertices in our graph.

```digraph:in_neighbours(Graph, V4).
% [['\$v'|1],['\$v'|2]]
digraph:in_neighbours(Graph, V1).
% [['\$v'|3]]
digraph:in_neighbours(Graph, V2).
% [['\$v'|0]]
```

So for vertex `V4` we see the return value of `[['\$v'|1],['\$v'|2]]`, which are the vertices `V2` and `V3`. For `V1` we have an inbound neighbor of `V4`, and for `V2` we have the inbound neighbor of `V1`.

### digraph:out_neighbors/2

The `digraph` module also contains the function digraph:out_neighbors/2, which returns a list of the vertices that a the given vertex “points to” with its edges in the directed graph.

```digraph:out_neighbours(Graph, V2).
% [['\$v'|3],['\$v'|2]]
digraph:out_neighbours(Graph, V4).
% [['\$v'|0]]
digraph:out_neighbours(Graph, V1).
% [['\$v'|1]]
```

We can see from the picture of our graph that `V2` has edges that “point to” the vertices `V3` and `V4`, and if we look at the result of `digraph:out_neighbors/2`, we get the result of the vertices `V3` and `V4`.

In this case we get the list of vertices where `V4` is first and `V3` is second, but that may not be the case, as the documentation states that the the edges are “in some unspecified order”, which holds true of `digraph:in_neighbors/2` as well.

–Proctor