What is the fastest way to learn a set of languages?
This question came up with some queries like:
- What is the most optimal path to become a polyglot?
- How much can learning one language ease another?
All of these questions were really familiar to what I found in graph problems, so I decided to model as one!
With this in mind, I created a directed weighted graph with data based on how similar the languages are linguistically and introduced asymmetries to account for the differences in complexity of a given source language to another.
The weight aims to represent a normalized cost of "hardness" to learn from language U to V. For the queries, well, as far as I searched, they're NP-Hard! (at least for this graph) Which was a great opportunity to apply some Dynamic Programming.
For the first one, I modeled it as a steiner path, where you're given a source language, an end language, and S amount of intermediate nodes that would minimize the total cost.
But not every this is a path, sometimes you don't want to learn sequentially, so I also coded one for obtaining the minimum spanning arborescence with fixed S amount of nodes, which gives more freedom to minimize the global cost.
So, because these queries optimize a multi-objective function, it was possible to plot the pareto frontier for some starting languages, and it's very interesting to see the marginal cost it yields as well.
It turns out that this problem could also be generalized to a skill acquisition problem, and language acquisition is an instance of it. It was a really fun experiment overall.
- Formalize the mathematical choices made
- Improve data quality and reference
- Generalize for other skills acquisition problems
- Include new queries or features



