dgraph_leaves: all leaves in a directed graph (linear time).
This commit is contained in:
parent
4484dec044
commit
a0d2e6f285
@ -12635,6 +12635,13 @@ The path @var{Path} is a path starting at vertex @var{Vertex} in graph
|
|||||||
The path @var{Path} is a path starting at vertex @var{Vertex} in graph
|
The path @var{Path} is a path starting at vertex @var{Vertex} in graph
|
||||||
@var{Graph}.
|
@var{Graph}.
|
||||||
|
|
||||||
|
@item dgraph_leaves(+@var{Graph}, ?@var{Vertices})
|
||||||
|
@findex dgraph_leaves/2
|
||||||
|
@snindex dgraph_leaves/2
|
||||||
|
@cnindex dgraph_leaves/2
|
||||||
|
The vertices @var{Vertices} have no outgoing edge in graph
|
||||||
|
@var{Graph}.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node UnDGraphs, Lambda , DGraphs, Library
|
@node UnDGraphs, Lambda , DGraphs, Library
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
dgraph_min_paths/3,
|
dgraph_min_paths/3,
|
||||||
dgraph_isomorphic/4,
|
dgraph_isomorphic/4,
|
||||||
dgraph_path/3,
|
dgraph_path/3,
|
||||||
|
dgraph_leaves/2,
|
||||||
dgraph_reachable/3
|
dgraph_reachable/3
|
||||||
]).
|
]).
|
||||||
|
|
||||||
@ -414,3 +415,13 @@ reachable([V|Vertices], Done0, DoneF, G, [V|EdgesF], Edges0) :-
|
|||||||
rb_insert(Done0, V, [], Done1),
|
rb_insert(Done0, V, [], Done1),
|
||||||
reachable(Kids, Done1, DoneI, G, EdgesF, EdgesI),
|
reachable(Kids, Done1, DoneI, G, EdgesF, EdgesI),
|
||||||
reachable(Vertices, DoneI, DoneF, G, EdgesI, Edges0).
|
reachable(Vertices, DoneI, DoneF, G, EdgesI, Edges0).
|
||||||
|
|
||||||
|
dgraph_leaves(Graph, Vertices) :-
|
||||||
|
rb_visit(Graph, Pairs),
|
||||||
|
vertices_without_children(Pairs, Vertices).
|
||||||
|
|
||||||
|
vertices_without_children([], []).
|
||||||
|
vertices_without_children((V-[]).Pairs, V.Vertices) :-
|
||||||
|
vertices_without_children(Pairs, Vertices).
|
||||||
|
vertices_without_children(_V-[_|_].Pairs, Vertices) :-
|
||||||
|
vertices_without_children(Pairs, Vertices).
|
||||||
|
Reference in New Issue
Block a user