Fri, 13 Nov 2009 00:10:33 +0100Entirely rework cycle canceling algorithms (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Fri, 13 Nov 2009 00:10:33 +0100] rev 881
Entirely rework cycle canceling algorithms (#180)

- Move the cycle canceling algorithms (CycleCanceling, CancelAndTighten)
into one class (CycleCanceling).
- Add a Method parameter to the run() function to be able to select
the used cycle canceling method.
- Use the new interface similarly to NetworkSimplex.
- Rework the implementations using an efficient internal structure
for handling the residual network.
This improvement made the codes much faster.
- Handle GEQ supply type (LEQ is not supported).
- Handle infinite upper bounds.
- Handle negative costs (for arcs of finite upper bound).
- Extend the documentation.

Fri, 13 Nov 2009 00:09:35 +0100Port cycle canceling algorithms from SVN -r3524 (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Fri, 13 Nov 2009 00:09:35 +0100] rev 880
Port cycle canceling algorithms from SVN -r3524 (#180)

Thu, 12 Nov 2009 23:52:51 +0100Add citations to the scaling MCF algorithms (#180, #184)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:52:51 +0100] rev 879
Add citations to the scaling MCF algorithms (#180, #184)
and improve the doc of their group.

Thu, 12 Nov 2009 23:49:05 +0100Small doc improvements + unifications in MCF classes (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:49:05 +0100] rev 878
Small doc improvements + unifications in MCF classes (#180)

Thu, 12 Nov 2009 23:45:15 +0100Small implementation improvements in MCF algorithms (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:45:15 +0100] rev 877
Small implementation improvements in MCF algorithms (#180)

- Handle max() as infinite value (not only infinity()).
- Better GEQ handling in CapacityScaling.
- Skip the unnecessary saturating operations in the first phase in
CapacityScaling.
- Use vector<char> instead of vector<bool> and vector<int> if it is
possible and it proved to be usually faster.

Thu, 12 Nov 2009 23:34:35 +0100More options for run() in scaling MCF algorithms (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:34:35 +0100] rev 876
More options for run() in scaling MCF algorithms (#180)

- Three methods can be selected and the scaling factor can be
given for CostScaling.
- The scaling factor can be given for CapacityScaling.

Thu, 12 Nov 2009 23:30:45 +0100Entirely rework CostScaling (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:30:45 +0100] rev 875
Entirely rework CostScaling (#180)

- Use the new interface similarly to NetworkSimplex.
- Rework the implementation using an efficient internal structure
for handling the residual network. This improvement made the
code much faster.
- Handle GEQ supply type (LEQ is not supported).
- Handle infinite upper bounds.
- Handle negative costs (for arcs of finite upper bound).
- Traits class + named parameter for the LargeCost type used in
internal computations.
- Extend the documentation.

Thu, 12 Nov 2009 23:29:42 +0100Port CostScaling from SVN -r3524 (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:29:42 +0100] rev 874
Port CostScaling from SVN -r3524 (#180)

Thu, 12 Nov 2009 23:27:21 +0100Traits class + a named parameter for CapacityScaling (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:27:21 +0100] rev 873
Traits class + a named parameter for CapacityScaling (#180)
to specify the heap used in internal Dijkstra computations.

Thu, 12 Nov 2009 23:26:13 +0100Entirely rework CapacityScaling (#180)
Peter Kovacs <kpeter@inf.elte.hu> [Thu, 12 Nov 2009 23:26:13 +0100] rev 872
Entirely rework CapacityScaling (#180)

- Use the new interface similarly to NetworkSimplex.
- Rework the implementation using an efficient internal structure
for handling the residual network. This improvement made the
code much faster (up to 2-5 times faster on large graphs).
- Handle GEQ supply type (LEQ is not supported).
- Handle negative costs for arcs of finite capacity.
(Note that this algorithm cannot handle arcs of negative cost
and infinite upper bound, thus it returns UNBOUNDED if such
an arc exists.)
- Extend the documentation.