0

グラフ内の 2 つのノード間のすべての可能なパスを検索するアルゴリズムがありますが、ノードを繰り返さずに指定したパスの長さでパスを選択しています。
これは ActionScript3 にあり、アルゴリズムを反復型に変更するか、最適化する必要があります (可能な場合)。
それを行う方法がわかりません。反復に変更すると、その関数の実行時間が改善されるかどうかもわかりません。最適化できないのかもしれません。わからない。

これが私の機能です: http://pastebin.com/nMN2kkpu

誰かがそれを解決する方法についていくつかのヒントを与えることができれば、それは素晴らしいことです.

4

1 に答える 1

1

1 つには、頂点を開始することでエッジを並べ替えることができます。次に、頂点の隣人を反復すると、この頂点の隣人の数に比例します(現在O(M)Mはグラフ全体のエッジ数です)。

頂点を繰り返さないという条件を緩和すれば、問題はより早く解決できると確信しています。

ただし、それが必要な場合は、コードを高速化する単純な変更はないと思います。ただし、これについては保証できません。

また、私が正しければ、コード スニペットは、頂点が使用されているかどうかではなく、エッジが既に使用されているかどうかをテストします。私が気付いたもう 1 つのことは、そのようなパスを見つけたら、再帰を止めないことです。ほとんどの* グラフでは、 の妥当な値に対してそのようなパスが存在するため、そのようなパスが 1 つだけ必要な場合は、そのようなパスが 1 つ見つかった後に多くの CPU 時間を浪費している可能性があります。length

*ほとんど - 「おそらくほとんど (IMO)」と読みます。

于 2012-06-13T23:31:53.530 に答える