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