1 ;;;-*- Mode: Lisp; Package: COMMON-LISP-USER -*-
5 Author: Gary King, et. al.
10 (in-package #:common-lisp-user)
12 (defpackage #:cl-graph
13 (:use #:common-lisp #:metatilities #:cl-containers #:metabang-bind)
14 (:nicknames #:metabang.graph)
15 (:documentation "CL-Graph is a Common Lisp library for manipulating graphs and running graph algorithms.")
18 #:with-changing-vertex
23 #:add-edge-between-vertexes ; graph { value | vertex } { value | vertex }
24 #:delete-edge-between-vertexes ; graph { value | vertex } { value | vertex }
25 #:add-vertex ; graph { value | vertex }
26 #:find-vertex ; graph { value | vertex }
27 #:find-edge ; graph edge
28 #:find-edge-between-vertexes ; graph { vertex | value } { vertex | value }
33 #:iterate-container ; graph fn
44 #:vertex-count ; graph
45 #:source-edge-count ; vertex
46 #:target-edge-count ; vertex
53 #:topological-sort ; graph
54 #:depth ; graph | vertex
57 #:get-transitive-closure ;; CTM
58 #:make-filtered-graph ;; CTM
61 #:in-cycle-p ; graph vertex
67 #:generate-directed-free-tree
69 #:contains-undirected-edge-p
70 #:contains-directed-edge-p
81 #:graph->dot-properties
88 #:layout-graph-with-graphviz
92 #:find-connected-components
93 #:connected-component-count
98 #:add-edge ; graph edge
99 #:delete-edge ; graph edge
102 #:add-vertex ; graph { value | vertex }
103 #:delete-vertex ; graph { value | vertex }
104 #:find-vertex ; graph { value | vertex }
105 #:find-edge ; graph edge
106 #:find-edge-between-vertexes ; graph { vertex | value } { vertex | value }
107 #:find-edge-between-vertexes-if ; graph { vertex | value } { vertex | value } fn
108 #:find-edge-if ; graph
109 #:find-edges-if ; graph
111 #:edges ; graph | vertex
112 #:iterate-edges ; graph fn
113 #:iterate-source-edges ; vertex fn
114 #:iterate-target-edges ; vertex fn
115 #:iterate-children ; vertex (nodes) fn
116 #:iterate-parents ; vertex (nodes) fn
117 #:iterate-neighbors ; vertex (all neighbors) fn
120 #:number-of-neighbors
125 #:vertex-count ; graph
127 #:topological-sort ; graph
128 #:depth ; graph | vertex
131 #:get-transitive-closure ;; CTM
132 #:make-filtered-graph ;; CTM
135 #:in-cycle-p ; graph vertex
136 #:in-undirected-cycle-p ; graph vertex
137 #:any-undirected-cycle-p ; graph
139 #:vertices-share-edge-p
144 ;;; depth first search
148 #:edge-lessp-by-direction
149 #:out-edge-for-vertex-p
153 ;;; minimum-spanning-tree
154 #+Ignore #:add-edges-to-graph
156 #:make-graph-from-vertexes
157 #:edge-lessp-by-weight
158 #:minimum-spanning-tree
161 #+Ignore #:map-over-all-combinations-of-k-vertexes
162 #+Ignore #:map-over-all-combinations-of-k-edges
164 #:project-bipartite-graph
166 #:make-vertex-edges-container
167 #:make-vertex-for-graph
169 #:vertex-degree-counts
171 #:average-vertex-degree
172 #:vertex-clustering-coefficient
173 #:average-vertex-clustering-coefficient
175 #:graph-mixing-matrix
176 #:graph-edge-mixture-matrix
177 #:assortativity-coefficient
178 #:vertex-degree-summary
179 #:connected-components
180 #:average-local-clustering-coefficient
181 #:vertex-triangle-count
186 #:print-dot-key-value
187 #:dot-attribute-value
188 #:dot-attributes-mixin
189 #:*dot-graph-attributes*