# Algorithm Domain Checks

> 领域算法易错前提核查：图与树、字符串、数论与组合、计算几何的隐含假设与退化情况。TRIGGER —— 负权最短路、Dijkstra 前提、重边自环、拓扑环、网络流建模、字符串匹配与滚动哈希碰撞、取模与乘法溢出、组合计数、几何退化与 epsilon。DO NOT TRIGGER —— 通用建模选型（→ algorithm-modeling）、证明与复杂度（→ algorithm-proof）、数值优化与机器学习（→ algorithm-applied）。

- Skill: `jiangeplus/algorithm-domain-checks` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add jiangeplus/algorithm-domain-checks`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jiangeplus/algorithm-domain-checks/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: JIANGEPLUS (https://skillmd.com/u/jiangeplus)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/jiangeplus/algorithm-domain-checks

---


# 领域易错前提

## 功能定位

在动笔实现前，逐项核查图、树、字符串、数论组合、几何等领域的隐含假设与退化情况，避免"模板套错前提"。可独立调用，也可由 `algorithm-engineer` 总纲路由而来。

## 触发条件

**TRIGGER**：负权/负环最短路、Dijkstra 适用性、重边自环、森林与拓扑环、网络流建模、字符串匹配与滚动哈希、取模求逆与乘法溢出、组合计数、几何退化与 epsilon 比较。

**DO NOT TRIGGER**：
- 还没到领域层，需要建模方向 → `algorithm-modeling`
- 要写证明或算复杂度 → `algorithm-proof`
- 数值优化、机器学习、调度 → `algorithm-applied`

## 核查清单

### 图与树

- 边的有向性、重边/自环、权重范围、是否连通、是否多源
- 最短路区分非负边 / 负边 / 负环；不把 BFS 当作任意加权图解法
- Dijkstra 的常规保证要求非负权；有负边时换适用方法，不悄悄忽略
- 树算法先确认确为树；森林按连通分量处理；拓扑序需处理有向环
- 网络流明确容量、残量反向边与守恒；费用模型注意负费用与终止条件

### 字符串

- 明确以字节、码点还是字素簇计数，以及规范化/大小写语义
- 线性结论不能漏掉预处理或大量输出的代价
- 滚动哈希有碰撞风险，需要容错说明或实际比较验证

### 数论与组合

- 模数是否为素数、除数能否求逆需核查
- 负数取模与乘法溢出按语言语义处理
- 零、负数、边界阶乘与不可逆情况不可忽略
- 概率分母、独立性与计数是否重复写明

### 几何

- 退化情况：共线、重合、边界点、自交、空集合
- 方向判定注意整数溢出或浮点误差
- epsilon 不能任意加入排序比较而破坏严格弱序
- 区分精确谓词与近似坐标

## 工作流程

1. 确定所属领域（图/树、字符串、数论组合、几何）。
2. 逐项对照核查清单，标记"已确认 / 不适用 / 尚缺条件"。
3. 对未确认项：向用户提问，或给出条件分支（若 A 则方案 1，若 B 则方案 2）。
4. 把确认后的前提写进问题契约，再进入实现。

## 约束与注意事项

- 适用条件不满足时，换方法而不是硬套模板。
- 不把哈希相等当作确定性相等；不把期望性质当作最坏保证。
- 领域前提核查只在需要时加载，不要对每个问题都铺开全部清单。

## 输出格式

- 领域与场景判定
- 前提核查表（项 / 状态 / 依据）
- 不满足前提时的替代方案
- 遗留待确认项

## 参考文档

| 文档 | 用途 |
|------|------|
| [references/domain-checks.md](references/domain-checks.md) | 四大领域易错前提细则 |

