# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1225228851 -3600
# Node ID 39ff10276621ccdf7d74451efba324da4253b626
# Parent 2f64c4a692a87056623c6fffafd76432806ee593
Apply the unifier script to the Suurballe related files
diff --git a/lemon/suurballe.h b/lemon/suurballe.h
|
a
|
b
|
|
| 1 | | /* -*- C++ -*- |
| | 1 | /* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 | * |
| 3 | | * This file is a part of LEMON, a generic C++ optimization library |
| | 3 | * This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 | * |
| 5 | 5 | * Copyright (C) 2003-2008 |
| 6 | 6 | * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| … |
… |
|
| 53 | 53 | /// with \ref SplitDigraphAdaptor. |
| 54 | 54 | /// |
| 55 | 55 | /// \author Attila Bernath and Peter Kovacs |
| 56 | | |
| 57 | | template < typename Digraph, |
| | 56 | |
| | 57 | template < typename Digraph, |
| 58 | 58 | typename LengthMap = typename Digraph::template ArcMap<int> > |
| 59 | 59 | class Suurballe |
| 60 | 60 | { |
| … |
… |
|
| 74 | 74 | typedef SimplePath<Digraph> Path; |
| 75 | 75 | |
| 76 | 76 | private: |
| 77 | | |
| | 77 | |
| 78 | 78 | /// \brief Special implementation of the \ref Dijkstra algorithm |
| 79 | 79 | /// for finding shortest paths in the residual network. |
| 80 | 80 | /// |
| … |
… |
|
| 104 | 104 | PredMap &_pred; |
| 105 | 105 | // The processed (i.e. permanently labeled) nodes |
| 106 | 106 | std::vector<Node> _proc_nodes; |
| 107 | | |
| | 107 | |
| 108 | 108 | Node _s; |
| 109 | 109 | Node _t; |
| 110 | 110 | |
| … |
… |
|
| 198 | 198 | const Digraph &_graph; |
| 199 | 199 | // The length map |
| 200 | 200 | const LengthMap &_length; |
| 201 | | |
| | 201 | |
| 202 | 202 | // Arc map of the current flow |
| 203 | 203 | FlowMap *_flow; |
| 204 | 204 | bool _local_flow; |
| … |
… |
|
| 266 | 266 | /// |
| 267 | 267 | /// Sets the potential map. |
| 268 | 268 | /// |
| 269 | | /// The potentials provide the dual solution of the underlying |
| | 269 | /// The potentials provide the dual solution of the underlying |
| 270 | 270 | /// minimum cost flow problem. |
| 271 | 271 | /// |
| 272 | 272 | /// \return \c (*this) |
| … |
… |
|
| 328 | 328 | for (ArcIt e(_graph); e != INVALID; ++e) (*_flow)[e] = 0; |
| 329 | 329 | for (NodeIt n(_graph); n != INVALID; ++n) (*_potential)[n] = 0; |
| 330 | 330 | |
| 331 | | _dijkstra = new ResidualDijkstra( _graph, *_flow, _length, |
| | 331 | _dijkstra = new ResidualDijkstra( _graph, *_flow, _length, |
| 332 | 332 | *_potential, _pred, |
| 333 | 333 | _source, _target ); |
| 334 | 334 | } |
| … |
… |
|
| 368 | 368 | } |
| 369 | 369 | return _path_num; |
| 370 | 370 | } |
| 371 | | |
| | 371 | |
| 372 | 372 | /// \brief Computes the paths from the flow. |
| 373 | 373 | /// |
| 374 | 374 | /// Computes the paths from the flow. |
| … |
… |
|
| 420 | 420 | /// found potentials (the dual solution). |
| 421 | 421 | /// |
| 422 | 422 | /// Returns a const reference to the node map storing the found |
| 423 | | /// potentials that provide the dual solution of the underlying |
| | 423 | /// potentials that provide the dual solution of the underlying |
| 424 | 424 | /// minimum cost flow problem. |
| 425 | 425 | /// |
| 426 | 426 | /// \pre \ref run() or findFlow() must be called before using this |
diff --git a/test/suurballe_test.cc b/test/suurballe_test.cc
|
a
|
b
|
|
| 1 | | /* -*- C++ -*- |
| | 1 | /* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 | * |
| 3 | | * This file is a part of LEMON, a generic C++ optimization library |
| | 3 | * This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 | * |
| 5 | 5 | * Copyright (C) 2003-2008 |
| 6 | 6 | * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| … |
… |
|
| 30 | 30 | |
| 31 | 31 | // Checks the feasibility of the flow |
| 32 | 32 | template <typename Digraph, typename FlowMap> |
| 33 | | bool checkFlow( const Digraph& gr, const FlowMap& flow, |
| | 33 | bool checkFlow( const Digraph& gr, const FlowMap& flow, |
| 34 | 34 | typename Digraph::Node s, typename Digraph::Node t, |
| 35 | 35 | int value ) |
| 36 | 36 | { |
| … |
… |
|
| 53 | 53 | } |
| 54 | 54 | |
| 55 | 55 | // Checks the optimalitiy of the flow |
| 56 | | template < typename Digraph, typename CostMap, |
| | 56 | template < typename Digraph, typename CostMap, |
| 57 | 57 | typename FlowMap, typename PotentialMap > |
| 58 | 58 | bool checkOptimality( const Digraph& gr, const CostMap& cost, |
| 59 | 59 | const FlowMap& flow, const PotentialMap& pi ) |
| … |
… |
|
| 110 | 110 | node("target", target). |
| 111 | 111 | run(); |
| 112 | 112 | input.close(); |
| 113 | | |
| | 113 | |
| 114 | 114 | // Finding 2 paths |
| 115 | 115 | { |
| 116 | 116 | Suurballe<ListDigraph> suurballe(digraph, length, source, target); |
| … |
… |
|
| 118 | 118 | check(checkFlow(digraph, suurballe.flowMap(), source, target, 2), |
| 119 | 119 | "The flow is not feasible"); |
| 120 | 120 | check(suurballe.totalLength() == 510, "The flow is not optimal"); |
| 121 | | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| | 121 | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| 122 | 122 | suurballe.potentialMap()), |
| 123 | 123 | "Wrong potentials"); |
| 124 | 124 | for (int i = 0; i < suurballe.pathNum(); ++i) |
| … |
… |
|
| 133 | 133 | check(checkFlow(digraph, suurballe.flowMap(), source, target, 3), |
| 134 | 134 | "The flow is not feasible"); |
| 135 | 135 | check(suurballe.totalLength() == 1040, "The flow is not optimal"); |
| 136 | | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| | 136 | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| 137 | 137 | suurballe.potentialMap()), |
| 138 | 138 | "Wrong potentials"); |
| 139 | 139 | for (int i = 0; i < suurballe.pathNum(); ++i) |
| … |
… |
|
| 148 | 148 | check(checkFlow(digraph, suurballe.flowMap(), source, target, 3), |
| 149 | 149 | "The flow is not feasible"); |
| 150 | 150 | check(suurballe.totalLength() == 1040, "The flow is not optimal"); |
| 151 | | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| | 151 | check(checkOptimality(digraph, length, suurballe.flowMap(), |
| 152 | 152 | suurballe.potentialMap()), |
| 153 | 153 | "Wrong potentials"); |
| 154 | 154 | for (int i = 0; i < suurballe.pathNum(); ++i) |