この記事は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 アルゴリズムを使用して数十億のデータのパーセンタイルを計算するのでしょうか?
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
Lenovo Tech World 2020 イノベーション テクノロジー カンファレンスが本日開...
2月20日、Googleの倫理AIチームの創設者であるミッチェル氏はTwitterに「私は解雇され...
中国における人工知能熱の高まりは、テクノロジーとビジネスによって推進されているだけでなく、政府の推進...
ディープラーニングは機械学習アルゴリズムのサブクラスであり、より複雑であることが特徴です。したがって...
今日のデジタル マーケティング担当者にとっての課題は、共感を得るためにすべてのプラットフォームでブラ...
翻訳者 |ブガッティレビュー | Chonglou人間の動きが複雑で、環境によって見た目が微妙に異な...
現在、大規模言語モデル (LLM) は、NLP の分野におけるさまざまな下流タスクの処理において優れ...
近年、生成的事前トレーニング済みモデル (GPT など) の台頭により、自然言語処理の分野に革命が起...
今日は対称暗号化アルゴリズムの重要な問題についてお話ししましょう。暗号化の基本的な概念に精通していな...
人工知能 (AI) と機械学習 (ML) は、データセンター分野の重要なテクノロジーとなっています。...
多くの企業が GPU コンピューティング能力の開発を組み合わせて、自社の機械学習の問題に対するソリュ...
WAVE SUMMIT+ ディープラーニング開発者カンファレンス 2023 が 12 月 28 日...