I think that the the default algorithm should be documented, a disclaimer for users not relying on it being the same in successive versions seems OK. But I don't think that we will be changing the default algorithm shortly. There is ample consensus in the literature that preflow-push is the best performing algorithm in practice, and @ysitu's benchmarks show that this is the case for a wide variety of graphs.

Regarding the possibility of selecting the 'best' function depending on the graph passed as input, I'm not sure that it is a good option. I think that it would be better to have documentation (maybe based on @ysitu benchmarks) explaining the performance of algorithms on different graphs, and let them decide which algorithm to use via the `flow_func` parameter or working directly with the residual networks returned by the flow functions.