Bumped version and copyright; cleanup formatting in system defs; standardized test-op
[cl-graph.git] / dev / package.lisp
1 ;;;-*- Mode: Lisp; Package: COMMON-LISP-USER -*-
2
3 #| simple-header
4
5 Author: Gary King, et. al.
6
7 DISCUSSION
8
9 |#
10 (in-package #:common-lisp-user)
11
12 (defpackage #:cl-graph
13   (:use #:common-lisp #:metatilities #:cl-containers 
14         #:metabang.bind)
15   (:nicknames #:metabang.graph)
16   (:documentation "CL-Graph is a Common Lisp library for manipulating graphs and running graph algorithms.")
17   
18   (:export 
19    #:with-changing-vertex
20    
21    #:make-graph
22    #:basic-graph
23    
24    #:add-edge-between-vertexes     ; graph { value | vertex } { value | vertex }
25    #:delete-edge-between-vertexes  ; graph { value | vertex } { value | vertex }
26    #:add-vertex                    ; graph { value | vertex }
27    #:find-vertex                   ; graph { value | vertex }
28    #:find-edge                     ; graph edge
29    #:find-edge-between-vertexes    ; graph { vertex | value } { vertex | value }
30    #:find-vertex-if
31    #:find-vertexes-if
32    #:search-for-vertex
33    
34    #:iterate-container             ; graph fn
35    #:iterate-vertexes
36    #:vertexes
37    #:source-edges
38    #:target-edges
39    #:child-vertexes
40    #:parent-vertexes
41    #:neighbor-vertexes
42    #:other-vertex
43    
44    #:edge-count                    ; graph
45    #:vertex-count                  ; graph
46    #:source-edge-count             ; vertex
47    #:target-edge-count             ; vertex
48    
49    #:rootp                         ; vertex
50    #:graph-roots                   ; graph
51    
52    #:topological-sort              ; graph
53    #:depth                         ; graph | vertex
54    #:depth-level
55    
56    #:get-transitive-closure        ;; CTM
57    #:make-filtered-graph           ;; CTM
58    
59    #:adjacentp
60    #:in-cycle-p                    ; graph vertex
61    #:force-undirected
62    
63    #:renumber-vertexes
64    #:renumber-edges
65    
66    #:generate-directed-free-tree
67    
68    #:contains-undirected-edge-p
69    #:contains-directed-edge-p
70    
71    #:undirected-edge-p
72    #:directed-edge-p
73    #:tagged-edge-p
74    #:untagged-edge-p
75    #:tag-all-edges
76    #:untag-all-edges
77    #:graph->dot
78    #:vertex->dot
79    #:edge->dot
80    #:graph->dot-properties
81    #:subgraph-containing
82    #:graph->dot-external
83    #:dot-graph
84    #:dot-vertex
85    #:dot-edge
86    #:dot-attributes
87    #:layout-graph-with-graphviz
88    #:dot-attribute-value
89    
90    #:connected-graph-p
91    #:find-connected-components
92    #:connected-component-count
93    
94    #:target-vertex
95    #:source-vertex
96    
97    #:add-edge                      ; graph edge
98    #:delete-edge                   ; graph edge
99    #:delete-all-edges
100
101    #:add-vertex                    ; graph { value | vertex }
102    #:delete-vertex                 ; graph { value | vertex }
103    #:find-vertex                   ; graph { value | vertex }
104    #:find-edge                     ; graph edge
105    #:find-edge-between-vertexes    ; graph { vertex | value } { vertex | value }
106    #:find-edge-between-vertexes-if ; graph { vertex | value } { vertex | value } fn
107    #:find-edge-if                  ; graph
108    #:find-edges-if                 ; graph
109    
110    #:edges                         ; graph | vertex
111    #:iterate-edges                 ; graph fn
112    #:iterate-source-edges          ; vertex fn
113    #:iterate-target-edges          ; vertex fn
114    #:iterate-children              ; vertex (nodes) fn
115    #:iterate-parents               ; vertex (nodes) fn
116    #:iterate-neighbors             ; vertex (all neighbors) fn
117    #:has-children-p
118    #:has-parent-p
119    #:number-of-neighbors
120    
121    #:edge-count                    ; graph
122    #:vertex-count                  ; graph
123    
124    #:topological-sort              ; graph
125    #:depth                         ; graph | vertex
126    #:depth-level
127    
128    #:get-transitive-closure        ;; CTM
129    #:make-filtered-graph           ;; CTM
130    
131    #:adjacentp
132    #:in-cycle-p                    ; graph vertex
133    #:in-undirected-cycle-p         ; graph vertex
134    #:any-undirected-cycle-p        ; graph
135    #:force-undirected
136    #:vertices-share-edge-p
137    
138    #:map-paths
139    #:map-shortest-paths
140    
141    ;;; depth first search 
142    #:dfs-edge-type
143    #:dfs-back-edge-p 
144    #:dfs-tree-edge-p
145    #:edge-lessp-by-direction
146    #:out-edge-for-vertex-p
147    #:dfs
148    
149    ;;; minimum-spanning-tree
150    #+Ignore #:add-edges-to-graph
151    
152    #:make-graph-from-vertexes
153    #:edge-lessp-by-weight
154    #:minimum-spanning-tree
155    
156    ;;; mapping
157    #+Ignore #:map-over-all-combinations-of-k-vertexes
158    #+Ignore #:map-over-all-combinations-of-k-edges
159    
160    #:project-bipartite-graph
161    
162    #:make-vertex-edges-container 
163    
164    #:vertex-degree-counts
165    #:vertex-degree
166    #:average-vertex-degree
167    #:vertex-clustering-coefficient
168    #:average-vertex-clustering-coefficient
169    
170    #:graph-mixing-matrix
171    #:graph-edge-mixture-matrix
172    #:assortativity-coefficient
173    #:vertex-degree-summary)
174
175   (:export
176    #:print-dot-key-value
177    #:dot-attribute-value
178    #:dot-attributes-mixin
179    #:*dot-graph-attributes*
180    ))