>>
<<
Ndx
Usr
Pri
Phr
Dic
Rel
Voc
!:
wd
Help
Dictionary
20. Directed Graphs
A directed graph is a collection of nodes with
connections or arcs specified between certain pairs of nodes.
It can be used to specify matters such as the precedences
in a set of processes (stuffing of envelopes must precede sealing),
or the structure of a tree.
The connections can be specified by a boolean
connection matrix instead of by arcs, and the connection
matrix can be determined from the list of arcs.
The connection matrix is convenient for determining various
properties of the graph, such as the in-degrees
(number of arcs entering a node), the out-degrees,
immediate descendants, and the closure, or connection
to every node reachable through some path. For example:
from=: 3 7 2 5 5 7 1 5 5 5 2 6 1 2 3 7 7 4 7 2 7 4
to=: 5 6 0 2 6 2 7 6 0 7 3 3 2 1 7 0 4 2 3 0 0 3
$ arcs=: from,.to
22 2
|: arcs { nodes=: 'ABCDEFGH' Transposed for display
DHCFFHBFFFCGBCDHHEHCHE
FGACGCHGAHDDCBHAECDAAD
CM=: #. e.~ [: i. [ , [ Connection matrix from arcs
]cm=: (>:>./,arcs) CM arcs
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1
1 1 0 1 0 0 0 0
0 0 0 0 0 1 0 1
0 0 1 1 0 0 0 0
1 0 1 0 0 0 1 1
0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 0
(+/cm);(+/"1 cm); (+/+/cm);(#arcs);(#~.arcs)
+---------------+---------------+--+--+--+
|3 1 4 4 1 1 2 3|0 2 3 2 2 4 1 5|19|22|19|
+---------------+---------------+--+--+--+
The foregoing results are the in, out, and total degrees;
followed by the number of arcs, and the number of distinct arcs.
A boolean vector b may be used to represent the nodes,
and the inner product b +./ . *. cm gives the
same representation of the nodes reachable from them.
The immediate family (which includes the original points themselves)
is therefore given by the function imfam :
imfam=: [ +. +./ . *.
(b=: 1 0 0 0 0 0 0 1) imfam cm
1 0 1 1 1 0 1 1
>>
<<
Ndx
Usr
Pri
Phr
Dic
Rel
Voc
!:
wd
Help
Dictionary