グラフビジュアライザー

グラフをインタラクティブに作成し、BFS、DFS、Dijkstra、トポロジカルソートなどのアルゴリズムをステップバイステップで可視化できます。

このツールについて

グラフビジュアライザーは、インタラクティブなキャンバス上で有向または無向グラフを構築し、古典的なグラフアルゴリズムをステップバイステップで実行できる無料のブラウザベースツールです。コンピュータサイエンスの学生が探索アルゴリズムを学ぶ場合、依存関係グラフをデバッグする開発者、講義を準備する教育者など、グラフ構造とアルゴリズムをリアルタイムで実験する直感的な方法を提供します。

キャンバスをクリックしてノードを追加し、ソースとターゲットノードを選択してエッジを描画し、有向と無向モードを切り替えることができます。エッジに重みを付けることも可能で、エッジラベルをクリックするだけで重みを変更できます。力指向レイアウトエンジンがノードを自動的に再配置し、視覚的な乱れを減らします。

本ツールは4つの古典的なアルゴリズムをアニメーション付きステップバイステップ再生でサポートします:幅優先探索(BFS)深さ優先探索(DFS)Dijkstraの最短経路アルゴリズム、および有向非循環グラフ用のトポロジカルソート。各ステップで現在のノード、訪問済みセット、キューまたはスタックの内容、距離ラベル(Dijkstraの場合)が表示され、アルゴリズムの進行を追跡できます。

すべての処理はブラウザ内で完全に実行されます。データがサーバーに送信されたり、保存・記録されることはありません。プライベートなネットワークトポロジーや独自の依存関係構造も安全に可視化できます。

使い方

  1. キャンバスの任意の場所をクリックしてノードを追加します。
  2. ノードを選択し、エッジを追加ボタンをクリックしてからターゲットノードをクリックしてエッジを作成します。
  3. 重み付きチェックボックスを有効にし、エッジの重みラベルをクリックして値を変更します。
  4. ドロップダウンで有向無向を切り替えます。
  5. BFS、DFS、Dijkstra、トポロジカルソートを選択し、実行をクリックします。再生一時停止ステップでアニメーションを制御します。
  6. 速度スライダーをドラッグしてアニメーション速度を調整します(100ms~2000ms/ステップ)。
  7. 隣接行列または隣接リストをクリックしてグラフのデータ構造を表示します。
  8. エクスポートでグラフをテキストとしてコピー、インポートで以前エクスポートしたグラフを読み込みます。

人気のグラフアルゴリズム例

すべてのグラフ例を見る →

よくある質問

データは安全ですか?

はい。すべてのグラフ構築とアルゴリズム実行は、JavaScriptを使用してブラウザ内で完全に実行されます。データがサーバーに送信されたり、保存・記録されることはありません。

どのアルゴリズムがサポートされていますか?

現在、4つのアルゴリズムをサポートしています:幅優先探索(BFS)、深さ優先探索(DFS)、Dijkstraの最短経路アルゴリズム(重み付きグラフ用)、トポロジカルソート(有向非循環グラフ用)。各アルゴリズムはステップバイステップの可視化で実行されます。

重み付きグラフを作成できますか?

はい。ツールバーの重み付きチェックボックスをオンにします。有効にすると、すべてのエッジに重みラベルが表示され、クリックして編集できます。デフォルトの重みは1です。Dijkstraアルゴリズムはこれらの重みを使用して最短経路を計算します。

有向グラフと無向グラフの違いは何ですか?

無向グラフでは、エッジに方向がなく、ノードAがBに接続すればBもAに接続します。有向グラフでは、エッジに矢印で示される方向があり、A→BはB→Aを意味しません。トポロジカルソートは有向非循環グラフ(DAG)でのみ動作します。

力指向レイアウトはどのように動作しますか?

自動レイアウトボタンは、ノードを反発する荷電粒子として、エッジをバネとして扱う力指向アルゴリズムを適用します。複数回の反復後、ノードが分散してエッジの交差や重なりを減らし、よりきれいなレイアウトを生成します。

グラフをインポート・エクスポートできますか?

はい。エクスポートをクリックすると、現在のグラフがシンプルなテキスト形式(ノードとエッジごとに1行)でコピーされます。インポートをクリックし、テキストを貼り付けて再度インポートをクリックすると読み込まれます。

グラフプロパティの意味は何ですか?

ノード数とエッジ数はグラフのサイズを示します。連結は、すべてのノードが他のすべてのノードに到達できるかを示します。サイクルありはグラフに循環が含まれているかを示します。二部グラフは、ノードをグループ間のみにエッジがある2つのグループに分割できるかを示します。

関連ツール