visual-learning

情報系アルゴリズム インタラクティブ可視化

動的計画法・探索・整列・グラフ・データ構造の典型アルゴリズムを、ブラウザで 1 ステップずつ動かして理解する POC 集。

探索・整列・文字列

探索

二分探索

整列済みデータで探索範囲を毎回半分に切り捨てる O(log n)。

開く →
整列

ソートアルゴリズム可視化

バブル・選択・挿入・マージ・クイックの 5 種を見比べる。

開く →
文字列照合

KMP 文字列照合

部分一致表で、一度照合した文字を見直さずにずらす。

開く →

再帰・分割統治

再帰

ハノイの塔

大問題を同じ形の小問題に帰着する再帰。手数は 2ⁿ−1。

開く →
アルゴリズム

バックトラッキング(Nクイーン/迷路)

盤サイズNを選び

開く →

動的計画法(DP)

1 次元 DP

フィボナッチ:再帰木 vs メモ化

素朴な再帰の指数的な木が、メモ化で線形に枝刈りされる。

開く →
1 次元 DP

コイン問題(最小枚数)

目標金額を作る最小の硬貨枚数。貪欲が最小にならない例も。

開く →
2 次元 DP

グリッド経路数

「上+左」で各マスの通り数が決まる。壁を置いて波及も。

開く →
1 次元 DP

LIS:最長増加部分列

各要素で終わる増加列の長さを積み上げ、最長を復元。

開く →
2 次元 DP

0-1 ナップサック問題

「入れる / 入れない」で DP テーブルが埋まる。経路復元つき。

開く →
2 次元 DP

LCS:最長共通部分列

2 文字列の一致/不一致で表を埋め、右下から経路復元。

開く →
2 次元 DP

編集距離(レーベンシュタイン距離)

挿入・削除・置換の最小回数。実際の編集手順も復元。

開く →
アルゴリズム

木DP(最大独立集合/部分木サイズ)

木をクリックで組み替え

開く →
アルゴリズム

区間DP(行列連鎖積/回文分割)

行列のサイズ列を編集し

開く →
アルゴリズム

ビットDP(巡回セールスマン TSP)

都市を平面に配置し

開く →

グラフ

グラフ

グラフ探索:BFS / DFS

迷路を幅優先・深さ優先で探索。広がり方と最短経路の違い。

開く →
グラフ

トポロジカルソート

依存関係(有向グラフ)から実行順を導く。

開く →
グラフ

ダイクストラ法(最短経路)

重み付きグラフで、近い地点から順に最短距離を確定。

開く →
アルゴリズム

A*探索(ヒューリスティック付き最短経路)

グリッド上で始点/終点/壁をドラッグ配置し

開く →
グラフ

クラスカル法(最小全域木)

辺を安い順に試し、閉路にならなければ採用。

開く →
アルゴリズム

ベルマンフォード法(負の辺と最短経路)

辺の重み(負も可)を編集し

開く →
アルゴリズム

ワーシャルフロイド法(全点対最短経路)

グラフを編集し

開く →

データ構造

データ構造

ハッシュテーブル

ハッシュ関数で置き場所を決め、衝突は鎖でつなぐ。

開く →
データ構造

二分探索木(BST)

「小さければ左・大きければ右」で木が組み上がる。

開く →
データ構造

二分ヒープ

親が子より大きい木。木と配列の両方で sift を見る。

開く →
データ構造

Union-Find(素集合データ構造)

グループの併合と「同じグループか」の高速判定。

開く →
アルゴリズム

トライ木(接頭辞ツリー)

単語を追加すると共通接頭辞を共有しながら枝が伸び

開く →
アルゴリズム

セグメント木(区間和・区間最小)

配列値を編集し

開く →
アルゴリズム

木の回転と平衡(AVL/赤黒木)

値を挿入するたびに高さの偏り(バランス係数)を表示し

開く →

シミュレーション・その他

アルゴリズム

ライフゲーム(セルオートマトン)

格子をクリックで初期配置し

開く →