1

タイトルを拡張するには、非常に大きな無向グラフのすべてのノード間にすべての単純な(非循環)パスが必要です。

私が考えることができる最も明白な最適化は、ノードの特定のペア間のすべてのパスを計算したら、他の方法で実行する必要があるときに再計算するのではなく、すべてを逆にすることができるということです。

推移閉包とFloyd–Warshallアルゴリズムを調べていましたが、そのルートをたどった場合にできる最善の方法は、すべてのノード間の最短パスのみを見つけることであるように見えます。

何か案は?現在、グラフ内のすべてのノードでDFSを実行することを検討していますが、これは最適とは言えないようです。

4

1 に答える 1

0

DFSが最適ではないというあなたの考えの背後にある理由がわかりません。実際、ここでは DFS が明らかに最適です。

グラフをトラバースし、分岐をこの分岐でまだ訪れていない頂点のみに制限すると、DFS ツリーのノードの総数は、開始頂点から他のすべての頂点への単純なパスの数に等しくなります。頂点。これらのパスはすべて出力の一部であるため、複雑さを出力のサイズ以下に減らすことはできないため、アルゴリズムを大幅に改善することはできません。

問題が何であるか、または使用しているアルゴリズムに関係なく、階乗量のデータを多項式時間で出力する方法はありません。

于 2013-05-27T11:58:28.000 に答える