<li>Try to reserve the vectors which sizes are bounded by num_nodes.</li>
<li>Use an index rather than doing push_back(), pop_back() on them.</li>
<li>For a client needing many Scc computations one after another, it could be better to wrap this in a class so we don't need to allocate the stacks at each computation. </li>
<pclass="interdd"><aclass="anchor"id="_todo000007"></a>(user) although it is already possible, using the GroupForwardArcsByFunctor method, to group all the outgoing (resp. incoming) arcs of a node, the iterator logic could still be improved to allow traversing the outgoing (resp. incoming) arcs in O(out_degree(node)) (resp. O(in_degree(node))) instead of O(degree(node)).</p><ul>
<pclass="interdd">(user) it is possible to implement arc deletion and garbage collection in an efficient (relatively) manner. For the time being we haven't seen an application for this.</p>
<pclass="interdd"><aclass="anchor"id="_todo000025"></a>(user): implement pruning procedures on top of the Held-Karp algorithm.</p>
<pclass="interdd"><aclass="anchor"id="_todo000040"></a>(user): implement the above active node choice rule.</p>
<pclass="interdd"><aclass="anchor"id="_todo000041"></a>(user): an alternative would be to evaluate: A.V. Goldberg, "The Partial Augment-Relabel Algorithm for the Maximum Flow Problem.” In Proceedings of Algorithms ESA, LNCS 5193:466-477, Springer 2008. <ahref="http://www.springerlink.com/index/5535k2j1mt646338.pdf">http://www.springerlink.com/index/5535k2j1mt646338.pdf</a></p>
<pclass="enddd"><aclass="anchor"id="_todo000048"></a>(user): See whether the following can bring any improvements on real-life problems. R.K. Ahuja, A.V. Goldberg, J.B. Orlin, and R.E. Tarjan, "Finding minimum-cost
<dd><aclass="anchor"id="_todo000051"></a>(user): Add a global Minimum Spanning Tree API automatically switching between Prim and Kruskal depending on problem size. </dd>
<dd><aclass="anchor"id="_todo000010"></a>(user): Configure SWIG to handle the GroupForwardArcsByFunctor member template and the <aclass="el"href="classoperations__research_1_1EbertGraphBase_1_1CycleHandlerForAnnotatedArcs.html">CycleHandlerForAnnotatedArcs</a> class. </dd>
<dd><aclass="anchor"id="_todo000026"></a>(user): Move the Set-related classbelow to util/bitset.h Iterates over the elements of a set represented as an unsigned integer, starting from the smallest element. </dd>
<dd><aclass="anchor"id="_todo000008"></a>(user): Configure SWIG to handle the <aclass="el"href="classoperations__research_1_1ForwardStaticGraph_1_1CycleHandlerForAnnotatedArcs.html">CycleHandlerForAnnotatedArcs</a> class. </dd>
<dd><aclass="anchor"id="_todo000009"></a>(user): For some reason, SWIG breaks if the <aclass="el"href="namespaceoperations__research.html"title="Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in c...">operations_research</a> namespace is not explicit in the following argument declaration. </dd>
<dd><aclass="anchor"id="_todo000046"></a>(user): In the two-phases algorithm, we can get this minimum cut without doing the second phase. Add an option for this if there is a need to, note that the second phase is pretty fast so the gain will be small. </dd>
<dd><aclass="anchor"id="_todo000050"></a>(user): Avoid using the globally defined type CostValue and FlowQuantity. Also uses the Arc*Type where there is no risk of overflow in more places. </dd>
<dd><pclass="startdd"><aclass="anchor"id="_todo000032"></a>(user): Investigate how to compute BaseOffset(card - 1, s \ { n }) from BaseOffset(card, n) to speed up the DP iteration. </p>
<pclass="enddd"><aclass="anchor"id="_todo000027"></a>(user): Evaluate the interest of the above. There are 'card' f(set, j) to store. That is why we need to multiply local_offset by card before adding it to the corresponding base_offset_. </p>
<dd><aclass="anchor"id="_todo000049"></a>(user): If the need arises, extend this interface to support warm start and incrementality between solves. Note that this is already supported by the GenericMinCostFlow<> interface. </dd>
<dd><aclass="anchor"id="_todo000015"></a>(user): Same questions as the ones in <aclass="el"href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946"title="Capacity reserved for future nodes, always >= num_nodes_.">node_capacity()</a>. </dd>
<dd><aclass="anchor"id="_todo000016"></a>(user): Only define this in debug mode at the cost of having a lot of ifndef NDEBUG all over the place? remove the function completely ? </dd>
<dd><aclass="anchor"id="_todo000014"></a>(user): Is it needed? remove completely? return the real capacities at the cost of having a different implementation for each graphs? </dd>
<dd><aclass="anchor"id="_todo000013"></a>(user): consider slower but more memory efficient implementations that follow the cycles of the permutation and use a bitmap to indicate what has been permuted or to mark the beginning of each cycle. </dd>
<dd><aclass="anchor"id="_todo000055"></a>(user): In some cases, there is more than one possible solution. We could take some arc costs and return the cheapest path instead. Or return the shortest path in term of number of arcs. </dd>
<dd><aclass="anchor"id="_todo000020"></a>(user): support <aclass="el"href="classutil_1_1ReverseArcMixedGraph.html#a5ebe11f2abcd78ad1f5606e27d1688bb">Head()</a> and <aclass="el"href="classutil_1_1ReverseArcMixedGraph.html#a351cbc3c0c79e22f010e697bf65d7100">Tail()</a> before <aclass="el"href="classutil_1_1ReverseArcMixedGraph.html#a06e56a529396bbd2595f5c32c2f73142">Build()</a>, like StaticGraph<>. </dd>
<dd><aclass="anchor"id="_todo000024"></a>(user): we lose a bit by returning a BeginEndWrapper<> on top of this iterator rather than a simple IntegerRange on the arc indices. </dd>
<dd><aclass="anchor"id="_todo000019"></a>(user): support <aclass="el"href="classutil_1_1ReverseArcStaticGraph.html#a72e8ed03fe3f8ff27d156622a86900aa">Head()</a> and <aclass="el"href="classutil_1_1ReverseArcStaticGraph.html#a12cf8d1312236cac409d9a1a934c1ad3">Tail()</a> before <aclass="el"href="classutil_1_1ReverseArcStaticGraph.html#a485803d141f9c80beaaae7094548d672">Build()</a>, like StaticGraph<>. </dd>
<dd><aclass="anchor"id="_todo000023"></a>(user): we lose a bit by returning a BeginEndWrapper<> on top of this iterator rather than a simple IntegerRange on the arc indices. </dd>