Liking cljdoc? Tell your friends :D

Clojure only.

`(kahn-sort g)`

`(kahn-sort g l s)`

Proposes a topological sort for directed graph g using Kahn's algorithm, where g is a map of nodes to sets of nodes. If g is cyclic, returns nil.

A graph here is a map of sets representing a directed edge from the key to each element in its associated set.

The following represents a -> b and a -> c:

```
{:a #{:b :c}, :b #{}}
```

See also [[fermor.graph.algo/reverse-post-order-numbering]] for an alternate approach to topological sort which can handle cycles.

Proposes a topological sort for directed graph g using Kahn's algorithm, where g is a map of nodes to sets of nodes. If g is cyclic, returns nil. A graph here is a map of sets representing a directed edge from the key to each element in its associated set. The following represents a -> b and a -> c: {:a #{:b :c}, :b #{}} See also [[fermor.graph.algo/reverse-post-order-numbering]] for an alternate approach to topological sort which can handle cycles.

`(no-incoming g)`

Returns the set of nodes in graph g for which there are no incoming edges, where g is a map of nodes to sets of nodes.

Returns the set of nodes in graph g for which there are no incoming edges, where g is a map of nodes to sets of nodes.

`(normalize g)`

Returns g with empty outgoing edges added for nodes with incoming edges only. Example: {:a #{:b}} => {:a #{:b}, :b #{}}

Returns g with empty outgoing edges added for nodes with incoming edges only. Example: {:a #{:b}} => {:a #{:b}, :b #{}}

`(take-1 s)`

Returns the pair [element, s'] where s' is set s with element removed.

Returns the pair [element, s'] where s' is set s with element removed.

**cljdoc** is a website building & hosting documentation for Clojure/Script libraries