vvec ← tree ##.stpath to ⍝ Path through spanning tree ⍺ to vertex ⍵.
Given a spanning tree from one vertex of a graph, returns a vector of vertices
that represent a path to the supplied vertex. If many paths from a common start-
ing vertex are to be calculated, it is more efficient to produce and reuse the
spanning tree, than to calculate the paths independently using the →path← funct-
ion each time.
Examples:
a ⍝ simple graph "a".
┌───┬─┬───┬───┬─┐
│2 3│3│2 4│1 5│3│
└───┴─┴───┴───┴─┘
⊢ast3←a span 3 ⍝ a's spanning tree from vertex 3, yields:
4 3 ¯1 3 4
ast3∘stpath¨⍳5 ⍝ ... paths from 3 to all other vertices.
┌─────┬───┬─┬───┬─────┐
│3 4 1│3 2│3│3 4│3 4 5│
└─────┴───┴─┴───┴─────┘
⊢vast←a∘span¨⍳⍴a ⍝ vector of a's spanning trees.
┌──────────┬──────────┬──────────┬──────────┬──────────┐
│¯1 1 1 3 4│4 ¯1 2 3 4│4 3 ¯1 3 4│4 1 5 ¯1 4│4 3 5 3 ¯1│
└──────────┴──────────┴──────────┴──────────┴──────────┘
vast∘.stpath⍳⍴a ⍝ extract paths between all vertices.
┌───────┬─────┬─────┬─────┬───────┐
│1 │1 2 │1 3 │1 3 4│1 3 4 5│
├───────┼─────┼─────┼─────┼───────┤
│2 3 4 1│2 │2 3 │2 3 4│2 3 4 5│
├───────┼─────┼─────┼─────┼───────┤
│3 4 1 │3 2 │3 │3 4 │3 4 5 │
├───────┼─────┼─────┼─────┼───────┤
│4 1 │4 1 2│4 5 3│4 │4 5 │
├───────┼─────┼─────┼─────┼───────┤
│5 3 4 1│5 3 2│5 3 │5 3 4│5 │
└───────┴─────┴─────┴─────┴───────┘
a∘path¨ ∘.,⍨ ⍳⍴a ⍝ ... same as direct path extraction.
┌───────┬─────┬─────┬─────┬───────┐
│1 │1 2 │1 3 │1 3 4│1 3 4 5│
├───────┼─────┼─────┼─────┼───────┤
│2 3 4 1│2 │2 3 │2 3 4│2 3 4 5│
├───────┼─────┼─────┼─────┼───────┤
│3 4 1 │3 2 │3 │3 4 │3 4 5 │
├───────┼─────┼─────┼─────┼───────┤
│4 1 │4 1 2│4 5 3│4 │4 5 │
├───────┼─────┼─────┼─────┼───────┤
│5 3 4 1│5 3 2│5 3 │5 3 4│5 │
└───────┴─────┴─────┴─────┴───────┘
See also: Graphs span path search
Back to: contents
Back to: Workspaces