  Neural Algorithmic Reasoning is an emerging area of machine learning which
seeks to infuse algorithmic computation in neural networks, typically by
training neural models to approximate steps of classical algorithms. In this
context, much of the current work has focused on learning reachability and
shortest path graph algorithms, showing that joint learning on similar
algorithms is beneficial for generalisation. However, when targeting more
complex problems, such similar algorithms become more difficult to find. Here,
we propose to learn algorithms by exploiting duality of the underlying
algorithmic problem. Many algorithms solve optimisation problems. We
demonstrate that simultaneously learning the dual definition of these
optimisation problems in algorithmic learning allows for better learning and
qualitatively better solutions. Specifically, we exploit the max-flow min-cut
theorem to simultaneously learn these two algorithms over synthetically
generated graphs, demonstrating the effectiveness of the proposed approach. We
then validate the real-world utility of our dual algorithmic reasoner by
deploying it on a challenging brain vessel classification task, which likely
depends on the vessels' flow properties. We demonstrate a clear performance
gain when using our model within such a context, and empirically show that
learning the max-flow and min-cut algorithms together is critical for achieving
such a result.
