この記事は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) は、建物の管理と制御の方法に革命をもたらし、これまで以上に効率的でコスト効率の高...
自動運転は現在、自動車産業の主要な発展方向の一つとなり、社会全体が注目する技術テーマとなっています。...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
1年前の今日、ChatGPTが誕生し、人工知能の新しい時代が到来したように思えました。 ChatG...
マシンビジョンとは、人間の目の代わりに機械を使って物事を測定・判断し、その判断結果に基づいて現場の設...
指が背中をゆっくりと優しくなぞり、背骨に沿って上へ移動し、そしてゆっくりと止まるところを想像してくだ...
[[246038]]柔軟で多様な Python ライブラリは、データ分析とデータマイニングのための強...
AI とエッジ コンピューティングの融合により、多くの業界が変革されるでしょう。移植性を向上させ、モ...
「大規模なシステムを構築するには、体系的な思考、実践的なスキル、システム構築への愛情を持った人材が...
今朝(8日)、第13期全国人民代表大会第5回会議第二回全体会議が開催され、最高人民法院と最高人民検察...
この問題はネットワークフロー理論において非常に基本的なものです。 「新しいアルゴリズムは驚くほど高速...
アレックス・オメイヤー翻訳者 | 陳俊レビュー | Chonglou人工知能(AI)の急速な進化と発...
画像、音声認識、自然言語処理、強化学習などの多くの技術分野において、ディープラーニングは非常に効果的...