[CS]データ構造(Graph、Tree&BST)基礎日-26
Graph
複雑なネットワークは一般的にグラフィックと呼ばれ、数学で言うグラフィックではありません.
複数のポイント間の複雑な接続を表すデータ構造.直接関係がある場合は、2つの点の間に接続線があります.
Graphの使用例
ポータルサイトの検索エンジン、SNS上の人間関係、ナビゲーションで使用されるデータ構造はGraphです.この3つの頂点には多くの頂点があり、それらの関係は直線です.
let isConnected = {
seoul: {
busan: true,
daegu: true
},
busan: {
seoul: true,
daegu: true
}
daegu: {
seoul: true,
busan: true
}
}
console.log(isConnected.seoul.busan) // true
console.log(isConnected.busan.seoul) // true
上記のコードでは、ナビゲーションがソウルから釜山までの経路を出力し、釜山からソウルまでの経路を出力することができます.(数百万のデータを追加すると、通常のナビゲーションと同様に、距離、時間などを幹線でマークできます.)
グラフィック用語のクリーンアップ
(隣接比重が低い)
隣接行列
2つの頂点の間に関係があるかどうかを判断すると、
りんせつひょう
隣接リストは、リスト内の各頂点がどの頂点に隣接しているかを示します.
各頂点には、隣接する別の頂点を含むリストがあります.
隣接リストを使用する利点はありますが、優先度に関連するデータ構造を処理する必要がある場合は、キューとスタックを使用するのが合理的です.
それでも、隣接するリストを使用する理由は、メモリの有効な使用です.
Tree
木の枝が1本の根から周囲に伸びる形状を木構造と呼ぶ一方向図形の構造.
木の構造は、木を逆さにしたようです.
データが一方向に関連付けられた階層データ構造.非線形構造で、1つのデータの下に複数のデータがあります.ツリー構造は下にのみ伸びているため、ループはありません.
ツリー構造は、(Root)と呼ばれる頂点データから始まり、複数のデータを1つの直線(edge)に接続します.各データはノード(Node)と呼ばれ、2つのノードが最上位レベルに接続されると親子関係になります.
上記の例では、FをBおよびGの親ノード、BおよびGをFの子ノードと呼ぶ.A,C,E,Hのようなサブノードがないことをリーフノードと呼ぶ.
クリーンアップ用語
ツリー構造の深さ(depth)
ツリー構造のルートノードから特定のノードまでの深さを表すことができます.ルートノードの深さは0で、地面のようです.B,Gの深さは1である.A,D,Iの深さは2である.
ツリー構造のレベル(level)
ツリー構造内の同じ深さのノードを組み合わせてレベル(level)として表すことができます.深さが0の場合はlevel 1、深さが1の場合はlevel 2です.同じレベルで並べられたノードを兄弟ノードと呼びます.
サブツリー
ツリー構造のRootから突き出ており、小さなツリー構造を持つものをサブツリーと呼ぶ.B、A、Dを組み合わせてサブツリーとして使用できます.
ツリー内の線の使用
最も代表的な例は、コンピュータのディレクトリ構造です.プログラムまたはファイルを検索すると、フォルダに入り、別のフォルダに移動して必要なファイルを検索します.
すべてのフォルダはルートフォルダから始まります.
Binary Search Tree (BST)
ツリー構造は、便利な構造を示すのではなく、効率的なナビゲーションに使用されます.
アンバランスなツリーは、ナビゲーションに時間がかかる可能性があるため、解決する必要がある問題です.
Tree traversal
特定の目的のために、ツリー内の各ノードを一度に巡ることをツリーループと呼ぶ.
ツリー内の3番のすべてのノード(1~10の整数)を検索する場合は、ツリーの一例を巡ります.
ツリーの遍歴方法
フォワードツアー
ルートノードから、左側のノードを順にブラウズし、左側のノードのナビゲーションが終了した後、右側のノードをナビゲートします.
中尉巡り
根を真ん中に置いて巡回します.左端のノードから巡回を開始し、左端ノードのルートノードに対する巡回が終了した後、右端ノードに移動します.
後巡
ルートディレクトリの最後に巡回します.最左端のノードから,ルートノードを通らずに右に移動し,最後にルートノード上を巡回する.
BFS / DFS
グラフィックをナビゲートする目的は、1つの頂点から始まり、グラフィック内のすべての頂点に1つずつアクセスすることです.グラフィックのデータはアレイのように整列しません.必要な資料を検索するには、1つずつアクセスする必要があります.
グラフィック内のすべての頂点のナビゲーション方法には、さまざまな方法があります.その中の2つの典型的な方法はDFSとBFSを紹介する.ただ、データを閲覧する順序が違うだけで、すべてのデータは同じです.
BFS
一番近い頂点からナビゲートを開始します.頂点と最短パスに順番にアクセスできます.
DFS
1つのパスの最後に移動し、次のパスに移動します.パスの表示を続け、頂点から次のパスに移動します.
(最近のパスを表示するよりも、正しいパスに移動し、他のパスを検索し続けます.)
Reference
この問題について([CS]データ構造(Graph、Tree&BST)基礎日-26), 我々は、より多くの情報をここで見つけました https://velog.io/@cptkuk91/CS47テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol