人生の意味8.29

問題の意味

\(N- \)ポイント\(m個\)グラフの自由縁、無向グラフの操作、図形生成森の、すなわち、除去する(すなわち、設定されたすべての接続されたブロックにまたがります)。グラフのエッジは無向グラフを削除されるまで動作し続けます。それぞれの側では、出力が、彼は最初の数回で除去しました。

1の出力に複数のソリューションがある場合


ソリューション

まず、我々は良いと思うが持っている\(O(MN)\)暴力

各エッジ、各スパニングツリー動作を横断:具体的には、互いに素なセット開放するたびにある、ブロックの側の二つの端点が同じ通信でない場合、ユニコムを入れ、そして側からの側にされています削除し、そうでない場合はエッジをスキップ

私たちは、暴力のためのアルゴリズムを最適化する方法を検討します

我々は、互いに素なセット、それぞれの側に対して1つの、いくつかの場合に開く場合\(1 \)番号及び通信ブロックに接続され、その端部の焦点を確認し、我々だけ\(2 \)番号及び調査はように、インサートを重視し、...

上記の方法により、我々は、各操作後に形成されたスパニング森を見つけることができます

しかし、我々は、このアルゴリズムは、オリジナルに比べて、だけでなく、時間の複雑さ、スペースの複雑さを変更しませんが、より劣るとなっていることがわかります

しかし、アルゴリズムのアイデアはいくつかの啓発があります

私たちは、プロパティを見つけることができます。一方では、それがで可能ならば\(私は\)の解像度とインサートチェックを集中し、それはも可能である(I + 1 ... N \) \の番号とインサートを集中チェック

これは矛盾によって証明することができ、それはまた、暗黙の了解することができ

今後、このような性質を発見し、我々は最初の二つは互いに素セットの数に挿入することができます分離することができます

このように、時間の複雑さによって\(O(MN)\)するために最適化された\(O(MlogM)\)

しかし、まだスペースの複雑さを余裕がありません

この時点では、ハッシュテーブルでスペースを最適化することができます

我々は、一緒に行数設定を互いに素な複数のラインとして見られる(N- \)\行列の列

各マトリックスの座標\((x、y)は、\ ) の特定の番号にマップ

私たちにアップ動作の途中で挿入します\(2M \)異なる点を

だから、唯一の互いに素-設定開く必要があります\(O(2M)\)にスペースを

動的ポイントを開くためのポインタ:サン作業もありますか?しかし、最初のない非常に良いポインタがそれをつぶやい


コード

おすすめ

転載: www.cnblogs.com/VeniVidiVici/p/11432037.html