おはようございます。私は初心者です。私はオイラーパスの実装に取り組んでいます。つまり、有向グラフのすべてのエッジ(頂点ではない)は一度だけ使用する必要があります。 何らかの理由で、紙の中にあってもすべての頂点を管理することはできません。頂点の半分を無視するか、単純に頂点を回路に追加しないようです。オイラーパス、有向グラフ
期待される結果は次のとおりです。それでも
6->7->8->9->6->3->0->2->1->3->4
、私が得る結果は次のとおりです。
my %edges={'6'=>['3','7'],'8'=>['9'],'1'=>['3'],'0'=>['2'],'3'=>['0','4'], '7' =>['8'],'9'=>['6'],'2'=>['1']};
my $startvertex=6; #this i got from additional code
my $location=$startvertex;
my @stack = ($startvertex);
my @circuit =();
while (@stack)
{
if (@{$edges{$location}}[0])
{
push @stack, $location;
my [email protected]{$edges{$location}}[0];
splice @{$edges{$location}},0,1;
$location=$newlocation;
}
else
{
push @circuit, $location;
$location=pop @stack;
}
}
my @revcircuit= reverse @circuit;
print @revcircuit;
は非常にありがとう:
6 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 9 9 9 9 9 9 9 3 3 3 3 3 3
は何私はコードとして持っていることは以下のとおりです。あなたの洞察のためにはるかに前もって。
'{...}'はハッシュリファレンスではなくハッシュを定義しています。ここに示すようにコードを実行することはできません。 – choroba
大変申し訳ございません。私はなぜそれを実行することができるのか分からない。 –