·割点
カットポイントのコンセプトはよく理解する必要があります。
もしあれば無向グラフでは、頂点を削除し、この図は、(任意の2点の間で相互に到達することができない)通信でなくなった場合、この数字を切断頂点。例えば:
図2の頂点 2、4、5、バリアなど1,6を通過しない後に削除カット
どのようにカットポイントを見つけるには?
各頂点を削除するために、その後、DFSまたはBFSは、マップがまだ接続されているかどうかを確認するには、次の方法があると考えるのは簡単です。あなたが頂点を削除すると、結果の図は、その後、ちょうどそのカットの頂点を削除し、通信されなくなりました。
この方法の時間計算量はO(N(N + M))です。
以下は見つける低複雑解決する方法を。
まず、図から任意のノードがトラバーススパニングツリー、示されるように、頂点番号は丸で囲まれている数字を与えるDFS図を起動する、円の右上頂点の数は、「最初の数が横断したときに呼び出される、アクセスされるかを示しますタイムスタンプ。 "
カットポイントを通過する際に遭遇する、キーがどのようにカット頂点がそれのポイントで特定することですか???
Uの深さ優先トラバーサル(へアクセスする際ポイント2上記、図U(の場合)点2)アクセスポイントの一部として、2つの部分に分割されるが、他の部分は、アクセスポイントではありません。uは、アクセスポイントの残りの部分は、少なくともいずれかの場合にはバックにポイントは、点kを介さずにアクセスされていないされていないと、カットポイントある場合。
基本的な考え方:
uの場合は、リア、図の頂点vに以前にそれがポイントに戻ることができるかどうかのU、V INを経由せずに訪問を判断する方法を訪問しない点は、ありませんか?uがVの父であり、以前に訪れた頂点が祖先です。それは彼の父の先祖も返すことができた後のV Uなしに検出する方法、です。それはあなたが先祖に戻ることができるかどうか、に再びDFS Vですが、Uなしトラバーサル。カットすることはできませんUがポイントです。
そして、親が最小値に戻るには、頂点を通過しない場合に、各頂点をローに記録するために配列を定義「タイムスタンプ。」
頂点uのため、そのように少なくとも一つの頂点V(U息子)は、存在する場合は、低[V]> NUM = [U]は、すなわち、次に点uはポイントカット、祖先を返しません。
・カッティングエッジ
問題に加えて、カットポイントが通信しなくなった、図を図面を削除せずに、すなわちエッジの方向に、(また、ブリッジと呼ばれる)切断エッジを見つけることでもあります。
カッティングエッジを取得する方法は?
単にその上に記号を変更するためのアルゴリズムを求めている点をカット。単に低[V]> = NUM [U]低[V]> NUM [U]へ。
これはなぜでしょうか?
低[V]とNUM [U]等しい表現はまた、父のノードに戻すことができるされ、そして低[V]> NUM [U ] も父親が戻って行くことができないことを示しています。頂点vを祖先に戻ることができない、および他の方法は、彼の父に戻ることができない場合は、このエッジはエッジをカットされたUV。
・演習
羅区P3388 [テンプレート]ポイントカット(トップカット)
3. [テンプレート]トラベルチャンネル(ブリッジ)を介して、運動
--->最近怠惰な、毎日の仕事の多くは、問題が炭素パラチオンの司法試験後の溶液である可能性が高いので、