この記事はWeChatの公開アカウント「Beta Learns JAVA」から転載したもので、著者はSilently9527です。この記事を転載する場合は、Beta Learning JAVA パブリック アカウントにお問い合わせください。 序文この記事から、グラフ関連のアルゴリズムを一緒に学習します。グラフ コンピューティングには、ガベージ コレクターのマーク アンド スイープ アルゴリズム、マップ上のパスの最短距離、トポロジカル ソートなど、非常に実用的なアルゴリズムが多数あります。これらのアルゴリズムを学習する前に、まずグラフの基本的な定義と、グラフを表すために使用されるデータ構造を理解する必要があります。この記事では、無向グラフから始めます。 グラフの定義グラフ: 頂点の集合と、2 つの順序を接続できる順序の集合で構成されます。 2 つの頂点を結ぶ辺には方向がなく、このようなグラフは無向グラフと呼ばれます。 グラフ用語同じ辺で接続された 2 つの頂点は隣接していると呼ばれます。 頂点の次数とは、この頂点を結ぶ辺の総数です。上図に示すように、頂点1の次数は3です。 頂点をそれ自身に接続する辺は自己ループと呼ばれます。 同じ頂点のペアを結ぶ辺は平行辺と呼ばれる。 他にもたくさんの用語があります。今のところ、この記事で使用する必要のある用語のみをリストします。他の用語については後で説明します。用語が多すぎると覚えるのは簡単ではありません。 グラフの表現方法グラフを表現するために使用されるデータ構造は、主に次の 2 つの要件を指します。
これら 2 つの要件を考慮した後、専門家は次の 3 つの選択方法を提案しました。
無向グラフのAPI定義
無向グラフAPIの実装上記で定義した API を実装するには、3 つのメンバー変数が必要です。v はグラフ内の頂点の数を表し、e はグラフの合計エッジ データを表し、LinkedListQueue 配列は頂点 v の隣接ノードを格納するために使用されます。 コンストラクタは空の隣接リスト配列を初期化する これは無向グラフなので、addEdge メソッドはグラフに v->w エッジと w->v エッジの両方を追加する必要があります。
グラフの一般的なツールと方法グラフデータ構造の実装に基づいて、いくつかのツールと方法を提供することができます。 頂点 v の次数を計算します。頂点の次数は、その頂点に接続されている頂点の数に等しくなります。
すべての頂点の最大次数を計算する
すべての頂点の平均次数を計算します。各辺には 2 つの頂点があるため、グラフ内のすべての頂点の合計次数は辺の 2 倍になります。
グラフ内の自己ループの数を計算します。頂点 v について、v が v の隣接リストにも表示される場合、v には自己ループがあります。無向グラフであるため、各エッジは 2 回記録されます (理解しにくい場合は、グラフの toString を出力して理解することができます)
要約するこの記事では、主にグラフを表現するために使用するデータ構造について学習し、このデータ構造に基づいていくつかの簡単なツールとメソッドを実装します。次の記事では、グラフの最初の検索アルゴリズムである深さ優先検索について学習します。 この記事のすべてのソースコードは、github リポジトリに保存されています: https://github.com/silently9527/JavaCore |
<<: Nvidia の新しいブラック テクノロジーが「Minecraft」のモザイクをリアルな大ヒット作に変える
>>: ElasticSearch はどのようにして TDigest アルゴリズムを使用して数十億のデータのパーセンタイルを計算するのでしょうか?
AI を活用して財務管理や投資を行いたいと考えていますか? [[351941]]好むと好まざるとにか...
[[269295]]ビッグデータダイジェスト制作編纂者:銭天培、胡佳「複雑すぎる!機械学習(ML)...
私たちは職場における技術革命の真っ只中にいます。 1か月ちょっと前に世界の人口の3分の1が隔離された...
[[332234]] AI若手科学者連盟の主導のもと、国内の大学教授15名とビジネス界のAIリーダ...
ビデオ監視はAI導入の注目分野だが、新型コロナウイルス感染症のパンデミックにより、公衆衛生への対応を...
AI がリーダーシップ能力を強化できるとしたらどうでしょうか? チームをより深く理解し、チームのニー...
スマートホーム テクノロジーは、家電製品、ホーム セキュリティ、照明、エンターテイメントを強化します...
ビッグデータ技術が今や世界の主要なマーケティングツールの 1 つになっていることは周知の事実です。 ...
ディープラーニングは機械学習アルゴリズムのサブクラスであり、より複雑であることが特徴です。したがって...
IT Homeは9月10日、マイクロソフトが、オフラインの会議室に中央制御のオーディオデバイスを設置...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
優れた機械学習研究者になるために必要な資質は何でしょうか? 強力なコーディングスキルでしょうか? そ...
台湾メディアiThome.com.twによると、Googleは2018年のACMマルチメディアカンフ...