# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1241654712 -7200
# Branch 1.1
# Node ID 189760a7cdd0d71c2d3ae8727ab5d589944f374d
# Parent dc9316203edfdb96c5fc03d7af724392146468f5
Remove references of missing tools (#257)
diff --git a/doc/groups.dox b/doc/groups.dox
|
a
|
b
|
|
| 236 | 236 | */ |
| 237 | 237 | |
| 238 | 238 | /** |
| 239 | | @defgroup matrices Matrices |
| 240 | | @ingroup datas |
| 241 | | \brief Two dimensional data storages implemented in LEMON. |
| 242 | | |
| 243 | | This group contains two dimensional data storages implemented in LEMON. |
| 244 | | */ |
| 245 | | |
| 246 | | /** |
| 247 | 239 | @defgroup paths Path Structures |
| 248 | 240 | @ingroup datas |
| 249 | 241 | \brief %Path structures implemented in LEMON. |
| … |
… |
|
| 293 | 285 | |
| 294 | 286 | This group contains the algorithms for finding shortest paths in digraphs. |
| 295 | 287 | |
| 296 | | - \ref Dijkstra algorithm for finding shortest paths from a source node |
| 297 | | when all arc lengths are non-negative. |
| 298 | | - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths |
| 299 | | from a source node when arc lenghts can be either positive or negative, |
| 300 | | but the digraph should not contain directed cycles with negative total |
| 301 | | length. |
| 302 | | - \ref FloydWarshall "Floyd-Warshall" and \ref Johnson "Johnson" algorithms |
| 303 | | for solving the \e all-pairs \e shortest \e paths \e problem when arc |
| 304 | | lenghts can be either positive or negative, but the digraph should |
| 305 | | not contain directed cycles with negative total length. |
| | 288 | - \ref Dijkstra Dijkstra's algorithm for finding shortest paths from a |
| | 289 | source node when all arc lengths are non-negative. |
| 306 | 290 | - \ref Suurballe A successive shortest path algorithm for finding |
| 307 | 291 | arc-disjoint paths between two nodes having minimum total length. |
| 308 | 292 | */ |
| … |
… |
|
| 327 | 311 | \quad \forall u\in V\setminus\{s,t\} \f] |
| 328 | 312 | \f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f] |
| 329 | 313 | |
| 330 | | LEMON contains several algorithms for solving maximum flow problems: |
| 331 | | - \ref EdmondsKarp Edmonds-Karp algorithm. |
| 332 | | - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm. |
| 333 | | - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees. |
| 334 | | - \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees. |
| | 314 | \ref Preflow implements the preflow push-relabel algorithm of Goldberg and |
| | 315 | Tarjan for solving this problem. It also provides functions to query the |
| | 316 | minimum cut, which is the dual problem of maximum flow. |
| 335 | 317 | |
| 336 | | In most cases the \ref Preflow "Preflow" algorithm provides the |
| 337 | | fastest method for computing a maximum flow. All implementations |
| 338 | | provides functions to also query the minimum cut, which is the dual |
| 339 | | problem of the maximum flow. |
| | 318 | \ref Circulation is a preflow push-relabel algorithm implemented directly |
| | 319 | for finding feasible circulations, which is a somewhat different problem, |
| | 320 | but it is strongly related to maximum flow. |
| | 321 | For more information, see \ref Circulation. |
| 340 | 322 | */ |
| 341 | 323 | |
| 342 | 324 | /** |
| … |
… |
|
| 421 | 403 | \f$uv\in A\f$ with respect to the potential function \f$\pi\f$, i.e. |
| 422 | 404 | \f[ cost^\pi(uv) = cost(uv) + \pi(u) - \pi(v).\f] |
| 423 | 405 | |
| 424 | | All algorithms provide dual solution (node potentials) as well, |
| 425 | | if an optimal flow is found. |
| 426 | | |
| 427 | | LEMON contains several algorithms for solving minimum cost flow problems. |
| 428 | | - \ref NetworkSimplex Primal Network Simplex algorithm with various |
| 429 | | pivot strategies. |
| 430 | | - \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on |
| 431 | | cost scaling. |
| 432 | | - \ref CapacityScaling Successive Shortest %Path algorithm with optional |
| 433 | | capacity scaling. |
| 434 | | - \ref CancelAndTighten The Cancel and Tighten algorithm. |
| 435 | | - \ref CycleCanceling Cycle-Canceling algorithms. |
| 436 | | |
| 437 | | Most of these implementations support the general inequality form of the |
| 438 | | minimum cost flow problem, but CancelAndTighten and CycleCanceling |
| 439 | | only support the equality form due to the primal method they use. |
| 440 | | |
| 441 | | In general NetworkSimplex is the most efficient implementation, |
| 442 | | but in special cases other algorithms could be faster. |
| 443 | | For example, if the total supply and/or capacities are rather small, |
| 444 | | CapacityScaling is usually the fastest algorithm (without effective scaling). |
| | 406 | \ref NetworkSimplex is an efficient implementation of the primal Network |
| | 407 | Simplex algorithm for finding minimum cost flows. It also provides dual |
| | 408 | solution (node potentials), if an optimal flow is found. |
| 445 | 409 | */ |
| 446 | 410 | |
| 447 | 411 | /** |
| … |
… |
|
| 465 | 429 | |
| 466 | 430 | - \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut |
| 467 | 431 | in directed graphs. |
| 468 | | - \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for |
| 469 | | calculating minimum cut in undirected graphs. |
| 470 | 432 | - \ref GomoryHu "Gomory-Hu tree computation" for calculating |
| 471 | 433 | all-pairs minimum cut in undirected graphs. |
| 472 | 434 | |
| … |
… |
|
| 487 | 449 | */ |
| 488 | 450 | |
| 489 | 451 | /** |
| 490 | | @defgroup planar Planarity Embedding and Drawing |
| 491 | | @ingroup algs |
| 492 | | \brief Algorithms for planarity checking, embedding and drawing |
| 493 | | |
| 494 | | This group contains the algorithms for planarity checking, |
| 495 | | embedding and drawing. |
| 496 | | |
| 497 | | \image html planar.png |
| 498 | | \image latex planar.eps "Plane graph" width=\textwidth |
| 499 | | */ |
| 500 | | |
| 501 | | /** |
| 502 | 452 | @defgroup matching Matching Algorithms |
| 503 | 453 | @ingroup algs |
| 504 | 454 | \brief Algorithms for finding matchings in graphs and bipartite graphs. |
| 505 | 455 | |
| 506 | | This group contains the algorithms for calculating |
| 507 | | matchings in graphs and bipartite graphs. The general matching problem is |
| 508 | | finding a subset of the edges for which each node has at most one incident |
| 509 | | edge. |
| | 456 | This group contains the algorithms for calculating matchings in graphs. |
| | 457 | The general matching problem is finding a subset of the edges for which |
| | 458 | each node has at most one incident edge. |
| 510 | 459 | |
| 511 | 460 | There are several different algorithms for calculate matchings in |
| 512 | | graphs. The matching problems in bipartite graphs are generally |
| 513 | | easier than in general graphs. The goal of the matching optimization |
| | 461 | graphs. The goal of the matching optimization |
| 514 | 462 | can be finding maximum cardinality, maximum weight or minimum cost |
| 515 | 463 | matching. The search can be constrained to find perfect or |
| 516 | 464 | maximum cardinality matching. |
| 517 | 465 | |
| 518 | 466 | The matching algorithms implemented in LEMON: |
| 519 | | - \ref MaxBipartiteMatching Hopcroft-Karp augmenting path algorithm |
| 520 | | for calculating maximum cardinality matching in bipartite graphs. |
| 521 | | - \ref PrBipartiteMatching Push-relabel algorithm |
| 522 | | for calculating maximum cardinality matching in bipartite graphs. |
| 523 | | - \ref MaxWeightedBipartiteMatching |
| 524 | | Successive shortest path algorithm for calculating maximum weighted |
| 525 | | matching and maximum weighted bipartite matching in bipartite graphs. |
| 526 | | - \ref MinCostMaxBipartiteMatching |
| 527 | | Successive shortest path algorithm for calculating minimum cost maximum |
| 528 | | matching in bipartite graphs. |
| 529 | 467 | - \ref MaxMatching Edmond's blossom shrinking algorithm for calculating |
| 530 | 468 | maximum cardinality matching in general graphs. |
| 531 | 469 | - \ref MaxWeightedMatching Edmond's blossom shrinking algorithm for calculating |
| … |
… |
|
| 557 | 495 | */ |
| 558 | 496 | |
| 559 | 497 | /** |
| 560 | | @defgroup approx Approximation Algorithms |
| 561 | | @ingroup algs |
| 562 | | \brief Approximation algorithms. |
| 563 | | |
| 564 | | This group contains the approximation and heuristic algorithms |
| 565 | | implemented in LEMON. |
| 566 | | */ |
| 567 | | |
| 568 | | /** |
| 569 | 498 | @defgroup gen_opt_group General Optimization Tools |
| 570 | 499 | \brief This group contains some general optimization frameworks |
| 571 | 500 | implemented in LEMON. |
| … |
… |
|
| 585 | 514 | */ |
| 586 | 515 | |
| 587 | 516 | /** |
| 588 | | @defgroup lp_utils Tools for Lp and Mip Solvers |
| 589 | | @ingroup lp_group |
| 590 | | \brief Helper tools to the Lp and Mip solvers. |
| 591 | | |
| 592 | | This group adds some helper tools to general optimization framework |
| 593 | | implemented in LEMON. |
| 594 | | */ |
| 595 | | |
| 596 | | /** |
| 597 | | @defgroup metah Metaheuristics |
| 598 | | @ingroup gen_opt_group |
| 599 | | \brief Metaheuristics for LEMON library. |
| 600 | | |
| 601 | | This group contains some metaheuristic optimization tools. |
| 602 | | */ |
| 603 | | |
| 604 | | /** |
| 605 | 517 | @defgroup utils Tools and Utilities |
| 606 | 518 | \brief Tools and utilities for programming in LEMON |
| 607 | 519 | |
diff --git a/lemon/suurballe.h b/lemon/suurballe.h
|
a
|
b
|
|
| 45 | 45 | /// |
| 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 | | /// efficient specialized version of the \ref CapacityScaling |
| 49 | | /// "Successive Shortest Path" algorithm directly for this problem. |
| | 48 | /// efficient specialized version of the Successive Shortest Path |
| | 49 | /// 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. |