I noticed that sage presently has two implementations of DLX:
- a toy one implemented in python:
- a wrapper of a C++ implementation:
The toy one actually shows up more prominently in the documentation:
whereas the wrapper is only documented as "internal":
As far as I can see, the two are almost drop-in replacements. The C++ implementation does seem to be the one in wider use in the rest of the library. Perhaps convert the documentation for "dlx" to use the (almost certainly) much more efficient C++ wrapper, and perhaps remove the toy implementation?
I happened to need a dlx solver and after searching found the python implementation in sage. Unaware of the C++ alternative I nearly went with using the python one, which would probably have performed badly.
Changing this over could be a nice introductory project for someone interested in familiarizing themselves with sage development.