基于遗忘曲线的智能刷题计划:间隔重复是效率的核心杠杆
基于遗忘曲线的智能刷题计划间隔重复是效率的核心杠杆一、刷 100 道题不如把 20 道题刷三遍大多数刷题计划的逻辑是线性的按标签分类逐个攻克。数组刷完刷链表链表刷完刷树树刷完刷 DP。平均下来每道题只过一遍几天后基本忘光。这不是记忆差的问题是复习策略的问题。认知心理学的研究表明信息遗忘遵循指数衰减曲线但通过间隔重复Spaced Repetition可以在遗忘临界点介入大幅降低遗忘率。这篇文章讨论如何将遗忘曲线理论应用到刷题计划中实现智能化的复习调度。二、遗忘曲线与间隔重复graph LR subgraph 不复习的情况 A1[初次学习: 记忆强度 100%] --|1天后| B1[记忆强度 40%] B1 --|3天后| C1[记忆强度 20%] C1 --|7天后| D1[记忆强度 5%] end subgraph 间隔重复的情况 A2[初次学习] --|1天后复习| B2[记忆强度回升至 90%] B2 --|3天后复习| C2[记忆强度回升至 95%] C2 --|7天后复习| D2[记忆强度稳定在 98%] end艾宾浩斯遗忘曲线的核心发现是遗忘在学完后立即开始前期速度很快。每次复习都能减缓遗忘速度且复习间隔可以逐次拉长。在记忆即将遗忘时进行复习效果最好即「合意困难」。三、实现基于 SM-2 的智能调度器from dataclasses import dataclass from datetime import datetime, timedelta from typing import Optional import heapq dataclass class ProblemRecord: 单道题目的学习记录 problem_id: int problem_name: str tags: list[str] # SM-2 算法的核心参数 easiness_factor: float 2.5 # 难度因子越高 越容易 interval_days: int 0 # 当前复习间隔天 repetitions: int 0 # 连续正确次数 next_review_at: Optional[datetime] None # 下次复习时间 last_review_at: Optional[datetime] None # 上次复习时间 class SpacedRepetitionScheduler: 基于 SM-2 算法的复习调度器 SM-2 是 SuperMemo 第二版算法由 Piotr Wozniak 设计。 核心思想根据每次答题的质量0-5 分动态调整复习间隔。 # 答题质量对应的间隔倍数 # quality: 0完全忘记, 3正确但有困难, 5完美作答 QUALITY_MULTIPLIER { 0: 0.0, # 完全忘记 → 重置 1: 0.0, # 错误但正确答案看起来熟悉 2: 0.0, # 错误但记得曾经会做 3: 0.8, # 正确但很困难 4: 1.0, # 正确稍有犹豫 5: 1.2, # 完美作答 } def schedule_review( self, record: ProblemRecord, quality: int ) - ProblemRecord: 根据答题质量安排下次复习 Args: record: 当前题目的学习记录 quality: 答题质量评分 0-5 Returns: 更新后的学习记录 # 1. 更新难度因子 # EF EF (0.1 - (5-q) * (0.08 (5-q) * 0.02)) # 这个公式的意义低质量降低 EF高质量提升 EF old_ef record.easiness_factor record.easiness_factor max(1.3, old_ef ( 0.1 - (5 - quality) * (0.08 (5 - quality) * 0.02) )) # 2. 根据质量决定间隔 if quality 3: # 答题不理想重置学习进度 record.repetitions 0 record.interval_days 1 # 明天再来 else: # 答题通过增加间隔 if record.repetitions 0: record.interval_days 1 elif record.repetitions 1: record.interval_days 3 # 第 2 次正确后 3 天复习 else: # interval 上次 interval × easiness_factor record.interval_days int( record.interval_days * record.easiness_factor ) record.repetitions 1 # 3. 计算下次复习时间 now datetime.now() record.last_review_at now record.next_review_at now timedelta(daysrecord.interval_days) return record class ReviewQueue: 复习队列按紧急程度排序的优先队列 使用最小堆next_review_at 最早的排在堆顶。 def __init__(self): self._heap: list[tuple[float, int, ProblemRecord]] [] def push(self, record: ProblemRecord) - None: 加入复习队列 if record.next_review_at is None: return priority record.next_review_at.timestamp() # 使用 id 作为二级排序避免 ProblemRecord 不可比较的问题 heapq.heappush( self._heap, (priority, id(record), record), ) def pop_due(self) - list[ProblemRecord]: 弹出所有到期的复习任务 due [] now datetime.now().timestamp() while self._heap and self._heap[0][0] now: _, _, record heapq.heappop(self._heap) due.append(record) return due def get_daily_plan(self) - list[ProblemRecord]: 获取今日复习计划 return self.pop_due() # ---- 使用示例 ---- if __name__ __main__: scheduler SpacedRepetitionScheduler() queue ReviewQueue() # 学习 3 道题 problems [ ProblemRecord(problem_id1, problem_name两数之和, tags[数组, 哈希表]), ProblemRecord(problem_id2, problem_name反转链表, tags[链表]), ProblemRecord(problem_id3, problem_name爬楼梯, tags[DP]), ] # 模拟第一轮学习后的评价 qualities [4, 3, 5] # 分别是正确稍有犹豫、正确但困难、完美 for prob, q in zip(problems, qualities): updated scheduler.schedule_review(prob, q) queue.push(updated) print( f{prob.problem_name}: fEF{prob.easiness_factor:.1f}, f间隔{prob.interval_days}天, f下次复习{prob.next_review_at.strftime(%m-%d)} ) # 输出示例 # 两数之和: EF2.4, 间隔1天, 下次复习07-08 # 反转链表: EF2.4, 间隔1天, 下次复习07-08 # 爬楼梯: EF2.6, 间隔1天, 下次复习07-08 # 获取今日计划 today_plan queue.get_daily_plan() print(f\n今日复习: {len(today_plan)} 道题)四、边界与优化4.1 SM-2 的局限性SM-2 是 1987 年的算法设计时主要针对单词记忆。对于算法刷题需要额外考虑题目之间有依赖关系先掌握链表再学树的遍历更容易同类题目的迁移效应做会一道 DP 题可能让你对同类题更有信心4.2 冷启动问题新题目的初始难度因子默认为 2.5。如果题目对你来说特别简单或特别难前几次的调度会不准确。解决方案是根据题目的难度标签Easy/Medium/Hard预设初始 EF 值。4.3 计划容量控制如果每天的复习任务过多比如之前欠了很多题会导致「复习债」积压。需要有容量的上限控制——当每日计划超过合理数量时优先安排最紧急最接近遗忘临界点的题目。4.4 扩展动态难度调整将 SM-2 的 0-5 质量评分扩展为更细粒度的指标独立完成时间是否需要提示边界用例是否一次性通过这些指标的加权可以给出更准确的质量评分。五、总结刷题的效率不取决于总量取决于每道题在长期记忆中的留存率。基于遗忘曲线的调度系统核心价值在于在你即将忘记一道题之前精准地提醒你复习。SM-2 算法虽然简单但背后的思想——用数学方法量化「什么时候该复习」——是构建任何学习系统的基础。

相关新闻

告别低效论文写作!2026最新AI论文软件深度测评与推荐

告别低效论文写作!2026最新AI论文软件深度测评与推荐

在学术论文写作中面临的挑战及对策 在撰写期刊论文、毕业论文或职称论文时,学术研究者常常会遇到各种挑战。面对海量的文献,人工查找相关数据就像在沙滩上找针一样困难;而繁琐的格式要求常常让人手足无措;不断地修改内容更是耗费…

2026/7/9 0:19:37阅读更多 →
KMS智能激活工具:3分钟完成Windows和Office全系列激活的完整指南

KMS智能激活工具:3分钟完成Windows和Office全系列激活的完整指南

KMS智能激活工具:3分钟完成Windows和Office全系列激活的完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出的激活提示而烦恼吗?Office文…

2026/7/9 0:19:37阅读更多 →
XWayland 24.1.13 发布:修复两大安全漏洞,还有多项小清理修复工作!

XWayland 24.1.13 发布:修复两大安全漏洞,还有多项小清理修复工作!

XWayland 24.1.13 现已发布,此次更新修复了两个安全漏洞,并进行了多项小的清理修复工作。安全漏洞修复本次更新修复了 CVE-2026-55999 和 CVE-2026-56000 两个安全漏洞,分别是 glamor Font Atlas Heap Buffer Overflow 和 CommonMakeCurrent(…

2026/7/9 0:14:37阅读更多 →
影刀RPA Excel工作簿保护:加密与区域锁定

影刀RPA Excel工作簿保护:加密与区域锁定

影刀RPA Excel工作簿保护:加密与区域锁定 作者:林焱 什么情况用什么 生成的报表发出去后不希望别人修改公式、不想让某些列被编辑、需要给整个文件加密码防止未授权查看。在影刀RPA自动化流程中,可以通过openpyxl设置工作表保护、单元格锁定…

2026/7/9 4:40:02阅读更多 →
TongWeb7企业版 适配Redis分布式会话(spring-session-redis)

TongWeb7企业版 适配Redis分布式会话(spring-session-redis)

描述:客户项目通过spring-session-redis实现分布式会话共享,部署至 TongWeb7 企业版后,偶发会话失效,用户被强制跳转回登录页面排查:抓包与日志观测发现:异常请求(如错误页、异常跳转请求&#…

2026/7/9 4:40:02阅读更多 →
Stable Diffusion电商应用爆发前夜(2024Q3实测数据曝光):头部品牌已悄悄部署的8类高转化用例

Stable Diffusion电商应用爆发前夜(2024Q3实测数据曝光):头部品牌已悄悄部署的8类高转化用例

更多请点击: https://intelliparadigm.com 第一章:Stable Diffusion电商应用爆发前夜的产业图谱 Stable Diffusion 正从实验性AI绘画工具,加速演变为电商视觉生产力基础设施。当前,全球头部电商平台、SaaS服务商与垂直AI初创公司…

2026/7/9 4:40:02阅读更多 →
Codex+Skills:AI驱动的智能学术研究助手实战指南

Codex+Skills:AI驱动的智能学术研究助手实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你是一名科研工作者、研究生,或者需要撰写学术论文、技术报告,那么你一定经历过这样的痛苦:在…

2026/7/9 4:40:02阅读更多 →
openeuler/prefetch_tuning常见问题解答:编译错误、参数失效与系统兼容性解决方案

openeuler/prefetch_tuning常见问题解答:编译错误、参数失效与系统兼容性解决方案

openeuler/prefetch_tuning常见问题解答:编译错误、参数失效与系统兼容性解决方案 【免费下载链接】prefetch_tuning This module is based on Kunpeng chip and provides some performance-sensitive chip parameters for adjustment. 项目地址: https://gitcode…

2026/7/9 4:40:02阅读更多 →
IT资产管理自动盘点和运维巡检报告怎么自动化?——基于AI Agent与智能自动化的落地架构与选型指南

IT资产管理自动盘点和运维巡检报告怎么自动化?——基于AI Agent与智能自动化的落地架构与选型指南

在企业数字化转型的深水区,IT基础设施的规模与复杂度正呈几何级数增长。传统的IT资产盘点与运维巡检长期依赖人工“人盯设备”与“手动填报”的被动响应模式。由于企业内部系统林立,资产台账、网络监控、工单系统之间存在严重的基础设施数据孤岛&#xf…

2026/7/9 4:35:01阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
Three.js 着色器光效教程

Three.js 着色器光效教程

着色器光效 Shader Light ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 ShaderMaterial 自…

2026/7/9 0:04:37阅读更多 →
如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南 【免费下载链接】casemove A dedicated desktop app that enables you to move items in and out of storage units in CS2. 项目地址: https://gitcode.com/gh_mirrors/ca/casemove 还在为CS2存储单…

2026/7/9 0:04:37阅读更多 →
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M…

2026/7/9 0:04:37阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →