JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで学ぶグラフ走査(グラフ探索)の基本

グラフ走査とは

グラフ走査(グラフ探索とも呼ばれます)とは、グラフに含まれるすべての頂点(ノード)を訪問し、確認や更新を行う処理のことです。グラフはソーシャルネットワーク、地図上の経路、Webページ間のリンクなど、さまざまなデータ構造を表現するために使われており、その全頂点を効率よく巡回するアルゴリズムは、コンピュータサイエンスにおいて非常に重要な概念となっています。


走査の順序による分類

グラフ走査は、頂点を訪れる「順序」によって分類されます。代表的な手法には以下の2つがあります。

深さ優先探索(DFS: Depth-First Search)

ある頂点から出発し、行き止まりに達するまで可能な限り深く進んでいく方式です。再帰処理やスタックを使って実装されることが多く、木構造の走査や経路の列挙などに適しています。

幅優先探索(BFS: Breadth-First Search)

出発した頂点から近い順に、層ごとに頂点を訪問していく方式です。キューを使って実装され、最短経路の探索や距離計算などに広く活用されています。


まとめ

グラフ走査は、どの順序で頂点を訪問するかという観点から分類され、それぞれの特性に応じて用途が異なります。JavaScriptでは配列やオブジェクトを用いてグラフを表現し、DFSやBFSを簡潔に実装できるため、アルゴリズム学習の題材としても最適です。

  1. JavaScriptのWeakSetとは?特徴と主要メソッド、サンプルコードをわかりやすく解説

    JavaScriptのWeakSet(ウィークセット)は、オブジェクトを格納するためのコレクションです。Setと同様に、同じオブジェクトを重複して保存することはできません。WeakSetの主な特徴弱い参照で保持する:WeakSet内のオブジェクトへの参照が他に存在しなくなると、ガベージコレクションによって自動的にメモリから解放されます。そのため、メモリリークを防ぎたい場面で役立ちます。オブジェクトのみ格納可能:数値や文字列などのプリミティブ値は追加できません。列挙できない:Setのようなsizeプロパティや反復処理の仕組みを持たず、格納されている要素の一覧を取得することはできません。WeakS

  2. グラフデータ構造と走査(トラバーサル)アルゴリズムの基礎

    この記事では、グラフデータ構造とは何か、そしてその走査(トラバーサル)アルゴリズムについて詳しく解説します。グラフは非線形データ構造の一種であり、いくつかのノード(頂点)とそれらを結ぶ辺(エッジ)で構成されます。辺には有向と無向の2種類があります。グラフは一般に G(V, E) の形式で表現できます。ここで V は頂点の集合、E は辺の集合を表します。例えば、下図のグラフは G({A, B, C, D, E}, {(A, B), (B, D), (D, E), (B, C), (C, A)}) と表すことができます。グラフの走査アルゴリズムには主に2種類あります。それが「幅優先探索(Bread