学問的に言えば、データ構造ツリーとグラフの本質的な違いは何ですか?ツリーベースの検索とグラフベースの検索はどうですか?
ツリーは、グラフの制限された形式です。
ツリーには方向(親/子関係)があり、サイクルは含まれません。これらは、有向非巡回グラフ(またはDAG)のカテゴリに適合します。したがって、ツリーはDAGであり、子には1つの親しか持てないという制限があります。
指摘する重要なことの1つは、ツリーは再帰的なデータ構造ではないことです。上記の制限のため、再帰的なデータ構造として実装することはできません。ただし、通常は再帰的ではないDAG実装も使用できます。私が好むTree実装は、集中マップ表現であり、非再帰的です。
グラフは通常、検索ブレス優先または深さ優先です。同じことがツリーにも当てはまります。
説明する代わりに、写真で見せることを好みます。
リアルタイムのツリー
実生活で使用するグラフ
はい、マップはグラフデータ構造として視覚化できます。
このようにそれらを見ると、生活が楽になります。ツリーは、各ノードに親が1つしかないことがわかっている場所で使用されます。ただし、グラフには複数の先行がある場合があります(通常、用語の親はグラフには使用されません)。
現実の世界では、グラフを使用してほとんど何でも表すことができます。たとえば、地図を使用しました。各都市をノードと見なす場合、複数のポイントから到達できます。このノードにつながるポイントは先行ノードと呼ばれ、このノードにつながるポイントは後続ノードと呼ばれます。
電気回路図、家の計画、コンピューターネットワーク、または河川システムは、グラフの他のいくつかの例です。多くの実世界の例は、グラフと見なすことができます。
テクニカルダイアグラムは次のようになります
ツリー:
グラフ:
以下のリンクを必ず参照してください。それらは、ツリーとグラフに関するほとんどすべての質問に答えます。
参照:
ツリーでは、各ノード(ルートノードを除く)には、ちょうど1つの先行ノードと1つまたは2つの後続ノードがあります。 In-order、Pre-order、Post-order、およびBreadth Firstのトラバーサルを使用してトラバースできます。ツリーは、サイクルを持たない特別な種類のグラフであり、DAG(Directed Acyclic Graph)として知られています。ツリーは階層モデルです。
グラフでは、各ノードに1つ以上の先行ノードと後続ノードがあります。グラフは、深さ優先検索(DFS)および幅優先検索(BFS)アルゴリズムを使用して走査されます。グラフにはサイクルがあるため、ツリーよりも複雑です。グラフはネットワークモデルです。グラフには、有向グラフと無向グラフの2種類があります。
Treeは、グラフの特別な形式、つまり最小接続グラフであり、任意の2つの頂点間に1つのパスのみがあります。
グラフには複数のパスが存在する可能性があります。つまり、グラフはノード間に単方向または双方向のパス(エッジ)を持つことができます
また、詳細を確認できます: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
ツリーは明らかです。ツリーは、子を持つノードで構成される再帰的なデータ構造です。
マップ(別名辞書)はキー/値のペアです。マップにキーを与えると、関連付けられた値が返されます。
マップはツリーを使用して実装できますが、混乱しないようにしてください。
更新:「マップ」と「グラフ」の混同は非常に紛らわしい。
グラフはツリーよりも複雑です。ツリーは、再帰的な親子関係を意味します。ツリーをトラバースする自然な方法があります:深さ優先、幅優先、レベル順など。
グラフは、ノード間に単方向または双方向のパスを持つことができ、周期的または非周期的などです。グラフはより複雑であると考えます。
まともなデータ構造テキスト(たとえば、「アルゴリズム設計マニュアル」)で大まかな検索を行うと、SOの回答の数よりも多くの優れた情報が得られると思います。受動的なルートを取り、自分で調査を開始しないことをお勧めします。
他の回答は便利ですが、それぞれのプロパティが欠落しています。
無向グラフ、 画像ソース:Wikipedia
有向グラフ、 画像ソース:Wikipedia
有向または無向(グラフのすべてのエッジに適用されます)
ごと Wikipedia :
たとえば、頂点がパーティーの人々を表し、2人の人々が手を振る場合に2つのエッジの間にエッジがある場合、このグラフは無向です。なぜなら、BはAとも手を振る場合にのみ、Bとも手を振ることができるからです。対照的に、人物Aから人物BへのエッジがBを賞賛するAに対応する場合、賞賛は必ずしも往復しないので、このグラフは有向です。
上記のプロパティにはいくつかの重複があります。具体的には、最後の2つのプロパティは、残りのプロパティによって暗示されます。しかし、それらはすべて注目に値します。
ツリーは、次のような有向グラフです。
a)エッジ方向を削除すると、接続され、非周期的になります
- 非循環であるという仮定を削除できます
- 有限である場合、代わりに接続されているという仮定を削除することができます
b)1つを除くすべての頂点、ルート、次数1
c)根の次数が0
- ノードの数が有限である場合、ルートの次数が0であるという仮定、またはルート以外のノードの次数が1であるという仮定のいずれかを削除できます。
参照: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf
数学では、グラフはオブジェクトのセットの表現であり、オブジェクトのいくつかのペアはリンクで接続されています。相互接続されたオブジェクトは、頂点と呼ばれる数学的な抽象化によって表され、いくつかの頂点のペアを接続するリンクはエッジと呼ばれます。[1]通常、グラフは、頂点の点の集合として図式形式で描かれ、エッジの線または曲線で結合されます。グラフは、離散数学の研究対象の1つです。
ツリー内の1つのルートノードと1つの子に対して1つの親のみ。ただし、ルートノードの概念はありません。もう1つの違いは、ツリーは階層モデルですが、グラフはネットワークモデルです。