この記事は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 アルゴリズムを使用して数十億のデータのパーセンタイルを計算するのでしょうか?
テクノロジー業界は歴史的に平均給与が最も高い業界の一つであり、リストのトップにランクされることも少な...
1 年以内に会社を設立し、資金を調達し、チップを購入し、Gemini pro/GPT 3.5 に追...
[[341638]] [51CTO.com クイック翻訳] 機械学習を迅速に実装したい組織は、新興の...
[[419760]] 「クラブアップルの木は、その赤みがかった色にもかかわらず、霧雨の中にひとりぼっ...
[[280794]]いくつかの困難や障害にもかかわらず、多くの企業がデジタル変革プロジェクトで大きな...
【51CTO.comオリジナル記事】 COVID -19の流行がもたらした厳しい課題に直面して、科...
科学者たちはすでに宇宙論の分野で大量のデータを処理するためにスーパーコンピュータを使用することに慣れ...
AIテキスト読み上げ会社ElevenLabsは10月11日、火曜日にAI Dubbingを発表した。...
人体神経放射線分野の目標は、2D 人体画像から高品質の 3D デジタル人間を復元して駆動し、それによ...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
トップ10のアルゴリズムを発明したアルゴリズムの巨匠たち1. 1946年のモンテカルロ法[1946年...
過去1年を振り返ると、人工知能の発展は繁栄し、多彩なものであったと言えます。人工知能が3回連続で政府...
[51CTO.com 北京レポート] 2017年8月23日から27日まで、2017年世界ロボット大会...
AIにはさまざまな手法があります。私たちがよく知っている「5大流派」に加え、この記事の著者はAIのさ...