fromPredecessorFunction method
Creates a Graph from start vertices
and a function predecessors
returning its preceding vertices (incoming adjacency).
Implementation
Graph<V, E> fromPredecessorFunction(
Iterable<V> vertices, Iterable<V> Function(V vertex) predecessors) {
final builder = newBuilder();
final todo = QueueList<V>();
final seen = vertexStrategy.createSet();
for (final vertex in vertices) {
builder.addVertex(vertex);
todo.add(vertex);
seen.add(vertex);
}
while (todo.isNotEmpty) {
final vertex = todo.removeFirst();
for (final predecessor in predecessors(vertex)) {
builder.addEdge(predecessor, vertex);
if (seen.add(predecessor)) {
todo.add(predecessor);
}
}
}
return builder.build();
}