アルゴリズム学習
視覚化とインタラクティブな実行で、アルゴリズムの動作原理を直感的に理解しよう
視覚化学習
アルゴリズムの各ステップを目で見て理解
インタラクティブ
自分のペースでステップ実行できる
詳細解説
理論から実装まで包括的に学習
学習可能なアルゴリズム
二分探索
探索ソート済み配列から効率的に要素を検索する基本アルゴリズム
バブルソート
ソート隣接する要素を比較して交換を繰り返すシンプルなソートアルゴリズム
線形探索
探索配列の先頭から順次要素を確認して目標値を探すシンプルな探索アルゴリズム
選択ソート
ソート未ソート部分から最小値を見つけて先頭に移動する操作を繰り返すソートアルゴリズム
挿入ソート
ソート配列の各要素を既にソートされた部分の適切な位置に挿入するソートアルゴリズム
クイックソート
ソート分割統治法による効率的なソートアルゴリズム
マージソート
ソート分割統治法による安定なソートアルゴリズム。常にO(n log n)の性能を保証
ヒープソート
ソートヒープデータ構造を利用したインプレースソートアルゴリズム。常にO(n log n)の性能を保証
フィボナッチ数列(再帰)
その他再帰アルゴリズムの代表例。関数が自分自身を呼び出して数列を計算し、指数的計算量の問題を学習
フィボナッチ数列(動的計画法)
動的計画法動的計画法を使用した効率的なフィボナッチ数列の計算。メモ化により再帰版の問題を解決
部分和問題(動的計画法)
動的計画法二次元DPテーブルを使った部分和問題の効率的な解法。配列の部分集合でターゲットの和を作れるかを判定
階乗の計算(再帰)
その他線形再帰アルゴリズムの基本例。数学的定義をそのまま実装し、効率的なO(n)の再帰構造を学習
ハノイの塔(再帰)
分割統治分割統治法による再帰的解法。3つの杭を使って全ての円盤を移動する古典的パズルで、再帰アルゴリズムの美しい応用例
配列の逆順(再帰)
その他再帰による配列の逆順操作。線形再帰パターンで分割統治の考え方を学習し、両端から中央に向かって要素を交換
深さ優先探索(DFS)
グラフグラフや木構造を深く探索するアルゴリズム。可能な限り深く進んでからバックトラックして他の経路を探索
幅優先探索(BFS)
グラフグラフや木構造を幅優先で探索する基本的なアルゴリズム。レベルごとに探索し、最短経路を保証
スタック(基本操作)
データ構造LIFO(Last In, First Out)原理に基づくスタックデータ構造の基本操作。push、pop、peek等の動作を可視化
配列(基本操作)
データ構造インデックスベースのランダムアクセスが可能な配列データ構造の基本操作。CRUD操作と線形検索を可視化
キュー(基本操作)
データ構造FIFO(First In, First Out)原理に基づくキューデータ構造の基本操作。enqueue、dequeue等の動作を可視化
両端キュー(基本操作)
データ構造両端からの追加・削除が可能な双方向キューデータ構造の基本操作。push/pop操作を前後両方向で実行可能
連結リスト(基本操作)
データ構造ノードとポインタで構成される動的データ構造の基本操作。挿入・削除・検索の動作を詳細に可視化
最大公約数(ユークリッドの互除法)
その他紀元前300年から続く古典的なアルゴリズムで二つの整数の最大公約数を効率的に求める手法
最小公倍数(LCM)
その他GCDを利用して二つの整数の最小公倍数を効率的に求める数学的アルゴリズム。分数計算や周期計算に応用
最長共通部分列(LCS)
動的計画法動的計画法を使用して二つの文字列の最長共通部分列を効率的に求める文字列アルゴリズム。DNA解析やテキスト比較に応用
最長増加部分列(LIS)
動的計画法動的計画法を使用して配列から最長の増加部分列を効率的に求める最適化アルゴリズム。株価分析や時系列解析に応用
エラトステネスの篩
その他古代ギリシャの数学者エラトステネスが考案した素数を効率的に列挙するアルゴリズム。暗号学や数論研究の基盤技術
mod計算の基本
その他剰余演算の基本的な性質と高速べき乗計算を学習する数学的アルゴリズム。暗号学とハッシュ関数の基盤技術
繰り返し二乗法
分割統治効率的なべき乗計算を行う分割統治法ベースのアルゴリズム。指数を二進法で分解して計算量を劇的に削減
nCk組み合わせ計算
その他組み合わせ数学の基本的な計算C(n,k)を複数の手法で効率的に実装。確率論と統計学の基盤
ヒープ(優先度付きキュー)
データ構造完全二分木による効率的な優先度管理。最大/最小値の高速取得と動的な優先度更新を実現する応用データ構造
Union-Find(素集合データ構造)
データ構造互いに素な集合の効率的な管理。パス圧縮とランク合併により実用的に定数時間操作を実現する応用データ構造
セグメント木
データ構造完全二分木による範囲クエリと一点更新の効率的な処理。分割統治法の美しい実現による応用データ構造
Fenwick Tree(Binary Indexed Tree)
データ構造ビット演算による累積和の効率的な計算。lowbit操作で実現する累積和特化の応用データ構造
累積和・差分配列
その他前処理による配列の区間操作を劇的に高速化する重要な技法。区間和クエリを O(1) で処理し、区間更新も効率的に実現
スライディングウィンドウ(尺取り法)
その他配列の連続する部分列を効率的に処理する重要な技法。固定・可変サイズのウィンドウで様々な問題を解決
2 pointer法
その他2つのポインタを使って配列を効率的に処理する重要な技法。Two Sum、回文判定、配列マージなど幅広い応用
ビット全探索
その他ビット演算を活用して効率的に全ての部分集合を探索する重要な技法。部分集合和、ナップサック問題などを解決
next_permutation(順列全列挙)
その他辞書順で次の順列を効率的に生成する標準的なアルゴリズム。4つのステップで最小限の変更により次の順列を生成
ダイクストラ法
グラフ重み付きグラフにおいて単一始点最短経路問題を解くグリーディアルゴリズム。負の重みがない場合に最適解を保証
ワーシャルフロイド法
グラフ重み付きグラフにおいて全点間最短経路問題を解く動的計画法のアルゴリズム。負の重みも扱え、負の閉路も検出可能
クラスカル法
グラフ重み付き無向グラフから最小全域木を構築するグリーディアルゴリズム。辺を重みの小さい順に選択し、Union-Findで閉路検出
プリム法
グラフ重み付き無向グラフから最小全域木を構築するグリーディアルゴリズム。頂点を一つずつMSTに追加していく直感的なアプローチ
さらなるアルゴリズム
A*アルゴリズム、ベルマン・フォード法
その他の高度なアルゴリズムを準備中...
効果的な学習方法
学習の流れ
- 1. まず解説を読んで基本概念を理解
- 2. 可視化でアルゴリズムの動作を観察
- 3. 様々なケースで実際に実行してみる
- 4. コード例を見て実装方法を学習
- 5. 他のアルゴリズムとの比較検討
学習のコツ
- • 自分でケースを作って試してみる
- • 最悪ケース・最良ケースを意識する
- • 実生活の例と関連付けて理解する
- • 時間計算量の意味を具体的に考える
- • 他の人に説明できるまで理解を深める