ツリーとグラフの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


ツリーとグラフの主な違いは、ツリーが木構造の階層構造でデータを整理するのに対して、グラフはネットワークとしてデータを整理することです。

データ構造とは、データを体系的に整理する方法です。

データ構造には、主に線形データ構造と非線形データ構造の2種類があります。

そして、一般的な非線形データ構造として、ツリーとグラフがあります。

スポンサーリンク

ツリーとは

ツリーとは、データを木に見立てて並べたデータ構造のことです。

ノードは、ツリー内のデータ項目です。

主要なノードはルートであり、他のノードはその子ノードです。

これらのノードはすべて空でない集合に配置され、それぞれがサブツリーとなる。

さらに、ノード間には親子関係が存在する。

1つの親ノードは複数の子ノードを持つことができ、各子ノードに対して親ノードは1つしか存在できない。

Main Difference - Tree vs Graph

木に関する重要な用語は次のとおりです。

上記のツリーでは、これらの特徴や例を見ることができる。

ルートノードとは、ツリー内の最上位のデータ項目です。

上の画像では、要素8がルートノードです。

エッジは、ノード間の接続に役立つ。

例えば、上のツリーでは、8と3、8と10がエッジで結ばれている。

親ノードとは、ルートノード以外のノードで、エッジによって上方に接続されるノードのことである

例えば、3は1と6の親ノードです。

同様に、6 は 4 と 7 の親ノードです。

子ノードとは、エッジによって下方向に接続されるノードです。

たとえば、4 と 7 は 6 の子ノードです。

葉ノードとは、子ノードを持たないノードのことである

上の木では、1, 4, 7, 13 がリーフノードです。

サブツリーは、ノードの子孫です。

例えば、ルートノード(8)の左側で、3から始まる部分がサブツリーです。

同様に、ルートノード(10)から始まる右側のセクションはサブツリーです。

レベルは、ノードの世代を表す。

例として、ルートノードはレベル0に属する。

3と10はレベル1に属し、以下同様です。

さらに、木には大きく分けて2分木と2分探索木があります。

2分木では、各ノードは最大2個の子ノードを持つことができる。

二分探索木は、順序付き二分木です。

グラフとは

グラフとは、オブジェクトの集合を絵で表現したデータ構造で、いくつかのオブジェクトのペアをリンクでつないだものです。

通常、グラフはネットワークを表現するのに役立つ。

グラフに関連する重要な用語は以下の通りです。

頂点はオブジェクトまたはデータ項目です。

円はそれらを表す。

上のグラフでは、A,B,C,Dが頂点です。

頂点はV = {A,B,C,D}と書くこともできる。

エッジは、頂点と頂点を結ぶリンクです。

例えば、上のエッジは、AとBの頂点、BとDの頂点などを結んでいます。

エッジはE = {AB, BC, BD, DC}と書くこともできる。

経路は、目的地のノードに到達するためにたどるべきノードの順序を表す。

例えば、ABDは頂点AからDへの経路を表す。

2つのノードがエッジでつながっているとき、そのノードは隣接ノードとなる。

例えば、AとBは隣接ノードです。

同様に、BとDは隣接ノードです。

グラフに対して行える主な操作は、頂点の追加、辺の追加、頂点の表示です。

グラフには主に有向グラフと無向グラフの2種類があります。

グラフが順序のある頂点の組を含むとき有向グラフとなり、順序のない頂点の組を含むとき無向グラフとなります。

ツリーとグラフの違い

定義

木はルートと親ノードを持つ子ノードのサブツリーからなる階層的な木構造を模したデータ構造であるのに対し、グラフはエッジで結ばれた頂点の集まりからなるデータ構造です。

したがって、これがツリーとグラフの根本的な違いです。

タイプ

また、木は大きく分けて2分木と2分探索木があります。

一方、グラフは大きく分けて有向グラフと無向グラフの2種類があります。

データ表現

木はデータを木構造で階層的に表現し、グラフはデータをネットワークに近い形で表現する。

したがって、これがツリーとグラフの大きな違いです。

ルートノード

さらに、木とグラフのもう一つの大きな違いは、木にはルートノードがあるのに対して、グラフにはルートノードがないことである

ループ

さらに、ループの有無も木とグラフの違いのひとつです。

木にはループがないが、グラフにはループがある場合があります。

複雑さ

さらに、グラフは木よりも複雑です。

結論

木とグラフは2つの非線形データ構造です。

木とグラフの主な違いは、木が木構造の階層構造でデータを整理するのに対し、グラフはネットワークとしてデータを整理する点です。

タイトルとURLをコピーしました