间隔重复记忆之SM-4

SM-4算法说明

  1. 将知识拆分长最小单元。

  2. 每一个知识点分配一个efactor,初始值为2.5。

  3. 使用重复次数和efactor制作一张表,叫做OI Matrix。

  4. 使用以下公式初始化OI Matrix:

    OI(1,EF):=1

    OI(2,EF):=6

    for n>2 OI(n,EF):=OI(n-1,EF)*EF

    其中:
    ◦ OI(n,EF) - 第n次重复后的最优重复间隔时间。

  5. 使用OI Mactrix来决定间隔时间:

    I(n,EF):=OI(n,EF)

    其中:
    ◦ I(n,EF) - 某知识点的第n次重复的间隔时间,按天计算。
    ◦ OI(n,EF) - 重复次数和efactor对应OI Matrix中的值。

  6. 评估每次重复记忆的结果,得出记忆质量。具体见SM-2中介绍。

  7. 按照以下公式更新刚刚记忆的知识点对应的efactor值:

    EF’:=EF+(0.1-(5-q)*(0.08+(5-q)*0.02))

    其中:
    ◦ EF’ - 新的efactor值,
    ◦ EF - 旧的efactor值,
    ◦ q - 记忆质量,值为0,1,2,3,4,5。

    如果计算后的efactor小于1.3,则赋值为1.3。

  8. 更新OI Matrix 中相关的值.

  9. 示范公式如下(实际使用在SuperMemo4中的要更复杂一些):

    OI’:=interval+interval*(1-1/EF)/2*(0.25*q-1)

    OI*:=(1-fraction)OI+fractionOI’*

    其中:
    ◦ OI - 新值
    ◦ OI’ - 临时辅助
    ◦ OI - 旧值,
    ◦ interval - 之前的间隔时间,
    ◦ fraction - 用来调整矩阵收敛速度的系数,0-1之间,1为最快。
    ◦ EF - 知识点相关efactor,
    ◦ q - 知识点记忆质量,0-5。

  10. 如果记忆质量小于3,则重置该知识点为初始状态(efactor不变),再次记忆该知识点。

  11. 如果记忆质量小于4,则再次记忆该知识点。

相关代码及使用示例

NPM

已经发布到了npm,可以直接安装使用:

npm install spaced-repetition.js

GITHUB

Github仓库地址:spaced-repetition.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值