kobo-ideas / 008

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

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

動的計画法(DP)

1 次元 DP

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

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

開く →
1 次元 DP

コイン問題(最小枚数)

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

開く →
1 次元 DP

LIS:最長増加部分列

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

開く →
2 次元 DP

0-1 ナップサック問題

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

開く →
2 次元 DP

グリッド経路数

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

開く →
2 次元 DP

LCS:最長共通部分列

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

開く →
2 次元 DP

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

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

開く →

探索・整列・文字列

整列

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

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

開く →
探索

二分探索

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

開く →
文字列照合

KMP 文字列照合

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

開く →

グラフ

グラフ

グラフ探索:BFS / DFS

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

開く →
グラフ

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

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

開く →
グラフ

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

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

開く →
グラフ

トポロジカルソート

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

開く →

データ構造

データ構造

二分探索木(BST)

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

開く →
データ構造

二分ヒープ

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

開く →
データ構造

ハッシュテーブル

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

開く →
データ構造

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

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

開く →

再帰・分割統治

再帰

ハノイの塔

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

開く →