summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordoy <doy@tozt.net>2008-12-14 18:20:29 -0500
committerdoy <doy@tozt.net>2008-12-14 18:20:29 -0500
commitb0cf5205e0abbf2c6fd4014755d9e304bf7bd34a (patch)
tree341b52d99f7a2b5b28f7de3a111fee09699f96c5
parentdb3904fd6b81e3283bb27d19c182c0926e34a7ce (diff)
downloadgraph-implicit-b0cf5205e0abbf2c6fd4014755d9e304bf7bd34a.tar.gz
graph-implicit-b0cf5205e0abbf2c6fd4014755d9e304bf7bd34a.zip
implement vertices and edges
-rw-r--r--lib/Graph/Implicit.pm10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Graph/Implicit.pm b/lib/Graph/Implicit.pm
index df3a434..03b9ebb 100644
--- a/lib/Graph/Implicit.pm
+++ b/lib/Graph/Implicit.pm
@@ -22,9 +22,19 @@ sub new {
# generic information
sub vertices {
+ my $self = shift;
+ my ($start) = @_;
+ my @vertices;
+ $self->dfs($start, sub { push @vertices, $_[1] });
+ return @vertices;
}
+# XXX: probably pretty inefficient... can we do better?
sub edges {
+ my $self = shift;
+ my ($start) = @_;
+ map { my $v = $_; map { [$v, $_] } $self->neighbors($v) }
+ $self->vertices($start);
}
sub neighbors {