この記事はWeChatの公開アカウント「Beta Learns JAVA」から転載したもので、著者はSilently9527です。この記事を転載する場合は、Beta Learning JAVA パブリック アカウントにお問い合わせください。 前回の記事では、深さ優先探索と、深さ優先探索を使用してグラフ内のパスを見つける方法について学習しました。この記事では、深さ優先探索アルゴリズムの他の適用シナリオについて引き続き学習します。 接続されたコンポーネントグラフからすべての接続コンポーネントを見つけることも、深さ優先探索の応用シナリオです。連結成分とは何でしょうか? この定義は、前回の記事「ソーシャル ネットワークで 2 人の人が友人であるかどうかを検出する方法 (結合検索アルゴリズム)」で説明しました。 この記事では、結合検索アルゴリズムによって接続性チェックを実装します。この記事では、深さ優先探索法を使用して、グラフ内のすべての接続コンポーネントを検索します。 接続コンポーネントのAPI定義
接続コンポーネントのAPI実装 以前と同様に、頂点をスキャンしない場合はマークする必要があるため、marked[]配列を定義する必要があります。 グラフ内の連結成分の総数を数えるには、変数countを定義する必要がある。 2 つの頂点が接続されているかどうかを判断するには、接続されている頂点の対応する識別値を同じ値として記録する必要があります。接続メソッドを呼び出すときに、2 つの頂点の識別値を直接取り出して比較します。同じ場合は接続されており、そうでない場合は接続されていません。 使用する識別値はカウント値です。各頂点には識別値を格納する必要があるため、ids[]配列も必要です。
ユニットテスト このようなグラフを構築すると、連結成分の総数は3になるはずです。
深さ優先探索に基づく接続性チェックは、理論的には、以前に実装された和集合検索アルゴリズムよりも高速です。これは、深さ優先探索で実装された接続性チェックは一定時間で完了することが保証されるのに対し、和集合検索アルゴリズムではそれができないためです。 しかし、union-find にも独自の利点があります。グラフを完全に構築して表現する必要がなく、さらに重要なことに、union-find アルゴリズムは動的にノードを追加します。 無向グラフにサイクルがあるかどうかを確認する実装の複雑さを軽減するために、グラフには自己ループや平行エッジが存在しないものと仮定します。 頂点 v から始まるループがある場合、頂点 v から始まる接続コンポーネント内の頂点の隣接頂点が v であることを意味し、検索プロセス中に頂点 v が必ず再び発生します。 実装のアイデア:
メソッド dfs のパラメーター v は検索する頂点を表し、pV は v に到達する頂点を表します。したがって、v の隣接リストにマークされた頂点があり、この頂点が v に到達する頂点と等しくない場合、グラフにサイクルが存在します。 無向グラフが二部グラフであるかどうかを確認する二部グラフとは何ですか? グラフ内の各辺は、以下に示すように、異なる部分に属する頂点を接続します。 赤いノードは 1 つのセットを表し、白いノードは別のセットを表し、各エッジで接続された 2 つの頂点は異なるセットに属します。 実際の例で理解するのは簡単です。映画と俳優の関係。映画は頂点であり、俳優は頂点です。映画と俳優の間には直接のエッジはなく、俳優の間にも直接のエッジはありません。これは二部グラフです。
この記事のすべてのソースコードは、github リポジトリに保存されています: https://github.com/silently9527/JavaCore |
<<: 新しい3Dバイオプリンティング技術は皮膚と骨の損傷を同時に修復できる
>>: チューリング賞受賞者:人工知能を実装したものは、もはや人工知能とは呼ばれない
先月は、ディープラーニングにおける「Hello World」であるMNIST画像認識を中心に、畳み込...
中国の人工知能分野の二大大手であるMegvii TechnologyとSenseTime Techn...
人工知能、宇宙、そしてあらゆるものを計算的に考えるにはどうすればよいでしょうか?最近、有名なイギリス...
現代の産業技術の発展により、私たちの生活は大きく改善されました。新しい家具が次々と登場しています。キ...
北京時間6月15日朝のニュースで、事情に詳しい関係者は、グーグルがマイクロソフトの新しい検索エンジン...
ChatGPT のコード インタープリターは、自分のコンピューター上で実行できます。ちょうど今、ある...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
ジャクソン氏は過去 8 年間にわたり、このプロジェクトを成熟させるために、社内の他の幹部と協力してき...
数日前、Stack Overflow コミュニティのトラフィックが大幅に減少したというニュースがあり...
年末です。大学生は期末試験の週で、労働者は KPI の達成に急いでいます。期限のない年末(DDL)は...