現在、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
挙動はしかしとして、文書化されていないですグラフのソースは属性をコピーするが、頂点/エッジはコピーしないことを示しています。CPANの機能要求が既にあります:https://rt.cpan.org/Ticket/Display.html?id=65497
ので、いくつかの他のモジュール(おそらくXS)がある、または私はGraph
にパッチを適用する必要があり、または誰もが自分自身と私がすべきグラフのクラスを書き込み、それも?あなたはすべての頂点のリストとしたい頂点のリストを持っている場合は
Hm、これは '$ graph-> edges' <<' $ subgraph-> nodes ** 2'の方が良い解決策でなければなりません。しかし、私はまだ元のグラフをコピーして、それを台無しにすることを好まないでしょう。 – Dallaylaen