Fixing in-packages
[cl-graph.git] / dev / examples / basic-graph-manipulation.lisp
1 (in-package #:cl-graph)
2
3 ;;; make a simple graph
4 (let ((g (make-container 'graph-container))) 
5   (loop for v in '(a b c d e) do
6         (add-vertex g v))
7   (loop for (v1 . v2) in '((a . b) (a . c) (b . d) (c . e)) do
8         (add-edge-between-vertexes g v1 v2))
9   g)
10
11 ;;; make a directed graph
12 ;; adding the vertexes up front not really necessary
13 (let ((g (make-container 'graph-container :default-edge-type :directed))) 
14   (loop for (v1 . v2) in '((a . b) (a . c) (b . d) (c . e)) do
15         (add-edge-between-vertexes g v1 v2))
16   g)
17
18
19 ;;; make a graph, find some things
20 (let ((g (make-container 'graph-container)))
21     (loop for (src dst) in '((a b) (a c) (c d) (a d) (d e) (e f) (b f)) do
22           (add-edge-between-vertexes g src dst))
23     
24     (print (find-vertex g 'a))
25     (print (find-vertex g 'q nil))
26     (print (find-edge-between-vertexes g 'a 'b))
27     (print (find-edge-between-vertexes g 'a 'f :error-if-not-found? nil))
28     
29     (format t "~%Neighbors of vertex A:")
30     (iterate-neighbors (find-vertex g 'a) #'print))