0
6
0
34
21
15
9
31
60
... | ... |
@@ -317,5 +317,6 @@ |
317 | 317 |
|
318 | 318 |
This group contains the common graph search algorithms, namely |
319 |
\e breadth-first \e search (BFS) and \e depth-first \e search (DFS) |
|
319 |
\e breadth-first \e search (BFS) and \e depth-first \e search (DFS) |
|
320 |
\ref clrs01algorithms. |
|
320 | 321 |
*/ |
321 | 322 |
|
... | ... |
@@ -325,5 +326,6 @@ |
325 | 326 |
\brief Algorithms for finding shortest paths. |
326 | 327 |
|
327 |
This group contains the algorithms for finding shortest paths in digraphs |
|
328 |
This group contains the algorithms for finding shortest paths in digraphs |
|
329 |
\ref clrs01algorithms. |
|
328 | 330 |
|
329 | 331 |
- \ref Dijkstra algorithm for finding shortest paths from a source node |
... | ... |
@@ -347,5 +349,5 @@ |
347 | 349 |
|
348 | 350 |
This group contains the algorithms for finding minimum cost spanning |
349 |
trees and arborescences. |
|
351 |
trees and arborescences \ref clrs01algorithms. |
|
350 | 352 |
*/ |
351 | 353 |
|
... | ... |
@@ -356,5 +358,5 @@ |
356 | 358 |
|
357 | 359 |
This group contains the algorithms for finding maximum flows and |
358 |
feasible circulations. |
|
360 |
feasible circulations \ref clrs01algorithms, \ref amo93networkflows. |
|
359 | 361 |
|
360 | 362 |
The \e maximum \e flow \e problem is to find a flow of maximum value between |
... | ... |
@@ -371,10 +373,14 @@ |
371 | 373 |
|
372 | 374 |
LEMON contains several algorithms for solving maximum flow problems: |
373 |
- \ref EdmondsKarp Edmonds-Karp algorithm. |
|
374 |
- \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm. |
|
375 |
- \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees. |
|
376 |
- \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees. |
|
375 |
- \ref EdmondsKarp Edmonds-Karp algorithm |
|
376 |
\ref edmondskarp72theoretical. |
|
377 |
- \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm |
|
378 |
\ref goldberg88newapproach. |
|
379 |
- \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees |
|
380 |
\ref dinic70algorithm, \ref sleator83dynamic. |
|
381 |
- \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees |
|
382 |
\ref goldberg88newapproach, \ref sleator83dynamic. |
|
377 | 383 |
|
378 |
In most cases the \ref Preflow |
|
384 |
In most cases the \ref Preflow algorithm provides the |
|
379 | 385 |
fastest method for computing a maximum flow. All implementations |
380 | 386 |
also provide functions to query the minimum cut, which is the dual |
... | ... |
@@ -394,16 +400,20 @@ |
394 | 400 |
|
395 | 401 |
This group contains the algorithms for finding minimum cost flows and |
396 |
circulations. For more information about this problem and its dual |
|
397 |
solution see \ref min_cost_flow "Minimum Cost Flow Problem". |
|
402 |
circulations \ref amo93networkflows. For more information about this |
|
403 |
problem and its dual solution, see \ref min_cost_flow |
|
404 |
"Minimum Cost Flow Problem". |
|
398 | 405 |
|
399 | 406 |
LEMON contains several algorithms for this problem. |
400 | 407 |
- \ref NetworkSimplex Primal Network Simplex algorithm with various |
401 |
pivot strategies. |
|
408 |
pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex. |
|
402 | 409 |
- \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on |
403 |
cost scaling |
|
410 |
cost scaling \ref goldberg90approximation, \ref goldberg97efficient, |
|
411 |
\ref bunnagel98efficient. |
|
404 | 412 |
- \ref CapacityScaling Successive Shortest %Path algorithm with optional |
405 |
capacity scaling. |
|
406 |
- \ref CancelAndTighten The Cancel and Tighten algorithm. |
|
407 |
|
|
413 |
capacity scaling \ref edmondskarp72theoretical. |
|
414 |
- \ref CancelAndTighten The Cancel and Tighten algorithm |
|
415 |
\ref goldberg89cyclecanceling. |
|
416 |
- \ref CycleCanceling Cycle-Canceling algorithms |
|
417 |
\ref klein67primal, \ref goldberg89cyclecanceling. |
|
408 | 418 |
|
409 | 419 |
In general NetworkSimplex is the most efficient implementation, |
... | ... |
@@ -535,11 +545,14 @@ |
535 | 545 |
|
536 | 546 |
/** |
537 |
@defgroup lp_group |
|
547 |
@defgroup lp_group LP and MIP Solvers |
|
538 | 548 |
@ingroup gen_opt_group |
539 |
\brief |
|
549 |
\brief LP and MIP solver interfaces for LEMON. |
|
540 | 550 |
|
541 |
This group contains Lp and Mip solver interfaces for LEMON. The |
|
542 |
various LP solvers could be used in the same manner with this |
|
543 |
|
|
551 |
This group contains LP and MIP solver interfaces for LEMON. |
|
552 |
Various LP solvers could be used in the same manner with this |
|
553 |
high-level interface. |
|
554 |
|
|
555 |
The currently supported solvers are \ref glpk, \ref clp, \ref cbc, |
|
556 |
\ref cplex, \ref soplex. |
|
544 | 557 |
*/ |
545 | 558 |
... | ... |
@@ -22,12 +22,9 @@ |
22 | 22 |
\section intro Introduction |
23 | 23 |
|
24 |
\subsection whatis What is LEMON |
|
25 |
|
|
26 |
LEMON stands for <b>L</b>ibrary for <b>E</b>fficient <b>M</b>odeling |
|
27 |
and <b>O</b>ptimization in <b>N</b>etworks. |
|
28 |
It is a C++ template |
|
29 |
library aimed at combinatorial optimization tasks which |
|
30 |
often involve in working |
|
31 |
with graphs. |
|
24 |
<b>LEMON</b> stands for <i><b>L</b>ibrary for <b>E</b>fficient <b>M</b>odeling |
|
25 |
and <b>O</b>ptimization in <b>N</b>etworks</i>. |
|
26 |
It is a C++ template library providing efficient implementation of common |
|
27 |
data structures and algorithms with focus on combinatorial optimization |
|
28 |
problems in graphs and networks. |
|
32 | 29 |
|
33 | 30 |
<b> |
... | ... |
@@ -39,5 +36,14 @@ |
39 | 36 |
</b> |
40 | 37 |
|
41 |
|
|
38 |
The project is maintained by the |
|
39 |
<a href="http://www.cs.elte.hu/egres/">Egerváry Research Group on |
|
40 |
Combinatorial Optimization</a> \ref egres |
|
41 |
at the Operations Research Department of the |
|
42 |
<a href="http://www.elte.hu/">Eötvös Loránd University, |
|
43 |
Budapest</a>, Hungary. |
|
44 |
LEMON is also a member of the <a href="http://www.coin-or.org/">COIN-OR</a> |
|
45 |
initiative \ref coinor. |
|
46 |
|
|
47 |
\section howtoread How to Read the Documentation |
|
42 | 48 |
|
43 | 49 |
If you would like to get to know the library, see |
... | ... |
@@ -27,5 +27,5 @@ |
27 | 27 |
minimum total cost from a set of supply nodes to a set of demand nodes |
28 | 28 |
in a network with capacity constraints (lower and upper bounds) |
29 |
and arc costs. |
|
29 |
and arc costs \ref amo93networkflows. |
|
30 | 30 |
|
31 | 31 |
Formally, let \f$G=(V,A)\f$ be a digraph, \f$lower: A\rightarrow\mathbf{R}\f$, |
... | ... |
@@ -151,13 +151,23 @@ |
151 | 151 |
%%%%% Maximum flow algorithms %%%%% |
152 | 152 |
|
153 |
@ |
|
153 |
@article{edmondskarp72theoretical, |
|
154 |
author = {Jack Edmonds and Richard M. Karp}, |
|
155 |
title = {Theoretical improvements in algorithmic efficiency |
|
156 |
for network flow problems}, |
|
157 |
journal = {Journal of the ACM}, |
|
158 |
year = 1972, |
|
159 |
volume = 19, |
|
160 |
number = 2, |
|
161 |
pages = {248-264} |
|
162 |
} |
|
163 |
|
|
164 |
@article{goldberg88newapproach, |
|
154 | 165 |
author = {Andrew V. Goldberg and Robert E. Tarjan}, |
155 | 166 |
title = {A new approach to the maximum flow problem}, |
156 |
booktitle = {STOC '86: Proceedings of the Eighteenth Annual ACM |
|
157 |
Symposium on Theory of Computing}, |
|
158 |
year = 1986, |
|
159 |
publisher = {ACM Press}, |
|
160 |
address = {New York, NY}, |
|
161 |
pages = {136-146} |
|
167 |
journal = {Journal of the ACM}, |
|
168 |
year = 1988, |
|
169 |
volume = 35, |
|
170 |
number = 4, |
|
171 |
pages = {921-940} |
|
162 | 172 |
} |
163 | 173 |
|
... | ... |
@@ -230,40 +240,16 @@ |
230 | 240 |
} |
231 | 241 |
|
232 |
@ |
|
242 |
@article{goldberg89cyclecanceling, |
|
233 | 243 |
author = {Andrew V. Goldberg and Robert E. Tarjan}, |
234 | 244 |
title = {Finding minimum-cost circulations by canceling |
235 | 245 |
negative cycles}, |
236 |
booktitle = {STOC '88: Proceedings of the Twentieth Annual ACM |
|
237 |
Symposium on Theory of Computing}, |
|
238 |
year = 1988, |
|
239 |
publisher = {ACM Press}, |
|
240 |
address = {New York, NY}, |
|
241 |
pages = {388-397} |
|
246 |
journal = {Journal of the ACM}, |
|
247 |
year = 1989, |
|
248 |
volume = 36, |
|
249 |
number = 4, |
|
250 |
pages = {873-886} |
|
242 | 251 |
} |
243 | 252 |
|
244 |
@article{edmondskarp72theoretical, |
|
245 |
author = {Jack Edmonds and Richard M. Karp}, |
|
246 |
title = {Theoretical improvements in algorithmic efficiency |
|
247 |
for network flow problems}, |
|
248 |
journal = {Journal of the ACM}, |
|
249 |
year = 1972, |
|
250 |
volume = 19, |
|
251 |
number = 2, |
|
252 |
pages = {248-264} |
|
253 |
} |
|
254 |
|
|
255 |
@inproceedings{goldberg87approximation, |
|
256 |
author = {Andrew V. Goldberg and Robert E. Tarjan}, |
|
257 |
title = {Solving minimum-cost flow problems by successive |
|
258 |
approximation}, |
|
259 |
booktitle = {STOC '87: Proceedings of the Nineteenth Annual ACM |
|
260 |
Symposium on Theory of Computing}, |
|
261 |
year = 1987, |
|
262 |
publisher = {ACM Press}, |
|
263 |
address = {New York, NY}, |
|
264 |
pages = {7-18} |
|
265 |
} |
|
266 |
|
|
267 |
@article{goldberg90finding, |
|
253 |
@article{goldberg90approximation, |
|
268 | 254 |
author = {Andrew V. Goldberg and Robert E. Tarjan}, |
269 | 255 |
title = {Finding Minimum-Cost Circulations by Successive |
... | ... |
@@ -298,4 +284,11 @@ |
298 | 284 |
} |
299 | 285 |
|
286 |
@book{dantzig63linearprog, |
|
287 |
author = {George B. Dantzig}, |
|
288 |
title = {Linear Programming and Extensions}, |
|
289 |
publisher = {Princeton University Press}, |
|
290 |
year = 1963 |
|
291 |
} |
|
292 |
|
|
300 | 293 |
@mastersthesis{kellyoneill91netsimplex, |
301 | 294 |
author = {Damian J. Kelly and Garrett M. O'Neill}, |
... | ... |
@@ -307,24 +300,2 @@ |
307 | 300 |
month = sep, |
308 | 301 |
} |
309 |
|
|
310 |
@techreport{lobel96networksimplex, |
|
311 |
author = {Andreas L{\"o}bel}, |
|
312 |
title = {Solving large-scale real-world minimum-cost flow |
|
313 |
problems by a network simplex method}, |
|
314 |
institution = {Konrad-Zuse-Zentrum fur Informationstechnik Berlin |
|
315 |
({ZIB})}, |
|
316 |
address = {Berlin, Germany}, |
|
317 |
year = 1996, |
|
318 |
number = {SC 96-7} |
|
319 |
} |
|
320 |
|
|
321 |
@article{frangioni06computational, |
|
322 |
author = {Antonio Frangioni and Antonio Manca}, |
|
323 |
title = {A Computational Study of Cost Reoptimization for |
|
324 |
Min-Cost Flow Problems}, |
|
325 |
journal = {INFORMS Journal On Computing}, |
|
326 |
year = 2006, |
|
327 |
volume = 18, |
|
328 |
number = 1, |
|
329 |
pages = {61-70} |
|
330 |
} |
... | ... |
@@ -41,5 +41,7 @@ |
41 | 41 |
/// |
42 | 42 |
/// \ref NetworkSimplex implements the primal Network Simplex algorithm |
43 |
/// for finding a \ref min_cost_flow "minimum cost flow" |
|
43 |
/// for finding a \ref min_cost_flow "minimum cost flow" |
|
44 |
/// \ref amo93networkflows, \ref dantzig63linearprog, |
|
45 |
/// \ref kellyoneill91netsimplex. |
|
44 | 46 |
/// This algorithm is a specialized version of the linear programming |
45 | 47 |
/// simplex method directly for the minimum cost flow problem. |
... | ... |
@@ -103,5 +103,6 @@ |
103 | 103 |
/// This class provides an implementation of Goldberg-Tarjan's \e preflow |
104 | 104 |
/// \e push-relabel algorithm producing a \ref max_flow |
105 |
/// "flow of maximum value" in a digraph |
|
105 |
/// "flow of maximum value" in a digraph \ref clrs01algorithms, |
|
106 |
/// \ref amo93networkflows, \ref goldberg88newapproach. |
|
106 | 107 |
/// The preflow algorithms are the fastest known maximum |
107 | 108 |
/// flow algorithms. The current implementation uses a mixture of the |
0 comments (0 inline)