Final drill algorithm

From SuperMemopedia
Jump to navigation Jump to search

Question

SuperMemo Help says that final drill uses a new algorithm. Can you explain it?

Answer

Yes. For nearly 40 years, final drill was a simple First come First served queue. However, if drill gets very long on very difficult material, this algorithm can make it hard or impossible to complete final drill due to interference. Intractable drill is pretty natural before exams at school and there is simply too much material, or the material is too hard (e.g. foreign language vocabulary). The new algorithm can pick randomly from the queue and insert some works in early positions. This was successive review in different context makes it easier to answer correctly (with memory still very shaky naturally). If answering gets too easy, you can obviously provide a failing grade to be sure you try again.

Outline

The new Final Drill in SuperMemo replaces the old first-come, first-served queue with a dynamic shuffle. Before each review, it runs FlipElement(5, 3, 6): it randomly picks an item from position 5 or later in the queue (stuff you didn’t ace today) and moves it to a spot between positions 3 and 6. This keeps the order fresh—items don’t just sit at the back—and makes reviews less predictable, helping you stay engaged while ensuring all struggling items get attention.

Details of the Algorithm

Caveat

This is the description of the algorithm used in SuperMemos (19) dated Oct 20, 2024 - Mar 13, 2025. It may change depending on user feedback.

Intro

The new Final Drill algorithm in SuperMemo enhances the review process for items users struggle with during a session, replacing the original first-come, first-served (FCFS) queue with a more dynamic system. Before each review in the Final Drill queue—a list of items scored below "Good" (<4)—SuperMemo executes the FlipElement(LowestPick, LowestInsert, HighestInsert) procedure. As of October 20, 2024, this is implemented with parameters FlipElement(5, 3, 6), which shuffles the queue to keep reviews varied and effective.

How It Works

The FlipElement() procedure reorders the queue by moving a randomly selected item to a new position. Here’s a step-by-step breakdown:

  • Random Selection: SuperMemo selects an item from the queue, starting at position 5 (LowestPick) up to the queue’s end (e.g., 20 items). For instance, it might pick an item at position 7 or 15—anywhere from 5 onward—using a random number generator.
  • New Position: It then chooses a random spot between position 3 (LowestInsert) and position 6 (HighestInsert)—so, 3, 4, 5, or 6—where the selected item will move.
  • Overlap Check: If the original position matches the new one (e.g., picking 5 and moving to 5), it shifts the selection one position forward (to 6) to ensure a change occurs. If this shift exceeds the queue size, the process stops.
  • Shuffle Execution: The item is removed from its original spot and inserted into the new position, shifting other items as needed

Example

Consider a queue of 10 items: Initial state: [Item1, Item2, Item3, Item4, Item5, Item6, Item7, Item8, Item9, Item10]

FlipElement(5, 3, 6) runs:

  • Picks Item8 (position 8, ≥ 5).
  • Moves it to position 4 (between 3 and 6).
  • Result: [Item1, Item2, Item3, Item8, Item4, Item5, Item6, Item7, Item9, Item10]

The next run might move Item10 to position 5, and so on.

Purpose and Impact

This shuffling departs from the static FCFS approach, where items were reviewed in the order they were added. With FlipElement():

  • Variety: The queue stays dynamic, preventing repetitive review patterns.
  • Engagement: The slight unpredictability keeps users alert during reviews.
  • Easiness: Occasionally, flips can capitalize on very short-term memory to made it more realistic to complete the reviews.

For users, this means the Final Drill feels less like a slog—items you struggled with get mixed up naturally, much like shuffling a deck of flashcards, giving each a fair shot at being mastered.