SuperMemo2のアルゴリズム
繰り返し間隔
l(1) = 1
l(2) = 6
l(n) = l(n-1)*EF
l(n) n回繰り返した後の繰り返し間隔
EF(SM2より前の初期)
E-factor
1.1~2.5
登録時は2.5
復習結果に問題があると減っていく
1.3を下回ると鬱陶しいほど頻繁に出てきてうざいらしい
EFの値をどう更新するかが肝
EF' = f(EF,q)
今のEF値に、q(回答の質。quality。0~5)を入力して、新しいEF値を計算する
SM2では以下を使う
EF
初期値2.5
最低値1.3
上限値は特にない
EFの更新は、EF' = EF+(0.1-(5-q)*(0.08+(5-q)*0.02))
ただし計算して1.3未満になったら1.3にする
見た感じ、この計算ロジックはかなり試行錯誤したようだ
qは、
5 - perfect response
4 - correct response after a hesitation
3 - correct response recalled with serious difficulty
2 - incorrect response; where the correct one seemed easy to recall
1 - incorrect response; the correct one remembered
0 - complete blackout.
よくわからんけど「正解した」「正解したけど遅かった」「間違えた」などがある
3未満はよろしくないので、4以上になるまで繰り返す(ように調整される、つまりは何度も復習させる)
繰り返し間隔のリセット
qが3未満(つまり間違えた場合)だったとき
合格するまでフルコース
ある日の復習においてqが3以下だった問題は、その日の問題が一巡した後に、改めてもう一度解かせる
全部4以上取るまで何度でも繰り返す
EF計算式
(0.1-(5-q)*(0.08+(5-q)*0.02))
当てはめてみる
q=5 0.1
q=4 0
q=3 -0.14
q=2 -0.32
q=1 -0.54
q=0 -0.8
---
まとめると、
素早く正解すると EF = EF + 0.1
遅れて正解すると EF は変わらず
かなり遅く正解すると EF = EF - 0.14
間違えたけど惜しかった場合は EF = EF - 0.32
間違えたけど「そう、それそれ、思い出したわ」な場合は EF = EF - 0.54
間違えたし覚えてないもない場合は EF = EF - 0.8