[PRE-ANN] ReverseSearch.jl

Reverse search is a general algorithm for combinatorial enumeration or search problems. It can be used to enumerate induced subgraphs, triangulations, lattice animals, among many others. An important feature of reverse search is that it allows one to perform an enumeration with minimal memory requirements: you can iterate over the output without allocating it all at once.

I have been working on a pure Julia implementation of reverse search, ReverseSearch.jl, which is available here. Included is a basic example of how to use reverse search to enumerate induced subgraphs. ReverseSearch.jl includes single- and multithreading implementations of reverse search, and various quality of life features that I found useful in my own work with reverse search.

The package is not registered yet – I want to use this pre-announcement to see if this functionality already exists somewhere else in Julia, and to collect as much feedback as possible!

2 Likes