Menu
Coddy logo textTech

グラフとは?

Coddyの「グラフ - データ構造シリーズ #9」コースのレッスン 2/14。

グラフは、モノの集合とそれらの間のつながりをモデル化したデータ構造です。モノは頂点(またはノード)と呼ばれ、つながりはエッジ(または辺)と呼ばれます。

グラフはいたるところに存在します。ソーシャルネットワークはグラフです(人は頂点、友だち関係はエッジ)。道路地図もグラフです(交差点は頂点、通りはエッジ)。インターネット、依存関係ツリー、ゲームのマップもすべてグラフです。

このコースでは、無向グラフに焦点を当てます。エッジが uv をつないでいる場合、vu につながっています。方向はありません。物事をシンプルにするために、頂点のキーとして整数を使用します。

内部的には、グラフを隣接リストとして保存します。これは、各頂点からその隣接頂点のリストへのマップです。これにより、頂点の隣接頂点の検索が1回のマップアクセスで可能になり、これはほとんどのグラフアルゴリズムが必要とする動作です。

 

Graph クラスに構築する操作は以下の通りです:

  1. addVertex: まだエッジがない新しい頂点を追加します。
  2. addEdge: 2つの頂点をつなぎます。
  3. hasEdge: 2つの頂点がつながっているかどうかを確認します。
  4. getNeighbors: ある頂点の隣接頂点のリストを取得します。
  5. removeEdge: 2つの頂点の接続を解除します。
  6. size: グラフにいくつの頂点があるかを数えます。

 

それでは、Graph クラスを作成しましょう!

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

グラフ - データ構造シリーズ #9のすべてのレッスン