グラフとは?
Coddyの「グラフ - データ構造シリーズ #9」コースのレッスン 2/14。
グラフは、モノの集合とそれらの間のつながりをモデル化したデータ構造です。モノは頂点(またはノード)と呼ばれ、つながりはエッジ(または辺)と呼ばれます。
グラフはいたるところに存在します。ソーシャルネットワークはグラフです(人は頂点、友だち関係はエッジ)。道路地図もグラフです(交差点は頂点、通りはエッジ)。インターネット、依存関係ツリー、ゲームのマップもすべてグラフです。
このコースでは、無向グラフに焦点を当てます。エッジが u と v をつないでいる場合、v も u につながっています。方向はありません。物事をシンプルにするために、頂点のキーとして整数を使用します。
内部的には、グラフを隣接リストとして保存します。これは、各頂点からその隣接頂点のリストへのマップです。これにより、頂点の隣接頂点の検索が1回のマップアクセスで可能になり、これはほとんどのグラフアルゴリズムが必要とする動作です。
Graph クラスに構築する操作は以下の通りです:
- addVertex: まだエッジがない新しい頂点を追加します。
- addEdge: 2つの頂点をつなぎます。
- hasEdge: 2つの頂点がつながっているかどうかを確認します。
- getNeighbors: ある頂点の隣接頂点のリストを取得します。
- removeEdge: 2つの頂点の接続を解除します。
- size: グラフにいくつの頂点があるかを数えます。
それでは、Graph クラスを作成しましょう!
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。