mcpField
C
clrs-algorithms

clrs-algorithms

github.com/grndlvl開発1779 回インストール38 週間前に更新
リポジトリ

clrs-algorithms について

clrs-algorithmsは、CLRSに基づくデータ構造とアルゴリズムのリファレンススキルです。開発者が構造を選び、計算量を比較し、擬似コードを各言語向けに応用できます。

主な機能

  1. 01データ構造の選択ガイド
  2. 02Big-O計算量の早見表
  3. 03実装向け擬似コード
  4. 04グラフ・文字列アルゴリズム

活用シーン

  1. 01問題に合うデータ構造の選定
  2. 02時間と空間のコスト比較
  3. 03アルゴリズムの対象言語への変換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/grndlvl/software-patterns --skill clrs-algorithms

インストール後、Claude Code で/clrs-algorithmsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

complexity-cheat-sheet.md
data-structure-selection.md
data-structures/advanced/
binomial-heap.md
disjoint-set.md
fenwick-tree.md
fibonacci-heap.md
segment-tree.md
skip-list.md
van-emde-boas-tree.md
data-structures/algorithms/
sorting-algorithms.md
data-structures/graphs/
adjacency-list.md
adjacency-matrix.md
graph-algorithms.md
network-flow.md
strongly-connected-components.md
data-structures/hash-based/
bloom-filter.md
hash-set.md
hash-table.md
data-structures/linear/
array.md
deque.md
dynamic-array.md
linked-list.md
queue.md
stack.md
data-structures/strings/
string-algorithms.md
suffix-array.md
suffix-tree.md
data-structures/trees/
avl-tree.md
b-tree.md
binary-tree.md

詳細

CLRS データ構造とアルゴリズムのリファレンス

「Introduction to Algorithms」(CLRS)に基づく、データ構造とアルゴリズムの包括的なリファレンスです。このスキルでは、あらゆるプログラミング言語に翻訳できる疑似コードの例とともに、言語に依存しないガイダンスを提供します。

このスキルが有効になるタイミング

次の場合に、このスキルが自動的に有効になります。

  • データ構造について質問する、または実装する必要がある場合
  • 問題に適したデータ構造を選ぶ必要がある場合
  • 時間計算量と空間計算量のトレードオフについて話し合う場合
  • アルゴリズムの実装が必要な場合(ソート、検索、グラフアルゴリズム)
  • 特定のデータ構造に言及する場合:B-tree、ヒープ、ハッシュテーブル、グラフなど

データ構造のクイックリファレンス

線形構造
データ構造アクセス検索挿入削除用途
配列O(1)O(n)O(n)O(n)サイズが既知で、インデックスアクセスが必要な場合
動的配列O(1)O(n)O(1)*O(n)サイズが不明で、末尾への追加が頻繁な場合
連結リストO(n)O(n)O(1)O(1)挿入・削除が頻繁な場合
スタックO(1)O(n)O(1)O(1)LIFO が必要な場合
キューO(1)O(n)O(1)O(1)FIFO が必要な場合
両端キューO(1)O(n)O(1)O(1)両端からアクセスする場合
木構造
データ構造検索挿入削除用途
二分探索木O(log n)*O(log n)*O(log n)*順序付きデータを扱い、検索が頻繁な場合
AVL 木O(log n)O(log n)O(log n)バランスが保証される必要がある場合
赤黒木O(log n)O(log n)O(log n)挿入・削除が頻繁な場合
B 木O(log n)O(log n)O(log n)ディスクベースのストレージ
トライ木O(m)O(m)O(m)文字列・プレフィックス操作
ヒープO(1)/O(n)O(log n)O(log n)優先度付きキューが必要な場合
スプレー木O(log n)*O(log n)*O(log n)*自己調整型で、時間的局所性がある場合
トレープO(log n)*O(log n)*O(log n)*ランダム化されたバランスや、分割・併合が必要な場合
区間木O(log n)O(log n)O(log n)区間の重なりを問い合わせる場合
順序統計木O(log n)O(log n)O(log n)順位・選択の問い合わせ
K-D 木O(log n)*O(log n)*O(log n)*多次元の空間データ
ハッシュベース
データ構造検索挿入削除用途
ハッシュテーブルO(1)*O(1)*O(1)*キーと値を高速に検索する場合
ハッシュセットO(1)*O(1)*O(1)*要素が一意に含まれるかを判定する場合
ブルームフィルターO(k)O(k)N/A確率的な要素の存在判定
グラフ
データ構造空間辺の追加辺の問い合わせ用途
隣接リストO(V+E)O(1)O(degree)疎グラフ
隣接行列O(V²)O(1)O(1)密グラフ
グラフアルゴリズム
アルゴリズム時間計算量用途
ネットワークフローO(VE²)最大フロー、二部マッチング、最小カット
強連結成分O(V+E)強連結成分の検出、2-SAT、依存関係の分析
文字列
構造構築検索使用する場面
接尾辞配列O(n log n)O(m log n)メモリ効率の高い文字列照合
接尾辞木O(n)O(m)高速なパターン照合、LCS
文字列アルゴリズムO(m)O(n)KMP、Rabin-Karp、Boyer-Moore、Aho-Corasick
高度なデータ構造
構造使用する場面
スキップリスト確率的な平衡リスト
素集合データ構造Union-Find 操作
セグメント木更新を伴う区間クエリ
フェンウィック木更新を伴う累積和
フィボナッチヒープO(1) の decrease-key を用いた Dijkstra、Prim
二項ヒープマージ可能な優先度付きキュー
van Emde Boas 木O(log log u) で操作できる整数キー
アルゴリズム
アルゴリズム使用する場面
ソートアルゴリズムQuickSort、MergeSort、HeapSort、RadixSort など

* = 償却計算量または平均計算量

選択ガイド

このリファレンスの使い方

  1. 構造を選ぶ:選択ガイドから始めます
  2. 構造を学ぶ:例を含む詳細なドキュメントを読みます
  3. 素早く確認する:一覧性の高いリファレンスとして上の表を使います
  4. 実装する:疑似コードに従い、使用する言語に合わせて調整します

言語への翻訳に関する注意

このリファレンスの疑似コードでは、次の規則を使用しています:

  • 型定義には class
  • メソッド/関数には function
  • オブジェクトのメソッド呼び出しには ->
  • コメントには //
  • 型ヒントは name: Type の形式

使用する言語に合わせて翻訳してください:

  • PHP:class、function、->、//、DocBlock または PHP 8+ の型ヒント
  • JavaScript/TypeScript:class、function/アロー関数、.、//、TypeScript の型
  • Python:class、def、.、#、型ヒント
  • Java/C#:new とジェネリクスを用いて直接対応させます

「Introduction to Algorithms」(Cormen、Leiserson、Rivest、Stein 著、CLRS)、MIT Press の概念に基づいています。

コメント