X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=dev%2Fnotes.text;h=997c35a2fb6a63b2539a0c680a54d9385b825d35;hb=c78963a693aac062da29f25641ace0430b6c1591;hp=2588de0ab97e6873dae1e855fafcb68fd8d54301;hpb=16da51f4e670b9a4fca0b3f64b8786478ac94010;p=cl-graph.git diff --git a/dev/notes.text b/dev/notes.text index 2588de0..997c35a 100644 --- a/dev/notes.text +++ b/dev/notes.text @@ -1,3 +1,65 @@ +#| +(in-package cl-graph) + +(let ((g (make-instance 'graph-container + :default-edge-type :directed))) + (add-edge-between-vertexes g :a :b) + (add-edge-between-vertexes g :a :c) + (add-edge-between-vertexes g :b :d) + (graph->dot g t)) +-> (prints) +digraph G { +graph []; + +3 [] +1 [] +0 [] +2 [] +1->3 [] +0->1 [] +0->2 [] +} +# + +(defclass* weighted-directed-edge (directed-edge-mixin weighted-edge) + ()) + +(let ((g (make-instance 'graph-container + :default-edge-class 'weighted-directed-edge))) + (add-edge-between-vertexes g :a :b) + (add-edge-between-vertexes g :a :c) + (add-edge-between-vertexes g :b :d :weight 2.5) + (graph->dot g t + :edge-formatter + (lambda (e s) (format s "weight=~D" (weight e))))) +-> (prints) +graph G { +graph []; + +3 [] +1 [] +0 [] +2 [] +0--1 [dir=forward, ] +1--3 [] +0--2 [] +} +-> (returns) +# + + +(defun weighted-sum-of-connected-vertexes (vertex) + (let ((sum 0)) + (iterate-target-edges + vertex + (lambda (e) + (incf sum (* (weight e) (element (other-vertex e vertex)))))) + sum)) + +graph-roots +|# + + (in-package metabang.graph) (in-package cl-graph)