LFE Friday - digraph:in_neighbors/2
Today's LFE Friday 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
We will continue working with the graph from last week's post on digraph:get_path/3.
> (set graph (digraph:new)) #(digraph 8207 12304 16401 true) > (set v-1 (digraph:add_vertex graph 'v-1)) v-1 > (set v-2 (digraph:add_vertex graph 'v-2)) v-2 > (set v-3 (digraph:add_vertex graph 'v-3)) v-3 > (set v-4 (digraph:add_vertex graph 'v-4)) v-4 > (set e-1 (digraph:add_edge graph v-1 v-2)) ($e . 0) > (set e-2 (digraph:add_edge graph v-2 v-3)) ($e . 1) > (set e-3 (digraph:add_edge graph v-3 v-4)) ($e . 2) > (set e-4 (digraph:add_edge graph v-2 v-4)) ($e . 3) > (set e-5 (digraph:add_edge graph v-4 v-1)) ($e . 4)
With that graph setup again, we can now find the
in_neighbors of different vertices in our graph.
> (digraph:in_neighbours graph v-4) (v-2 v-3) > (digraph:in_neighbours graph v-1) (v-4) > (digraph:in_neighbours graph v-2) (v-1)
So for vertex
v-4 we see the return value of
(v-2 v-3) and for
v-1 we have an inbound neighbor of
v-4, and for
v-2 we have the inbound neighbor of
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 v-2) (v-4 v-3) > (digraph:out_neighbours graph v-4) (v-1) > (digraph:out_neighbours graph v-1) (v-2)
We can see from the picture of our graph that
v-2 has edges that "point to" the vertices
v-4, and if we look at the result of
digraph:out_neighbors/2, we get the result of the vertices
In this case we get the list of vertices where
v-4 is first and
v-3 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, Robert