A collection of nodes and edges that can be traversed incrementally.
The nodes of the walkable collection are accessed by calling the successors method with a source vertex as an argument, which returns an Iterable of vertices and their respective weights that are accessible from the source node.
The WeightedWalkable declaration provides a default implementation,
which can be extended or mixed-in to implement the WeightedWalkable
interface. It implements every member other than successors and roots.
An implementation of WeightedWalkable should provide a more efficient
implementation of members of WeightedWalkable when it can do so.
Adapting
Example
Here is a sample implementation of a weighted graph using pattern matching:
final class AbcGraph with WeightedWalkable<String> {
  @override
  Iterable<(String, int)> successors(String node) {
    return switch (node) {
      'a' => const [('b', 1), ('c', 2)],
      'b' => const [('c', 3)],
      'c' => const [('d', 4)],
      _ => const [],
    };
  }
  @override
  Iterable<String> get roots => ['a', 'b', 'c'];
}
void main() {
  final graph = AbcGraph();
  print(graph.successors('a')); // [('b', 1), ('c', 2.0)]
  print(graph.roots); // ['a', 'b', 'c']
}
- Implemented types
 - 
    
- WalkableBase<
E>  
 - WalkableBase<
 - Implementers
 
Constructors
- WeightedWalkable.empty()
 - 
          Creates an empty weighted walkable.
            constfactory
 - 
          WeightedWalkable.from(Map<
E, Iterable< edges)(E, double)> > - 
          Creates a walkable from a map of source nodes to target nodes and weights.
            constfactory
 - 
          WeightedWalkable.generate({required Iterable<
(E, double)> successors(E node), required Iterable<E> roots()}) - 
          Creates a weighted walkable which generates successors dynamically.
            constfactory
 
Properties
- 
  edges
  → Iterable<
WeightedEdge< E> > - 
  Each edge in the collection.
  no setter
 - hashCode → int
 - 
  The hash code for this object.
  no setterinherited
 - isEmpty → bool
 - 
  Returns 
trueif the walkable collection has no nodes.no setteroverride - isNotEmpty → bool
 - 
  Returns 
trueif the walkable collection has one or more nodes.no setteroverride - 
  roots
  → Iterable<
E>  - 
  Each node that is exposed as a root node of the walkable collection.
  no setterinherited
 - runtimeType → Type
 - 
  A representation of the runtime type of the object.
  no setterinherited
 
Methods
- 
  asUnweighted(
) → Walkable< E>  - 
  Returns a view of this walkable as an unweighted walkable.
  override
 - 
  containsEdge(
Edge< E> edge) → bool - 
  Returns whether the collection contains an 
edgeconnecting two nodes.override - 
  containsRoot(
E node) → bool  - 
  Returns whether the collection contains a root node.
  override
 - 
  noSuchMethod(
Invocation invocation) → dynamic  - 
  Invoked when a nonexistent method or property is accessed.
  inherited
 - 
  successors(
E node) → Iterable< (E, double)>  - 
  Returns each distinct node that is a direct successor of the given 
node.override - 
  toString(
) → String  - 
  Returns a string representation of (some of) the nodes of 
this.override 
Operators
- 
  operator ==(
Object other) → bool  - 
  The equality operator.
  inherited
 
Static Methods
- 
  weightedWalkableToString(
WeightedWalkable< Object?> walkable, [String start = '{', String end = '}']) → String - Converts a WeightedWalkable to a string like toString.