| ... | ... |
@@ -46,25 +46,25 @@ |
| 46 | 46 |
/// Note that this problem is a special case of the \ref min_cost_flow |
| 47 | 47 |
/// "minimum cost flow problem". This implementation is actually an |
| 48 | 48 |
/// efficient specialized version of the \ref CapacityScaling |
| 49 | 49 |
/// "Successive Shortest Path" algorithm directly for this problem. |
| 50 | 50 |
/// Therefore this class provides query functions for flow values and |
| 51 | 51 |
/// node potentials (the dual solution) just like the minimum cost flow |
| 52 | 52 |
/// algorithms. |
| 53 | 53 |
/// |
| 54 | 54 |
/// \tparam GR The digraph type the algorithm runs on. |
| 55 | 55 |
/// \tparam LEN The type of the length map. |
| 56 | 56 |
/// The default value is <tt>GR::ArcMap<int></tt>. |
| 57 | 57 |
/// |
| 58 |
/// \warning Length values should be \e non-negative |
|
| 58 |
/// \warning Length values should be \e non-negative. |
|
| 59 | 59 |
/// |
| 60 | 60 |
/// \note For finding node-disjoint paths this algorithm can be used |
| 61 | 61 |
/// along with the \ref SplitNodes adaptor. |
| 62 | 62 |
#ifdef DOXYGEN |
| 63 | 63 |
template <typename GR, typename LEN> |
| 64 | 64 |
#else |
| 65 | 65 |
template < typename GR, |
| 66 | 66 |
typename LEN = typename GR::template ArcMap<int> > |
| 67 | 67 |
#endif |
| 68 | 68 |
class Suurballe |
| 69 | 69 |
{
|
| 70 | 70 |
TEMPLATE_DIGRAPH_TYPEDEFS(GR); |
| ... | ... |
@@ -243,28 +243,25 @@ |
| 243 | 243 |
public: |
| 244 | 244 |
|
| 245 | 245 |
/// \brief Constructor. |
| 246 | 246 |
/// |
| 247 | 247 |
/// Constructor. |
| 248 | 248 |
/// |
| 249 | 249 |
/// \param graph The digraph the algorithm runs on. |
| 250 | 250 |
/// \param length The length (cost) values of the arcs. |
| 251 | 251 |
Suurballe( const Digraph &graph, |
| 252 | 252 |
const LengthMap &length ) : |
| 253 | 253 |
_graph(graph), _length(length), _flow(0), _local_flow(false), |
| 254 | 254 |
_potential(0), _local_potential(false), _pred(graph) |
| 255 |
{
|
|
| 256 |
LEMON_ASSERT(std::numeric_limits<Length>::is_integer, |
|
| 257 |
"The length type of Suurballe must be integer"); |
|
| 258 |
} |
|
| 255 |
{}
|
|
| 259 | 256 |
|
| 260 | 257 |
/// Destructor. |
| 261 | 258 |
~Suurballe() {
|
| 262 | 259 |
if (_local_flow) delete _flow; |
| 263 | 260 |
if (_local_potential) delete _potential; |
| 264 | 261 |
delete _dijkstra; |
| 265 | 262 |
} |
| 266 | 263 |
|
| 267 | 264 |
/// \brief Set the flow map. |
| 268 | 265 |
/// |
| 269 | 266 |
/// This function sets the flow map. |
| 270 | 267 |
/// If it is not used before calling \ref run() or \ref init(), |
0 comments (0 inline)