無向グラフでエッジ分離パスのセットを見つけるアルゴリズムがあります。
グラフ内のすべてのエッジのリストから始めます
リストに使用可能なエッジがまだある間に、深さ/幅優先検索を実行してパスを見つけます。パスが見つかった場合は、それを保存し、リストとグラフの両方からエッジを削除して、パス カウンターをインクリメントします。
リストから最初に使用可能なエッジを削除し、それを現在のパスに指定します
現在のパスを保存されたエッジのリストと照合してください
有効なエッジが一致しない場合、パスは終了します
使用可能なエッジが現在のパスを拡張できる場合は、それを現在のパスに追加し、エッジ リストから削除してから、現在のパスの拡張を試み続けます。
2 と 3 は O(E(V+E) + E) 時間で実行されると思います。
- 幅/深さの最初の検索は O(V+E) 時間で実行されます
- 検索はリスト内の E エッジで実行されます
- リストとグラフからの E エッジの削除
アルゴリズムの後半部分は、エッジ リストの反復処理に 2 つのループが必要なため、O(E^2) 時間で実行されます。
したがって、最終的な最悪のケースは O(E(V+E)+ E^2+E)=O(EV+2E^2+E) です。
私は正しいですか?