始める前に、はい、これは宿題です。過去 14 時間、この問題を解決するためにできる限りの努力をしなければ、ここに投稿することはなかったでしょう。
問題は次のとおりです。線形だけでなく、O(V)時間で、接続された無向グラフからエッジを切断せずに削除できるかどうかを確認したい。
私がこれまでに到達したこと:
グラフを切断せずにサイクル エッジを削除できるので、グラフにサイクルがあるかどうかを確認するだけです。使用できる方法は 2 つあります。1 つは DFS で、バック エッジがあるかどうかを確認します。もう 1 つは、Vs と Es をカウントし、|E| かどうかをチェックすることです。= |V| - 1、それが true の場合、グラフはツリーであり、切断せずに削除できるノードはありません。
前のアプローチはどちらも問題を解決しますが、どちらも O(|E|+|V|) を必要とし、本にはもっと速い方法があると書かれています (それはおそらく貪欲なアプローチです)。
ヒントをいただけますか?
編集:より具体的には、これは私の質問です。接続されたグラフ G=(V,E) が与えられた場合、E の一部のエッジ e を削除して、結果のグラフを接続したままにすることはできますか?