X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=dev%2Fnotes.text;h=140ae52a55acf0c2f76072c449400bcb3a8b77e6;hb=c9c290dd139941dfc72826b6854607c0c304f7ca;hp=2588de0ab97e6873dae1e855fafcb68fd8d54301;hpb=438d1e0593dc62fe7b975a5865ec27955afcb7a1;p=cl-graph.git diff --git a/dev/notes.text b/dev/notes.text index 2588de0..140ae52 100644 --- a/dev/notes.text +++ b/dev/notes.text @@ -1,3 +1,72 @@ +optimize : find-edge-between-vertexes-if + +Should have delete-item-at-1 + +delete-edge : equal or eql + + +#| +(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)