Hi Pierre, thanks for this project.
I am trying to figure out how can I implement two variants of Max-Sum I am interested in: Max-Sum_ADVP and ICG-Max-Sum. Max-Sum_ADVP defines an order in which the beliefs will propagate (basically, it generates a DAG). ICG-Max-Sum cyclically applies two Max-Sum in sequence through a column generation technique, and defines probabilistic functions in the factor nodes.
I would like to ask you what could be the best way to do it. Should I do everything inside the algorithms, or should I extend computations_graph/factor_graph as well?
More generally, what is the best practice for implementing algorithms that pre-process the computation graph?
Also, in algorithms.maxsum, I understand that the query message from variable to factor (q) is costs_for_factor, the response message from factor node to variable node (r) is factor_costs_for_var, and the marginal function (z) is select_value. Maybe you could add some comments in which you map this terminology to the original one for more clarity.