In computer science, there is this tension between creating generic algorithms applicable to different situations and optimising an algorithm to solve a specific problem. Generic algorithms make it possible to find similarities between problems that, at first glance, may seem completely unrelated. This is especially interesting when those problems belong to different domains. When this …