【发布时间】:2012-01-04 15:26:04
【问题描述】:
我目前正在使用Graph,但是它缺少一种方法来创建由给定顶点列表引起的原始图的子图。
我写了一个存根,它使用 Graph 的访问器,但是
这是我的代码:
# subgraph ($graph, @node_list);
# return subgraph (with the same setup)
# induced by node list
sub subgraph {
my $self = shift;
my $new = $self->new;
my @edges;
foreach my $v(@_) {
$self->has_vertex($v) or next;
$new->add_vertex($v);
foreach my $u(@_) {
$self->has_edge($u, $v) and push @edges, $u, $v;
};
};
$new->add_edges(@edges);
return $new;
};
注意:
$Graph->new行为未记录在案,但正如 Graph 的源代码所示,它会复制属性,但不会复制顶点/边。CPAN 上已有功能请求:https://rt.cpan.org/Ticket/Display.html?id=65497
那么,是否有其他模块(可能是 XS),或者我应该修补 Graph,还是每个人都自己编写一个图形类,我也应该这样做?
【问题讨论】: