This package provides basic infrastructure to work with Directed Acyclic Graphs (DAGs) in Julia. It forms the foundation for packages such as LogicCircuits and ProbabilisticCircuits, which define custom DAGs that represent logical or probabilistic computation graphs.
Functionality includes:
- applying
foreach
over the nodes of the DAG in topological or reverse topological order, linearize the DAG - computing the number of nodes, number of edges
- propagating a value through the DAG, that is, a
foldup
operation filter
the nodes in the DAGiterate
over the nodes in the DAG, computemaximum
,minimum
, and other Base functions.- find the
lca
(lowest common ancestor) of nodes in a tree - arrange the DAG nodes in feedforward layers
- collecting various statistics about the types of nodes and their in/out-degree
For example usage, please see the unit tests for DAGs and the special case of trees, or the source code of the dependent packages. A brief description of functions can be found in the .