このブログは、漠然としたやり方ではなく、コンセプトの要点を理解したい開発者を対象としています。この記事ではグラフのデータ構造を理解します。始めましょう。
グラフは、エッジとノードという 2 つのコンポーネントを持つ非線形データ構造です。
ノードは: -
エッジは:-
方法は 2 つあります:
隣接行列は、グラフのデータ構造を表す 2 次元行列です。行と列はノードを表し、行列の値はエッジを表します。
上の画像では、4 つのノードがエッジで接続されています。ノード A はすべてのノードに接続されているため、A (行または列) が他のノードの行または列と交差するセルに値が 1 として追加されます。ノード B はノード A にのみ接続されており、ノード B がノード A と交差するセルの値は 1 になり、他のセルの値は 0 になります。
隣接する行列のエッジを追加または削除するための時間計算量は O(1) です。次の場合に使用できます: -
隣接リスト は、複数のリンクされたリストまたは配列を使用してグラフを保存しています。行はノードを表し (下の画像を確認してください)、行に存在する値は隣接ノードを表します。
上の画像には 5 つのノードがあります。ノード A はノード B とノード D に接続されているため、最初の配列にはこれらの値が含まれています。同様に、ノード B はノード A、ノード C、ノード D、およびノード E に接続されているため、2 番目の配列にはこれらのノードが含まれます。
エッジの取得または削除の時間計算量は O(n)、エッジの追加の時間計算量は O(1) です。隣接リストは次の場合に使用できます: -
グラフ データ構造の一般的な例の 1 つは次のとおりです。サッカーの分野では、各プレーヤーはノードと見なされ、それらの相互作用はエッジを表します。
グラフは、次のような前の例と同様のシナリオで使用されます。 -
以上がグラフのデータ構造の概要はこちらからご覧ください...の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。