mcpField
C
computer-science-algorithms

computer-science-algorithms

github.com/pproenca开发218189 次安装11 周前更新
代码仓库

关于 computer-science-algorithms

面向开发者的算法与数据结构实用参考技能,帮助选择并正确实现经典方法。内容按影响优先级组织,涵盖日常代码审查、问题求解和大规模数据处理。

主要功能

  1. 01九类按优先级组织的主题
  2. 02算法与复杂度选择
  3. 03数据结构指导
  4. 04图、动态规划与贪心模式
  5. 05流处理与概率算法

适用场景

  1. 01根据输入规模选择算法
  2. 02在代码审查中发现潜在的二次复杂度操作
  3. 03选择图算法或动态规划方案
  4. 04处理数据流或分布式分片

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill computer-science-algorithms

安装后在 Claude Code 中输入/computer-science-algorithms确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
comp-amortize-instead-of-worst-casing.md
comp-derive-recurrences-via-master-theorem.md
comp-pick-algorithm-class-from-input-bound.md
comp-prefer-iterative-builders-over-string-concatenation.md
comp-treat-space-complexity-as-first-class.md
comp-watch-for-quadratic-blowup-from-membership-in-list.md
divide-meet-in-the-middle-for-subset-problems.md
divide-merge-sort-pattern-for-counting-inversions.md
divide-quickselect-vs-quicksort-partitioning.md
divide-watch-recursion-depth-and-stack.md
dp-bitmask-for-small-set-states.md
dp-define-state-precisely.md
dp-knapsack-pattern.md
dp-memoize-overlapping-subproblems.md
dp-prove-optimal-substructure-before-coding.md
dp-tabulate-when-recursion-depth-or-order-matters.md
ds-balanced-bst-or-sorted-container-for-range-queries.md
ds-deque-for-both-end-operations.md
ds-fenwick-or-segment-tree-for-mutable-range-queries.md
ds-hash-map-for-keyed-lookup.md
ds-heap-for-top-k-and-priority-queues.md
ds-prefix-sums-for-repeated-range-sums.md
ds-set-for-uniqueness-and-membership.md
ds-union-find-for-dynamic-connectivity.md
graph-bfs-for-unweighted-shortest-path.md
graph-detect-cycles-during-dfs.md

详细介绍

社区经典计算机科学算法最佳实践

这是一份面向实践者的参考指南,帮助你正确选择和实现经典算法与数据结构。内容按对执行生命周期的影响排序:最早做出的决策(渐进复杂度、数据结构选择)会层层影响后续工作,因此表格靠前的规则最重要。

范围: 涵盖日常生产代码审查、合理的面试题/竞赛题,以及大规模场景下的工具箱(sketch、流式处理、分布式原语)中常见的模式,并非 CLRS 的详尽概述。当前版本有意不涵盖的主题包括:网络流、模运算、作为独立规则的 Bellman-Ford 和 Floyd-Warshall、SCC(Tarjan/Kosaraju)、计算几何、FFT,以及作为独立规则的 Manacher/Z 函数。这些主题会在相关规则中标注。

内容提炼自 CLRS(《Introduction to Algorithms》第 4 版)、Sedgewick & Wayne(《Algorithms》第 4 版,Princeton)、Skiena 的《Algorithm Design Manual》、Laaksonen 的《Competitive Programmer's Handbook》、cp-algorithms.com 和 USACO Guide。

适用场景

在以下情形中使用这些规则:

  • 为新问题选择算法或数据结构(“解决 X 的正确方法是什么?”)
  • 审查代码中隐藏的 O(n²) 性能问题——反复对列表执行 in 检查、对列表使用 pop(0)、在循环中拼接字符串、朴素子串搜索
  • 编写记忆化代码前,选择 DP 状态或递推关系
  • 将问题建模为图(BFS、Dijkstra 还是拓扑排序)
  • 重构在简单输入下可行、但在大规模场景下会超时的暴力/朴素解法
  • 判断贪心算法是否适用,还是需要 DP/分支定界

按优先级划分的规则类别

#类别前缀影响影响范围广的原因
1渐进复杂度与算法选择comp-严重O() 复杂度级别选错,其他优化都会失去意义
2数据结构选择ds-严重容器决定了哪些操作成本低
3排序与搜索srch-高贪心、双指针、扫描线、答案二分的基础
4动态规划dp-高将指数级复杂度转化为多项式级复杂度
5图算法graph-高网络、依赖关系、路由、调度都可归约为图问题
6分治/递归divide-中高对数级加速;需注意栈深度和递推关系陷阱
7贪心算法greedy-中正确时速度快,错误时却不易察觉
8字符串与序列算法str-中模式匹配、解析、子串查询
9大规模与概率算法scale-中sketch、流式处理、分布式原语——适用场景有限,但适用时至关重要

快速参考

1. 渐进复杂度与算法选择(严重)
2. 数据结构选择(关键)
3. 排序与搜索(高)
4. 动态规划(高)
5. 图算法(高)
6. 分治 / 递归(中高难度)
7. 贪心算法(中等难度)
8. 字符串与序列算法(中等难度)
9. 可扩展性与概率算法(中等难度)

这套工具箱专为“少见但在大规模场景下很有价值”的问题准备:用微小的精度损失换取数量级的内存节省的草图算法、用于处理无法装入 RAM 的输入的流式处理原语,以及能够适应分片变化的分布式结构。

如何使用

从与问题匹配的类别开始:

  • “n = 10⁶ 时,什么算法合适?” → comp-(受输入规模限制)
  • “我在循环中查找列表里的内容” → ds-hash-map-for-keyed-lookup 或 comp-watch-for-quadratic-blowup-from-membership-in-list
  • “我的递归很慢” → dp-memoize-overlapping-subproblems 和 comp-derive-recurrences-via-master-theorem
  • “最短路径 / 连通性 / 排序任务” → graph-
  • “选择物品以最大化价值” → 从 greedy-prove-exchange-argument-before-using 开始;如果不适用,再尝试 dp-knapsack-pattern
  • “查找 / 匹配字符串” → str-
  • “限制因素是内存,而不是时间” / “大规模采样 / 计数 / 去重” / “分片” → scale-

代码示例使用 Python(对不同受众而言最易读)。相关思路适用于任何语言——如果标准库中的对应基础功能有所不同,会在此列出。

参考文件

文件描述
references/_sections.md类别定义与排序
assets/templates/_template.md新规则模板
metadata.json版本与参考信息
AGENTS.md自动生成的目录导航

相关技能

  • complexity-optimizer — 静态分析,用于查找这些规则所诊断的模式

评论

支持 Markdown