The specific algorithms SuperMemo uses have been published, and re-implemented in other programs. Different algorithms have been used; SM-0 refers to the original (non-computer-based) algorithm, while SM-2 refers to the original computer-based algorithm released in 1987 (used in SuperMemo versions 1.0 through 3.0, referred to as SM-2 because SuperMemo version 2 was the most popular of these). Subsequent versions of the software have claimed to further optimize the algorithm.
Piotr Woźniak, the developer of SuperMemo algorithms, released the description for SM-5 in a paper titled
Optimization of repetition spacing in the practice of learning. Little detail is specified in the algorithms released later than that. In 1995, SM-8, which capitalized on data collected by users of SuperMemo 6 and SuperMemo 7 and added a number of improvements that strengthened the theoretical validity of the function of optimum intervals and made it possible to accelerate its adaptation, was introduced in SuperMemo 8. In 2002, SM-11, the first SuperMemo algorithm that was resistant to interference from the delay or advancement of repetitions was introduced in SuperMemo 11 (aka SuperMemo 2002). In 2005, SM-11 was tweaked to introduce boundaries on A and B parameters computed from the Grade vs. Forgetting Index data. The latest version of the SuperMemo algorithm is SM-20, released in 2026.
Description of SM-2 algorithm The first computer-based SuperMemo algorithm (SM-2) is then applied to update the three variables associated with the card:
algorithm SM-2
is input: user grade
q repetition number
n easiness factor
EF interval
I output: updated values of
n,
EF, and
I if q ≥ 3
(correct response) then if n = 0
then I ← 1
else if n = 1
then I ← 6
else I ← round(
I ×
EF)
end if increment
n else (incorrect response) n ← 0
I ← 1
end if EF ←
EF + (0.1 − (5 −
q) × (0.08 + (5 −
q) × 0.02))
if EF The SM-2 algorithm has proven most popular in other applications, and is used (in modified form) in Anki and Mnemosyne, among others. Org-drill implements SM-5 by default, and optionally other algorithms such as SM-2 and a simplified SM-8. == References ==