# Arbital path

https://arbital.com/p/Arbital_path

by Alexei Andreev Jan 27 2016 updated May 11 2016

Arbital path is a linear sequence of pages tailored specifically to teach a given concept to a user.

When a user wants to learn a particular concept, Arbital can use the existing "requires" and "teaches" relationships to generate a list of pages for the user to read. This list will present pages in order, so that the reader can build on the knowledge they already have, and by the end of it the reader will have all the necessary requirements to understand the concept they are trying to learn.

### The algorithm

It will be easier to create paths if you understand Arbital's underlying algorithm. Here are the key steps:

1. Gather the list of the requisites the user wants to learn.
2. Remove the ones the user already knows.
3. For each requirement, find a page that teaches it and add it to the path. (There is a somewhat complex scoring function for picking the best teaching page.)
4. For each of those pages, take their requirements and repeat from step #2.
5. Once the entire tree is generated, Arbital linearizes it, so that every requisite is taught before pages that require it. (If there are dependency cycles, they are broken arbitrarily.) Note that as long as the requirement constraints are satisfied, the pages can otherwise appear in any order.

On the /learn/ page the resulting pages are displayed in a sequence. If you want to see the underlying tree structure, use the ⋮ menu to switch the view. It should make it more clear why the algorithm chose certain pages in certain order, and you can also explore the alternatives.

For a demo, take a look at: Bayes' rule: Guide.

### Debugging

Here are a few likely issues you might run into and tips on how to address them.

The order of the pages is not correct:

• If it makes sense, add more requirements to the pages you want to come later in the path.
• Take a look at the learn link guide to see how you can manually specify the order.

The algorithm is picking another page instead of yours:

• This is technically a feature. If both pages teach a requisite, then they should be interchangeable. If the other page is lacking a requirement, you can add it. All things being equal, the algorithm prefers to pick the page with fewer requirements.
• Take a look at the learn link guide to see how you can manually require your page to appear on the path.