fromSuccessorFunction method

Graph<V, E> fromSuccessorFunction(
  1. Iterable<V> vertices,
  2. Iterable<V> successors(
    1. V vertex
    )
)

Creates a Graph from start vertices and a function successors returning its succeeding vertices (outgoing adjacency).

Implementation

Graph<V, E> fromSuccessorFunction(
    Iterable<V> vertices, Iterable<V> Function(V vertex) successors) {
  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 successor in successors(vertex)) {
      builder.addEdge(vertex, successor);
      if (seen.add(successor)) {
        todo.add(successor);
      }
    }
  }
  return builder.build();
}