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
true
if the walkable collection has no nodes.no setteroverride - isNotEmpty → bool
-
Returns
true
if 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
edge
connecting 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.