# Algorithm Modeling

> 算法建模与选型：厘清优化目标、约束与规模，给出基线并选定算法方向。TRIGGER —— 如何建模、选什么算法、问题抽象、方案对比、DP/贪心/二分/图建模是否适用、复杂度预算评估。DO NOT TRIGGER —— 已定算法后的正确性证明（→ algorithm-proof）、代码实现与测试（→ algorithm-implementation）、纯调参与训练（→ algorithm-applied）。

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

---


# 建模与选型

## 功能定位

把业务或题面描述转成可被算法处理的问题定义，并选出"足够简单且可行"的算法方向。可独立调用，也可由 `algorithm-engineer` 总纲路由而来。

## 触发条件

**TRIGGER**：如何建模 / 选什么算法 / 问题抽象 / 方案对比 / 判定-计数-最优化-构造的区分 / 复杂度预算评估 / "这个能用 DP 吗""该不该用图论"。

**DO NOT TRIGGER**：
- 已选定算法，需要正确性证明与复杂度账本 → `algorithm-proof`
- 写代码、跑测试、做性能记录 → `algorithm-implementation`
- 模型训练、调参、数值求解器 → `algorithm-applied`

## 工作流程

1. **厘清问题类型**：判定 / 计数 / 最优化 / 构造；静态 / 动态；在线 / 离线；精确 / 容错；是否需还原方案。
2. **固定契约**：输入格式、规模、数值范围、输出定义、多解选择、时间空间限制。缺关键约束时先问，或给条件分支。
3. **建立模型 + 基线**：给出简单正确的基线并说明瓶颈；基线的作用是解释与验证。
4. **按特征选方向**（见下表），检查必查前提，比较关键取舍。
5. **评估总成本**：含建模、数据准备与维护成本，不只比较核心循环。
6. **输出选型结论**：候选方向、前提、取舍、不成立时的退路。

## 选型方向表

| 问题特征 | 候选方向 | 必查前提 |
|---|---|---|
| 有序查找或单调可行性 | 二分 | 单调性、区间不变量、返回边界 |
| 连续区间统计 | 前缀、双指针、窗口 | 负数和条件变化是否破坏窗口推进 |
| 最优子结构与重复子问题 | DP | 状态充分、转移完整、依赖无环/可求解 |
| 局部选择 | 贪心 | 交换论证或其他结构性保证 |
| 频繁区间查询更新 | 树状数组/线段树等 | 运算结合性、更新类型与懒标记组合 |
| 连通/依赖/路径 | 图模型 | 有向性、权值、负环、输出要求 |
| 大规模有限内存 | 流式/外存/近似 | 内存、误差、数据遍数、更新删除 |
| 组合优化超出精确预算 | 约束求解、近似、启发式 | 可行性、停止条件、保证与误差界 |

## 约束与注意事项

- 表格只提供选型方向，**不是自动模板**；同一关键词可能对应不同问题。
- 明确业务约束是否真的等价于图边、容量、代价等模型假设，不做想当然映射。
- 规模太大时基线只在小输入运行；面试教学从直觉逐步推进，生产方案优先维护性与已验证组件。
- 不因为某算法"高级"就优先使用；先正确再性能，但可及早排除明显超预算方案。

## 输出格式

- 问题定义（类型、输入输出、规模、约束）
- 基线与瓶颈
- 候选方向 + 各自前提 + 取舍 + 退路
- 契约模板：[templates/problem-contract.md](templates/problem-contract.md)

## 参考文档

| 文档 | 用途 |
|------|------|
| [references/model-and-selection.md](references/model-and-selection.md) | 建模要素与选型方向表 |
| [templates/problem-contract.md](templates/problem-contract.md) | 算法问题契约模板 |

