Changeset 422:a578265aa8a6 in lemon
 Timestamp:
 11/30/08 21:53:24 (15 years ago)
 Branch:
 default
 Phase:
 public
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

doc/groups.dox
r403 r422 17 17 */ 18 18 19 namespace lemon { 20 19 21 /** 20 22 @defgroup datas Data Structures … … 89 91 90 92 This group describes maps that are specifically designed to assign 91 values to the nodes and arcs of graphs. 93 values to the nodes and arcs/edges of graphs. 94 95 If you are looking for the standard graph maps (\c NodeMap, \c ArcMap, 96 \c EdgeMap), see the \ref graph_concepts "Graph Structure Concepts". 92 97 */ 93 98 … … 100 105 maps from other maps. 101 106 102 Most of them are \ref lemon::concepts::ReadMap "readonly maps".107 Most of them are \ref concepts::ReadMap "readonly maps". 103 108 They can make arithmetic and logical operations between one or two maps 104 109 (negation, shifting, addition, multiplication, logical 'and', 'or', … … 202 207 \brief Common graph search algorithms. 203 208 204 This group describes the common graph search algorithms like205 BreadthFirst Search (BFS) and DepthFirst Search (DFS).209 This group describes the common graph search algorithms, namely 210 \e breadthfirst \e search (BFS) and \e depthfirst \e search (DFS). 206 211 */ 207 212 … … 211 216 \brief Algorithms for finding shortest paths. 212 217 213 This group describes the algorithms for finding shortest paths in graphs. 218 This group describes the algorithms for finding shortest paths in digraphs. 219 220  \ref Dijkstra algorithm for finding shortest paths from a source node 221 when all arc lengths are nonnegative. 222  \ref BellmanFord "BellmanFord" algorithm for finding shortest paths 223 from a source node when arc lenghts can be either positive or negative, 224 but the digraph should not contain directed cycles with negative total 225 length. 226  \ref FloydWarshall "FloydWarshall" and \ref Johnson "Johnson" algorithms 227 for solving the \e allpairs \e shortest \e paths \e problem when arc 228 lenghts can be either positive or negative, but the digraph should 229 not contain directed cycles with negative total length. 230  \ref Suurballe A successive shortest path algorithm for finding 231 arcdisjoint paths between two nodes having minimum total length. 214 232 */ 215 233 … … 222 240 feasible circulations. 223 241 224 The maximum flow problem is to find a flow between a single source and 225 a single target that is maximum. Formally, there is a \f$G=(V,A)\f$ 226 directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity 227 function and given \f$s, t \in V\f$ source and target node. The 228 maximum flow is the \f$f_a\f$ solution of the next optimization problem: 229 230 \f[ 0 \le f_a \le c_a \f] 231 \f[ \sum_{v\in\delta^{}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv} 232 \qquad \forall u \in V \setminus \{s,t\}\f] 233 \f[ \max \sum_{v\in\delta^{+}(s)}f_{uv}  \sum_{v\in\delta^{}(s)}f_{vu}\f] 242 The \e maximum \e flow \e problem is to find a flow of maximum value between 243 a single source and a single target. Formally, there is a \f$G=(V,A)\f$ 244 digraph, a \f$cap:A\rightarrow\mathbf{R}^+_0\f$ capacity function and 245 \f$s, t \in V\f$ source and target nodes. 246 A maximum flow is an \f$f:A\rightarrow\mathbf{R}^+_0\f$ solution of the 247 following optimization problem. 248 249 \f[ \max\sum_{a\in\delta_{out}(s)}f(a)  \sum_{a\in\delta_{in}(s)}f(a) \f] 250 \f[ \sum_{a\in\delta_{out}(v)} f(a) = \sum_{a\in\delta_{in}(v)} f(a) 251 \qquad \forall v\in V\setminus\{s,t\} \f] 252 \f[ 0 \leq f(a) \leq cap(a) \qquad \forall a\in A \f] 234 253 235 254 LEMON contains several algorithms for solving maximum flow problems: 236  \ref lemon::EdmondsKarp "EdmondsKarp"237  \ref lemon::Preflow "Goldberg's Preflow algorithm"238  \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees"239  \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"240 241 In most cases the \ref lemon::Preflow "Preflow" algorithm provides the242 fastest method to compute the maximum flow. All impelementations243 provides functions to query the minimum cut, which is the dual linear244 pro gramming problem of the maximum flow.255  \ref EdmondsKarp EdmondsKarp algorithm. 256  \ref Preflow GoldbergTarjan's preflow pushrelabel algorithm. 257  \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees. 258  \ref GoldbergTarjan Preflow pushrelabel algorithm with dynamic trees. 259 260 In most cases the \ref Preflow "Preflow" algorithm provides the 261 fastest method for computing a maximum flow. All implementations 262 provides functions to also query the minimum cut, which is the dual 263 problem of the maximum flow. 245 264 */ 246 265 … … 253 272 This group describes the algorithms for finding minimum cost flows and 254 273 circulations. 274 275 The \e minimum \e cost \e flow \e problem is to find a feasible flow of 276 minimum total cost from a set of supply nodes to a set of demand nodes 277 in a network with capacity constraints and arc costs. 278 Formally, let \f$G=(V,A)\f$ be a digraph, 279 \f$lower, upper: A\rightarrow\mathbf{Z}^+_0\f$ denote the lower and 280 upper bounds for the flow values on the arcs, 281 \f$cost: A\rightarrow\mathbf{Z}^+_0\f$ denotes the cost per unit flow 282 on the arcs, and 283 \f$supply: V\rightarrow\mathbf{Z}\f$ denotes the supply/demand values 284 of the nodes. 285 A minimum cost flow is an \f$f:A\rightarrow\mathbf{R}^+_0\f$ solution of 286 the following optimization problem. 287 288 \f[ \min\sum_{a\in A} f(a) cost(a) \f] 289 \f[ \sum_{a\in\delta_{out}(v)} f(a)  \sum_{a\in\delta_{in}(v)} f(a) = 290 supply(v) \qquad \forall v\in V \f] 291 \f[ lower(a) \leq f(a) \leq upper(a) \qquad \forall a\in A \f] 292 293 LEMON contains several algorithms for solving minimum cost flow problems: 294  \ref CycleCanceling Cyclecanceling algorithms. 295  \ref CapacityScaling Successive shortest path algorithm with optional 296 capacity scaling. 297  \ref CostScaling Pushrelabel and augmentrelabel algorithms based on 298 cost scaling. 299  \ref NetworkSimplex Primal network simplex algorithm with various 300 pivot strategies. 255 301 */ 256 302 … … 263 309 This group describes the algorithms for finding minimum cut in graphs. 264 310 265 The minimum cutproblem is to find a nonempty and noncomplete266 \f$X\f$ subset of the vertices with minimum overall capacity on267 outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an268 \f$c _a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum311 The \e minimum \e cut \e problem is to find a nonempty and noncomplete 312 \f$X\f$ subset of the nodes with minimum overall capacity on 313 outgoing arcs. Formally, there is a \f$G=(V,A)\f$ digraph, a 314 \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum 269 315 cut is the \f$X\f$ solution of the next optimization problem: 270 316 271 317 \f[ \min_{X \subset V, X\not\in \{\emptyset, V\}} 272 \sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]318 \sum_{uv\in A, u\in X, v\not\in X}cap(uv) \f] 273 319 274 320 LEMON contains several algorithms related to minimum cut problems: 275 321 276  \ref lemon::HaoOrlin "HaoOrlin algorithm" to calculateminimum cut277 in directed graphs 278  \ref lemon::NagamochiIbaraki "NagamochiIbaraki algorithm" to279 calculat e minimum cut in undirected graphs280  \ref lemon::GomoryHuTree "GomoryHu tree computation" to calculate all281 pairs minimum cut in undirected graphs322  \ref HaoOrlin "HaoOrlin algorithm" for calculating minimum cut 323 in directed graphs. 324  \ref NagamochiIbaraki "NagamochiIbaraki algorithm" for 325 calculating minimum cut in undirected graphs. 326  \ref GomoryHuTree "GomoryHu tree computation" for calculating 327 allpairs minimum cut in undirected graphs. 282 328 283 329 If you want to find minimum cut just between two distinict nodes, 284 please see the \ref max_flow "Maximum Flow page".330 see the \ref max_flow "maximum flow problem". 285 331 */ 286 332 … … 321 367 graphs. The matching problems in bipartite graphs are generally 322 368 easier than in general graphs. The goal of the matching optimization 323 can be thefinding maximum cardinality, maximum weight or minimum cost369 can be finding maximum cardinality, maximum weight or minimum cost 324 370 matching. The search can be constrained to find perfect or 325 371 maximum cardinality matching. 326 372 327 LEMON contains the next algorithms: 328  \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" HopcroftKarp 329 augmenting path algorithm for calculate maximum cardinality matching in 330 bipartite graphs 331  \ref lemon::PrBipartiteMatching "PrBipartiteMatching" PushRelabel 332 algorithm for calculate maximum cardinality matching in bipartite graphs 333  \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching" 334 Successive shortest path algorithm for calculate maximum weighted matching 335 and maximum weighted bipartite matching in bipartite graph 336  \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching" 337 Successive shortest path algorithm for calculate minimum cost maximum 338 matching in bipartite graph 339  \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm 340 for calculate maximum cardinality matching in general graph 341  \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom 342 shrinking algorithm for calculate maximum weighted matching in general 343 graph 344  \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching" 345 Edmond's blossom shrinking algorithm for calculate maximum weighted 346 perfect matching in general graph 373 The matching algorithms implemented in LEMON: 374  \ref MaxBipartiteMatching HopcroftKarp augmenting path algorithm 375 for calculating maximum cardinality matching in bipartite graphs. 376  \ref PrBipartiteMatching Pushrelabel algorithm 377 for calculating maximum cardinality matching in bipartite graphs. 378  \ref MaxWeightedBipartiteMatching 379 Successive shortest path algorithm for calculating maximum weighted 380 matching and maximum weighted bipartite matching in bipartite graphs. 381  \ref MinCostMaxBipartiteMatching 382 Successive shortest path algorithm for calculating minimum cost maximum 383 matching in bipartite graphs. 384  \ref MaxMatching Edmond's blossom shrinking algorithm for calculating 385 maximum cardinality matching in general graphs. 386  \ref MaxWeightedMatching Edmond's blossom shrinking algorithm for calculating 387 maximum weighted matching in general graphs. 388  \ref MaxWeightedPerfectMatching 389 Edmond's blossom shrinking algorithm for calculating maximum weighted 390 perfect matching in general graphs. 347 391 348 392 \image html bipartite_matching.png … … 356 400 357 401 This group describes the algorithms for finding a minimum cost spanning 358 tree in a graph 402 tree in a graph. 359 403 */ 360 404 … … 547 591 \anchor demoprograms 548 592 549 @defgroup demos Demo programs593 @defgroup demos Demo Programs 550 594 551 595 Some demo programs are listed here. Their full source codes can be found in … … 557 601 558 602 /** 559 @defgroup tools Standalone utility applications603 @defgroup tools Standalone Utility Applications 560 604 561 605 Some utility applications are listed here. … … 565 609 */ 566 610 611 }
Note: See TracChangeset
for help on using the changeset viewer.