| Extracted from Pike v7.8 release 866 at 2018-02-09.

[Top]
ADT
ADT.Relation
ADT.Relation.Binary

# Method ADT.Relation.Binary()->find_shortest_path()

Method find_shortest_path

  `array find_shortest_path(mixed from, mixed to, void|multiset avoiding)`

Description

  Assuming the relation's domain and range sets are equal, and that the relation xRy means "there is a path from node x to node y", find_shortest_path attempts to find a path with a minimum number of steps from one given node to another. The path is returned as an array of nodes (including the starting and ending node), or 0 if no path was found. If several equally short paths exist, one of them will be chosen pseudorandomly.

  Trying to find a path from a node to itself will always succeed, returning an array of one element: the node itself. (Or in other words, a path with no steps, only a starting/ending point).

  The argument avoiding is either 0 (or omitted), or a multiset of nodes that must not be part of the path.