The algorithm (FSRS) supports reviewing in advance or delay. It's free for users to decide the time of review. And it will adapt to the user's memory.
Meanwhile, spaced repetition is one essential technology to achieve free learning.
FSRS runs entirely locally and has no risk under others' control.
FSRS is based on the DSR model proposed by Piotr Wozniak, the author of SuperMemo. FSRS is improved with the DHP model introduced in the paper: A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling.
The model considers three variables that affect memory: difficulty, stability, and retrievability.
Stability refers to the storage strength of memory; the higher it is, the slower it is forgotten. Retrievability refers to memory's retrieval strength; the lower it is, the higher the probability that the memory will be forgotten.
In the present model, the following memory laws are considered:
- The more complex the memorized material, the lower the stability increase.
- The higher the stability, the lower the stability increase (also known as stabilization decay)
- The lower the retrievability, the higher the stability increase (also known as stabilization curve)
The formula of memory on FSRS: The Algorithm
-
Scheduler:
- TypeScipt module: ts-fsrs
- Golang module: go-fsrs
- Python package: py-fsrs
- Rust crate: rs-fsrs
- Clojure library: cljc-fsrs
- Dart package: dart-fsrs
- Ruby gem: rb-fsrs
- Swift package: swift-fsrs
- Android library: android-fsrs
- Elixir library: ex_fsrs
-
Optimizer:
- Python package (stable): fsrs-optimizer
- RS crate (stable): fsrs-rs
- run fsrs-rs in the browser: fsrs-browser