Priority queue


Volume vs. Retention Battle

Incremental reading makes it easy to import large volumes of learning material from the Internet. By default, all imported material enters the learning process. As a result, large volumes of unprocessed information begin to compete for your attention with most important pieces of knowledge that you decided to remember. It is a clash of priorities. On one hand you want to ensure high retention of your mission-critical knowledge (as in classical SuperMemo), on the other you want to devour more and more new knowledge.

Before SuperMemo, your learning would largely be based on reading and reviewing books or your own notes. With older SuperMemos, you would divide your time between reading (on paper) and repetitions (on the computer). With incremental reading, those competing processes were blended into one. You can read and review concurrently in SuperMemo. However, for the most avid incremental readers, the balance of priority will always dangerously shift in favor of new reading at the cost of the previously acquired knowledge. This comes from human nature. New reading provides instant gratification: Today, I learned something new. I am wiser now. Reviewing the material you already know will always feel like a burden. We are always unhappy with our forgetful memory. It always feels that the nature should have given us a natural choice of what to forget and what to remember without the painful effort of reviewing what we already know.

To settle the Volume-vs-Retention battle and to resolve the perpetual clash of priorities, you need better weapons than those made available by older SuperMemos. Before the arrival of SuperMemo 2006, you would need to use a complex set of tools to employ massive learning and still protect the retention of your most important knowledge. You would use complex concepts such as A-Factors, Forgetting index, subset learning, selective postpones, repetition sorting, etc. These tools were poorly automated and required substantial effort and knowledge on your part. In practice, most incremental readers would have to opt for the simplest prioritization tool: moderation. You could best protect your previous investment in learning by limiting your hunger for knowledge.

Newer SuperMemos use a simple and fully automated mechanism that will help you combine high volumes of reading with high retention of the most important material. This mechanism is based on the concept of the priority queue.

Priority Bias in Incremental Reading

In SuperMemo, each element receives a priority from 0% to 100%. Elements sorted by their priority form the priority queue. An element's priority can also be expressed as its position in the priority queue. The most important element in your collections will sit at Position=1 of your priority queue. The queue is a relative queue. This means that if you, for example, insert an important article at Position=3, all items and articles at higher positions will be shifted by one position up in the queue (i.e. towards lower priority). Thus the element at Position=999 will be pushed to Position=1000, while the element previously sitting at Position=3 will now occupy Position=4. The first two elements in the queue, i.e. Position=1 and Position=2, will not move. The relative nature of the priority queue will help you instantly inspect the current priority of each element in your collection. In earlier versions of SuperMemo, you could observe crowding of elements at high-priority ranks. For example, you could amass a large number of topics with A-Factor=1.01 and be practically unable to prioritize within that group. (A-Factor=1.01 is the lowest possible and would correspond to the highest priority.)

The fundamental rationale for using a relative priority queue is the existence of a form of cognitive bias, which we will call the priority bias. This bias makes us always think that the newly found article is extremely important to read. The new article feels so important, because we underestimate the value of all the previously imported articles. Our memory is unable to produce an effective estimate of the importance of the current mass of remembered knowledge. Even less so is it capable of producing a remotely accurate estimate of the importance of the mass of knowledge stored in your incremental reading process (of which, usually, only a tiny fraction is part of your long-term memories). The net effect is that we always underestimate the volume of what we know, the volume of what we keep in incremental reading, and the importance distribution of those volumes of knowledge. This psychological mechanism is also the primary force that works against the universal adoption of SuperMemo. Humans are, by biological design, very weak at estimating the size of their knowledge, the cost of learning, and the power of forgetting. As a result, without an intimate knowledge of what SuperMemo is, individuals rarely ever pause to sense the need to use spaced repetition. This underestimation effect is by far more damaging in the case of incremental reading, which is far more complex and has still not been explained in sufficiently simple and catchy terms.

By employing the priority queue, SuperMemo will help you visualize the priority bias and the process in which large volumes of new material quickly displace the old material from your learning focus. Moreover, SuperMemo highly automates the process in which you can handle material overflow and reconcile high retention with high volumes of learning. Incremental reading has always boasted of its capacity to bring the volume of learning to unprecedented levels. With the priority queue, you can nearly take away the moderation factor and increase the volume of learning even further without undue worry about your hard-earned knowledge.

Priority Queue in SuperMemo

You can define an element's priority by pressing Alt+P (or choosing Learning : Priority : Modify on the Element menu).

SuperMemo: "Element priority" dialog box which you can use to modify the priority of an element

To set the element's priority, you can either choose the position of the element in the priority queue (from 1 to Total), or you can choose the percent value (from 0% to 100%). Position=1 corresponds to Percent=0%. Position=Total corresponds to Percent=100%.

Important! Low position and low percent mean high priority! This counterintuitive choice was made due to the fact that you are more likely to choose a high priority of 0% or 1% than the low priority of 99% or 100%. Typing the number 2 takes much less time than typing the number 98 (roughly 3-4 times less). As you are likely to set priority manually many times in the course of a single learning session, this choice will save you a lot of typing time over years of learning.

You can use Learning : Priority : Increase on the Element menu (Shift+Ctrl+Up) to increase the priority of an element, or Learning : Priority : Decrease (Shift+Ctrl+Down) to decrease it. Those operations also affect the forgetting index of items and the A-Factor of topics.

You can view your entire priority queue with View : Priority queue on the Main menu.

Sorting repetitions

In a high-volume incremental reading process, you will be served more elements in a single day than you could possibly manage to process in a week (or worse). It is therefore vital that you begin your review process from elements of the highest priority. Low priority elements might linger in the queue for months or years. High priority items should be reviewed at the exact time that SuperMemo finds optimum. Only this way will you be able to meet your requested forgetting index criteria for high-priority material while still being under no pressure to limit your hunger for knowledge. In simpler terms, in an overloaded learning process, the SuperMemo promise of "excellent memory" will only apply to your top-priority material. The lower the priority, the lower the retention (see: Tools : Statistics : Analysis : Graphs : Forgetting index vs. Priority for empirical evidence).

By default, your repetitions will be auto-sorted at the beginning of each learning day (unless you uncheck Learn : Sorting : Auto-sort repetitions). This means that the elements reviewed on a given day will be ordered by priority. In addition to auto-sorting, you can also sort the learning queue manually at any time with Learn : Sorting : Sort now.

You will quickly discover that a precise sort executed strictly along the priority criteria has serious flaws. On one hand, due to the priority bias, you will quickly displace older high-quality material with whatever dominates your current interests. That would be a throwback to your pre-SuperMemo times when you kept reading new material, while forgetting your previous investment in learning. New material always feels very important and will always show a tendency to shift all your previous learning towards lower priority. In addition, you might overwhelm your classical SuperMemo repetitions (i.e. question-and-answer review) with the inflow of new articles to read. Again, instead of making sure your previous investment becomes durable, you keep rushing through new material and forgetting the old.

SuperMemo solves the problems of the priority bias and the problem of the massive inflow of topics by letting you define (1) the proportion of topics in learning, and (2) a degree to which the learning queue is randomized.

SuperMemo: Sorting items and topics taking part in the learning process using various criteria (priority, randomization, proportion of topics, etc.)
Sorting criteria in SuperMemo (click to enlarge). Only a small proportion of time-consuming topics is allowed in the learning queue. This proportion is chosen to maximize the fun and efficiency of learning: sufficient inflow of new material combined with the necessary review of your previous investment. Some degree of randomization in the learning sequence is permitted. This way you can re-discover precious articles that were displaced in priority by a massive inflow of new material.

You can determine the sorting criteria by using Learn : Sorting : Sorting criteria.

You need to adjust the proportion of topics and the degree of randomization by trial and error. This will all depend on your goals and preferences. If you admit too few topics in the process, you will not gain much new knowledge. If you admit too many topics, you will start forgetting previously learned material. If you randomize the learning queue too much, the whole prioritization mechanism will unravel, and your retention of high-priority material will drop. If you sort repetitions strictly by priority, the new material will keep displacing the old material due to the priority bias. Even for item repetitions, where the priority bias is less prominent, a degree of randomization will help you increase the priority of less appreciated items, disperse clozes generated from the same extract, and compensate some loss in retention by improving the overall speed of learning (through spacing effect).

Auto-sorting and auto-postpone

It is recommended that you leave two default options checked:

  • Learn : Sorting : Auto-sort repetitions and
  • Learn : Postpone : Auto-postpone.

This way you will nearly never have to worry about material overload. Each time you start SuperMemo for the first time on a given day, it will first postpone repetitions that you failed to execute on previous days. It will use default postpone criteria which you can always modify (e.g. with Learn : Postpone : All elements). After postponing the backlog of repetitions, SuperMemo will sort today's repetitions and those that were left outstanding by auto-postpone. Auto-sort will use sorting criteria specified earlier with Learn : Sorting : Sorting criteria.

With auto-postpone and auto-sort, you can always begin your day with a manageable portion of material sorted by priority. Your learning sequence will be optimized with no options to choose, and no keys to press.

Random repetitions

To make sure you have a good understanding of the contents and distribution of material in your collection, you should make thoroughly randomized repetitions from time to time. You can randomize repetitions with Learn : Random : Randomize repetitions (Shift+Ctrl+F11), or with Tools : Mercy with Criteria : Sorting options set to Randomize.

Occasional random repetitions may be quite revealing as they will not favor any portions of your material. Your learning will not be biased by an increased proportion of elements such as: short interval elements, long interval elements, specific element types (e.g. articles, extracts, cloze deletions, etc.), element content (e.g. a specific branch of the knowledge tree), the degree of element processing, nor (most importantly) the element's priority. Random repetitions will help you better understand possible negative trends such as excessive inflow of new material, lower retention (mostly as a result of frequent rescheduling), poor formulation of newly created cloze deletions, low quality or applicability of the acquired knowledge, excessive emphasis on certain subject at the cost of other subjects, etc. Most importantly though, random repetitions should help you sense the power of the priority bias.

Prioritization Rulebook

  • Learn to work on priorities of new elements. Try to visualize the entire collection and learn to position elements in the spectrum of your entire knowledge. Try to ignore urgency, and to focus on a lifetime priority of knowledge (unless under a pressure of a deadline, such as an exam). If all your new elements get priorities of 1-10%, you know you are not being honest. Some of the new material must be down to 80-90%. There are things that you want to know, but you do not really need to know. Add them to your collection, but give them an honestly low priority. Do you learn about movie stars? That's ok. However, unless you want to be an actor yourself (or so), you should rather give the stars the deserved 95-99%.
  • Deprioritization is very hard and very painful, however, it might be a key to your success in a heavily overloaded collection. It is very easy to wish to upprioritize nearly anything. You need to train your brain to permit low priorities! You need to let some knowledge go (at least to lower priority areas)! (Unless your ambitions are limited) ... You cannot know everything that you want to know!.
  • Regularly inspect Tools : Statistics : Analysis : Use : Priorities missed : Items (Shift+Alt+A opens this tab as you left it last time). Priorities missed is the most honest indicator of what proportion of your collection can actually meet your requested forgetting index criteria. For example, if your Priorities missed stand at 3%, you know that no knowledge in the 3%-100% priority bracket is safe! If you keep overrating priorities, items will crowd at high priority positions and the Priorities missed parameter will be very low. If you are honest, you will increase that value and make it easier to protect top priority items from being delayed and possibly forgotten. You will be amazed how fast you can increase Priorities missed with a focused effort and deprioritization in just a few days (let alone over a longer period)! Such an effort will do miracles to the quality of your knowledge. Importance should always overrule urgency and emotion.
  • The most important moments to prioritize elements or element sets:
    • at item failure, you need to rethink the priority. Items that fail often are the biggest contributor to slowed progress. Reducing their priority is one way of remedying this (and possibly helping your memory by inducing the spacing effect)
    • at article import, high priority will ensure early reading, however, once you get to reading, you may want to deprioritize and only give high priority to important extracts! You can set the priority for the entire article and split it all in one go (while reading or by an auto-split). It is however much easier to split the article incrementally as you progress with reading, and only then spread the priorities of all children elements with Priority : Spread in the browser. Once you finish reading the article, some of the generated extracts and clozes will be given higher priority (as per your decision), while most elements will get their priority set automatically on the basis of article's priority. This will usually be a priority that is higher than deserved. Hence Priority : Spread is recommended each time you complete reading an article
    • it makes sense to give new clozes a very high priority to make sure they are reviewed at least once to "hatch" in your memory. However, once the first repetition ends with success and your future recall at longer intervals is a bit more likely, you can provide a more honest priority, which is usually lower than when first prioritizing extracts for the sake of generating cloze deletions. If you are still worried about possible forgetting, you can wait with establishing the honest priority until the 3rd or 4th review. The longer you wait, the greater the chance you will forget something truly important in the meantime.
  • If you hesitate between a lower priority and a higher priority, a lower probability is nearly always better! (due to the priority bias that is likely to crowd your learning process)
  • If skip some of your daily repetition sessions, item protection will drop (as indicated by Priorities missed). If you do not prioritize well, item protection will drop as well. The best way to keep item protection high is to learn regularly, learn a lot, and provide honest priority evaluations
  • Your measured forgetting index will increase if you are honest with priorities in an overloaded collection. However, it will more honestly reflect your actual knowlege of the material in the collection
  • If you manually change the interval, item priorities will change. If you shorten the interval, the priority will automatically increase. If you delay the next repetition, the priority will drop.
  • Priorities missed can at times drop by a huge margin in a single day. This is not a reason to worry, as long as this does not become a trend. For example, if you discover a set of clozes whose priority is too low, and you increase that priority in the entire set, all items that have been outstanding, but not at the front of the oustanding queue, will affect the item protection measurement on the next day. This is a one-day phenomenon.
  • If you are curious which postponed item reduced your item protection (Priorities missed), choose View : Recent : Postponed, choose Child : Items and sort by priority. The offending item should land on top. It will tell how your item protection dropped. This is the highest priority item missed on the previous day of learning.
  • A simple way to get the feel of the relative importance of an article is to look at the After and Before fields in the priority dialog (Alt+P)(see the picture). For example, it may be tempting to give a high priority to an article that vexes your curiosity. However, you may need to pause and ask if the story of Scott Peterson is as important to your knowledge as an article about the causes of autism. If you happen to watch a documentary about Peterson (e.g. in your incremental video collection), you may temporarily accept a higher priority to that article, and use Priority : Spread to deprioritize all extracts after you finish watching the program. This way you will let various pieces of information dovetail together, which will benefit long-term retention.
SuperMemo: A simple way to get the feel of the relative importance of an article is to look at the After and Before fields in the Element priority dialog (Alt+P)


  • SuperMemo introduces the priority queue in which each element has a specific priority from 0% to 100%
  • The highest priority is 0%. The lowest priority is 100%
  • SuperMemo can auto-postpone the excess of the outstanding material
  • SuperMemo uses the priority queue to auto-sort the learning queue. This means that each day, you will first be served high-priority elements
  • Priority queue softens the need for moderation in learning; however, it does not entirely solve the priority bias (i.e. your tendency to attach excessive priority to new material)
  • SuperMemo automates moderation by strictly limiting the inflow of topics into the learning process
  • SuperMemo helps you combat the priority bias by a degree of randomization in sorting the learning queue
  • In a heavily overloaded learning process, the retention of low-priority material will drop substantially
  • Deprioritization of elements is painful, but it is a key to your long-term success. Due to the priority bias, lower priority is nearly always better than a higher priority!
  • Tools : Statistics : Analysis : Use : Priorities missed : Items can be used to inspect the degree of item protection in an overloaded learning process
  • Priority queue will help you increase the volume of learning, and yet increase the retention of top-priority material