X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=dev%2Fgraph-generation.lisp;h=eed4009f6873884571893a3f50bb432dcfc1d7a0;hb=f54f262647ae0d4c98e87d16ad81ebe130da4f3f;hp=4df3ca72a82ace81821885a6e76701b8e403987e;hpb=ca59f054a82701af97d9692576a5ce301980c60d;p=cl-graph.git diff --git a/dev/graph-generation.lisp b/dev/graph-generation.lisp index 4df3ca7..eed4009 100644 --- a/dev/graph-generation.lisp +++ b/dev/graph-generation.lisp @@ -1,31 +1,32 @@ -(in-package metabang.graph) - -(export '(generate-Gnp - generate-Gnm - generate-undirected-graph-via-assortativity-matrix - generate-undirected-graph-via-vertex-probabilities - generate-multi-group-graph-fixed - #+Ignore generate-girvan-newman-graph - generate-scale-free-graph - generate-assortative-graph-with-degree-distributions - - generate-simple-preferential-attachment-graph - generate-preferential-attachment-graph - - generate-acquaintance-network - generate-acquaintance-network-until-stable - - generate-graph-by-resampling-edges - - sample-edge - basic-edge-sampler - weighted-edge-sampler - simple-group-id-generator - simple-group-id-parser - - make-degree-sampler - poisson-vertex-degree-distribution - power-law-vertex-degree-distribution)) +(in-package #:metabang.graph) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (export '(generate-gnp + generate-gnm + generate-undirected-graph-via-assortativity-matrix + generate-undirected-graph-via-vertex-probabilities + generate-multi-group-graph-fixed + #+Ignore generate-girvan-newman-graph + generate-scale-free-graph + generate-assortative-graph-with-degree-distributions + + generate-simple-preferential-attachment-graph + generate-preferential-attachment-graph + + generate-acquaintance-network + generate-acquaintance-network-until-stable + + generate-graph-by-resampling-edges + + sample-edge + basic-edge-sampler + weighted-edge-sampler + simple-group-id-generator + simple-group-id-parser + + make-degree-sampler + poisson-vertex-degree-distribution + power-law-vertex-degree-distribution))) ;;; --------------------------------------------------------------------------- ;;; classes @@ -59,16 +60,16 @@ ;;; --------------------------------------------------------------------------- -;;; generate-Gnp +;;; generate-gnp ;;; --------------------------------------------------------------------------- -(defmethod generate-Gnp (generator (graph-class symbol) n p &key (label 'identity)) - (generate-Gnp +(defmethod generate-gnp (generator (graph-class symbol) n p &key (label 'identity)) + (generate-gnp generator (make-instance graph-class) n p :label label)) ;;; --------------------------------------------------------------------------- -(defmethod generate-Gnp (generator (graph basic-graph) n p &key (label 'identity)) +(defmethod generate-gnp (generator (graph basic-graph) n p &key (label 'identity)) (let ((v 1) (w -1) (log-1-p (log (- 1 p)))) @@ -88,16 +89,16 @@ graph)) ;;; --------------------------------------------------------------------------- -;;; generate-Gnm +;;; generate-gnm ;;; --------------------------------------------------------------------------- -(defmethod generate-Gnm (generator (graph-class symbol) n p &key (label 'identity)) - (generate-Gnm +(defmethod generate-gnm (generator (graph-class symbol) n p &key (label 'identity)) + (generate-gnm generator (make-instance graph-class) n p :label label)) ;;; --------------------------------------------------------------------------- -(defmethod generate-Gnm (generator (graph basic-graph) n m &key (label 'identity)) +(defmethod generate-gnm (generator (graph basic-graph) n m &key (label 'identity)) (let ((max-edge-index (1- (combination-count n 2)))) (assert (<= m max-edge-index)) #+Ignore @@ -397,7 +398,7 @@ ;;; --------------------------------------------------------------------------- (defun poisson-vertex-degree-distribution (z k) - (/ (* (expt z k) (expt +e+ (- z))) + (/ (* (expt z k) (expt cl-mathstats:+e+ (- z))) (factorial k))) #| @@ -408,7 +409,8 @@ from this distribution ;;; --------------------------------------------------------------------------- (defun power-law-vertex-degree-distribution (kappa k) - (* (- 1 (expt +e+ (- (/ kappa)))) (expt +e+ (- (/ k kappa))))) + (* (- 1 (expt cl-mathstats:+e+ (- (/ kappa)))) + (expt cl-mathstats:+e+ (- (/ k kappa))))) ;;; ---------------------------------------------------------------------------