これが解決策かどうかはわかりませんが、解決策です(ブルートフォースのグラフバージョンだと思います):
- クラスカルまたはプリムのアルゴリズムを使用して、グラフの MST を見つけます。これは O(E log V) である必要があります。
- すべてのスパニング ツリーを生成します。これは で実行できます
O(Elog(V) + V + n) for n = number of spanning trees
。2 分間の Google で理解しているように、おそらく改善される可能性があります。
- ステップ 2 で生成されたリストを、ツリーの重みが MST の重みと等しくなるようにフィルタリングします。これは、ステップ 2 で生成されたツリーの数として、n に対して O(n) である必要があります。
注: これは怠惰に行ってください。可能なすべてのツリーを生成してから結果をフィルタリングすると、O(V^2) メモリが必要になり、多項式スペースの要件は悪です-ツリーを生成し、その重みを調べます。MST の場合は結果リストに追加し、そうでない場合は破棄します-破棄します.
全体的な時間の複雑さ:O(Elog(V) + V + n) for G(V,E) with n spanning trees