Changes in / [1298:a78e5b779b69:1297:c0c2f5c87aa6] in lemon
- Files:
-
- 3 added
- 7 deleted
- 146 edited
Legend:
- Unmodified
- Added
- Removed
-
CMakeLists.txt
r1264 r1185 62 62 FIND_PACKAGE(Doxygen) 63 63 FIND_PACKAGE(Ghostscript) 64 65 SET(LEMON_ENABLE_GLPK YES CACHE STRING "Enable GLPK solver backend.") 66 SET(LEMON_ENABLE_ILOG YES CACHE STRING "Enable ILOG (CPLEX) solver backend.") 67 SET(LEMON_ENABLE_COIN YES CACHE STRING "Enable COIN solver backend.") 68 SET(LEMON_ENABLE_SOPLEX YES CACHE STRING "Enable SoPlex solver backend.") 69 70 IF(LEMON_ENABLE_GLPK) 71 FIND_PACKAGE(GLPK 4.33) 72 ENDIF(LEMON_ENABLE_GLPK) 73 IF(LEMON_ENABLE_ILOG) 74 FIND_PACKAGE(ILOG) 75 ENDIF(LEMON_ENABLE_ILOG) 76 IF(LEMON_ENABLE_COIN) 77 FIND_PACKAGE(COIN) 78 ENDIF(LEMON_ENABLE_COIN) 79 IF(LEMON_ENABLE_SOPLEX) 80 FIND_PACKAGE(SOPLEX) 81 ENDIF(LEMON_ENABLE_SOPLEX) 82 83 IF(GLPK_FOUND) 84 SET(LEMON_HAVE_LP TRUE) 85 SET(LEMON_HAVE_MIP TRUE) 86 SET(LEMON_HAVE_GLPK TRUE) 87 ENDIF(GLPK_FOUND) 88 IF(ILOG_FOUND) 89 SET(LEMON_HAVE_LP TRUE) 90 SET(LEMON_HAVE_MIP TRUE) 91 SET(LEMON_HAVE_CPLEX TRUE) 92 ENDIF(ILOG_FOUND) 93 IF(COIN_FOUND) 94 SET(LEMON_HAVE_LP TRUE) 95 SET(LEMON_HAVE_MIP TRUE) 96 SET(LEMON_HAVE_CLP TRUE) 97 SET(LEMON_HAVE_CBC TRUE) 98 ENDIF(COIN_FOUND) 99 IF(SOPLEX_FOUND) 100 SET(LEMON_HAVE_LP TRUE) 101 SET(LEMON_HAVE_SOPLEX TRUE) 102 ENDIF(SOPLEX_FOUND) 103 104 IF(ILOG_FOUND) 105 SET(DEFAULT_LP "CPLEX") 106 SET(DEFAULT_MIP "CPLEX") 107 ELSEIF(COIN_FOUND) 108 SET(DEFAULT_LP "CLP") 109 SET(DEFAULT_MIP "CBC") 110 ELSEIF(GLPK_FOUND) 111 SET(DEFAULT_LP "GLPK") 112 SET(DEFAULT_MIP "GLPK") 113 ELSEIF(SOPLEX_FOUND) 114 SET(DEFAULT_LP "SOPLEX") 115 ENDIF() 116 117 IF(NOT LEMON_DEFAULT_LP OR 118 (NOT ILOG_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CPLEX")) OR 119 (NOT COIN_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CLP")) OR 120 (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")) OR 121 (NOT SOPLEX_FOUND AND (LEMON_DEFAULT_LP STREQUAL "SOPLEX"))) 122 SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING 123 "Default LP solver backend (GLPK, CPLEX, CLP or SOPLEX)" FORCE) 124 ENDIF() 125 IF(NOT LEMON_DEFAULT_MIP OR 126 (NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR 127 (NOT COIN_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CBC")) OR 128 (NOT GLPK_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "GLPK"))) 129 SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING 130 "Default MIP solver backend (GLPK, CPLEX or CBC)" FORCE) 131 ENDIF() 132 64 FIND_PACKAGE(GLPK 4.33) 65 FIND_PACKAGE(CPLEX) 66 FIND_PACKAGE(COIN) 133 67 134 68 IF(DEFINED ENV{LEMON_CXX_WARNING}) -
INSTALL
r1233 r1208 135 135 136 136 137 -DLEMON_ENABLE_GLPK=NO138 -DLEMON_ENABLE_COIN=NO139 -DLEMON_ENABLE_ILOG=NO140 141 Enable optional third party libraries. They are all enabled by default.142 143 -DLEMON_DEFAULT_LP=GLPK144 145 Sets the default LP solver backend. The supported values are146 CPLEX, CLP and GLPK. By default, it is set to the first one which147 is enabled and succesfully discovered.148 149 -DLEMON_DEFAULT_MIP=GLPK150 151 Sets the default MIP solver backend. The supported values are152 CPLEX, CBC and GLPK. By default, it is set to the first one which153 is enabled and succesfully discovered.154 155 137 -DGLPK_ROOT_DIR=DIRECTORY 156 138 -DCOIN_ROOT_DIR=DIRECTORY 157 -D ILOG_ROOT_DIR=DIRECTORY139 -DCPLEX_ROOT_DIR=DIRECTORY 158 140 159 Root directory prefixes of optional third party libraries.141 Install root directory prefixes of optional third party libraries. 160 142 161 143 Makefile Variables -
NEWS
r1281 r962 1 2013-08-10 Version 1.3 released2 3 This is major feature release4 5 * New data structures6 7 #69 : Bipartite graph concepts and implementations8 9 * New algorithms10 11 #177: Port Edmonds-Karp algorithm12 #380, #405: Heuristic algorithm for the max clique problem13 #386: Heuristic algorithms for symmetric TSP14 ----: Nagamochi-Ibaraki algorithm [5087694945e4]15 #397, #56: Max. cardinality search16 17 * Other new features18 19 #223: Thread safe graph and graph map implementations20 #442: Different TimeStamp print formats21 #457: File export functionality to LpBase22 #362: Bidirectional iterator support for radixSort()23 24 * Implementation improvements25 26 ----: Network Simplex27 #391: Better update process, pivot rule and arc mixing28 #435: Improved Altering List pivot rule29 #417: Various fine tunings in CostScaling30 #438: Optional iteration limit in HowardMmc31 #436: Ensure strongly polynomial running time for CycleCanceling32 while keeping the same performance33 ----: Make the CBC interface be compatible with latest CBC releases34 [ee581a0ecfbf]35 36 * CMAKE has become the default build environment (#434)37 38 ----: Autotool support has been dropped39 ----: Improved LP/MIP configuration40 #465: Enable/disable options for LP/MIP backends41 #446: Better CPLEX discovery42 #460: Add cmake config to find SoPlex43 ----: Allow CPACK configuration on all platforms44 #390: Add 'Maintainer' CMAKE build type45 #388: Add 'check' target.46 #401: Add contrib dir47 #389: Better version string setting in CMAKE48 #433: Support shared library build49 #416: Support testing with valgrind50 51 * Doc improvements52 53 #395: SOURCE_BROWSER Doxygen switch is configurable from CMAKE54 update-external-tags CMAKE target55 #455: Optionally use MathJax for rendering the math formulae56 #402, #437, #459, #456, #463: Various doc improvements57 58 * Bugfixes (compared to release 1.2):59 60 #432: Add missing doc/template.h and doc/references.bib to release61 tarball62 ----: Intel C++ compatibility fixes63 #441: Fix buggy reinitialization in _solver_bits::VarIndex::clear()64 #444: Bugfix in path copy constructors and assignment operators65 #447: Bugfix in AllArcLookUp<>66 #448: Bugfix in adaptor_test.cc67 #449: Fix clang compilation warnings and errors68 #440: Fix a bug + remove redundant typedefs in dimacs-solver69 #453: Avoid GCC 4.7 compiler warnings70 #445: Fix missing initialization in CplexEnv::CplexEnv()71 #428: Add missing lemon/lemon.pc.cmake to the release tarball72 #393: Create and install lemon.pc73 #429: Fix VS warnings74 #430: Fix LpBase::Constr two-side limit bug75 #392: Bug fix in Dfs::start(s,t)76 #414: Fix wrong initialization in Preflow77 #418: Better Win CodeBlock/MinGW support78 #419: Build environment improvements79 - Build of mip_test and lp_test precede the running of the tests80 - Also search for coin libs under ${COIN_ROOT_DIR}/lib/coin81 - Do not look for COIN_VOL libraries82 #382: Allow lgf file without Arc maps83 #417: Bug fix in CostScaling84 #366: Fix Pred[Matrix]MapPath::empty()85 #371: Bug fix in (di)graphCopy()86 The target graph is cleared before adding nodes and arcs/edges.87 #364: Add missing UndirectedTags88 #368: Fix the usage of std::numeric_limits<>::min() in Network Simplex89 #372: Fix a critical bug in preflow90 #461: Bugfix in assert.h91 #470: Fix compilation issues related to various gcc versions92 #446: Fix #define indicating CPLEX availability93 #294: Add explicit namespace to94 ignore_unused_variable_warning() usages95 #420: Bugfix in IterableValueMap96 #439: Bugfix in biNodeConnected()97 98 99 1 2010-03-19 Version 1.2 released 100 2 -
cmake/FindCOIN.cmake
r1232 r1120 109 109 COIN_BZ2_LIBRARY 110 110 ) 111 112 IF(COIN_FOUND) 113 SET(LEMON_HAVE_LP TRUE) 114 SET(LEMON_HAVE_MIP TRUE) 115 SET(LEMON_HAVE_CLP TRUE) 116 SET(LEMON_HAVE_CBC TRUE) 117 ENDIF(COIN_FOUND) -
cmake/FindGLPK.cmake
r1232 r685 54 54 55 55 MARK_AS_ADVANCED(GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_BIN_DIR) 56 57 IF(GLPK_FOUND) 58 SET(LEMON_HAVE_LP TRUE) 59 SET(LEMON_HAVE_MIP TRUE) 60 SET(LEMON_HAVE_GLPK TRUE) 61 ENDIF(GLPK_FOUND) -
doc/CMakeLists.txt
r1251 r1209 7 7 SET(LEMON_DOC_USE_MATHJAX "NO" CACHE STRING "Use MathJax to display math formulae (YES/NO).") 8 8 SET(LEMON_DOC_MATHJAX_RELPATH "http://www.mathjax.org/mathjax" CACHE STRING "MathJax library location.") 9 10 SET(LEMON_DOC_LIBSTDC++_URL11 "http://gcc.gnu.org/onlinedocs/gcc-4.7.3/libstdc++/api"12 CACHE STRING "GCC libstdc++ doxygen doc url.")13 14 9 15 10 CONFIGURE_FILE( … … 40 35 COMMAND ${CMAKE_COMMAND} -E remove_directory gen-images 41 36 COMMAND ${CMAKE_COMMAND} -E make_directory gen-images 42 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r20 -sOutputFile=gen-images/grid_graph.png ${CMAKE_CURRENT_SOURCE_DIR}/images/grid_graph.eps 43 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/adaptors2.png ${CMAKE_CURRENT_SOURCE_DIR}/images/adaptors2.eps 44 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/connected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/connected_components.eps 45 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/strongly_connected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/strongly_connected_components.eps 46 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/node_biconnected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/node_biconnected_components.eps 47 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/edge_biconnected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/edge_biconnected_components.eps 48 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r32 -sOutputFile=gen-images/bipartite_partitions.png ${CMAKE_CURRENT_SOURCE_DIR}/images/bipartite_partitions.eps 49 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r24 -sOutputFile=gen-images/matching.png ${CMAKE_CURRENT_SOURCE_DIR}/images/matching.eps 50 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r24 -sOutputFile=gen-images/bipartite_matching.png ${CMAKE_CURRENT_SOURCE_DIR}/images/bipartite_matching.eps 51 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r40 -sOutputFile=gen-images/planar.png ${CMAKE_CURRENT_SOURCE_DIR}/images/planar.eps 52 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r24 -sOutputFile=gen-images/tsp.png ${CMAKE_CURRENT_SOURCE_DIR}/images/tsp.eps 53 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r8 -sOutputFile=gen-images/nodeshape_0.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_0.eps 54 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r8 -sOutputFile=gen-images/nodeshape_1.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_1.eps 55 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r8 -sOutputFile=gen-images/nodeshape_2.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_2.eps 56 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r8 -sOutputFile=gen-images/nodeshape_3.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_3.eps 57 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r8 -sOutputFile=gen-images/nodeshape_4.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_4.eps 37 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/bipartite_matching.png ${CMAKE_CURRENT_SOURCE_DIR}/images/bipartite_matching.eps 38 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/bipartite_partitions.png ${CMAKE_CURRENT_SOURCE_DIR}/images/bipartite_partitions.eps 39 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/connected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/connected_components.eps 40 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/edge_biconnected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/edge_biconnected_components.eps 41 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/grid_graph.png ${CMAKE_CURRENT_SOURCE_DIR}/images/grid_graph.eps 42 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/matching.png ${CMAKE_CURRENT_SOURCE_DIR}/images/matching.eps 43 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/node_biconnected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/node_biconnected_components.eps 44 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/nodeshape_0.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_0.eps 45 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/nodeshape_1.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_1.eps 46 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/nodeshape_2.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_2.eps 47 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/nodeshape_3.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_3.eps 48 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/nodeshape_4.png ${CMAKE_CURRENT_SOURCE_DIR}/images/nodeshape_4.eps 49 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/planar.png ${CMAKE_CURRENT_SOURCE_DIR}/images/planar.eps 50 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/strongly_connected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/strongly_connected_components.eps 51 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/tsp.png ${CMAKE_CURRENT_SOURCE_DIR}/images/tsp.eps 58 52 COMMAND ${CMAKE_COMMAND} -E remove_directory html 53 COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/bib2dox.py ${CMAKE_CURRENT_SOURCE_DIR}/references.bib >references.dox 59 54 COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile 60 55 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} … … 81 76 IF(WGET_FOUND) 82 77 ADD_CUSTOM_TARGET(update-external-tags 83 COMMAND ${WGET_EXECUTABLE} -N ${LEMON_DOC_LIBSTDC++_URL}/libstdc++.tag78 COMMAND ${WGET_EXECUTABLE} -N http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/libstdc++.tag 84 79 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 85 80 ) -
doc/Doxyfile.in
r1251 r1208 78 78 FILE_VERSION_FILTER = 79 79 LAYOUT_FILE = "@abs_top_srcdir@/doc/DoxygenLayout.xml" 80 CITE_BIB_FILES = "@abs_top_srcdir@/doc/references.bib"81 80 #--------------------------------------------------------------------------- 82 81 # configuration options related to warning and progress messages … … 100 99 "@abs_top_srcdir@/tools" \ 101 100 "@abs_top_srcdir@/test/test_tools.h" \ 102 "@abs_top_builddir@/doc/mainpage.dox" 101 "@abs_top_builddir@/doc/mainpage.dox" \ 102 "@abs_top_builddir@/doc/references.dox" 103 103 INPUT_ENCODING = UTF-8 104 104 FILE_PATTERNS = *.h \ … … 254 254 # Configuration::additions related to external references 255 255 #--------------------------------------------------------------------------- 256 TAGFILES = "@abs_top_builddir@/doc/libstdc++.tag = @LEMON_DOC_LIBSTDC++_URL@"256 TAGFILES = "@abs_top_builddir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ " 257 257 GENERATE_TAGFILE = html/lemon.tag 258 258 ALLEXTERNALS = NO -
doc/DoxygenLayout.xml
r1251 r1036 18 18 <tab type="globals" visible="yes" title="" intro=""/> 19 19 </tab> 20 <tab type="dirs" visible="yes" title="" intro=""/> 20 21 <tab type="examples" visible="yes" title="" intro=""/> 21 22 <tab type="pages" visible="yes" title="" intro=""/> -
doc/coding_style.dox
r1270 r1023 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/dirs.dox
r1270 r1031 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/groups.dox
r1271 r1206 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 113 113 detailed documentation of particular adaptors. 114 114 115 Since the adaptor classes conform to the \ref graph_concepts "graph concepts",116 an adaptor can even be applied to another one.117 The following image illustrates a situation when a \ref SubDigraph adaptor118 is applied on a digraph and \ref Undirector is applied on the subgraph.119 120 \image html adaptors2.png121 \image latex adaptors2.eps "Using graph adaptors" width=\textwidth122 123 115 The behavior of graph adaptors can be very different. Some of them keep 124 116 capabilities of the original graph while in other cases this would be … … 318 310 This group contains the common graph search algorithms, namely 319 311 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS) 320 \ citeclrs01algorithms.312 \ref clrs01algorithms. 321 313 */ 322 314 … … 327 319 328 320 This group contains the algorithms for finding shortest paths in digraphs 329 \ citeclrs01algorithms.321 \ref clrs01algorithms. 330 322 331 323 - \ref Dijkstra algorithm for finding shortest paths from a source node … … 349 341 350 342 This group contains the algorithms for finding minimum cost spanning 351 trees and arborescences \ citeclrs01algorithms.343 trees and arborescences \ref clrs01algorithms. 352 344 */ 353 345 … … 358 350 359 351 This group contains the algorithms for finding maximum flows and 360 feasible circulations \ cite clrs01algorithms, \citeamo93networkflows.352 feasible circulations \ref clrs01algorithms, \ref amo93networkflows. 361 353 362 354 The \e maximum \e flow \e problem is to find a flow of maximum value between … … 374 366 LEMON contains several algorithms for solving maximum flow problems: 375 367 - \ref EdmondsKarp Edmonds-Karp algorithm 376 \ citeedmondskarp72theoretical.368 \ref edmondskarp72theoretical. 377 369 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm 378 \ citegoldberg88newapproach.370 \ref goldberg88newapproach. 379 371 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees 380 \ cite dinic70algorithm, \citesleator83dynamic.372 \ref dinic70algorithm, \ref sleator83dynamic. 381 373 - \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees 382 \ cite goldberg88newapproach, \citesleator83dynamic.374 \ref goldberg88newapproach, \ref sleator83dynamic. 383 375 384 376 In most cases the \ref Preflow algorithm provides the … … 400 392 401 393 This group contains the algorithms for finding minimum cost flows and 402 circulations \ citeamo93networkflows. For more information about this403 problem and its dual solution, see :\ref min_cost_flow394 circulations \ref amo93networkflows. For more information about this 395 problem and its dual solution, see \ref min_cost_flow 404 396 "Minimum Cost Flow Problem". 405 397 406 398 LEMON contains several algorithms for this problem. 407 399 - \ref NetworkSimplex Primal Network Simplex algorithm with various 408 pivot strategies \ cite dantzig63linearprog, \citekellyoneill91netsimplex.400 pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex. 409 401 - \ref CostScaling Cost Scaling algorithm based on push/augment and 410 relabel operations \ cite goldberg90approximation, \citegoldberg97efficient,411 \ citebunnagel98efficient.402 relabel operations \ref goldberg90approximation, \ref goldberg97efficient, 403 \ref bunnagel98efficient. 412 404 - \ref CapacityScaling Capacity Scaling algorithm based on the successive 413 shortest path method \ citeedmondskarp72theoretical.405 shortest path method \ref edmondskarp72theoretical. 414 406 - \ref CycleCanceling Cycle-Canceling algorithms, two of which are 415 strongly polynomial \ cite klein67primal, \citegoldberg89cyclecanceling.407 strongly polynomial \ref klein67primal, \ref goldberg89cyclecanceling. 416 408 417 409 In general, \ref NetworkSimplex and \ref CostScaling are the most efficient … … 423 415 However, other algorithms could be faster in special cases. 424 416 For example, if the total supply and/or capacities are rather small, 425 \ref CapacityScaling is usually the fastest algorithm 426 (without effective scaling). 417 \ref CapacityScaling is usually the fastest algorithm (without effective scaling). 427 418 428 419 These classes are intended to be used with integer-valued input data … … 430 421 which is capable of handling real-valued arc costs (other numerical 431 422 data are required to be integer). 432 433 For more details about these implementations and for a comprehensive434 experimental study, see the paper \cite KiralyKovacs12MCF.435 It also compares these codes to other publicly available436 minimum cost flow solvers.437 423 */ 438 424 … … 473 459 474 460 This group contains the algorithms for finding minimum mean cycles 475 \ cite amo93networkflows, \citekarp78characterization.461 \ref amo93networkflows, \ref karp78characterization. 476 462 477 463 The \e minimum \e mean \e cycle \e problem is to find a directed cycle … … 489 475 490 476 LEMON contains three algorithms for solving the minimum mean cycle problem: 491 - \ref KarpMmc Karp's original algorithm \ citekarp78characterization.477 - \ref KarpMmc Karp's original algorithm \ref karp78characterization. 492 478 - \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved 493 version of Karp's algorithm \ citehartmann93finding.479 version of Karp's algorithm \ref hartmann93finding. 494 480 - \ref HowardMmc Howard's policy iteration algorithm 495 \ cite dasdan98minmeancycle, \citedasdan04experimental.481 \ref dasdan98minmeancycle, \ref dasdan04experimental. 496 482 497 483 In practice, the \ref HowardMmc "Howard" algorithm turned out to be by far the … … 499 485 time is exponential. 500 486 Both \ref KarpMmc "Karp" and \ref HartmannOrlinMmc "Hartmann-Orlin" algorithms 501 run in time O(nm) and use space O(n<sup>2</sup>+m). 487 run in time O(ne) and use space O(n<sup>2</sup>+e), but the latter one is 488 typically faster due to the applied early termination scheme. 502 489 */ 503 490 … … 572 559 \image latex planar.eps "Plane graph" width=\textwidth 573 560 */ 574 561 575 562 /** 576 563 @defgroup tsp Traveling Salesman Problem … … 649 636 high-level interface. 650 637 651 The currently supported solvers are \ cite glpk, \cite clp, \citecbc,652 \ cite cplex, \citesoplex.638 The currently supported solvers are \ref glpk, \ref clp, \ref cbc, 639 \ref cplex, \ref soplex. 653 640 */ 654 641 … … 737 724 This group contains general \c EPS drawing methods and special 738 725 graph exporting tools. 739 740 \image html graph_to_eps.png741 726 */ 742 727 -
doc/images/bipartite_partitions.eps
r1213 r634 1 1 %!PS-Adobe-2.0 EPSF-2.0 2 2 %%Creator: LEMON, graphToEps() 3 %%CreationDate: Fri Mar 8 00:18:43 20133 %%CreationDate: Tue Nov 15 16:51:43 2005 4 4 %%BoundingBox: 0 0 842 596 5 5 %%EndComments … … 54 54 %Edges: 55 55 gsave 56 513.857 -446.322 296.569 -487.43 79.2808 -528.539 0 0 0 7.00153lb57 513.857 -446.322 575.52 -315.65 6 637.183 -184.989 0 0 0 7.00153lb58 393.468 566.711 494.771 434.577 596.074 302.442 0 0 0 7.00153lb59 393.468 566.711 155.625 579.925 -82.2171 593.138 0 0 0 7.00153lb60 393.468 566.711 251.056 450.726 108.644 334.741 0 0 0 7.00153lb61 869.153 52.8539 732.613 177.648 596.074 302.442 0 0 0 7.00153lb62 869.153 52.8539 753.168 -66.0676 637.183 -184.989 0 0 0 7.00153lb63 -82.2171 593.138 -91.0261 346.487 -99.8351 99.8351 0 0 0 7.00153lb64 -663.61 546.157 -753.168 394.936 -842.726 243.715 0 0 0 7.00153lb65 -663.61 546.157 -574.052 437.513 -484.494 328.869 0 0 0 7.00153lb66 -1077.63 161.498 -960.178 202.606 -842.726 243.715 0 0 0 7.00153lb67 -1077.63 161.498 -968.987 66.0674 -860.344 -29.3633 0 0 0 7.00153lb68 -1177.47 -234.906 -1029.18 -381.722 -880.898 -528.539 0 0 0 7.00153lb69 -1177.47 -234.906 -1018.91 -132.135 -860.344 -29.3633 0 0 0 7.00153lb70 -880.898 -528.539 -744.359 -387.595 -607.82 -246.651 0 0 0 7.00153lb71 -499.175 -499.175 -355.295 -475.685 -211.415 -452.194 0 0 0 7.00153lb72 -499.175 -499.175 -553.498 -372.913 -607.82 -246.651 0 0 0 7.00153lb73 -499.175 -499.175 -386.587 -315.087 -274 -131 0 0 0 7.00153lb74 79.2808 -528.539 -66.0671 -490.366 -211.415 -452.194 0 0 0 7.00153lb75 637.183 -184.989 421.363 -253.993 205.543 -322.996 0 0 0 7.00153lb76 205.543 -322.996 162.966 -226.097 120.389 -129.198 0 0 0 7.00153lb77 399.34 88.0898 259.865 -20.5541 120.389 -129.198 0 0 0 7.00153lb78 399.34 88.0898 253.992 211.415 108.644 334.741 0 0 0 7.00153lb79 -842.726 243.715 -471.281 171.775 -99.8351 99.8351 0 0 0 7.00153lb80 -842.726 243.715 -558.363 56.3575 -274 -131 0 0 0 7.00153lb81 -860.344 -29.3633 -734.082 -138.007 -607.82 -246.651 0 0 0 7.00153lb82 -211.415 -452.194 -45.513 -290.696 120.389 -129.198 0 0 0 7.00153lb83 -99.8351 99.8351 4.40445 217.288 108.644 334.741 0 0 0 7.00153lb84 -99.8351 99.8351 -292.165 214.352 -484.494 328.869 0 0 0 7.00153lb85 120.389 -129.198 -76.8055 -130.099 -274 -131 0 0 0 7.00153lb56 513.857 -446.322 296.569 -487.43 79.2808 -528.539 0 0 0 2 lb 57 513.857 -446.322 575.52 -315.655 637.183 -184.989 0 0 0 2 lb 58 393.468 566.711 494.771 434.577 596.074 302.442 0 0 0 2 lb 59 393.468 566.711 155.625 579.925 -82.2171 593.138 0 0 0 2 lb 60 393.468 566.711 251.056 450.726 108.644 334.741 0 0 0 2 lb 61 869.153 52.8539 732.613 177.648 596.074 302.442 0 0 0 2 lb 62 869.153 52.8539 753.168 -66.0676 637.183 -184.989 0 0 0 2 lb 63 -82.2171 593.138 -91.0261 346.487 -99.8351 99.8351 0 0 0 2 lb 64 -663.61 546.157 -753.168 394.936 -842.726 243.715 0 0 0 2 lb 65 -663.61 546.157 -574.052 437.513 -484.494 328.869 0 0 0 2 lb 66 -1077.63 161.498 -960.178 202.606 -842.726 243.715 0 0 0 2 lb 67 -1077.63 161.498 -968.987 66.0674 -860.344 -29.3633 0 0 0 2 lb 68 -1177.47 -234.906 -1029.18 -381.722 -880.898 -528.539 0 0 0 2 lb 69 -1177.47 -234.906 -1018.91 -132.135 -860.344 -29.3633 0 0 0 2 lb 70 -880.898 -528.539 -744.359 -387.595 -607.82 -246.651 0 0 0 2 lb 71 -499.175 -499.175 -355.295 -475.685 -211.415 -452.194 0 0 0 2 lb 72 -499.175 -499.175 -553.498 -372.913 -607.82 -246.651 0 0 0 2 lb 73 -499.175 -499.175 -386.587 -315.087 -274 -131 0 0 0 2 lb 74 79.2808 -528.539 -66.0671 -490.366 -211.415 -452.194 0 0 0 2 lb 75 637.183 -184.989 421.363 -253.993 205.543 -322.996 0 0 0 2 lb 76 205.543 -322.996 162.966 -226.097 120.389 -129.198 0 0 0 2 lb 77 399.34 88.0898 259.865 -20.5541 120.389 -129.198 0 0 0 2 lb 78 399.34 88.0898 253.992 211.415 108.644 334.741 0 0 0 2 lb 79 -842.726 243.715 -471.281 171.775 -99.8351 99.8351 0 0 0 2 lb 80 -842.726 243.715 -558.363 56.3575 -274 -131 0 0 0 2 lb 81 -860.344 -29.3633 -734.082 -138.007 -607.82 -246.651 0 0 0 2 lb 82 -211.415 -452.194 -45.513 -290.696 120.389 -129.198 0 0 0 2 lb 83 -99.8351 99.8351 4.40445 217.288 108.644 334.741 0 0 0 2 lb 84 -99.8351 99.8351 -292.165 214.352 -484.494 328.869 0 0 0 2 lb 85 120.389 -129.198 -76.8055 -130.099 -274 -131 0 0 0 2 lb 86 86 grestore 87 87 %Nodes: 88 88 gsave 89 -274 -131 2 3.33841 0 0 nc90 -607.82 -246.651 2 3.33841 0 0 nc91 -484.494 328.869 2 3.33840 0 1 nc92 108.644 334.741 2 3.33840 0 1 nc93 120.389 -129.198 2 3.33840 0 1 nc94 -99.8351 99.8351 2 3.33841 0 0 nc95 -211.415 -452.194 2 3.33841 0 0 nc96 -860.344 -29.3633 2 3.33840 0 1 nc97 -842.726 243.715 2 3.33840 0 1 nc98 399.34 88.0898 2 3.33841 0 0 nc99 205.543 -322.996 2 3.33841 0 0 nc100 637.183 -184.989 2 3.33840 0 1 nc101 79.2808 -528.539 2 3.33840 0 1 nc102 -499.175 -499.175 2 3.33840 0 1 nc103 -880.898 -528.539 2 3.33840 0 1 nc104 -1177.47 -234.906 2 3.33841 0 0 nc105 -1077.63 161.498 2 3.33841 0 0 nc106 -663.61 546.157 2 3.33841 0 0 nc107 -82.2171 593.138 2 3.33840 0 1 nc108 596.074 302.442 2 3.33840 0 1 nc109 869.153 52.8539 2 3.33841 0 0 nc110 393.468 566.711 2 3.33841 0 0 nc111 513.857 -446.322 2 3.33841 0 0 nc89 -274 -131 20 1 0 0 nc 90 -607.82 -246.651 20 1 0 0 nc 91 -484.494 328.869 20 0 0 1 nc 92 108.644 334.741 20 0 0 1 nc 93 120.389 -129.198 20 0 0 1 nc 94 -99.8351 99.8351 20 1 0 0 nc 95 -211.415 -452.194 20 1 0 0 nc 96 -860.344 -29.3633 20 0 0 1 nc 97 -842.726 243.715 20 0 0 1 nc 98 399.34 88.0898 20 1 0 0 nc 99 205.543 -322.996 20 1 0 0 nc 100 637.183 -184.989 20 0 0 1 nc 101 79.2808 -528.539 20 0 0 1 nc 102 -499.175 -499.175 20 0 0 1 nc 103 -880.898 -528.539 20 0 0 1 nc 104 -1177.47 -234.906 20 1 0 0 nc 105 -1077.63 161.498 20 1 0 0 nc 106 -663.61 546.157 20 1 0 0 nc 107 -82.2171 593.138 20 0 0 1 nc 108 596.074 302.442 20 0 0 1 nc 109 869.153 52.8539 20 1 0 0 nc 110 393.468 566.711 20 1 0 0 nc 111 513.857 -446.322 20 1 0 0 nc 112 112 grestore 113 113 grestore -
doc/images/connected_components.eps
r1213 r634 1 1 %!PS-Adobe-2.0 EPSF-2.0 2 2 %%Creator: LEMON, graphToEps() 3 %%CreationDate: Fri Mar 8 00:18:43 20133 %%CreationDate: Fri Nov 4 13:47:12 2005 4 4 %%BoundingBox: 0 0 842 596 5 5 %%EndComments … … 54 54 %Edges: 55 55 gsave 56 574.035 177.301 622.149 225.748 670.264 274.195 0 0 0 6.25356lb57 694.579 115.483 682.421 194.839 670.264 274.195 0 0 0 6.25356lb58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 0 0 0 6.25356lb59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 0 0 0 6.25356lb60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 0 0 0 6.25356lb61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 0 0 0 6.25356lb62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 0 0 0 6.25356lb63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0 0 0 6.25356lb64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0 0 0 6.25356lb65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0 0 0 6.25356lb66 366.947 -110.15 319.038 -142.604 271.13 -175.058 0 0 0 6.25356lb67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0 0 0 6.25356lb68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0 0 0 6.25356lb69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0 0 0 6.25356lb70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 0 0 0 6.25356lb71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 0 6.25356lb72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 0 6.25356lb73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 0 6.25356lb74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0 0 6.25356lb75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0 0 6.25356lb76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0 0 6.25356lb77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 0 0 0 6.25356lb78 422.945 521.129 208.955 541.269 -5.03507 561.41 0 0 0 6.25356lb79 422.945 521.129 376.371 417.911 329.797 314.692 0 0 0 6.25356lb80 422.945 521.129 474.554 276.928 526.164 32.7279 0 0 0 6.25356lb81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0 0 0 6.25356lb82 329.797 314.692 130.912 317.209 -67.9734 319.727 0 0 0 6.25356lb83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0 0 0 6.25356lb84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0 0 0 6.25356lb85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0 0 0 6.25356lb86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0 0 0 6.25356lb87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0 0 0 6.25356lb88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 0 0 0 6.25356lb89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0 0 0 6.25356lb90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0 0 0 6.25356lb91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0 0 0 6.25356lb92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0 0 0 6.25356lb93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 0 0 0 6.25356lb94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 0 0 0 6.25356lb95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 0 0 0 6.25356lb96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 0 0 0 6.25356lb97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 0 0 0 6.25356lb98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 0 0 0 6.25356lb99 -262.548 107.243 -221.472 176.144 -180.397 245.045 0 0 0 6.25356lb100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 0 0 0 6.25356lb101 -180.397 245.045 -1 13.509 338.465 -132.697 451.748 0 0 0 6.25356lb102 -180.397 245.045 -1 99.585 358.328 -132.697 451.748 0 0 0 6.25356lb103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0 0 0 6.25356lb104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0 0 0 6.25356lb105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0 0 0 6.25356lb106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 0 6.25356lb107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 0 6.25356lb108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 0 6.25356lb109 -689.204 -237.261 - 587.735 -114.393 -567.302 43.6423 0 0 0 6.25356lb110 -689.204 -237.261 -6 68.771 -79.2259 -567.302 43.6423 0 0 0 6.25356lb56 574.035 177.301 622.149 225.748 670.264 274.195 0 0 0 2 lb 57 694.579 115.483 682.421 194.839 670.264 274.195 0 0 0 2 lb 58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 0 0 0 2 lb 59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 0 0 0 2 lb 60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 0 0 0 2 lb 61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 0 0 0 2 lb 62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 0 0 0 2 lb 63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0 0 0 2 lb 64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0 0 0 2 lb 65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0 0 0 2 lb 66 366.947 -110.15 319.038 -142.604 271.13 -175.058 0 0 0 2 lb 67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0 0 0 2 lb 68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0 0 0 2 lb 69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0 0 0 2 lb 70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 0 0 0 2 lb 71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 0 2 lb 72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 0 2 lb 73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 0 2 lb 74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0 0 2 lb 75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0 0 2 lb 76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0 0 2 lb 77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 0 0 0 2 lb 78 422.945 521.129 208.955 541.269 -5.03507 561.41 0 0 0 2 lb 79 422.945 521.129 376.371 417.911 329.797 314.692 0 0 0 2 lb 80 422.945 521.129 474.554 276.928 526.164 32.7279 0 0 0 2 lb 81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0 0 0 2 lb 82 329.797 314.692 130.912 317.209 -67.9734 319.727 0 0 0 2 lb 83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0 0 0 2 lb 84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0 0 0 2 lb 85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0 0 0 2 lb 86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0 0 0 2 lb 87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0 0 0 2 lb 88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 0 0 0 2 lb 89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0 0 0 2 lb 90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0 0 0 2 lb 91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0 0 0 2 lb 92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0 0 0 2 lb 93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 0 0 0 2 lb 94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 0 0 0 2 lb 95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 0 0 0 2 lb 96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 0 0 0 2 lb 97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 0 0 0 2 lb 98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 0 0 0 2 lb 99 -262.548 107.243 -221.472 176.144 -180.397 245.045 0 0 0 2 lb 100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 0 0 0 2 lb 101 -180.397 245.045 -142.256 345.099 -132.697 451.748 0 0 0 2 lb 102 -180.397 245.045 -170.838 351.694 -132.697 451.748 0 0 0 2 lb 103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0 0 0 2 lb 104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0 0 0 2 lb 105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0 0 0 2 lb 106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 0 2 lb 107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 0 2 lb 108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 0 2 lb 109 -689.204 -237.261 -614.799 -102.648 -567.302 43.6423 0 0 0 2 lb 110 -689.204 -237.261 -641.707 -90.9706 -567.302 43.6423 0 0 0 2 lb 111 111 grestore 112 112 %Nodes: 113 113 gsave 114 -567.302 43.6423 20 .84520 0 0 nc115 -689.204 -237.261 20 .84520 0 0 nc116 924.667 409.347 20 .84521 0 0 nc117 588.113 544.499 20 .84521 0 0 nc118 670.264 274.195 20 .84521 0 0 nc119 -371.2 568.349 20 .84520 1 0 nc120 -132.697 451.748 20 .84520 1 0 nc121 -416.25 345.746 20 .84520 1 0 nc122 -180.397 245.045 20 .84520 1 0 nc123 -13.4452 133.743 20 .84520 1 0 nc124 -262.548 107.243 20 .84520 1 0 nc125 201.208 38.3422 20 .84520 1 0 nc126 116.407 -173.66 20 .84520 1 0 nc127 -26.6953 -19.9585 20 .84520 1 0 nc128 -539.894 -262.64 20 .84520 0 1 nc129 -323.543 -433.964 20 .84520 0 1 nc130 -309.657 -57.9033 20 .84520 0 1 nc131 -67.9734 -347.42 20 .84520 0 1 nc132 415.393 -289.516 20 .84520 0 1 nc133 730.084 -307.139 20 .84520 0 1 nc134 526.164 32.7279 20 .84520 0 1 nc135 762.812 -17.6227 20 .84520 0 1 nc136 -67.9734 319.727 20 .84520 0 1 nc137 329.797 314.692 20 .84520 0 1 nc138 -5.03507 561.41 20 .84520 0 1 nc139 422.945 521.129 20 .84520 0 1 nc140 -470.779 158.605 20 .84520 0 1 nc141 986.873 -115.807 20 .84520 0 1 nc142 906.312 201.403 20 .84520 0 1 nc143 -767.847 113.289 20 .84520 0 1 nc144 -579.033 445.603 20 .84520 0 1 nc145 -840.856 -246.718 20 .84520 0 1 nc146 206.221 -205.967 20 .84521 1 0 nc147 277.311 -252.33 20 .84521 1 0 nc148 271.13 -175.058 20 .84521 1 0 nc149 366.947 -110.15 20 .84521 1 0 nc150 397.855 -196.694 20 .84521 1 0 nc151 438.037 -88.514 20 .84521 1 0 nc152 286.584 -48.3327 20 .84521 1 0 nc153 212.403 -23.6057 20 .84521 1 0 nc154 280.402 10.3938 20 .84521 1 0 nc155 694.579 115.483 20 .84521 0 0 nc156 574.035 177.301 20 .84521 0 0 nc114 -567.302 43.6423 20 0 0 0 nc 115 -689.204 -237.261 20 0 0 0 nc 116 924.667 409.347 20 1 0 0 nc 117 588.113 544.499 20 1 0 0 nc 118 670.264 274.195 20 1 0 0 nc 119 -371.2 568.349 20 0 1 0 nc 120 -132.697 451.748 20 0 1 0 nc 121 -416.25 345.746 20 0 1 0 nc 122 -180.397 245.045 20 0 1 0 nc 123 -13.4452 133.743 20 0 1 0 nc 124 -262.548 107.243 20 0 1 0 nc 125 201.208 38.3422 20 0 1 0 nc 126 116.407 -173.66 20 0 1 0 nc 127 -26.6953 -19.9585 20 0 1 0 nc 128 -539.894 -262.64 20 0 0 1 nc 129 -323.543 -433.964 20 0 0 1 nc 130 -309.657 -57.9033 20 0 0 1 nc 131 -67.9734 -347.42 20 0 0 1 nc 132 415.393 -289.516 20 0 0 1 nc 133 730.084 -307.139 20 0 0 1 nc 134 526.164 32.7279 20 0 0 1 nc 135 762.812 -17.6227 20 0 0 1 nc 136 -67.9734 319.727 20 0 0 1 nc 137 329.797 314.692 20 0 0 1 nc 138 -5.03507 561.41 20 0 0 1 nc 139 422.945 521.129 20 0 0 1 nc 140 -470.779 158.605 20 0 0 1 nc 141 986.873 -115.807 20 0 0 1 nc 142 906.312 201.403 20 0 0 1 nc 143 -767.847 113.289 20 0 0 1 nc 144 -579.033 445.603 20 0 0 1 nc 145 -840.856 -246.718 20 0 0 1 nc 146 206.221 -205.967 20 1 1 0 nc 147 277.311 -252.33 20 1 1 0 nc 148 271.13 -175.058 20 1 1 0 nc 149 366.947 -110.15 20 1 1 0 nc 150 397.855 -196.694 20 1 1 0 nc 151 438.037 -88.514 20 1 1 0 nc 152 286.584 -48.3327 20 1 1 0 nc 153 212.403 -23.6057 20 1 1 0 nc 154 280.402 10.3938 20 1 1 0 nc 155 694.579 115.483 20 1 0 0 nc 156 574.035 177.301 20 1 0 0 nc 157 157 grestore 158 158 grestore -
doc/images/edge_biconnected_components.eps
r1213 r634 1 1 %!PS-Adobe-2.0 EPSF-2.0 2 2 %%Creator: LEMON, graphToEps() 3 %%CreationDate: Fri Mar 8 00:18:43 20133 %%CreationDate: Fri Nov 4 13:47:12 2005 4 4 %%BoundingBox: 0 0 842 596 5 5 %%EndComments … … 54 54 %Edges: 55 55 gsave 56 574.035 177.301 622.149 225.748 670.264 274.195 1 0 0 6.25356lb57 694.579 115.483 682.421 194.839 670.264 274.195 1 0 0 6.25356lb58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 0 0 1 6.25356lb59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 0 0 1 6.25356lb60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 0 0 1 6.25356lb61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 0 0 1 6.25356lb62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 0 0 1 6.25356lb63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0 0 1 6.25356lb64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0 0 1 6.25356lb65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0 0 1 6.25356lb66 366.947 -110.15 319.038 -142.604 271.13 -175.058 0 0 1 6.25356lb67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0 0 1 6.25356lb68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0 0 1 6.25356lb69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0 0 1 6.25356lb70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 1 0 0 6.25356lb71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 1 6.25356lb72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 1 6.25356lb73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 1 6.25356lb74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0 1 6.25356lb75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0 1 6.25356lb76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0 1 6.25356lb77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 1 0 0 6.25356lb78 422.945 521.129 208.955 541.269 -5.03507 561.41 0 0 1 6.25356lb79 422.945 521.129 376.371 417.911 329.797 314.692 0 0 1 6.25356lb80 422.945 521.129 474.554 276.928 526.164 32.7279 0 0 1 6.25356lb81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0 0 1 6.25356lb82 329.797 314.692 130.912 317.209 -67.9734 319.727 0 0 1 6.25356lb83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0 0 1 6.25356lb84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0 0 1 6.25356lb85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0 0 1 6.25356lb86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0 0 1 6.25356lb87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0 0 1 6.25356lb88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 1 0 0 6.25356lb89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0 0 1 6.25356lb90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0 0 1 6.25356lb91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0 0 1 6.25356lb92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0 0 1 6.25356lb93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 0 0 1 6.25356lb94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 0 0 1 6.25356lb95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 0 0 1 6.25356lb96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 0 0 1 6.25356lb97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 0 0 1 6.25356lb98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 0 0 1 6.25356lb99 -262.548 107.243 -221.472 176.144 -180.397 245.045 0 0 1 6.25356lb100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 0 0 1 6.25356lb101 -180.397 245.045 -1 13.509 338.465 -132.697 451.748 0 0 1 6.25356lb102 -180.397 245.045 -1 99.585 358.328 -132.697 451.748 0 0 1 6.25356lb103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0 0 1 6.25356lb104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0 0 1 6.25356lb105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0 0 1 6.25356lb106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 1 6.25356lb107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 1 6.25356lb108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 1 6.25356lb109 -689.204 -237.261 - 587.735 -114.393 -567.302 43.6423 0 0 1 6.25356lb110 -689.204 -237.261 -6 68.771 -79.2259 -567.302 43.6423 0 0 1 6.25356lb56 574.035 177.301 622.149 225.748 670.264 274.195 1 0 0 2 lb 57 694.579 115.483 682.421 194.839 670.264 274.195 1 0 0 2 lb 58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 0 0 1 2 lb 59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 0 0 1 2 lb 60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 0 0 1 2 lb 61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 0 0 1 2 lb 62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 0 0 1 2 lb 63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0 0 1 2 lb 64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0 0 1 2 lb 65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0 0 1 2 lb 66 366.947 -110.15 319.038 -142.604 271.13 -175.058 0 0 1 2 lb 67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0 0 1 2 lb 68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0 0 1 2 lb 69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0 0 1 2 lb 70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 1 0 0 2 lb 71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 1 2 lb 72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 1 2 lb 73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 1 2 lb 74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0 1 2 lb 75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0 1 2 lb 76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0 1 2 lb 77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 1 0 0 2 lb 78 422.945 521.129 208.955 541.269 -5.03507 561.41 0 0 1 2 lb 79 422.945 521.129 376.371 417.911 329.797 314.692 0 0 1 2 lb 80 422.945 521.129 474.554 276.928 526.164 32.7279 0 0 1 2 lb 81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0 0 1 2 lb 82 329.797 314.692 130.912 317.209 -67.9734 319.727 0 0 1 2 lb 83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0 0 1 2 lb 84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0 0 1 2 lb 85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0 0 1 2 lb 86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0 0 1 2 lb 87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0 0 1 2 lb 88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 1 0 0 2 lb 89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0 0 1 2 lb 90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0 0 1 2 lb 91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0 0 1 2 lb 92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0 0 1 2 lb 93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 0 0 1 2 lb 94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 0 0 1 2 lb 95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 0 0 1 2 lb 96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 0 0 1 2 lb 97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 0 0 1 2 lb 98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 0 0 1 2 lb 99 -262.548 107.243 -221.472 176.144 -180.397 245.045 0 0 1 2 lb 100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 0 0 1 2 lb 101 -180.397 245.045 -142.256 345.099 -132.697 451.748 0 0 1 2 lb 102 -180.397 245.045 -170.838 351.694 -132.697 451.748 0 0 1 2 lb 103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0 0 1 2 lb 104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0 0 1 2 lb 105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0 0 1 2 lb 106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 1 2 lb 107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 1 2 lb 108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 1 2 lb 109 -689.204 -237.261 -614.799 -102.648 -567.302 43.6423 0 0 1 2 lb 110 -689.204 -237.261 -641.707 -90.9706 -567.302 43.6423 0 0 1 2 lb 111 111 grestore 112 112 %Nodes: 113 113 gsave 114 -567.302 43.6423 20 .84520 0 0 nc115 -689.204 -237.261 20 .84520 0 0 nc116 924.667 409.347 20 .84520 0 1 nc117 588.113 544.499 20 .84520 0 1 nc118 670.264 274.195 20 .84520 0 1 nc119 -371.2 568.349 20 .84521 1 0 nc120 -132.697 451.748 20 .84521 1 0 nc121 -416.25 345.746 20 .84521 1 0 nc122 -180.397 245.045 20 .84521 1 0 nc123 -13.4452 133.743 20 .84521 1 0 nc124 -262.548 107.243 20 .84521 1 0 nc125 201.208 38.3422 20 .84521 1 0 nc126 116.407 -173.66 20 .84521 1 0 nc127 -26.6953 -19.9585 20 .84521 1 0 nc128 -539.894 -262.64 20 .84520 0.5 0 nc129 -323.543 -433.964 20 .84520 0.5 0 nc130 -309.657 -57.9033 20 .84520 0.5 0 nc131 -67.9734 -347.42 20 .84520 0.5 0 nc132 415.393 -289.516 20 .84520.5 0 0 nc133 730.084 -307.139 20 .84520.5 0 0 nc134 526.164 32.7279 20 .84520.5 0 0 nc135 762.812 -17.6227 20 .84520.5 0 0 nc136 -67.9734 319.727 20 .84520.5 0 0 nc137 329.797 314.692 20 .84520.5 0 0 nc138 -5.03507 561.41 20 .84520.5 0 0 nc139 422.945 521.129 20 .84520.5 0 0 nc140 -470.779 158.605 20 .84520 1 1 nc141 986.873 -115.807 20 .84520.5 0 0 nc142 906.312 201.403 20 .84520.5 0 0 nc143 -767.847 113.289 20 .84520 1 1 nc144 -579.033 445.603 20 .84520 1 1 nc145 -840.856 -246.718 20 .84521 0 1 nc146 206.221 -205.967 20 .84520 0 0.5 nc147 277.311 -252.33 20 .84520 0 0.5 nc148 271.13 -175.058 20 .84520 0 0.5 nc149 366.947 -110.15 20 .84520 0 0.5 nc150 397.855 -196.694 20 .84520 0 0.5 nc151 438.037 -88.514 20 .84520 0 0.5 nc152 286.584 -48.3327 20 .84520 0 0.5 nc153 212.403 -23.6057 20 .84520 0 0.5 nc154 280.402 10.3938 20 .84520 0 0.5 nc155 694.579 115.483 20 .84521 0 0 nc156 574.035 177.301 20 .84520 1 0 nc114 -567.302 43.6423 20 0 0 0 nc 115 -689.204 -237.261 20 0 0 0 nc 116 924.667 409.347 20 0 0 1 nc 117 588.113 544.499 20 0 0 1 nc 118 670.264 274.195 20 0 0 1 nc 119 -371.2 568.349 20 1 1 0 nc 120 -132.697 451.748 20 1 1 0 nc 121 -416.25 345.746 20 1 1 0 nc 122 -180.397 245.045 20 1 1 0 nc 123 -13.4452 133.743 20 1 1 0 nc 124 -262.548 107.243 20 1 1 0 nc 125 201.208 38.3422 20 1 1 0 nc 126 116.407 -173.66 20 1 1 0 nc 127 -26.6953 -19.9585 20 1 1 0 nc 128 -539.894 -262.64 20 0 0.5 0 nc 129 -323.543 -433.964 20 0 0.5 0 nc 130 -309.657 -57.9033 20 0 0.5 0 nc 131 -67.9734 -347.42 20 0 0.5 0 nc 132 415.393 -289.516 20 0.5 0 0 nc 133 730.084 -307.139 20 0.5 0 0 nc 134 526.164 32.7279 20 0.5 0 0 nc 135 762.812 -17.6227 20 0.5 0 0 nc 136 -67.9734 319.727 20 0.5 0 0 nc 137 329.797 314.692 20 0.5 0 0 nc 138 -5.03507 561.41 20 0.5 0 0 nc 139 422.945 521.129 20 0.5 0 0 nc 140 -470.779 158.605 20 0 1 1 nc 141 986.873 -115.807 20 0.5 0 0 nc 142 906.312 201.403 20 0.5 0 0 nc 143 -767.847 113.289 20 0 1 1 nc 144 -579.033 445.603 20 0 1 1 nc 145 -840.856 -246.718 20 1 0 1 nc 146 206.221 -205.967 20 0 0 0.5 nc 147 277.311 -252.33 20 0 0 0.5 nc 148 271.13 -175.058 20 0 0 0.5 nc 149 366.947 -110.15 20 0 0 0.5 nc 150 397.855 -196.694 20 0 0 0.5 nc 151 438.037 -88.514 20 0 0 0.5 nc 152 286.584 -48.3327 20 0 0 0.5 nc 153 212.403 -23.6057 20 0 0 0.5 nc 154 280.402 10.3938 20 0 0 0.5 nc 155 694.579 115.483 20 1 0 0 nc 156 574.035 177.301 20 0 1 0 nc 157 157 grestore 158 158 grestore -
doc/images/node_biconnected_components.eps
r1213 r634 1 1 %!PS-Adobe-2.0 EPSF-2.0 2 2 %%Creator: LEMON, graphToEps() 3 %%CreationDate: Fri Mar 8 00:18:43 20133 %%CreationDate: Fri Nov 4 13:47:12 2005 4 4 %%BoundingBox: 0 0 842 596 5 5 %%EndComments … … 54 54 %Edges: 55 55 gsave 56 574.035 177.301 622.149 225.748 670.264 274.195 0 1 0 6.25356lb57 694.579 115.483 682.421 194.839 670.264 274.195 1 0 0 6.25356lb58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 1 1 0.5 6.25356lb59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 1 1 0.5 6.25356lb60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 1 1 0.5 6.25356lb61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 1 0.5 1 6.25356lb62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 1 0.5 1 6.25356lb63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0.5 0.5 1 6.25356lb64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0.5 0.5 1 6.25356lb65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0.5 0.5 1 6.25356lb66 366.947 -110.15 319.038 -142.604 271.13 -175.058 1 0.5 1 6.25356lb67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0.5 1 1 6.25356lb68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0.5 1 1 6.25356lb69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0.5 1 1 6.25356lb70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 0 0.5 0 6.25356lb71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 0.5 6.25356lb72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 0.5 6.25356lb73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 0.5 6.25356lb74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0.5 0.5 6.25356lb75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0.5 0.5 6.25356lb76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0.5 0.5 6.25356lb77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 0.5 0.5 0 6.25356lb78 422.945 521.129 208.955 541.269 -5.03507 561.41 0.5 0 0.5 6.25356lb79 422.945 521.129 376.371 417.911 329.797 314.692 0.5 0 0.5 6.25356lb80 422.945 521.129 474.554 276.928 526.164 32.7279 0.5 0 0.5 6.25356lb81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0.5 0 0.5 6.25356lb82 329.797 314.692 130.912 317.209 -67.9734 319.727 0.5 0 0.5 6.25356lb83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0.5 0 0.5 6.25356lb84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0.5 0.5 0.5 6.25356lb85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0.5 0.5 0.5 6.25356lb86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0.5 0.5 0.5 6.25356lb87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0.5 0.5 0.5 6.25356lb88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 1 0.5 0.5 6.25356lb89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0.5 1 0.5 6.25356lb90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0.5 1 0.5 6.25356lb91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0.5 1 0.5 6.25356lb92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0.5 1 0.5 6.25356lb93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 1 1 0 6.25356lb94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 1 1 0 6.25356lb95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 1 0 1 6.25356lb96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 1 0 1 6.25356lb97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 1 1 0 6.25356lb98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 1 0 1 6.25356lb99 -262.548 107.243 -221.472 176.144 -180.397 245.045 1 0 1 6.25356lb100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 1 0 1 6.25356lb101 -180.397 245.045 -1 13.509 338.465 -132.697 451.748 0 1 1 6.25356lb102 -180.397 245.045 -1 99.585 358.328 -132.697 451.748 0 1 1 6.25356lb103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0.5 0 0 6.25356lb104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0.5 0 0 6.25356lb105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0.5 0 0 6.25356lb106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 1 6.25356lb107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 1 6.25356lb108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 1 6.25356lb109 -689.204 -237.261 - 587.735 -114.393 -567.302 43.6423 0 0 0 6.25356lb110 -689.204 -237.261 -6 68.771 -79.2259 -567.302 43.6423 0 0 0 6.25356lb56 574.035 177.301 622.149 225.748 670.264 274.195 0 1 0 5 lb 57 694.579 115.483 682.421 194.839 670.264 274.195 1 0 0 5 lb 58 280.402 10.3938 246.402 -6.60595 212.403 -23.6057 1 1 0.5 5 lb 59 280.402 10.3938 283.493 -18.9695 286.584 -48.3327 1 1 0.5 5 lb 60 212.403 -23.6057 249.493 -35.9692 286.584 -48.3327 1 1 0.5 5 lb 61 286.584 -48.3327 326.765 -79.2414 366.947 -110.15 1 0.5 1 5 lb 62 286.584 -48.3327 278.857 -111.695 271.13 -175.058 1 0.5 1 5 lb 63 438.037 -88.514 417.946 -142.604 397.855 -196.694 0.5 0.5 1 5 lb 64 438.037 -88.514 402.492 -99.332 366.947 -110.15 0.5 0.5 1 5 lb 65 397.855 -196.694 382.401 -153.422 366.947 -110.15 0.5 0.5 1 5 lb 66 366.947 -110.15 319.038 -142.604 271.13 -175.058 1 0.5 1 5 lb 67 271.13 -175.058 274.221 -213.694 277.311 -252.33 0.5 1 1 5 lb 68 271.13 -175.058 238.675 -190.512 206.221 -205.967 0.5 1 1 5 lb 69 277.311 -252.33 241.766 -229.149 206.221 -205.967 0.5 1 1 5 lb 70 -840.856 -246.718 -804.351 -66.7145 -767.847 113.289 0 0.5 0 5 lb 71 -579.033 445.603 -673.44 279.446 -767.847 113.289 0 0 0.5 5 lb 72 -579.033 445.603 -524.906 302.104 -470.779 158.605 0 0 0.5 5 lb 73 -767.847 113.289 -619.313 135.947 -470.779 158.605 0 0 0.5 5 lb 74 906.312 201.403 946.592 42.798 986.873 -115.807 0 0.5 0.5 5 lb 75 906.312 201.403 834.562 91.8901 762.812 -17.6227 0 0.5 0.5 5 lb 76 986.873 -115.807 874.842 -66.7148 762.812 -17.6227 0 0.5 0.5 5 lb 77 -470.779 158.605 -390.218 50.3508 -309.657 -57.9033 0.5 0.5 0 5 lb 78 422.945 521.129 208.955 541.269 -5.03507 561.41 0.5 0 0.5 5 lb 79 422.945 521.129 376.371 417.911 329.797 314.692 0.5 0 0.5 5 lb 80 422.945 521.129 474.554 276.928 526.164 32.7279 0.5 0 0.5 5 lb 81 -5.03507 561.41 -36.5042 440.568 -67.9734 319.727 0.5 0 0.5 5 lb 82 329.797 314.692 130.912 317.209 -67.9734 319.727 0.5 0 0.5 5 lb 83 -67.9734 319.727 229.095 176.227 526.164 32.7279 0.5 0 0.5 5 lb 84 762.812 -17.6227 644.488 7.5526 526.164 32.7279 0.5 0.5 0.5 5 lb 85 762.812 -17.6227 746.448 -162.381 730.084 -307.139 0.5 0.5 0.5 5 lb 86 526.164 32.7279 470.779 -128.394 415.393 -289.516 0.5 0.5 0.5 5 lb 87 730.084 -307.139 572.738 -298.327 415.393 -289.516 0.5 0.5 0.5 5 lb 88 415.393 -289.516 173.71 -318.468 -67.9734 -347.42 1 0.5 0.5 5 lb 89 -67.9734 -347.42 -188.815 -202.662 -309.657 -57.9033 0.5 1 0.5 5 lb 90 -67.9734 -347.42 -195.758 -390.692 -323.543 -433.964 0.5 1 0.5 5 lb 91 -309.657 -57.9033 -424.775 -160.272 -539.894 -262.64 0.5 1 0.5 5 lb 92 -323.543 -433.964 -431.719 -348.302 -539.894 -262.64 0.5 1 0.5 5 lb 93 -26.6953 -19.9585 44.8558 -96.8093 116.407 -173.66 1 1 0 5 lb 94 -26.6953 -19.9585 87.2563 9.19185 201.208 38.3422 1 1 0 5 lb 95 -26.6953 -19.9585 -144.622 43.6422 -262.548 107.243 1 0 1 5 lb 96 -26.6953 -19.9585 -20.0703 56.8923 -13.4452 133.743 1 0 1 5 lb 97 116.407 -173.66 158.808 -67.6589 201.208 38.3422 1 1 0 5 lb 98 -262.548 107.243 -137.997 120.493 -13.4452 133.743 1 0 1 5 lb 99 -262.548 107.243 -221.472 176.144 -180.397 245.045 1 0 1 5 lb 100 -13.4452 133.743 -96.9211 189.394 -180.397 245.045 1 0 1 5 lb 101 -180.397 245.045 -140.307 344.649 -132.697 451.748 0 1 1 5 lb 102 -180.397 245.045 -172.787 352.144 -132.697 451.748 0 1 1 5 lb 103 -416.25 345.746 -274.474 398.747 -132.697 451.748 0.5 0 0 5 lb 104 -416.25 345.746 -393.725 457.048 -371.2 568.349 0.5 0 0 5 lb 105 -132.697 451.748 -251.948 510.048 -371.2 568.349 0.5 0 0 5 lb 106 670.264 274.195 629.188 409.347 588.113 544.499 0 0 1 5 lb 107 670.264 274.195 797.466 341.771 924.667 409.347 0 0 1 5 lb 108 588.113 544.499 756.39 476.923 924.667 409.347 0 0 1 5 lb 109 -689.204 -237.261 -612.964 -103.444 -567.302 43.6423 0 0 0 5 lb 110 -689.204 -237.261 -643.542 -90.1744 -567.302 43.6423 0 0 0 5 lb 111 111 grestore 112 112 %Nodes: 113 113 gsave 114 -567.302 43.6423 20 .84520 0 1 nc115 -689.204 -237.261 20 .84520 0 1 nc116 924.667 409.347 20 .84520 0 1 nc117 588.113 544.499 20 .84520 0 1 nc118 670.264 274.195 20 .84521 0 0 nc119 -371.2 568.349 20 .84520 0 1 nc120 -132.697 451.748 20 .84521 0 0 nc121 -416.25 345.746 20 .84520 0 1 nc122 -180.397 245.045 20 .84521 0 0 nc123 -13.4452 133.743 20 .84520 0 1 nc124 -262.548 107.243 20 .84520 0 1 nc125 201.208 38.3422 20 .84520 0 1 nc126 116.407 -173.66 20 .84520 0 1 nc127 -26.6953 -19.9585 20 .84521 0 0 nc128 -539.894 -262.64 20 .84520 0 1 nc129 -323.543 -433.964 20 .84520 0 1 nc130 -309.657 -57.9033 20 .84521 0 0 nc131 -67.9734 -347.42 20 .84521 0 0 nc132 415.393 -289.516 20 .84521 0 0 nc133 730.084 -307.139 20 .84520 0 1 nc134 526.164 32.7279 20 .84521 0 0 nc135 762.812 -17.6227 20 .84521 0 0 nc136 -67.9734 319.727 20 .84520 0 1 nc137 329.797 314.692 20 .84520 0 1 nc138 -5.03507 561.41 20 .84520 0 1 nc139 422.945 521.129 20 .84520 0 1 nc140 -470.779 158.605 20 .84521 0 0 nc141 986.873 -115.807 20 .84520 0 1 nc142 906.312 201.403 20 .84520 0 1 nc143 -767.847 113.289 20 .84521 0 0 nc144 -579.033 445.603 20 .84520 0 1 nc145 -840.856 -246.718 20 .84520 0 1 nc146 206.221 -205.967 20 .84520 0 1 nc147 277.311 -252.33 20 .84520 0 1 nc148 271.13 -175.058 20 .84521 0 0 nc149 366.947 -110.15 20 .84521 0 0 nc150 397.855 -196.694 20 .84520 0 1 nc151 438.037 -88.514 20 .84520 0 1 nc152 286.584 -48.3327 20 .84521 0 0 nc153 212.403 -23.6057 20 .84520 0 1 nc154 280.402 10.3938 20 .84520 0 1 nc155 694.579 115.483 20 .84520 0 1 nc156 574.035 177.301 20 .84520 0 1 nc114 -567.302 43.6423 20 0 0 1 nc 115 -689.204 -237.261 20 0 0 1 nc 116 924.667 409.347 20 0 0 1 nc 117 588.113 544.499 20 0 0 1 nc 118 670.264 274.195 20 1 0 0 nc 119 -371.2 568.349 20 0 0 1 nc 120 -132.697 451.748 20 1 0 0 nc 121 -416.25 345.746 20 0 0 1 nc 122 -180.397 245.045 20 1 0 0 nc 123 -13.4452 133.743 20 0 0 1 nc 124 -262.548 107.243 20 0 0 1 nc 125 201.208 38.3422 20 0 0 1 nc 126 116.407 -173.66 20 0 0 1 nc 127 -26.6953 -19.9585 20 1 0 0 nc 128 -539.894 -262.64 20 0 0 1 nc 129 -323.543 -433.964 20 0 0 1 nc 130 -309.657 -57.9033 20 1 0 0 nc 131 -67.9734 -347.42 20 1 0 0 nc 132 415.393 -289.516 20 1 0 0 nc 133 730.084 -307.139 20 0 0 1 nc 134 526.164 32.7279 20 1 0 0 nc 135 762.812 -17.6227 20 1 0 0 nc 136 -67.9734 319.727 20 0 0 1 nc 137 329.797 314.692 20 0 0 1 nc 138 -5.03507 561.41 20 0 0 1 nc 139 422.945 521.129 20 0 0 1 nc 140 -470.779 158.605 20 1 0 0 nc 141 986.873 -115.807 20 0 0 1 nc 142 906.312 201.403 20 0 0 1 nc 143 -767.847 113.289 20 1 0 0 nc 144 -579.033 445.603 20 0 0 1 nc 145 -840.856 -246.718 20 0 0 1 nc 146 206.221 -205.967 20 0 0 1 nc 147 277.311 -252.33 20 0 0 1 nc 148 271.13 -175.058 20 1 0 0 nc 149 366.947 -110.15 20 1 0 0 nc 150 397.855 -196.694 20 0 0 1 nc 151 438.037 -88.514 20 0 0 1 nc 152 286.584 -48.3327 20 1 0 0 nc 153 212.403 -23.6057 20 0 0 1 nc 154 280.402 10.3938 20 0 0 1 nc 155 694.579 115.483 20 0 0 1 nc 156 574.035 177.301 20 0 0 1 nc 157 157 grestore 158 158 grestore -
doc/images/strongly_connected_components.eps
r1213 r634 1 1 %!PS-Adobe-2.0 EPSF-2.0 2 2 %%Creator: LEMON, graphToEps() 3 %%CreationDate: Fri Mar 8 00:22:15 20133 %%CreationDate: Fri Nov 4 13:47:12 2005 4 4 %%BoundingBox: 0 0 842 596 5 5 %%EndComments … … 54 54 %Edges: 55 55 gsave 56 4.56973setlinewidth 0 0 1 setrgbcolor newpath56 2 setlinewidth 0 0 1 setrgbcolor newpath 57 57 218.178 27.2723 moveto 58 19 5.849 -31.0725 190.033 -46.2697 176.306 -82.1369curveto stroke59 newpath 16 3.235 -116.291 moveto 165.206 -77.8889 lineto 187.405 -86.3849lineto closepath fill60 4.56973setlinewidth 0 0 1 setrgbcolor newpath58 192.373 -40.1551 188.622 -49.9556 169.228 -100.631 curveto stroke 59 newpath 164.939 -111.838 moveto 165.492 -99.2013 lineto 172.964 -102.061 lineto closepath fill 60 2 setlinewidth 0 0 1 setrgbcolor newpath 61 61 44.8044 15.5841 moveto 62 1 09.705 19.9594 126.016 21.0591 166.493 23.7879 curveto stroke63 newpath 202.98 26.2477 moveto 167.292 11.9299 lineto 165.694 35.6458 lineto closepath fill64 4.56973setlinewidth 1 0 0 setrgbcolor newpath62 119.293 20.6059 129.775 21.3125 186.25 25.1199 curveto stroke 63 newpath 198.223 25.927 moveto 186.519 21.1289 lineto 185.981 29.1108 lineto closepath fill 64 2 setlinewidth 1 0 0 setrgbcolor newpath 65 65 218.178 27.2723 moveto 66 28 1.264 -80.3935 289.87 -95.0808 338.092 -177.379curveto stroke67 newpath 35 6.579 -208.932 moveto 327.837 -183.388 lineto 348.346 -171.371lineto closepath fill68 4.56973setlinewidth 0 0 1 setrgbcolor newpath66 285.395 -87.4449 290.763 -96.6058 348.102 -194.464 curveto stroke 67 newpath 354.169 -204.818 moveto 344.651 -196.487 lineto 351.554 -192.442 lineto closepath fill 68 2 setlinewidth 0 0 1 setrgbcolor newpath 69 69 157.79 -130.517 moveto 70 1 14.446 -74.4692 104.358 -61.4239 76.4943 -25.394 curveto stroke71 newpath 5 4.1228 3.53455 moveto 85.8959 -18.1234 lineto 67.0928 -32.6646lineto closepath fill72 4.56973setlinewidth 1 0 0 setrgbcolor newpath70 108.71 -67.0521 102.27 -58.7243 64.3804 -9.72954 curveto stroke 71 newpath 57.0394 -0.236898 moveto 67.5446 -7.28254 lineto 61.2162 -12.1765 lineto closepath fill 72 2 setlinewidth 1 0 0 setrgbcolor newpath 73 73 -105.193 -261.035 moveto 74 -3 9.4801 -139.85 -31.344 -124.846 20.1113 -29.9539curveto stroke75 newpath 3 7.5434 2.19358 moveto 30.559 -35.6192 lineto 9.66361 -24.2886lineto closepath fill76 4.56973setlinewidth 0 0 1 setrgbcolor newpath74 -35.6576 -132.801 -30.5923 -123.459 29.5506 -12.5464 curveto stroke 75 newpath 35.2708 -1.99743 moveto 33.0669 -14.4531 lineto 26.0343 -10.6397 lineto closepath fill 76 2 setlinewidth 0 0 1 setrgbcolor newpath 77 77 -465.576 -42.8564 moveto 78 -55 0.335 -27.1603 -566.8 -24.1113 -625.027 -13.3286 curveto stroke79 newpath -6 60.985 -6.66971 moveto -622.863 -1.64245 lineto -627.191 -25.0148lineto closepath fill80 4.56973setlinewidth 0 0 1 setrgbcolor newpath78 -559.078 -25.5413 -569.47 -23.6169 -644.498 -9.72286 curveto stroke 79 newpath -656.297 -7.5378 moveto -643.77 -5.78973 lineto -645.226 -13.656 lineto closepath fill 80 2 setlinewidth 0 0 1 setrgbcolor newpath 81 81 -574.666 -153.893 moveto 82 -5 35.911 -114.447 -524.692 -103.027 -501.88 -79.8085curveto stroke83 newpath -47 6.251 -53.7222 moveto -493.402 -88.1377 lineto -510.358 -71.4793lineto closepath fill84 4.56973setlinewidth 1 0 0 setrgbcolor newpath82 -528.842 -107.252 -521.515 -99.794 -488.002 -65.683 curveto stroke 83 newpath -479.592 -57.123 moveto -485.149 -68.4863 lineto -490.856 -62.8797 lineto closepath fill 84 2 setlinewidth 1 0 0 setrgbcolor newpath 85 85 -490.901 120.777 moveto 86 -48 1.623 60.8277 -479.143 44.8049 -473.499 8.33636curveto stroke87 newpath -46 7.906 -27.8032 moveto -485.244 6.51862 lineto -461.754 10.1541lineto closepath fill88 4.56973setlinewidth 0 0 1 setrgbcolor newpath86 -480.122 51.1328 -478.519 40.7713 -470.47 -11.2329 curveto stroke 87 newpath -468.635 -23.0917 moveto -474.423 -11.8447 lineto -466.517 -10.6212 lineto closepath fill 88 2 setlinewidth 0 0 1 setrgbcolor newpath 89 89 -675.963 -3.89604 moveto 90 -63 7.405 -60.9909 -628.201 -74.6206 -603.658 -110.963curveto stroke91 newpath -58 3.191 -141.27 moveto -613.507 -117.615 lineto -593.808 -104.312lineto closepath fill92 4.56973setlinewidth 0 0 1 setrgbcolor newpath90 -632.116 -68.8235 -626.228 -77.5422 -592.575 -127.374 curveto stroke 91 newpath -585.859 -137.319 moveto -595.89 -129.612 lineto -589.26 -125.135 lineto closepath fill 92 2 setlinewidth 0 0 1 setrgbcolor newpath 93 93 -490.901 120.777 moveto 94 -43 9.75 208.465 -431.238 223.057 -394.278 286.417curveto stroke95 newpath -37 5.851 318.006 moveto -384.012 280.429 lineto -404.543 292.406lineto closepath fill96 4.56973setlinewidth 0 0 1 setrgbcolor newpath94 -435.445 215.844 -430.107 224.995 -384.3 303.522 curveto stroke 95 newpath -378.253 313.887 moveto -380.845 301.507 lineto -387.755 305.537 lineto closepath fill 96 2 setlinewidth 0 0 1 setrgbcolor newpath 97 97 -266.879 114.933 moveto 98 -3 58.311 117.318 -375.109 117.756 -439.117 119.426curveto stroke99 newpath -47 5.674 120.38 moveto -438.807 131.307 lineto -439.426 107.545lineto closepath fill100 4.56973setlinewidth 0 0 1 setrgbcolor newpath98 -367.067 117.547 -377.642 117.822 -458.912 119.943 curveto stroke 99 newpath -470.908 120.255 moveto -458.807 123.941 lineto -459.016 115.944 lineto closepath fill 100 2 setlinewidth 0 0 1 setrgbcolor newpath 101 101 -368.176 331.163 moveto 102 -32 6.156 241.466 -318.997 226.186 -288.855 161.843curveto stroke103 newpath -27 3.341 128.727 moveto -299.617 156.801 lineto -278.092 166.885lineto closepath fill104 4.56973setlinewidth 1 0 0 setrgbcolor newpath102 -322.511 233.685 -318.018 224.095 -280.454 143.911 curveto stroke 103 newpath -275.364 133.044 moveto -284.076 142.214 lineto -276.832 145.608 lineto closepath fill 104 2 setlinewidth 1 0 0 setrgbcolor newpath 105 105 -266.879 114.933 moveto 106 -22 6.764 227.755 -221.069 243.774 -190.728 329.107curveto stroke107 newpath -1 78.477 363.564 moveto -179.53 325.126 lineto -201.926 333.089lineto closepath fill108 4.56973setlinewidth 0 0 1 setrgbcolor newpath106 -224.004 235.52 -220.448 245.52 -184.094 347.765 curveto stroke 107 newpath -180.074 359.072 moveto -180.325 346.425 lineto -187.863 349.105 lineto closepath fill 108 2 setlinewidth 0 0 1 setrgbcolor newpath 109 109 -251.294 -335.059 moveto 110 -1 98.044 -308.079 -183.61 -300.766 -151.402 -284.448 curveto stroke111 newpath -1 18.781 -267.92 moveto -146.031 -295.049 lineto -156.774 -273.846lineto closepath fill112 4.56973setlinewidth 0 0 1 setrgbcolor newpath110 -189.25 -303.624 -179.902 -298.887 -133.738 -275.498 curveto stroke 111 newpath -123.034 -270.074 moveto -131.93 -279.066 lineto -135.546 -271.93 lineto closepath fill 112 2 setlinewidth 0 0 1 setrgbcolor newpath 113 113 -389.604 -136.361 moveto 114 -3 32.039 -219.059 -322.392 -232.919 -280.889 -292.543curveto stroke115 newpath -2 59.996 -322.557 moveto -290.643 -299.333 lineto -271.134 -285.753lineto closepath fill116 4.56973setlinewidth 1 0 0 setrgbcolor newpath114 -327.15 -226.083 -321.098 -234.777 -269.576 -308.795 curveto stroke 115 newpath -262.72 -318.644 moveto -272.859 -311.081 lineto -266.293 -306.51 lineto closepath fill 116 2 setlinewidth 1 0 0 setrgbcolor newpath 117 117 5.84406 175.322 moveto 118 -7 0.5724 261.706 -81.8227 274.423 -139.051 339.116curveto stroke119 newpath -16 3.281 366.507 moveto -130.149 346.991 lineto -147.953 331.242lineto closepath fill120 4.56973setlinewidth 0 0 1 setrgbcolor newpath118 -76.0754 267.926 -83.1051 275.873 -152.172 353.948 curveto stroke 119 newpath -160.122 362.936 moveto -149.176 356.598 lineto -155.168 351.298 lineto closepath fill 120 2 setlinewidth 0 0 1 setrgbcolor newpath 121 121 169.478 311.683 moveto 122 103.641 256.819 90.7821 246.103 45.6398 208.485curveto stroke123 newpath 17.546 185.074 moveto 38.0313 217.615 lineto 53.2483 199.355 lineto closepath fill124 4.56973setlinewidth 0 0 1 setrgbcolor newpath122 96.8003 251.119 88.6819 244.353 30.4273 195.808 curveto stroke 123 newpath 21.2086 188.126 moveto 27.8666 198.881 lineto 32.988 192.735 lineto closepath fill 124 2 setlinewidth 0 0 1 setrgbcolor newpath 125 125 342.851 111.037 moveto 126 26 9.224 196.246 258.132 209.083 203.347 272.486curveto stroke127 newpath 1 79.437 300.157 moveto 212.34 280.257 lineto 194.354 264.716lineto closepath fill128 4.56973setlinewidth 0 0 1 setrgbcolor newpath126 263.766 202.563 256.831 210.589 190.4 287.47 curveto stroke 127 newpath 182.554 296.55 moveto 193.427 290.085 lineto 187.373 284.855 lineto closepath fill 128 2 setlinewidth 0 0 1 setrgbcolor newpath 129 129 5.84406 175.322 moveto 130 1 55.419 146.79 172.221 143.585 291.966 120.743 curveto stroke131 newpath 32 7.888 113.891 moveto 289.739 109.069 lineto 294.193 132.418lineto closepath fill132 4.56973setlinewidth 0 0 1 setrgbcolor newpath130 163.16 145.314 173.605 143.321 311.418 117.033 curveto stroke 131 newpath 323.205 114.784 moveto 310.668 113.104 lineto 312.167 120.962 lineto closepath fill 132 2 setlinewidth 0 0 1 setrgbcolor newpath 133 133 342.851 111.037 moveto 134 49 0.978 6.99574 505.015 -2.86383 627.727 -89.0547curveto stroke135 newpath 65 7.653 -110.074 moveto 620.896 -98.7802 lineto 634.558 -79.3291lineto closepath fill136 4.56973setlinewidth 0 0 1 setrgbcolor newpath134 497.255 2.58683 505.964 -3.53033 643.932 -100.436 curveto stroke 135 newpath 653.752 -107.334 moveto 641.633 -103.71 lineto 646.231 -97.163 lineto closepath fill 136 2 setlinewidth 0 0 1 setrgbcolor newpath 137 137 364.28 -222.074 moveto 138 354. 807 -74.8128 353.709 -57.7536 346.177 59.3416curveto stroke139 newpath 34 3.829 95.836 moveto 358.037 60.1045 lineto 334.316 58.5786lineto closepath fill140 4.56973setlinewidth 0 0 1 setrgbcolor newpath138 354.298 -66.9063 353.616 -56.2971 344.905 79.1029 curveto stroke 139 newpath 344.135 91.0781 moveto 348.897 79.3597 lineto 340.914 78.8461 lineto closepath fill 140 2 setlinewidth 0 0 1 setrgbcolor newpath 141 141 670.118 -118.829 moveto 142 5 35.595 -164.241 519.412 -169.704 413.361 -205.505curveto stroke143 newpath 3 78.712 -217.202 moveto 409.559 -194.245 lineto 417.162 -216.766lineto closepath fill144 4.56973setlinewidth 1 0 0 setrgbcolor newpath142 528.037 -166.793 517.967 -170.192 394.599 -211.839 curveto stroke 143 newpath 383.229 -215.677 moveto 393.32 -208.049 lineto 395.878 -215.629 lineto closepath fill 144 2 setlinewidth 1 0 0 setrgbcolor newpath 145 145 -105.193 -261.035 moveto 146 11 0.939 -243.099 128.069 -241.677 312.655 -226.358curveto stroke147 newpath 34 9.1 -223.334 moveto 313.638 -238.202 lineto 311.672 -214.514 lineto closepath fill148 4.56973setlinewidth 0 0 1 setrgbcolor newpath146 118.401 -242.479 129.015 -241.598 332.39 -224.721 curveto stroke 147 newpath 344.348 -223.728 moveto 332.72 -228.707 lineto 332.059 -220.734 lineto closepath fill 148 2 setlinewidth 0 0 1 setrgbcolor newpath 149 149 -105.193 -261.035 moveto 150 -1 56.746 -168.566 -164.987 -153.784 -202.693 -86.1539curveto stroke151 newpath -2 20.5 -54.2129 moveto -192.312 -80.3665 lineto -213.073 -91.9413lineto closepath fill152 4.56973setlinewidth 0 0 1 setrgbcolor newpath150 -160.867 -161.176 -166.028 -151.918 -212.336 -68.858 curveto stroke 151 newpath -218.179 -58.3769 moveto -208.842 -66.9102 lineto -215.829 -70.8058 lineto closepath fill 152 2 setlinewidth 0 0 1 setrgbcolor newpath 153 153 -227.918 -40.9084 moveto 154 -29 0.327 -77.7521 -304.558 -86.1532 -344.995 -110.026curveto stroke155 newpath -37 6.487 -128.617 moveto -351.037 -99.7914 lineto -338.953 -120.26lineto closepath fill154 -298.35 -82.4884 -307.42 -87.8432 -362.048 -120.093 curveto stroke 155 newpath -372.381 -126.193 moveto -364.081 -116.648 lineto -360.014 -123.537 lineto closepath fill 156 156 grestore 157 157 %Nodes: 158 158 gsave 159 -389.604 -136.361 15.23240 1 0 nc160 -227.918 -40.9084 15.23240 1 0 nc161 -105.193 -261.035 15.23240 1 0 nc162 364.28 -222.074 15.23241 1 0 nc163 670.118 -118.829 15.23241 1 0 nc164 342.851 111.037 15.23241 1 0 nc165 5.84406 175.322 15.23241 1 0 nc166 169.478 311.683 15.23241 1 0 nc167 -173.374 377.916 15.23241 0 1 nc168 -251.294 -335.059 15.23240 1 0 nc169 -266.879 114.933 15.23240 0 0 nc170 -368.176 331.163 15.23240 0 0 nc171 -490.901 120.777 15.23240 0 0 nc172 -574.666 -153.893 15.23241 0 0 nc173 -675.963 -3.89604 15.23241 0 0 nc174 -465.576 -42.8564 15.23241 0 0 nc175 44.8044 15.5841 15.23240 0 1 nc176 157.79 -130.517 15.23240 0 1 nc177 218.178 27.2723 15.23240 0 1 nc159 -389.604 -136.361 20 0 1 0 nc 160 -227.918 -40.9084 20 0 1 0 nc 161 -105.193 -261.035 20 0 1 0 nc 162 364.28 -222.074 20 1 1 0 nc 163 670.118 -118.829 20 1 1 0 nc 164 342.851 111.037 20 1 1 0 nc 165 5.84406 175.322 20 1 1 0 nc 166 169.478 311.683 20 1 1 0 nc 167 -173.374 377.916 20 1 0 1 nc 168 -251.294 -335.059 20 0 1 0 nc 169 -266.879 114.933 20 0 0 0 nc 170 -368.176 331.163 20 0 0 0 nc 171 -490.901 120.777 20 0 0 0 nc 172 -574.666 -153.893 20 1 0 0 nc 173 -675.963 -3.89604 20 1 0 0 nc 174 -465.576 -42.8564 20 1 0 0 nc 175 44.8044 15.5841 20 0 0 1 nc 176 157.79 -130.517 20 0 0 1 nc 177 218.178 27.2723 20 0 0 1 nc 178 178 grestore 179 179 grestore -
doc/lgf.dox
r1270 r1192 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 65 65 66 66 The \e LGF files can also contain bipartite graphs, in this case a 67 \c \@red_nodes and a \c \@blue_nodes sections describe the node set of the67 \c @red_nodes and a \c @blue_nodes sections describe the node set of the 68 68 graph. If a map is in both of these sections, then it can be used as a 69 69 regular node map. -
doc/mainpage.dox.in
r1221 r1039 26 26 It is a C++ template library providing efficient implementations of common 27 27 data structures and algorithms with focus on combinatorial optimization 28 tasks connected mainly with graphs and networks \cite DezsoJuttnerKovacs11Lemon.28 tasks connected mainly with graphs and networks. 29 29 30 30 <b> … … 38 38 The project is maintained by the 39 39 <a href="http://www.cs.elte.hu/egres/">Egerváry Research Group on 40 Combinatorial Optimization</a> \ citeegres40 Combinatorial Optimization</a> \ref egres 41 41 at the Operations Research Department of the 42 42 <a href="http://www.elte.hu/en/">Eötvös Loránd University</a>, 43 43 Budapest, Hungary. 44 44 LEMON is also a member of the <a href="http://www.coin-or.org/">COIN-OR</a> 45 initiative \ citecoinor.45 initiative \ref coinor. 46 46 47 47 \section howtoread How to Read the Documentation -
doc/min_cost_flow.dox
r1270 r1164 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 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 \ citeamo93networkflows.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$, -
doc/references.bib
r1219 r1164 20 20 {O}perations {R}esearch}, 21 21 url = {http://www.coin-or.org/} 22 }23 24 25 %%%%% Papers related to LEMON %%%%%26 27 @article{DezsoJuttnerKovacs11Lemon,28 author = {B. Dezs{\H o} and A. J\"uttner and P. Kov\'acs},29 title = {{LEMON} -- an open source {C++} graph template library},30 journal = {Electronic Notes in Theoretical Computer Science},31 volume = {264},32 pages = {23--45},33 year = {2011},34 note = {Proc. 2nd Workshop on Generative Technologies}35 }36 37 @article{KiralyKovacs12MCF,38 author = {Z. Kir\'aly and P. Kov\'acs},39 title = {Efficient implementations of minimum-cost flow algorithms},40 journal = {Acta Universitatis Sapientiae, Informatica},41 year = {2012},42 volume = {4},43 pages = {67--118}44 22 } 45 23 -
lemon/CMakeLists.txt
r1264 r1133 37 37 IF(LEMON_HAVE_CPLEX) 38 38 SET(LEMON_SOURCES ${LEMON_SOURCES} cplex.cc) 39 INCLUDE_DIRECTORIES(${ ILOG_INCLUDE_DIRS})39 INCLUDE_DIRECTORIES(${CPLEX_INCLUDE_DIRS}) 40 40 ENDIF() 41 41 … … 48 48 SET(LEMON_SOURCES ${LEMON_SOURCES} cbc.cc) 49 49 INCLUDE_DIRECTORIES(${COIN_INCLUDE_DIRS}) 50 ENDIF()51 52 IF(LEMON_HAVE_SOPLEX)53 SET(LEMON_SOURCES ${LEMON_SOURCES} soplex.cc)54 INCLUDE_DIRECTORIES(${SOPLEX_INCLUDE_DIRS})55 50 ENDIF() 56 51 -
lemon/adaptors.h
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/assert.h
r1270 r463 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 200 200 ::lemon::_assert_bits::cstringify(msg), \ 201 201 #exp), 0))) 202 # if definedLEMON_ENABLE_DEBUG202 # if LEMON_ENABLE_DEBUG 203 203 # define LEMON_DEBUG(exp, msg) \ 204 204 (static_cast<void> (!!(exp) ? 0 : ( \ -
lemon/base.cc
r1270 r554 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 22 22 #include<lemon/tolerance.h> 23 23 #include<lemon/core.h> 24 #include<lemon/time_measure.h>25 24 namespace lemon { 26 25 … … 33 32 #endif 34 33 35 TimeStamp::Format TimeStamp::_format = TimeStamp::NORMAL;36 37 34 } //namespace lemon -
lemon/bellman_ford.h
r1270 r960 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 150 150 /// This class provides an efficient implementation of the Bellman-Ford 151 151 /// algorithm. The maximum time complexity of the algorithm is 152 /// <tt>O(n m)</tt>.152 /// <tt>O(ne)</tt>. 153 153 /// 154 154 /// The Bellman-Ford algorithm solves the single-source shortest path … … 201 201 /// The type of the paths. 202 202 typedef PredMapPath<Digraph, PredMap> Path; 203 ///\brief The \ref lemon::BellmanFordDefaultOperationTraits203 ///\brief The \ref BellmanFordDefaultOperationTraits 204 204 /// "operation traits class" of the algorithm. 205 205 typedef typename TR::OperationTraits OperationTraits; 206 206 207 ///\brief The \ref lemon::BellmanFordDefaultTraits "traits class" 208 ///of the algorithm. 207 ///The \ref BellmanFordDefaultTraits "traits class" of the algorithm. 209 208 typedef TR Traits; 210 209 -
lemon/bfs.h
r1270 r1127 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 153 153 typedef PredMapPath<Digraph, PredMap> Path; 154 154 155 ///The \ref lemon::BfsDefaultTraits "traits class" of the algorithm.155 ///The \ref BfsDefaultTraits "traits class" of the algorithm. 156 156 typedef TR Traits; 157 157 -
lemon/bin_heap.h
r1270 r758 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/alteration_notifier.h
r1270 r1131 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/array_map.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/bezier.h
r1270 r1157 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/default_map.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/edge_set_extender.h
r1270 r1161 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/graph_adaptor_extender.h
r1270 r965 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/graph_extender.h
r1270 r1195 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 844 844 845 845 typedef AlterationNotifier<BpGraphExtender, Node> NodeNotifier; 846 typedef AlterationNotifier<BpGraphExtender, RedNode> RedNodeNotifier; 846 typedef AlterationNotifier<BpGraphExtender, RedNode> RedNodeNotifier; 847 847 typedef AlterationNotifier<BpGraphExtender, BlueNode> BlueNodeNotifier; 848 848 typedef AlterationNotifier<BpGraphExtender, Arc> ArcNotifier; -
lemon/bits/lock.h
r1270 r1131 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2012 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 34 34 public: 35 35 Lock() { 36 36 pthread_mutex_init(&_lock, 0); 37 37 } 38 38 ~Lock() { 39 39 pthread_mutex_destroy(&_lock); 40 40 } 41 41 void lock() { 42 42 pthread_mutex_lock(&_lock); 43 43 } 44 44 void unlock() { 45 45 pthread_mutex_unlock(&_lock); 46 46 } 47 47 … … 58 58 void lock() {} 59 59 void unlock() {} 60 }; 60 }; 61 61 #endif 62 62 } -
lemon/bits/map_extender.h
r1270 r867 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/path_dump.h
r1270 r973 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/solver_bits.h
r1270 r1142 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/traits.h
r1270 r1194 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/windows.cc
r1270 r1163 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 141 141 #endif 142 142 } 143 143 144 144 WinLock::~WinLock() { 145 145 #ifdef WIN32 -
lemon/bits/windows.h
r1270 r1131 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/capacity_scaling.h
r1298 r1297 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 67 67 /// \ref CapacityScaling implements the capacity scaling version 68 68 /// of the successive shortest path algorithm for finding a 69 /// \ref min_cost_flow "minimum cost flow" \cite amo93networkflows, 70 /// \cite edmondskarp72theoretical. It is an efficient dual 71 /// solution method, which runs in polynomial time 72 /// \f$O(m\log U (n+m)\log n)\f$, where <i>U</i> denotes the maximum 73 /// of node supply and arc capacity values. 69 /// \ref min_cost_flow "minimum cost flow" \ref amo93networkflows, 70 /// \ref edmondskarp72theoretical. It is an efficient dual 71 /// solution method. 74 72 /// 75 73 /// This algorithm is typically slower than \ref CostScaling and … … 119 117 typedef typename TR::Heap Heap; 120 118 121 /// \brief The \ref lemon::CapacityScalingDefaultTraits "traits class" 122 /// of the algorithm 119 /// The \ref CapacityScalingDefaultTraits "traits class" of the algorithm 123 120 typedef TR Traits; 124 121 … … 646 643 /// 647 644 /// This function returns the total cost of the found flow. 648 /// Its complexity is O( m).645 /// Its complexity is O(e). 649 646 /// 650 647 /// \note The return type of the function can be specified as a … … 838 835 return OPTIMAL; 839 836 } 840 837 841 838 // Check if the upper bound is greater than or equal to the lower bound 842 839 // on each forward arc. -
lemon/cbc.cc
r1270 r1161 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/cbc.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 17 17 */ 18 18 19 // -*- C++ -*- 19 20 #ifndef LEMON_CBC_H 20 21 #define LEMON_CBC_H -
lemon/christofides_tsp.h
r1270 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 31 31 32 32 namespace lemon { 33 33 34 34 /// \ingroup tsp 35 35 /// … … 109 109 return _sum = 2 * _cost[_gr.edge(_gr(0), _gr(1))]; 110 110 } 111 111 112 112 // Compute min. cost spanning tree 113 113 std::vector<Edge> tree; 114 114 kruskal(_gr, _cost, std::back_inserter(tree)); 115 115 116 116 FullGraph::NodeMap<int> deg(_gr, 0); 117 117 for (int i = 0; i != int(tree.size()); ++i) { … … 126 126 if (deg[u] % 2 == 1) odd_nodes.push_back(u); 127 127 } 128 128 129 129 SmartGraph sgr; 130 130 SmartGraph::EdgeMap<Cost> scost(sgr); … … 140 140 } 141 141 } 142 142 143 143 // Compute min. cost perfect matching 144 144 MaxWeightedPerfectMatching<SmartGraph, SmartGraph::EdgeMap<Cost> > 145 145 mwpm(sgr, scost); 146 146 mwpm.run(); 147 147 148 148 for (SmartGraph::EdgeIt e(sgr); e != INVALID; ++e) { 149 149 if (mwpm.matching(e)) { … … 152 152 } 153 153 } 154 155 // Join the spanning tree and the matching 154 155 // Join the spanning tree and the matching 156 156 sgr.clear(); 157 157 for (int i = 0; i != _gr.nodeNum(); ++i) { … … 183 183 184 184 /// @} 185 185 186 186 /// \name Query Functions 187 187 /// @{ 188 188 189 189 /// \brief The total cost of the found tour. 190 190 /// … … 195 195 return _sum; 196 196 } 197 197 198 198 /// \brief Returns a const reference to the node sequence of the 199 199 /// found tour. … … 228 228 std::copy(_path.begin(), _path.end(), out); 229 229 } 230 230 231 231 /// \brief Gives back the found tour as a path. 232 232 /// 233 233 /// This function copies the found tour as a list of arcs/edges into 234 /// the given \ref lemon::concepts::Path "path structure".234 /// the given \ref concept::Path "path structure". 235 235 /// 236 236 /// \pre run() must be called before using this function. … … 245 245 } 246 246 } 247 247 248 248 /// @} 249 249 250 250 }; 251 251 -
lemon/circulation.h
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 196 196 public: 197 197 198 /// \brief The \ref lemon::CirculationDefaultTraits "traits class" 199 /// of the algorithm. 198 ///The \ref CirculationDefaultTraits "traits class" of the algorithm. 200 199 typedef TR Traits; 201 200 ///The type of the digraph the algorithm runs on. -
lemon/clp.cc
r1270 r1142 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/clp.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concept_check.h
r1270 r1157 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 59 59 #if !defined(NDEBUG) 60 60 void (Concept::*x)() = & Concept::constraints; 61 ::lemon::ignore_unused_variable_warning(x);61 ignore_unused_variable_warning(x); 62 62 #endif 63 63 } … … 69 69 typedef typename Concept::template Constraints<Type> ConceptCheck; 70 70 void (ConceptCheck::*x)() = & ConceptCheck::constraints; 71 ::lemon::ignore_unused_variable_warning(x);71 ignore_unused_variable_warning(x); 72 72 #endif 73 73 } -
lemon/concepts/bpgraph.h
r1270 r1196 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 524 524 /// Sets the iterator to the first arc of the given graph. 525 525 /// 526 explicit ArcIt(const BpGraph &g) 527 { 528 ::lemon::ignore_unused_variable_warning(g); 529 } 526 explicit ArcIt(const BpGraph &g) { ignore_unused_variable_warning(g); } 530 527 /// Sets the iterator to the given arc. 531 528 … … 573 570 /// 574 571 OutArcIt(const BpGraph& n, const Node& g) { 575 ::lemon::ignore_unused_variable_warning(n);576 ::lemon::ignore_unused_variable_warning(g);572 ignore_unused_variable_warning(n); 573 ignore_unused_variable_warning(g); 577 574 } 578 575 /// Sets the iterator to the given arc. … … 621 618 /// 622 619 InArcIt(const BpGraph& g, const Node& n) { 623 ::lemon::ignore_unused_variable_warning(n);624 ::lemon::ignore_unused_variable_warning(g);620 ignore_unused_variable_warning(n); 621 ignore_unused_variable_warning(g); 625 622 } 626 623 /// Sets the iterator to the given arc. … … 805 802 806 803 /// \brief Gives back the red end node of the edge. 807 /// 804 /// 808 805 /// Gives back the red end node of the edge. 809 806 RedNode redNode(const Edge&) const { return RedNode(); } 810 807 811 808 /// \brief Gives back the blue end node of the edge. 812 /// 809 /// 813 810 /// Gives back the blue end node of the edge. 814 811 BlueNode blueNode(const Edge&) const { return BlueNode(); } … … 1001 998 /// \brief The base node of the iterator. 1002 999 /// 1003 /// Returns the base node of the given incom ing arc iterator1000 /// Returns the base node of the given incomming arc iterator 1004 1001 /// (i.e. the target node of the corresponding arc). 1005 1002 Node baseNode(InArcIt) const { return INVALID; } … … 1007 1004 /// \brief The running node of the iterator. 1008 1005 /// 1009 /// Returns the running node of the given incom ing arc iterator1006 /// Returns the running node of the given incomming arc iterator 1010 1007 /// (i.e. the source node of the corresponding arc). 1011 1008 Node runningNode(InArcIt) const { return INVALID; } -
lemon/concepts/digraph.h
r1271 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 313 313 /// Sets the iterator to the first arc of the given digraph. 314 314 /// 315 explicit ArcIt(const Digraph& g) { 316 ::lemon::ignore_unused_variable_warning(g); 317 } 315 explicit ArcIt(const Digraph& g) { ignore_unused_variable_warning(g); } 318 316 /// Sets the iterator to the given arc. 319 317 … … 412 410 /// \brief The base node of the iterator. 413 411 /// 414 /// Returns the base node of the given incom ing arc iterator412 /// Returns the base node of the given incomming arc iterator 415 413 /// (i.e. the target node of the corresponding arc). 416 414 Node baseNode(InArcIt) const { return INVALID; } … … 418 416 /// \brief The running node of the iterator. 419 417 /// 420 /// Returns the running node of the given incom ing arc iterator418 /// Returns the running node of the given incomming arc iterator 421 419 /// (i.e. the source node of the corresponding arc). 422 420 Node runningNode(InArcIt) const { return INVALID; } -
lemon/concepts/graph.h
r1271 r1186 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 397 397 /// Sets the iterator to the first arc of the given graph. 398 398 /// 399 explicit ArcIt(const Graph &g) { 400 ::lemon::ignore_unused_variable_warning(g); 401 } 399 explicit ArcIt(const Graph &g) { ignore_unused_variable_warning(g); } 402 400 /// Sets the iterator to the given arc. 403 401 … … 445 443 /// 446 444 OutArcIt(const Graph& n, const Node& g) { 447 ::lemon::ignore_unused_variable_warning(n);448 ::lemon::ignore_unused_variable_warning(g);445 ignore_unused_variable_warning(n); 446 ignore_unused_variable_warning(g); 449 447 } 450 448 /// Sets the iterator to the given arc. … … 493 491 /// 494 492 InArcIt(const Graph& g, const Node& n) { 495 ::lemon::ignore_unused_variable_warning(n);496 ::lemon::ignore_unused_variable_warning(g);493 ignore_unused_variable_warning(n); 494 ignore_unused_variable_warning(g); 497 495 } 498 496 /// Sets the iterator to the given arc. … … 760 758 /// \brief The base node of the iterator. 761 759 /// 762 /// Returns the base node of the given incom ing arc iterator760 /// Returns the base node of the given incomming arc iterator 763 761 /// (i.e. the target node of the corresponding arc). 764 762 Node baseNode(InArcIt) const { return INVALID; } … … 766 764 /// \brief The running node of the iterator. 767 765 /// 768 /// Returns the running node of the given incom ing arc iterator766 /// Returns the running node of the given incomming arc iterator 769 767 /// (i.e. the source node of the corresponding arc). 770 768 Node runningNode(InArcIt) const { return INVALID; } -
lemon/concepts/graph_components.h
r1270 r1196 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 109 109 110 110 bool b; 111 ::lemon::ignore_unused_variable_warning(b);111 ignore_unused_variable_warning(b); 112 112 113 113 b = (ia == ib) && (ia != ib); … … 290 290 ue = e; 291 291 bool d = graph.direction(e); 292 ::lemon::ignore_unused_variable_warning(d);292 ignore_unused_variable_warning(d); 293 293 } 294 294 } … … 392 392 393 393 /// \brief Gives back the red end node of the edge. 394 /// 394 /// 395 395 /// Gives back the red end node of the edge. 396 396 RedNode redNode(const Edge&) const { return RedNode(); } 397 397 398 398 /// \brief Gives back the blue end node of the edge. 399 /// 399 /// 400 400 /// Gives back the blue end node of the edge. 401 401 BlueNode blueNode(const Edge&) const { return BlueNode(); } … … 457 457 rn = bpgraph.asRedNode(rnan); 458 458 bn = bpgraph.asBlueNode(bnan); 459 ::lemon::ignore_unused_variable_warning(b);459 ignore_unused_variable_warning(b); 460 460 } 461 461 } … … 535 535 536 536 nid = digraph.maxNodeId(); 537 ::lemon::ignore_unused_variable_warning(nid);537 ignore_unused_variable_warning(nid); 538 538 eid = digraph.maxArcId(); 539 ::lemon::ignore_unused_variable_warning(eid);539 ignore_unused_variable_warning(eid); 540 540 } 541 541 … … 590 590 edge = graph.edgeFromId(ueid); 591 591 ueid = graph.maxEdgeId(); 592 ::lemon::ignore_unused_variable_warning(ueid);592 ignore_unused_variable_warning(ueid); 593 593 } 594 594 … … 654 654 rid = bpgraph.maxRedId(); 655 655 bid = bpgraph.maxBlueId(); 656 ::lemon::ignore_unused_variable_warning(rid);657 ::lemon::ignore_unused_variable_warning(bid);656 ignore_unused_variable_warning(rid); 657 ignore_unused_variable_warning(bid); 658 658 } 659 659 … … 727 727 _GraphItemIt it3 = it1; 728 728 _GraphItemIt it4 = INVALID; 729 ::lemon::ignore_unused_variable_warning(it3);730 ::lemon::ignore_unused_variable_warning(it4);729 ignore_unused_variable_warning(it3); 730 ignore_unused_variable_warning(it4); 731 731 732 732 it2 = ++it1; … … 818 818 _GraphIncIt it3 = it1; 819 819 _GraphIncIt it4 = INVALID; 820 ::lemon::ignore_unused_variable_warning(it3);821 ::lemon::ignore_unused_variable_warning(it4);820 ignore_unused_variable_warning(it3); 821 ignore_unused_variable_warning(it4); 822 822 823 823 it2 = ++it1; … … 876 876 void next(Arc&) const {} 877 877 878 /// \brief Return the first arc incom ing to the given node.879 /// 880 /// This function gives back the first arc incom ing to the878 /// \brief Return the first arc incomming to the given node. 879 /// 880 /// This function gives back the first arc incomming to the 881 881 /// given node. 882 882 void firstIn(Arc&, const Node&) const {} 883 883 884 /// \brief Return the next arc incom ing to the given node.885 /// 886 /// This function gives back the next arc incom ing to the884 /// \brief Return the next arc incomming to the given node. 885 /// 886 /// This function gives back the next arc incomming to the 887 887 /// given node. 888 888 void nextIn(Arc&) const {} … … 1001 1001 n = digraph.baseNode(oait); 1002 1002 n = digraph.runningNode(oait); 1003 ::lemon::ignore_unused_variable_warning(n);1003 ignore_unused_variable_warning(n); 1004 1004 } 1005 1005 } … … 1151 1151 typedef typename Base::Arc Arc; 1152 1152 typedef typename Base::Edge Edge; 1153 1153 1154 1154 typedef IterableBpGraphComponent BpGraph; 1155 1155 … … 1211 1211 typename _BpGraph::RedNode rn(INVALID); 1212 1212 bpgraph.first(rn); 1213 bpgraph.next(rn); 1213 bpgraph.next(rn); 1214 1214 typename _BpGraph::BlueNode bn(INVALID); 1215 1215 bpgraph.first(bn); … … 1278 1278 = digraph.notifier(typename _Digraph::Arc()); 1279 1279 1280 ::lemon::ignore_unused_variable_warning(nn);1281 ::lemon::ignore_unused_variable_warning(en);1280 ignore_unused_variable_warning(nn); 1281 ignore_unused_variable_warning(en); 1282 1282 } 1283 1283 … … 1326 1326 typename _Graph::EdgeNotifier& uen 1327 1327 = graph.notifier(typename _Graph::Edge()); 1328 ::lemon::ignore_unused_variable_warning(uen);1328 ignore_unused_variable_warning(uen); 1329 1329 } 1330 1330 … … 1388 1388 typename _BpGraph::BlueNodeNotifier& bnn 1389 1389 = bpgraph.notifier(typename _BpGraph::BlueNode()); 1390 ::lemon::ignore_unused_variable_warning(rnn);1391 ::lemon::ignore_unused_variable_warning(bnn);1390 ignore_unused_variable_warning(rnn); 1391 ignore_unused_variable_warning(bnn); 1392 1392 } 1393 1393 … … 1462 1462 // m3 = cmap; 1463 1463 1464 ::lemon::ignore_unused_variable_warning(m1);1465 ::lemon::ignore_unused_variable_warning(m2);1466 // ::lemon::ignore_unused_variable_warning(m3);1464 ignore_unused_variable_warning(m1); 1465 ignore_unused_variable_warning(m2); 1466 // ignore_unused_variable_warning(m3); 1467 1467 } 1468 1468 -
lemon/concepts/heap.h
r1270 r1127 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 261 261 item=Item(); 262 262 prio=Prio(); 263 ::lemon::ignore_unused_variable_warning(item);264 ::lemon::ignore_unused_variable_warning(prio);263 ignore_unused_variable_warning(item); 264 ignore_unused_variable_warning(prio); 265 265 266 266 OwnItem own_item; … … 269 269 own_item=Item(); 270 270 own_prio=Prio(); 271 ::lemon::ignore_unused_variable_warning(own_item);272 ::lemon::ignore_unused_variable_warning(own_prio);273 ::lemon::ignore_unused_variable_warning(own_state);271 ignore_unused_variable_warning(own_item); 272 ignore_unused_variable_warning(own_prio); 273 ignore_unused_variable_warning(own_state); 274 274 275 275 _Heap heap1(map); 276 276 _Heap heap2 = heap1; 277 ::lemon::ignore_unused_variable_warning(heap1);278 ::lemon::ignore_unused_variable_warning(heap2);277 ignore_unused_variable_warning(heap1); 278 ignore_unused_variable_warning(heap2); 279 279 280 280 int s = heap.size(); 281 ::lemon::ignore_unused_variable_warning(s);281 ignore_unused_variable_warning(s); 282 282 bool e = heap.empty(); 283 ::lemon::ignore_unused_variable_warning(e);283 ignore_unused_variable_warning(e); 284 284 285 285 prio = heap.prio(); -
lemon/concepts/maps.h
r1270 r1157 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 61 61 own_val = m[own_key]; 62 62 63 ::lemon::ignore_unused_variable_warning(key);64 ::lemon::ignore_unused_variable_warning(val);65 ::lemon::ignore_unused_variable_warning(own_key);66 ::lemon::ignore_unused_variable_warning(own_val);63 ignore_unused_variable_warning(key); 64 ignore_unused_variable_warning(val); 65 ignore_unused_variable_warning(own_key); 66 ignore_unused_variable_warning(own_val); 67 67 } 68 68 const Key& key; … … 101 101 m.set(own_key, own_val); 102 102 103 ::lemon::ignore_unused_variable_warning(key);104 ::lemon::ignore_unused_variable_warning(val);105 ::lemon::ignore_unused_variable_warning(own_key);106 ::lemon::ignore_unused_variable_warning(own_val);103 ignore_unused_variable_warning(key); 104 ignore_unused_variable_warning(val); 105 ignore_unused_variable_warning(own_key); 106 ignore_unused_variable_warning(own_val); 107 107 } 108 108 const Key& key; -
lemon/concepts/path.h
r1270 r1127 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 76 76 template <typename CPath> 77 77 Path& operator=(const CPath& cpath) { 78 ::lemon::ignore_unused_variable_warning(cpath);78 ignore_unused_variable_warning(cpath); 79 79 return *this; 80 80 } … … 136 136 e = (i < ii); 137 137 138 ::lemon::ignore_unused_variable_warning(l);139 ::lemon::ignore_unused_variable_warning(pp);140 ::lemon::ignore_unused_variable_warning(e);141 ::lemon::ignore_unused_variable_warning(id);142 ::lemon::ignore_unused_variable_warning(ii);143 ::lemon::ignore_unused_variable_warning(ed);138 ignore_unused_variable_warning(l); 139 ignore_unused_variable_warning(pp); 140 ignore_unused_variable_warning(e); 141 ignore_unused_variable_warning(id); 142 ignore_unused_variable_warning(ii); 143 ignore_unused_variable_warning(ed); 144 144 } 145 145 }; … … 163 163 e = (i != INVALID); 164 164 165 ::lemon::ignore_unused_variable_warning(l);166 ::lemon::ignore_unused_variable_warning(e);167 ::lemon::ignore_unused_variable_warning(id);168 ::lemon::ignore_unused_variable_warning(ed);165 ignore_unused_variable_warning(l); 166 ignore_unused_variable_warning(e); 167 ignore_unused_variable_warning(id); 168 ignore_unused_variable_warning(ed); 169 169 } 170 170 _Path& p; … … 189 189 e = (i != INVALID); 190 190 191 ::lemon::ignore_unused_variable_warning(l);192 ::lemon::ignore_unused_variable_warning(e);193 ::lemon::ignore_unused_variable_warning(id);194 ::lemon::ignore_unused_variable_warning(ed);191 ignore_unused_variable_warning(l); 192 ignore_unused_variable_warning(e); 193 ignore_unused_variable_warning(id); 194 ignore_unused_variable_warning(ed); 195 195 } 196 196 _Path& p; -
lemon/config.h.in
r1264 r1133 5 5 #cmakedefine LEMON_HAVE_GLPK 1 6 6 #cmakedefine LEMON_HAVE_CPLEX 1 7 #cmakedefine LEMON_HAVE_SOPLEX 18 7 #cmakedefine LEMON_HAVE_CLP 1 9 8 #cmakedefine LEMON_HAVE_CBC 1 10 #cmakedefine LEMON_DEFAULT_LP @LEMON_DEFAULT_LP@11 #cmakedefine LEMON_DEFAULT_MIP @LEMON_DEFAULT_MIP@12 9 #cmakedefine LEMON_USE_PTHREAD 1 13 10 #cmakedefine LEMON_USE_WIN32_THREADS 1 -
lemon/connectivity.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 746 746 /// 747 747 /// This function checks whether the given undirected graph is 748 /// bi-node-connected, i.e. a connected graph without articulation 749 /// node. 748 /// bi-node-connected, i.e. any two edges are on same circle. 750 749 /// 751 750 /// \return \c true if the graph bi-node-connected. 752 /// 753 /// \note By definition, 754 /// \li a graph consisting of zero or one node is bi-node-connected, 755 /// \li a graph consisting of two isolated nodes 756 /// is \e not bi-node-connected and 757 /// \li a graph consisting of two nodes connected by an edge 758 /// is bi-node-connected. 751 /// \note By definition, the empty graph is bi-node-connected. 759 752 /// 760 753 /// \see countBiNodeConnectedComponents(), biNodeConnectedComponents() 761 754 template <typename Graph> 762 755 bool biNodeConnected(const Graph& graph) { 763 bool hasNonIsolated = false, hasIsolated = false;764 for (typename Graph::NodeIt n(graph); n != INVALID; ++n) {765 if (typename Graph::OutArcIt(graph, n) == INVALID) {766 if (hasIsolated || hasNonIsolated) {767 return false;768 } else {769 hasIsolated = true;770 }771 } else {772 if (hasIsolated) {773 return false;774 } else {775 hasNonIsolated = true;776 }777 }778 }779 756 return countBiNodeConnectedComponents(graph) <= 1; 780 757 } -
lemon/core.h
r1270 r1195 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 36 36 #ifdef _MSC_VER 37 37 #pragma warning( disable : 4250 4355 4503 4800 4996 ) 38 #endif39 40 #ifdef __GNUC__41 #define GCC_VERSION (__GNUC__ * 10000 \42 + __GNUC_MINOR__ * 100 \43 + __GNUC_PATCHLEVEL__)44 #endif45 46 #if GCC_VERSION >= 4080047 // Needed by the [DI]GRAPH_TYPEDEFS marcos for gcc 4.848 #pragma GCC diagnostic ignored "-Wunused-local-typedefs"49 38 #endif 50 39 … … 255 244 256 245 namespace _graph_utils_bits { 257 246 258 247 template <typename Graph, typename Enable = void> 259 248 struct CountRedNodesSelector { … … 265 254 template <typename Graph> 266 255 struct CountRedNodesSelector< 267 Graph, typename 268 enable_if<typename Graph::NodeNumTag, void>::type> 256 Graph, typename 257 enable_if<typename Graph::NodeNumTag, void>::type> 269 258 { 270 259 static int count(const Graph &g) { 271 260 return g.redNum(); 272 261 } 273 }; 262 }; 274 263 } 275 264 … … 280 269 /// graph structures it is specialized to run in O(1). 281 270 /// 282 /// If the graph contains a \e redNum() member function and a 271 /// If the graph contains a \e redNum() member function and a 283 272 /// \e NodeNumTag tag then this function calls directly the member 284 273 /// function to query the cardinality of the node set. … … 289 278 290 279 namespace _graph_utils_bits { 291 280 292 281 template <typename Graph, typename Enable = void> 293 282 struct CountBlueNodesSelector { … … 299 288 template <typename Graph> 300 289 struct CountBlueNodesSelector< 301 Graph, typename 302 enable_if<typename Graph::NodeNumTag, void>::type> 290 Graph, typename 291 enable_if<typename Graph::NodeNumTag, void>::type> 303 292 { 304 293 static int count(const Graph &g) { 305 294 return g.blueNum(); 306 295 } 307 }; 296 }; 308 297 } 309 298 … … 314 303 /// graph structures it is specialized to run in O(1). 315 304 /// 316 /// If the graph contains a \e blueNum() member function and a 305 /// If the graph contains a \e blueNum() member function and a 317 306 /// \e NodeNumTag tag then this function calls directly the member 318 307 /// function to query the cardinality of the node set. … … 1866 1855 /// The Digraph type 1867 1856 typedef GR Digraph; 1868 1857 1869 1858 protected: 1870 1859 -
lemon/cost_scaling.h
r1298 r1297 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 92 92 /// \ref CostScaling implements a cost scaling algorithm that performs 93 93 /// push/augment and relabel operations for finding a \ref min_cost_flow 94 /// "minimum cost flow" \cite amo93networkflows, 95 /// \cite goldberg90approximation, 96 /// \cite goldberg97efficient, \cite bunnagel98efficient. 94 /// "minimum cost flow" \ref amo93networkflows, \ref goldberg90approximation, 95 /// \ref goldberg97efficient, \ref bunnagel98efficient. 97 96 /// It is a highly efficient primal-dual solution method, which 98 97 /// can be viewed as the generalization of the \ref Preflow 99 98 /// "preflow push-relabel" algorithm for the maximum flow problem. 100 /// It is a polynomial algorithm, its running time complexity is101 /// \f$O(n^2m\log(nK))\f$, where <i>K</i> denotes the maximum arc cost.102 99 /// 103 100 /// In general, \ref NetworkSimplex and \ref CostScaling are the fastest … … 154 151 typedef typename TR::LargeCost LargeCost; 155 152 156 /// \brief The \ref lemon::CostScalingDefaultTraits "traits class" 157 /// of the algorithm 153 /// The \ref CostScalingDefaultTraits "traits class" of the algorithm 158 154 typedef TR Traits; 159 155 … … 215 211 typedef std::vector<LargeCost> LargeCostVector; 216 212 typedef std::vector<char> BoolVector; 217 // Note: vector<char> is used instead of vector<bool> 218 // for efficiency reasons 213 // Note: vector<char> is used instead of vector<bool> for efficiency reasons 219 214 220 215 private: … … 672 667 /// 673 668 /// This function returns the total cost of the found flow. 674 /// Its complexity is O( m).669 /// Its complexity is O(e). 675 670 /// 676 671 /// \note The return type of the function can be specified as a … … 906 901 return OPTIMAL; 907 902 } 908 903 909 904 // Check if the upper bound is greater than or equal to the lower bound 910 905 // on each forward arc. … … 1287 1282 _buckets[r] = _bucket_next[u]; 1288 1283 1289 // Search the incom ing arcs of u1284 // Search the incomming arcs of u 1290 1285 LargeCost pi_u = _pi[u]; 1291 1286 int last_out = _first_out[u+1]; -
lemon/cplex.cc
r1270 r1183 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 492 492 _message_enabled ? CPX_ON : CPX_OFF); 493 493 } 494 495 void CplexBase::_write(std::string file, std::string format) const496 {497 if(format == "MPS" || format == "LP")498 CPXwriteprob(cplexEnv(), cplexLp(), file.c_str(), format.c_str());499 else if(format == "SOL")500 CPXsolwrite(cplexEnv(), cplexLp(), file.c_str());501 else throw UnsupportedFormatError(format);502 }503 504 505 494 506 495 // CplexLp members -
lemon/cplex.h
r1270 r793 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 151 151 bool _message_enabled; 152 152 153 void _write(std::string file, std::string format) const;154 155 153 public: 156 154 … … 173 171 const cpxlp* cplexLp() const { return _prob; } 174 172 175 #ifdef DOXYGEN176 /// Write the problem or the solution to a file in the given format177 178 /// This function writes the problem or the solution179 /// to a file in the given format.180 /// Trying to write in an unsupported format will trigger181 /// \ref lemon::LpBase::UnsupportedFormatError "UnsupportedFormatError".182 /// \param file The file path183 /// \param format The output file format.184 /// Supportted formats are "MPS", "LP" and "SOL".185 void write(std::string file, std::string format = "MPS") const {}186 #endif187 188 173 }; 189 174 -
lemon/cycle_canceling.h
r1298 r1297 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 48 48 /// \ref CycleCanceling implements three different cycle-canceling 49 49 /// algorithms for finding a \ref min_cost_flow "minimum cost flow" 50 /// \ cite amo93networkflows, \citeklein67primal,51 /// \ citegoldberg89cyclecanceling.50 /// \ref amo93networkflows, \ref klein67primal, 51 /// \ref goldberg89cyclecanceling. 52 52 /// The most efficent one is the \ref CANCEL_AND_TIGHTEN 53 53 /// "Cancel-and-Tighten" algorithm, thus it is the default method. 54 /// It runs in strongly polynomial time \f$O(n^2 m^2 \log n)\f$,55 /// but in practice, it is typically orders of magnitude slower than56 /// the scaling algorithms and\ref NetworkSimplex.54 /// It runs in strongly polynomial time, but in practice, it is typically 55 /// orders of magnitude slower than the scaling algorithms and 56 /// \ref NetworkSimplex. 57 57 /// (For more information, see \ref min_cost_flow_algs "the module page".) 58 58 /// … … 132 132 /// The "Minimum Mean Cycle-Canceling" algorithm, which is a 133 133 /// well-known strongly polynomial method 134 /// \ citegoldberg89cyclecanceling. It improves along a134 /// \ref goldberg89cyclecanceling. It improves along a 135 135 /// \ref min_mean_cycle "minimum mean cycle" in each iteration. 136 /// Its running time complexity is \f$O(n^2 m^3 \log n)\f$.136 /// Its running time complexity is O(n<sup>2</sup>e<sup>3</sup>log(n)). 137 137 MINIMUM_MEAN_CYCLE_CANCELING, 138 138 /// The "Cancel-and-Tighten" algorithm, which can be viewed as an 139 139 /// improved version of the previous method 140 /// \ citegoldberg89cyclecanceling.140 /// \ref goldberg89cyclecanceling. 141 141 /// It is faster both in theory and in practice, its running time 142 /// complexity is \f$O(n^2 m^2 \log n)\f$.142 /// complexity is O(n<sup>2</sup>e<sup>2</sup>log(n)). 143 143 CANCEL_AND_TIGHTEN 144 144 }; … … 576 576 /// 577 577 /// This function returns the total cost of the found flow. 578 /// Its complexity is O( m).578 /// Its complexity is O(e). 579 579 /// 580 580 /// \note The return type of the function can be specified as a … … 783 783 return OPTIMAL; 784 784 } 785 785 786 786 // Check if the upper bound is greater than or equal to the lower bound 787 787 // on each forward arc. … … 960 960 buildResidualNetwork(); 961 961 while (true) { 962 962 963 963 typename HwMmc::TerminationCause hw_tc = 964 964 hw_mmc.findCycleMean(hw_iter_limit); … … 976 976 hw_mmc.findCycle(); 977 977 } 978 978 979 979 // Compute delta value 980 980 Value delta = INF; -
lemon/dfs.h
r1270 r1161 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 153 153 typedef PredMapPath<Digraph, PredMap> Path; 154 154 155 ///The \ref lemon::DfsDefaultTraits "traits class" of the algorithm.155 ///The \ref DfsDefaultTraits "traits class" of the algorithm. 156 156 typedef TR Traits; 157 157 -
lemon/dijkstra.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 228 228 ///The heap type used by the algorithm. 229 229 typedef typename TR::Heap Heap; 230 /// \brief The \ref lemon::DijkstraDefaultOperationTraits231 /// "operation traits class"of the algorithm.230 ///\brief The \ref DijkstraDefaultOperationTraits "operation traits class" 231 ///of the algorithm. 232 232 typedef typename TR::OperationTraits OperationTraits; 233 233 234 ///The \ref lemon::DijkstraDefaultTraits "traits class" of the algorithm.234 ///The \ref DijkstraDefaultTraits "traits class" of the algorithm. 235 235 typedef TR Traits; 236 236 -
lemon/dimacs.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/edge_set.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/euler.h
r1270 r1023 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/fractional_matching.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 124 124 public: 125 125 126 /// \brief The \ref lemon::MaxFractionalMatchingDefaultTraits127 /// "traitsclass" of the algorithm.126 /// \brief The \ref MaxFractionalMatchingDefaultTraits "traits 127 /// class" of the algorithm. 128 128 typedef TR Traits; 129 129 /// The type of the graph the algorithm runs on. -
lemon/full_graph.h
r1270 r1193 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 875 875 static int id(Arc e) { return e._id; } 876 876 static int id(Edge e) { return e._id; } 877 877 878 878 static Node nodeFromId(int id) { return Node(id);} 879 879 static Arc arcFromId(int id) { return Arc(id);} … … 905 905 return n._id - _red_num; 906 906 } 907 907 908 908 void clear() { 909 909 _red_num = 0; _blue_num = 0; … … 911 911 } 912 912 913 Edge edge(const Node& u, const Node& v) const { 913 Edge edge(const Node& u, const Node& v) const { 914 914 if (u._id < _red_num) { 915 915 if (v._id < _red_num) { … … 927 927 } 928 928 929 Arc arc(const Node& u, const Node& v) const { 929 Arc arc(const Node& u, const Node& v) const { 930 930 if (u._id < _red_num) { 931 931 if (v._id < _red_num) { -
lemon/glpk.cc
r1270 r1142 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 581 581 break; 582 582 } 583 }584 585 void GlpkBase::_write(std::string file, std::string format) const586 {587 if(format == "MPS")588 glp_write_mps(lp, GLP_MPS_FILE, 0, file.c_str());589 else if(format == "LP")590 glp_write_lp(lp, 0, file.c_str());591 else throw UnsupportedFormatError(format);592 583 } 593 584 … … 1008 999 const char* GlpkMip::_solverName() const { return "GlpkMip"; } 1009 1000 1010 1011 1012 1001 } //END OF NAMESPACE LEMON -
lemon/glpk.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 116 116 virtual void _messageLevel(MessageLevel level); 117 117 118 virtual void _write(std::string file, std::string format) const;119 120 118 private: 121 119 … … 147 145 int lpxCol(Col c) const { return cols(id(c)); } 148 146 149 #ifdef DOXYGEN150 /// Write the problem or the solution to a file in the given format151 152 /// This function writes the problem or the solution153 /// to a file in the given format.154 /// Trying to write in an unsupported format will trigger155 /// \ref LpBase::UnsupportedFormatError.156 /// \param file The file path157 /// \param format The output file format.158 /// Supportted formats are "MPS" and "LP".159 void write(std::string file, std::string format = "MPS") const {}160 #endif161 162 147 }; 163 148 -
lemon/gomory_hu.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 47 47 /// 48 48 /// The algorithm calculates \e n-1 distinct minimum cuts (currently with 49 /// the \ref Preflow algorithm), thus it has \f$O(n^3\sqrt{ m})\f$ overall49 /// the \ref Preflow algorithm), thus it has \f$O(n^3\sqrt{e})\f$ overall 50 50 /// time complexity. It calculates a rooted Gomory-Hu tree. 51 51 /// The structure of the tree and the edge weights can be -
lemon/graph_to_eps.h
r1291 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 223 223 using T::_copyright; 224 224 225 using typename T::NodeTextColorType; 225 226 using T::CUST_COL; 226 227 using T::DIST_COL; -
lemon/greedy_tsp.h
r1270 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 68 68 Cost _sum; 69 69 std::vector<Node> _path; 70 70 71 71 private: 72 72 73 73 // Functor class to compare edges by their costs 74 74 class EdgeComp { … … 229 229 /// 230 230 /// This function copies the found tour as a list of arcs/edges into 231 /// the given \ref lemon::concepts::Path "path structure".231 /// the given \ref concept::Path "path structure". 232 232 /// 233 233 /// \pre run() must be called before using this function. -
lemon/grosso_locatelli_pullan_mc.h
r1270 r1022 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 41 41 /// \ref GrossoLocatelliPullanMc implements the iterated local search 42 42 /// algorithm of Grosso, Locatelli, and Pullan for solving the \e maximum 43 /// \e clique \e problem \ citegrosso08maxclique.43 /// \e clique \e problem \ref grosso08maxclique. 44 44 /// It is to find the largest complete subgraph (\e clique) in an 45 45 /// undirected graph, i.e., the largest set of nodes where each … … 121 121 BoolMatrix _gr; 122 122 int _n; 123 123 124 124 // Search options 125 125 bool _delta_based_restart; 126 126 int _restart_delta_limit; 127 127 128 128 // Search limits 129 129 int _iteration_limit; … … 443 443 /// \name Execution Control 444 444 /// The \ref run() function can be used to execute the algorithm.\n 445 /// The functions \ref iterationLimit(int), \ref stepLimit(int), and 445 /// The functions \ref iterationLimit(int), \ref stepLimit(int), and 446 446 /// \ref sizeLimit(int) can be used to specify various limits for the 447 447 /// search process. 448 448 449 449 /// @{ 450 450 451 451 /// \brief Sets the maximum number of iterations. 452 452 /// … … 460 460 /// likely finds larger cliques. For smaller values, the algorithm is 461 461 /// faster but probably gives worse results. 462 /// 462 /// 463 463 /// The default value is \c 1000. 464 464 /// \c -1 means that number of iterations is not limited. … … 475 475 return *this; 476 476 } 477 477 478 478 /// \brief Sets the maximum number of search steps. 479 479 /// … … 487 487 /// likely finds larger cliques. For smaller values, the algorithm is 488 488 /// faster but probably gives worse results. 489 /// 489 /// 490 490 /// The default value is \c -1, which means that number of steps 491 491 /// is not limited explicitly. However, the number of iterations is … … 503 503 return *this; 504 504 } 505 505 506 506 /// \brief Sets the desired clique size. 507 507 /// … … 509 509 /// limit. If a clique of this size (or a larger one) is found, then the 510 510 /// algorithm terminates. 511 /// 511 /// 512 512 /// This function is especially useful if you know an exact upper bound 513 /// for the size of the cliques in the graph or if any clique above 513 /// for the size of the cliques in the graph or if any clique above 514 514 /// a certain size limit is sufficient for your application. 515 /// 515 /// 516 516 /// The default value is \c -1, which means that the size limit is set to 517 517 /// the number of nodes in the graph. … … 525 525 return *this; 526 526 } 527 527 528 528 /// \brief The maximum number of iterations. 529 529 /// … … 535 535 return _iteration_limit; 536 536 } 537 537 538 538 /// \brief The maximum number of search steps. 539 539 /// … … 545 545 return _step_limit; 546 546 } 547 547 548 548 /// \brief The desired clique size. 549 549 /// … … 584 584 /// \name Query Functions 585 585 /// The results of the algorithm can be obtained using these functions.\n 586 /// The run() function must be called before using them. 586 /// The run() function must be called before using them. 587 587 588 588 /// @{ … … 677 677 678 678 private: 679 679 680 680 // Initialize search options and limits 681 681 void initOptions() { … … 683 683 _delta_based_restart = true; 684 684 _restart_delta_limit = 4; 685 685 686 686 // Search limits 687 687 _iteration_limit = 1000; -
lemon/hao_orlin.h
r1270 r1019 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/hartmann_orlin_mmc.h
r1270 r1164 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 99 99 /// This class implements the Hartmann-Orlin algorithm for finding 100 100 /// a directed cycle of minimum mean cost in a digraph 101 /// \cite hartmann93finding, \cite dasdan98minmeancycle. 102 /// This method is based on \ref KarpMmc "Karp"'s original algorithm, but 103 /// applies an early termination scheme. It makes the algorithm 104 /// significantly faster for some problem instances, but slower for others. 105 /// The algorithm runs in time O(nm) and uses space O(n<sup>2</sup>+m). 101 /// \ref hartmann93finding, \ref dasdan98minmeancycle. 102 /// It is an improved version of \ref KarpMmc "Karp"'s original algorithm, 103 /// it applies an efficient early termination scheme. 104 /// It runs in time O(ne) and uses space O(n<sup>2</sup>+e). 106 105 /// 107 106 /// \tparam GR The type of the digraph the algorithm runs on. … … 144 143 /// 145 144 /// The path type of the found cycles. 146 /// Using the \ref lemon::HartmannOrlinMmcDefaultTraits 147 /// "default traits class", 145 /// Using the \ref HartmannOrlinMmcDefaultTraits "default traits class", 148 146 /// it is \ref lemon::Path "Path<Digraph>". 149 147 typedef typename TR::Path Path; 150 148 151 /// \brief The 152 /// \ref lemon::HartmannOrlinMmcDefaultTraits "traits class" 153 /// of the algorithm 149 /// The \ref HartmannOrlinMmcDefaultTraits "traits class" of the algorithm 154 150 typedef TR Traits; 155 151 … … 279 275 /// 280 276 /// If you don't call this function before calling \ref run() or 281 /// \ref findCycleMean(), a local \ref Path "path" structure282 /// will be allocated. The destuctor deallocates this automatically277 /// \ref findCycleMean(), it will allocate a local \ref Path "path" 278 /// structure. The destuctor deallocates this automatically 283 279 /// allocated object, of course. 284 280 /// -
lemon/howard_mmc.h
r1271 r1178 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 99 99 /// This class implements Howard's policy iteration algorithm for finding 100 100 /// a directed cycle of minimum mean cost in a digraph 101 /// \ cite dasdan98minmeancycle, \citedasdan04experimental.101 /// \ref dasdan98minmeancycle, \ref dasdan04experimental. 102 102 /// This class provides the most efficient algorithm for the 103 103 /// minimum mean cycle problem, though the best known theoretical … … 143 143 /// 144 144 /// The path type of the found cycles. 145 /// Using the \ref lemon::HowardMmcDefaultTraits "default traits class",145 /// Using the \ref HowardMmcDefaultTraits "default traits class", 146 146 /// it is \ref lemon::Path "Path<Digraph>". 147 147 typedef typename TR::Path Path; 148 148 149 /// The \ref lemon::HowardMmcDefaultTraits "traits class" of the algorithm149 /// The \ref HowardMmcDefaultTraits "traits class" of the algorithm 150 150 typedef TR Traits; 151 151 … … 156 156 /// these values. 157 157 enum TerminationCause { 158 158 159 159 /// No directed cycle can be found in the digraph. 160 160 NO_CYCLE = 0, 161 161 162 162 /// Optimal solution (minimum cycle mean) is found. 163 163 OPTIMAL = 1, … … 283 283 /// 284 284 /// If you don't call this function before calling \ref run() or 285 /// \ref findCycleMean(), a local \ref Path "path" structure286 /// will be allocated. The destuctor deallocates this automatically285 /// \ref findCycleMean(), it will allocate a local \ref Path "path" 286 /// structure. The destuctor deallocates this automatically 287 287 /// allocated object, of course. 288 288 /// … … 357 357 /// 358 358 /// \param limit The maximum allowed number of iterations during 359 /// the search process. Its default value implies that the algorithm 359 /// the search process. Its default value implies that the algorithm 360 360 /// runs until it finds the exact optimal solution. 361 361 /// 362 362 /// \return The termination cause of the search process. 363 /// For more information, see \ref TerminationCause. 364 TerminationCause findCycleMean(int limit = 365 std::numeric_limits<int>::max()) { 363 /// For more information, see \ref TerminationCause. 364 TerminationCause findCycleMean(int limit = std::numeric_limits<int>::max()) { 366 365 // Initialize and find strongly connected components 367 366 init(); … … 391 390 _best_node = _curr_node; 392 391 } 393 392 394 393 if (iter_limit_reached) break; 395 394 } -
lemon/insertion_tsp.h
r1270 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 226 226 /// 227 227 /// This function copies the found tour as a list of arcs/edges into 228 /// the given \ref lemon::concepts::Path "path structure".228 /// the given \ref concept::Path "path structure". 229 229 /// 230 230 /// \pre run() must be called before using this function. … … 361 361 Node u = _notused[i]; 362 362 Cost min_cost = costDiff(_tour.back(), _tour.front(), u); 363 int min_pos = 0; 363 int min_pos = 0; 364 364 for (unsigned int j=1; j<_tour.size(); ++j) { 365 365 Cost curr_cost = costDiff(_tour[j-1], _tour[j], u); … … 391 391 _notused[min_node] = _notused.back(); 392 392 _notused.pop_back(); 393 393 394 394 // Insert the selected node into the tour 395 395 const int ipos = _ins_pos[sn]; … … 406 406 Cost nc1 = costDiff(_tour[ipos_prev], _tour[ipos], u); 407 407 Cost nc2 = costDiff(_tour[ipos], _tour[ipos_next], u); 408 408 409 409 if (nc1 <= curr_cost || nc2 <= curr_cost) { 410 410 // A new position is better than the old one … … 421 421 // The minimum should be found again 422 422 curr_cost = costDiff(_tour.back(), _tour.front(), u); 423 curr_pos = 0; 423 curr_pos = 0; 424 424 for (unsigned int j=1; j<_tour.size(); ++j) { 425 425 Cost tmp_cost = costDiff(_tour[j-1], _tour[j], u); … … 434 434 } 435 435 } 436 436 437 437 _ins_cost[u] = curr_cost; 438 438 _ins_pos[u] = curr_pos; -
lemon/karp_mmc.h
r1270 r1164 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 99 99 /// This class implements Karp's algorithm for finding a directed 100 100 /// cycle of minimum mean cost in a digraph 101 /// \ cite karp78characterization, \citedasdan98minmeancycle.102 /// It runs in time O(n m) and uses space O(n<sup>2</sup>+m).101 /// \ref karp78characterization, \ref dasdan98minmeancycle. 102 /// It runs in time O(ne) and uses space O(n<sup>2</sup>+e). 103 103 /// 104 104 /// \tparam GR The type of the digraph the algorithm runs on. … … 141 141 /// 142 142 /// The path type of the found cycles. 143 /// Using the \ref lemon::KarpMmcDefaultTraits "default traits class",143 /// Using the \ref KarpMmcDefaultTraits "default traits class", 144 144 /// it is \ref lemon::Path "Path<Digraph>". 145 145 typedef typename TR::Path Path; 146 146 147 /// The \ref lemon::KarpMmcDefaultTraits "traits class" of the algorithm147 /// The \ref KarpMmcDefaultTraits "traits class" of the algorithm 148 148 typedef TR Traits; 149 149 … … 271 271 /// 272 272 /// If you don't call this function before calling \ref run() or 273 /// \ref findCycleMean(), a local \ref Path "path" structure274 /// will be allocated. The destuctor deallocates this automatically273 /// \ref findCycleMean(), it will allocate a local \ref Path "path" 274 /// structure. The destuctor deallocates this automatically 275 275 /// allocated object, of course. 276 276 /// -
lemon/kruskal.h
r1270 r1025 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/lgf_reader.h
r1270 r1198 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2011 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1231 1231 /// \ingroup lemon_io 1232 1232 /// 1233 /// \brief Return a \ref lemon::DigraphReader "DigraphReader" class 1234 /// 1235 /// This function just returns a \ref lemon::DigraphReader 1236 /// "DigraphReader" class. 1233 /// \brief Return a \ref DigraphReader class 1234 /// 1235 /// This function just returns a \ref DigraphReader class. 1237 1236 /// 1238 1237 /// With this function a digraph can be read from an … … 1254 1253 ///\endcode 1255 1254 /// 1256 /// For a complete documentation, please see the 1257 /// \ref lemon::DigraphReader "DigraphReader" 1255 /// For a complete documentation, please see the \ref DigraphReader 1258 1256 /// class documentation. 1259 /// \warning Don't forget to put the \ref lemon::DigraphReader::run() "run()"1257 /// \warning Don't forget to put the \ref DigraphReader::run() "run()" 1260 1258 /// to the end of the parameter list. 1261 1259 /// \relates DigraphReader … … 2111 2109 /// \ingroup lemon_io 2112 2110 /// 2113 /// \brief Return a \ref lemon::GraphReader "GraphReader"class2114 /// 2115 /// This function just returns a \ref lemon::GraphReader "GraphReader"class.2111 /// \brief Return a \ref GraphReader class 2112 /// 2113 /// This function just returns a \ref GraphReader class. 2116 2114 /// 2117 2115 /// With this function a graph can be read from an … … 2129 2127 ///\endcode 2130 2128 /// 2131 /// For a complete documentation, please see the 2132 /// \ref lemon::GraphReader "GraphReader" 2129 /// For a complete documentation, please see the \ref GraphReader 2133 2130 /// class documentation. 2134 /// \warning Don't forget to put the \ref lemon::GraphReader::run() "run()"2131 /// \warning Don't forget to put the \ref GraphReader::run() "run()" 2135 2132 /// to the end of the parameter list. 2136 2133 /// \relates GraphReader … … 2639 2636 _red_node_index.insert(std::make_pair(converter(map[n]), n)); 2640 2637 } 2641 for (BlueNodeIt n(_graph); n != INVALID; ++n) { 2638 for (BlueNodeIt n(_graph); n != INVALID; ++n) { 2642 2639 _blue_node_index.insert(std::make_pair(converter(map[n]), n)); 2643 2640 } … … 3178 3175 /// \ingroup lemon_io 3179 3176 /// 3180 /// \brief Return a \ref lemon::BpGraphReader "BpGraphReader" class 3181 /// 3182 /// This function just returns a \ref lemon::BpGraphReader 3183 /// "BpGraphReader" class. 3177 /// \brief Return a \ref BpGraphReader class 3178 /// 3179 /// This function just returns a \ref BpGraphReader class. 3184 3180 /// 3185 3181 /// With this function a graph can be read from an … … 3197 3193 ///\endcode 3198 3194 /// 3199 /// For a complete documentation, please see the 3200 /// \ref lemon::BpGraphReader "BpGraphReader" 3195 /// For a complete documentation, please see the \ref BpGraphReader 3201 3196 /// class documentation. 3202 /// \warning Don't forget to put the \ref lemon::BpGraphReader::run() "run()"3197 /// \warning Don't forget to put the \ref BpGraphReader::run() "run()" 3203 3198 /// to the end of the parameter list. 3204 3199 /// \relates BpGraphReader -
lemon/lgf_writer.h
r1270 r1198 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 186 186 ValueStorage(const Value& value, const Converter& converter = Converter()) 187 187 : _value(value), _converter(converter) {} 188 188 189 189 virtual std::string get() { 190 190 return _converter(_value); … … 945 945 /// \ingroup lemon_io 946 946 /// 947 /// \brief Return a \ref lemon::DigraphWriter "DigraphWriter" class 948 /// 949 /// This function just returns a \ref lemon::DigraphWriter 950 /// "DigraphWriter" class. 947 /// \brief Return a \ref DigraphWriter class 948 /// 949 /// This function just returns a \ref DigraphWriter class. 951 950 /// 952 951 /// With this function a digraph can be write to a file or output … … 969 968 ///\endcode 970 969 /// 971 /// For a complete documentation, please see the 972 /// \ref lemon::DigraphWriter "DigraphWriter" 970 /// For a complete documentation, please see the \ref DigraphWriter 973 971 /// class documentation. 974 /// \warning Don't forget to put the \ref lemon::DigraphWriter::run() "run()"972 /// \warning Don't forget to put the \ref DigraphWriter::run() "run()" 975 973 /// to the end of the parameter list. 976 974 /// \relates DigraphWriter … … 1586 1584 /// \ingroup lemon_io 1587 1585 /// 1588 /// \brief Return a \ref lemon::GraphWriter "GraphWriter"class1589 /// 1590 /// This function just returns a \ref lemon::GraphWriter "GraphWriter"class.1586 /// \brief Return a \ref GraphWriter class 1587 /// 1588 /// This function just returns a \ref GraphWriter class. 1591 1589 /// 1592 1590 /// With this function a graph can be write to a file or output … … 1605 1603 ///\endcode 1606 1604 /// 1607 /// For a complete documentation, please see the 1608 /// \ref lemon::GraphWriter "GraphWriter" 1605 /// For a complete documentation, please see the \ref GraphWriter 1609 1606 /// class documentation. 1610 /// \warning Don't forget to put the \ref lemon::GraphWriter::run() "run()"1607 /// \warning Don't forget to put the \ref GraphWriter::run() "run()" 1611 1608 /// to the end of the parameter list. 1612 1609 /// \relates GraphWriter … … 2405 2402 /// \ingroup lemon_io 2406 2403 /// 2407 /// \brief Return a \ref lemon::BpGraphWriter "BpGraphWriter" class 2408 /// 2409 /// This function just returns a \ref lemon::BpGraphWriter 2410 /// "BpGraphWriter" class. 2404 /// \brief Return a \ref BpGraphWriter class 2405 /// 2406 /// This function just returns a \ref BpGraphWriter class. 2411 2407 /// 2412 2408 /// With this function a bipartite graph can be write to a file or output … … 2425 2421 ///\endcode 2426 2422 /// 2427 /// For a complete documentation, please see the 2428 /// \ref lemon::BpGraphWriter "BpGraphWriter" 2423 /// For a complete documentation, please see the \ref BpGraphWriter 2429 2424 /// class documentation. 2430 /// \warning Don't forget to put the \ref lemon::BpGraphWriter::run() "run()"2425 /// \warning Don't forget to put the \ref BpGraphWriter::run() "run()" 2431 2426 /// to the end of the parameter list. 2432 2427 /// \relates BpGraphWriter -
lemon/list_graph.h
r1270 r1193 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 446 446 ///or changeTarget(), thus \c ArcIt and \c OutArcIt iterators are 447 447 ///invalidated for the outgoing arcs of node \c v and \c InArcIt 448 ///iterators are invalidated for the incom ing arcs of \c v.448 ///iterators are invalidated for the incomming arcs of \c v. 449 449 ///Moreover all iterators referencing node \c v or the removed 450 450 ///loops are also invalidated. Other iterators remain valid. … … 1766 1766 void next(BlueNode& node) const { 1767 1767 node.id = nodes[node.id].partition_next; 1768 } 1768 } 1769 1769 1770 1770 void first(Arc& e) const { -
lemon/lp.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 60 60 ///\ingroup lp_group 61 61 /// 62 ///Currently, the possible values are \c GLPK , \c CPLEX or \c CBC62 ///Currently, the possible values are \c GLPK or \c CPLEX 63 63 #define LEMON_DEFAULT_MIP SOLVER 64 64 ///The default MIP solver. … … 67 67 ///\ingroup lp_group 68 68 /// 69 ///Currently, it is either \c GlpkMip , \c CplexMip , \c CbcMip69 ///Currently, it is either \c GlpkMip or \c CplexMip 70 70 typedef GlpkMip Mip; 71 71 #else 72 #if LEMON_DEFAULT_LP == GLPK 72 #ifdef LEMON_HAVE_GLPK 73 # define LEMON_DEFAULT_LP GLPK 73 74 typedef GlpkLp Lp; 74 #elif LEMON_DEFAULT_LP == CPLEX 75 # define LEMON_DEFAULT_MIP GLPK 76 typedef GlpkMip Mip; 77 #elif LEMON_HAVE_CPLEX 78 # define LEMON_DEFAULT_LP CPLEX 75 79 typedef CplexLp Lp; 76 #elif LEMON_DEFAULT_LP == SOPLEX 80 # define LEMON_DEFAULT_MIP CPLEX 81 typedef CplexMip Mip; 82 #elif LEMON_HAVE_SOPLEX 83 # define DEFAULT_LP SOPLEX 77 84 typedef SoplexLp Lp; 78 #elif LEMON_DEFAULT_LP == CLP 85 #elif LEMON_HAVE_CLP 86 # define DEFAULT_LP CLP 79 87 typedef ClpLp Lp; 80 #endif81 #if LEMON_DEFAULT_MIP == GLPK82 typedef GlpkLp Mip;83 #elif LEMON_DEFAULT_MIP == CPLEX84 typedef CplexMip Mip;85 #elif LEMON_DEFAULT_MIP == CBC86 typedef CbcMip Mip;87 88 #endif 88 89 #endif -
lemon/lp_base.cc
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/lp_base.h
r1270 r1143 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1008 1008 public: 1009 1009 1010 ///Unsupported file format exception1011 class UnsupportedFormatError : public Exception1012 {1013 std::string _format;1014 mutable std::string _what;1015 public:1016 explicit UnsupportedFormatError(std::string format) throw()1017 : _format(format) { }1018 virtual ~UnsupportedFormatError() throw() {}1019 virtual const char* what() const throw() {1020 try {1021 _what.clear();1022 std::ostringstream oss;1023 oss << "lemon::UnsupportedFormatError: " << _format;1024 _what = oss.str();1025 }1026 catch (...) {}1027 if (!_what.empty()) return _what.c_str();1028 else return "lemon::UnsupportedFormatError";1029 }1030 };1031 1032 protected:1033 virtual void _write(std::string, std::string format) const1034 {1035 throw UnsupportedFormatError(format);1036 }1037 1038 public:1039 1040 1010 /// Virtual destructor 1041 1011 virtual ~LpBase() {} … … 1586 1556 void min() { _setSense(MIN); } 1587 1557 1588 ///Clear the problem1558 ///Clears the problem 1589 1559 void clear() { _clear(); rows.clear(); cols.clear(); } 1590 1560 1591 /// Set the message level of the solver1561 /// Sets the message level of the solver 1592 1562 void messageLevel(MessageLevel level) { _messageLevel(level); } 1593 1594 /// Write the problem to a file in the given format1595 1596 /// This function writes the problem to a file in the given format.1597 /// Different solver backends may support different formats.1598 /// Trying to write in an unsupported format will trigger1599 /// \ref UnsupportedFormatError. For the supported formats,1600 /// visit the documentation of the base class of the related backends1601 /// (\ref CplexBase, \ref GlpkBase etc.)1602 /// \param file The file path1603 /// \param format The output file format.1604 void write(std::string file, std::string format = "MPS") const1605 {1606 _write(file.c_str(),format.c_str());1607 }1608 1563 1609 1564 ///@} -
lemon/lp_skeleton.cc
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 92 92 void SkeletonSolverBase::_messageLevel(MessageLevel) {} 93 93 94 void SkeletonSolverBase::_write(std::string, std::string) const {}95 96 94 LpSkeleton::SolveExitStatus LpSkeleton::_solve() { return SOLVED; } 97 95 -
lemon/lp_skeleton.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 145 145 ///\e 146 146 virtual void _messageLevel(MessageLevel); 147 148 ///\e149 virtual void _write(std::string file, std::string format) const;150 151 147 }; 152 148 … … 227 223 ///\e 228 224 virtual const char* _solverName() const; 229 230 225 }; 231 226 -
lemon/maps.h
r1270 r1057 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/matching.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/math.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 66 66 } 67 67 68 ///Round a value to its closest integer69 inline double round(double r) {70 return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);71 }72 73 68 /// @} 74 69 75 70 } //namespace lemon 76 71 77 #endif //LEMON_ MATH_H72 #endif //LEMON_TOLERANCE_H -
lemon/max_cardinality_search.h
r1271 r1129 1 /* -*- mode: C++; indent-tabs-mode: nil;-*-1 /* -*- C++ -*- 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 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 22 22 23 23 /// \ingroup search 24 /// \file 24 /// \file 25 25 /// \brief Maximum cardinality search in undirected digraphs. 26 26 … … 42 42 template <typename GR, typename CAP> 43 43 struct MaxCardinalitySearchDefaultTraits { 44 /// The digraph type the algorithm runs on. 44 /// The digraph type the algorithm runs on. 45 45 typedef GR Digraph; 46 46 … … 51 51 52 52 static CapacityMap *createCapacityMap(const Digraph& g) { 53 53 return new CapacityMap(g); 54 54 } 55 55 }; … … 61 61 62 62 static CapacityMap *createCapacityMap(const Digraph&) { 63 63 return new CapacityMap; 64 64 } 65 65 }; … … 91 91 /// \brief Instantiates a HeapCrossRef. 92 92 /// 93 /// This function instantiates a \ref HeapCrossRef. 94 /// \param digraph is the digraph, to which we would like to define the 93 /// This function instantiates a \ref HeapCrossRef. 94 /// \param digraph is the digraph, to which we would like to define the 95 95 /// HeapCrossRef. 96 96 static HeapCrossRef *createHeapCrossRef(const Digraph &digraph) { 97 97 return new HeapCrossRef(digraph); 98 98 } 99 99 100 100 template <typename CapacityMap> 101 101 struct HeapSelector { 102 102 template <typename Value, typename Ref> 103 struct Selector { 103 struct Selector { 104 104 typedef BinHeap<Value, Ref, std::greater<Value> > Heap; 105 105 }; … … 129 129 /// \brief Instantiates a Heap. 130 130 /// 131 /// This function instantiates a \ref Heap. 131 /// This function instantiates a \ref Heap. 132 132 /// \param crossref The cross reference of the heap. 133 133 static Heap *createHeap(HeapCrossRef& crossref) { … … 144 144 /// \brief Instantiates a ProcessedMap. 145 145 /// 146 /// This function instantiates a \ref ProcessedMap. 146 /// This function instantiates a \ref ProcessedMap. 147 147 /// \param digraph is the digraph, to which 148 148 /// we would like to define the \ref ProcessedMap … … 157 157 158 158 /// \brief The type of the map that stores the cardinalities of the nodes. 159 /// 159 /// 160 160 /// The type of the map that stores the cardinalities of the nodes. 161 161 /// It must meet the \ref concepts::WriteMap "WriteMap" concept. … … 164 164 /// \brief Instantiates a CardinalityMap. 165 165 /// 166 /// This function instantiates a \ref CardinalityMap. 167 /// \param digraph is the digraph, to which we would like to 168 /// define the \refCardinalityMap166 /// This function instantiates a \ref CardinalityMap. 167 /// \param digraph is the digraph, to which we would like to define the \ref 168 /// CardinalityMap 169 169 static CardinalityMap *createCardinalityMap(const Digraph &digraph) { 170 170 return new CardinalityMap(digraph); … … 173 173 174 174 }; 175 175 176 176 /// \ingroup search 177 177 /// 178 178 /// \brief Maximum Cardinality Search algorithm class. 179 179 /// 180 /// This class provides an efficient implementation of Maximum Cardinality 181 /// Search algorithm. The maximum cardinality search first chooses any 180 /// This class provides an efficient implementation of Maximum Cardinality 181 /// Search algorithm. The maximum cardinality search first chooses any 182 182 /// node of the digraph. Then every time it chooses one unprocessed node 183 /// with maximum cardinality, i.e the sum of capacities on out arcs 184 /// to the nodes 183 /// with maximum cardinality, i.e the sum of capacities on out arcs to the nodes 185 184 /// which were previusly processed. 186 185 /// If there is a cut in the digraph the algorithm should choose … … 188 187 189 188 /// The arc capacities are passed to the algorithm using a 190 /// \ref concepts::ReadMap "ReadMap", so it is easy to change it to any 189 /// \ref concepts::ReadMap "ReadMap", so it is easy to change it to any 191 190 /// kind of capacity. 192 191 /// 193 /// The type of the capacity is determined by the \ref 192 /// The type of the capacity is determined by the \ref 194 193 /// concepts::ReadMap::Value "Value" of the capacity map. 195 194 /// … … 198 197 /// 199 198 /// \param GR The digraph type the algorithm runs on. The value of 200 /// Digraph is not used directly by the search algorithm, it 199 /// Digraph is not used directly by the search algorithm, it 201 200 /// is only passed to \ref MaxCardinalitySearchDefaultTraits. 202 /// \param CAP This read-only ArcMap determines the capacities of 201 /// \param CAP This read-only ArcMap determines the capacities of 203 202 /// the arcs. It is read once for each arc, so the map may involve in 204 203 /// relatively time consuming process to compute the arc capacity if 205 204 /// it is necessary. The default map type is \ref 206 205 /// ConstMap "ConstMap<concepts::Digraph::Arc, Const<int,1> >". The value 207 /// of CapacityMap is not used directly by search algorithm, it is only 208 /// passed to \ref MaxCardinalitySearchDefaultTraits. 209 /// \param TR Traits class to set various data types used by the 210 /// algorithm. The default traits class is 211 /// \ref MaxCardinalitySearchDefaultTraits 212 /// "MaxCardinalitySearchDefaultTraits<GR, CAP>". 213 /// See \ref MaxCardinalitySearchDefaultTraits 206 /// of CapacityMap is not used directly by search algorithm, it is only 207 /// passed to \ref MaxCardinalitySearchDefaultTraits. 208 /// \param TR Traits class to set various data types used by the 209 /// algorithm. The default traits class is 210 /// \ref MaxCardinalitySearchDefaultTraits 211 /// "MaxCardinalitySearchDefaultTraits<GR, CAP>". 212 /// See \ref MaxCardinalitySearchDefaultTraits 214 213 /// for the documentation of a MaxCardinalitySearch traits class. 215 214 … … 217 216 template <typename GR, typename CAP, typename TR> 218 217 #else 219 template <typename GR, typename CAP = 220 221 typename TR = 218 template <typename GR, typename CAP = 219 ConstMap<typename GR::Arc, Const<int,1> >, 220 typename TR = 222 221 MaxCardinalitySearchDefaultTraits<GR, CAP> > 223 222 #endif … … 228 227 ///The type of the underlying digraph. 229 228 typedef typename Traits::Digraph Digraph; 230 229 231 230 ///The type of the capacity of the arcs. 232 231 typedef typename Traits::CapacityMap::Value Value; … … 268 267 269 268 typedef MaxCardinalitySearch Create; 270 269 271 270 ///\name Named template parameters 272 271 … … 277 276 typedef T CapacityMap; 278 277 static CapacityMap *createCapacityMap(const Digraph &) { 279 280 281 } 282 }; 283 /// \brief \ref named-templ-param "Named parameter" for setting 278 LEMON_ASSERT(false,"Uninitialized parameter."); 279 return 0; 280 } 281 }; 282 /// \brief \ref named-templ-param "Named parameter" for setting 284 283 /// CapacityMap type 285 284 /// … … 287 286 /// for the algorithm. 288 287 template <class T> 289 struct SetCapacityMap 290 : public MaxCardinalitySearch<Digraph, CapacityMap, 291 DefCapacityMapTraits<T> > { 292 typedef MaxCardinalitySearch<Digraph, CapacityMap, 288 struct SetCapacityMap 289 : public MaxCardinalitySearch<Digraph, CapacityMap, 290 DefCapacityMapTraits<T> > { 291 typedef MaxCardinalitySearch<Digraph, CapacityMap, 293 292 DefCapacityMapTraits<T> > Create; 294 293 }; … … 297 296 struct DefCardinalityMapTraits : public Traits { 298 297 typedef T CardinalityMap; 299 static CardinalityMap *createCardinalityMap(const Digraph &) 298 static CardinalityMap *createCardinalityMap(const Digraph &) 300 299 { 301 302 303 } 304 }; 305 /// \brief \ref named-templ-param "Named parameter" for setting 300 LEMON_ASSERT(false,"Uninitialized parameter."); 301 return 0; 302 } 303 }; 304 /// \brief \ref named-templ-param "Named parameter" for setting 306 305 /// CardinalityMap type 307 306 /// 308 /// \ref named-templ-param "Named parameter" for setting CardinalityMap 307 /// \ref named-templ-param "Named parameter" for setting CardinalityMap 309 308 /// type for the algorithm. 310 309 template <class T> 311 struct SetCardinalityMap 312 : public MaxCardinalitySearch<Digraph, CapacityMap, 313 DefCardinalityMapTraits<T> > { 314 typedef MaxCardinalitySearch<Digraph, CapacityMap, 310 struct SetCardinalityMap 311 : public MaxCardinalitySearch<Digraph, CapacityMap, 312 DefCardinalityMapTraits<T> > { 313 typedef MaxCardinalitySearch<Digraph, CapacityMap, 315 314 DefCardinalityMapTraits<T> > Create; 316 315 }; 317 316 318 317 template <class T> 319 318 struct DefProcessedMapTraits : public Traits { 320 319 typedef T ProcessedMap; 321 320 static ProcessedMap *createProcessedMap(const Digraph &) { 322 323 324 } 325 }; 326 /// \brief \ref named-templ-param "Named parameter" for setting 321 LEMON_ASSERT(false,"Uninitialized parameter."); 322 return 0; 323 } 324 }; 325 /// \brief \ref named-templ-param "Named parameter" for setting 327 326 /// ProcessedMap type 328 327 /// … … 330 329 /// for the algorithm. 331 330 template <class T> 332 struct SetProcessedMap 333 : public MaxCardinalitySearch<Digraph, CapacityMap, 334 DefProcessedMapTraits<T> > { 335 typedef MaxCardinalitySearch<Digraph, CapacityMap, 331 struct SetProcessedMap 332 : public MaxCardinalitySearch<Digraph, CapacityMap, 333 DefProcessedMapTraits<T> > { 334 typedef MaxCardinalitySearch<Digraph, CapacityMap, 336 335 DefProcessedMapTraits<T> > Create; 337 336 }; 338 337 339 338 template <class H, class CR> 340 339 struct DefHeapTraits : public Traits { … … 342 341 typedef H Heap; 343 342 static HeapCrossRef *createHeapCrossRef(const Digraph &) { 344 345 343 LEMON_ASSERT(false,"Uninitialized parameter."); 344 return 0; 346 345 } 347 346 static Heap *createHeap(HeapCrossRef &) { 348 349 350 } 351 }; 352 /// \brief \ref named-templ-param "Named parameter" for setting heap 347 LEMON_ASSERT(false,"Uninitialized parameter."); 348 return 0; 349 } 350 }; 351 /// \brief \ref named-templ-param "Named parameter" for setting heap 353 352 /// and cross reference type 354 353 /// 355 /// \ref named-templ-param "Named parameter" for setting heap and cross 354 /// \ref named-templ-param "Named parameter" for setting heap and cross 356 355 /// reference type for the algorithm. 357 356 template <class H, class CR = typename Digraph::template NodeMap<int> > 358 357 struct SetHeap 359 : public MaxCardinalitySearch<Digraph, CapacityMap, 360 DefHeapTraits<H, CR> > { 361 typedef MaxCardinalitySearch< Digraph, CapacityMap, 358 : public MaxCardinalitySearch<Digraph, CapacityMap, 359 DefHeapTraits<H, CR> > { 360 typedef MaxCardinalitySearch< Digraph, CapacityMap, 362 361 DefHeapTraits<H, CR> > Create; 363 362 }; … … 368 367 typedef H Heap; 369 368 static HeapCrossRef *createHeapCrossRef(const Digraph &digraph) { 370 369 return new HeapCrossRef(digraph); 371 370 } 372 371 static Heap *createHeap(HeapCrossRef &crossref) { 373 374 } 375 }; 376 377 /// \brief \ref named-templ-param "Named parameter" for setting heap and 372 return new Heap(crossref); 373 } 374 }; 375 376 /// \brief \ref named-templ-param "Named parameter" for setting heap and 378 377 /// cross reference type with automatic allocation 379 378 /// 380 /// \ref named-templ-param "Named parameter" for setting heap and cross 381 /// reference type. It can allocate the heap and the cross reference 382 /// object if the cross reference's constructor waits for the digraph as 379 /// \ref named-templ-param "Named parameter" for setting heap and cross 380 /// reference type. It can allocate the heap and the cross reference 381 /// object if the cross reference's constructor waits for the digraph as 383 382 /// parameter and the heap's constructor waits for the cross reference. 384 383 template <class H, class CR = typename Digraph::template NodeMap<int> > 385 384 struct SetStandardHeap 386 : public MaxCardinalitySearch<Digraph, CapacityMap, 387 DefStandardHeapTraits<H, CR> > { 388 typedef MaxCardinalitySearch<Digraph, CapacityMap, 389 DefStandardHeapTraits<H, CR> > 385 : public MaxCardinalitySearch<Digraph, CapacityMap, 386 DefStandardHeapTraits<H, CR> > { 387 typedef MaxCardinalitySearch<Digraph, CapacityMap, 388 DefStandardHeapTraits<H, CR> > 390 389 Create; 391 390 }; 392 391 393 392 ///@} 394 393 … … 398 397 MaxCardinalitySearch() {} 399 398 400 public: 401 399 public: 400 402 401 /// \brief Constructor. 403 402 /// … … 405 404 ///\param capacity the capacity map used by the algorithm. 406 405 MaxCardinalitySearch(const Digraph& digraph, 407 406 const CapacityMap& capacity) : 408 407 _graph(&digraph), 409 408 _capacity(&capacity), local_capacity(false), … … 443 442 MaxCardinalitySearch &capacityMap(const CapacityMap &m) { 444 443 if (local_capacity) { 445 446 444 delete _capacity; 445 local_capacity=false; 447 446 } 448 447 _capacity=&m; … … 458 457 } 459 458 460 /// \brief Sets the map storing the cardinalities calculated by the 459 /// \brief Sets the map storing the cardinalities calculated by the 461 460 /// algorithm. 462 461 /// … … 468 467 MaxCardinalitySearch &cardinalityMap(CardinalityMap &m) { 469 468 if(local_cardinality) { 470 471 469 delete _cardinality; 470 local_cardinality=false; 472 471 } 473 472 _cardinality = &m; … … 482 481 /// automatically allocated map, of course. 483 482 /// \return <tt> (*this) </tt> 484 MaxCardinalitySearch &processedMap(ProcessedMap &m) 483 MaxCardinalitySearch &processedMap(ProcessedMap &m) 485 484 { 486 485 if(local_processed) { 487 488 486 delete _processed; 487 local_processed=false; 489 488 } 490 489 _processed = &m; … … 509 508 MaxCardinalitySearch &heap(Heap& hp, HeapCrossRef &cr) { 510 509 if(local_heap_cross_ref) { 511 512 510 delete _heap_cross_ref; 511 local_heap_cross_ref = false; 513 512 } 514 513 _heap_cross_ref = &cr; 515 514 if(local_heap) { 516 517 515 delete _heap; 516 local_heap = false; 518 517 } 519 518 _heap = &hp; … … 546 545 void create_maps() { 547 546 if(!_capacity) { 548 549 547 local_capacity = true; 548 _capacity = Traits::createCapacityMap(*_graph); 550 549 } 551 550 if(!_cardinality) { 552 553 551 local_cardinality = true; 552 _cardinality = Traits::createCardinalityMap(*_graph); 554 553 } 555 554 if(!_processed) { 556 557 555 local_processed = true; 556 _processed = Traits::createProcessedMap(*_graph); 558 557 } 559 558 if (!_heap_cross_ref) { 560 561 559 local_heap_cross_ref = true; 560 _heap_cross_ref = Traits::createHeapCrossRef(*_graph); 562 561 } 563 562 if (!_heap) { 564 565 566 } 567 } 568 563 local_heap = true; 564 _heap = Traits::createHeap(*_heap_cross_ref); 565 } 566 } 567 569 568 void finalizeNodeData(Node node, Value capacity) { 570 569 _processed->set(node, true); … … 591 590 _heap->clear(); 592 591 for (NodeIt it(*_graph) ; it != INVALID ; ++it) { 593 594 595 } 596 } 597 592 _processed->set(it, false); 593 _heap_cross_ref->set(it, Heap::PRE_HEAP); 594 } 595 } 596 598 597 /// \brief Adds a new source node. 599 /// 598 /// 600 599 /// Adds a new source node to the priority heap. 601 600 /// … … 603 602 void addSource(Node source, Value capacity = 0) { 604 603 if(_heap->state(source) == Heap::PRE_HEAP) { 605 606 } 607 } 608 604 _heap->push(source, capacity); 605 } 606 } 607 609 608 /// \brief Processes the next node in the priority heap 610 609 /// … … 615 614 /// \warning The priority heap must not be empty! 616 615 Node processNextNode() { 617 Node node = _heap->top(); 616 Node node = _heap->top(); 618 617 finalizeNodeData(node, _heap->prio()); 619 618 _heap->pop(); 620 619 621 620 for (InArcIt it(*_graph, node); it != INVALID; ++it) { 622 623 624 625 626 627 628 629 630 631 632 621 Node source = _graph->source(it); 622 switch (_heap->state(source)) { 623 case Heap::PRE_HEAP: 624 _heap->push(source, (*_capacity)[it]); 625 break; 626 case Heap::IN_HEAP: 627 _heap->decrease(source, (*_heap)[source] + (*_capacity)[it]); 628 break; 629 case Heap::POST_HEAP: 630 break; 631 } 633 632 } 634 633 return node; … … 639 638 /// Next node to be processed. 640 639 /// 641 /// \return The next node to be processed or INVALID if the 640 /// \return The next node to be processed or INVALID if the 642 641 /// priority heap is empty. 643 Node nextNode() { 642 Node nextNode() { 644 643 return !_heap->empty() ? _heap->top() : INVALID; 645 644 } 646 645 647 646 /// \brief Returns \c false if there are nodes 648 647 /// to be processed in the priority heap … … 651 650 /// to be processed in the priority heap 652 651 bool emptyQueue() { return _heap->empty(); } 653 /// \brief Returns the number of the nodes to be processed 652 /// \brief Returns the number of the nodes to be processed 654 653 /// in the priority heap 655 654 /// 656 655 /// Returns the number of the nodes to be processed in the priority heap 657 656 int emptySize() { return _heap->size(); } 658 657 659 658 /// \brief Executes the algorithm. 660 659 /// … … 664 663 /// with addSource() before using this function. 665 664 /// 666 /// This method runs the Maximum Cardinality Search algorithm from the 665 /// This method runs the Maximum Cardinality Search algorithm from the 667 666 /// source node(s). 668 667 void start() { 669 668 while ( !_heap->empty() ) processNextNode(); 670 669 } 671 670 672 671 /// \brief Executes the algorithm until \c dest is reached. 673 672 /// … … 677 676 /// with addSource() before using this function. 678 677 /// 679 /// This method runs the %MaxCardinalitySearch algorithm from the source 678 /// This method runs the %MaxCardinalitySearch algorithm from the source 680 679 /// nodes. 681 680 void start(Node dest) { … … 683 682 if ( !_heap->empty() ) finalizeNodeData(_heap->top(), _heap->prio()); 684 683 } 685 684 686 685 /// \brief Executes the algorithm until a condition is met. 687 686 /// … … 698 697 if ( !_heap->empty() ) finalizeNodeData(_heap->top(),_heap->prio()); 699 698 } 700 699 701 700 /// \brief Runs the maximum cardinality search algorithm from node \c s. 702 701 /// 703 /// This method runs the %MaxCardinalitySearch algorithm from a root 702 /// This method runs the %MaxCardinalitySearch algorithm from a root 704 703 /// node \c s. 705 704 /// … … 716 715 } 717 716 718 /// \brief Runs the maximum cardinality search algorithm for the 717 /// \brief Runs the maximum cardinality search algorithm for the 719 718 /// whole digraph. 720 719 /// 721 /// This method runs the %MaxCardinalitySearch algorithm from all 720 /// This method runs the %MaxCardinalitySearch algorithm from all 722 721 /// unprocessed node of the digraph. 723 722 /// … … 741 740 } 742 741 } 743 742 744 743 ///@} 745 744 746 745 /// \name Query Functions 747 /// The results of the maximum cardinality search algorithm can be 746 /// The results of the maximum cardinality search algorithm can be 748 747 /// obtained using these functions. 749 748 /// \n 750 /// Before the use of these functions, either run() or start() must be 749 /// Before the use of these functions, either run() or start() must be 751 750 /// called. 752 751 753 752 ///@{ 754 753 … … 769 768 /// \brief Returns a reference to the NodeMap of cardinalities. 770 769 /// 771 /// Returns a reference to the NodeMap of cardinalities. \pre \ref run() 770 /// Returns a reference to the NodeMap of cardinalities. \pre \ref run() 772 771 /// must be called before using this function. 773 772 const CardinalityMap &cardinalityMap() const { return *_cardinality;} 774 773 775 774 /// \brief Checks if a node is reachable from the root. 776 775 /// … … 786 785 /// \pre \ref run() must be called before using this function. 787 786 bool processed(Node v) { return (*_heap_cross_ref)[v] == Heap::POST_HEAP; } 788 787 789 788 ///@} 790 789 }; -
lemon/min_cost_arborescence.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 102 102 /// the minimum cost subgraph that is the union of arborescences with the 103 103 /// given sources and spans all the nodes which are reachable from the 104 /// sources. The time complexity of the algorithm is O(n<sup>2</sup>+ m).104 /// sources. The time complexity of the algorithm is O(n<sup>2</sup>+e). 105 105 /// 106 106 /// The algorithm also provides an optimal dual solution, therefore … … 129 129 public: 130 130 131 /// \brief The \ref lemon::MinCostArborescenceDefaultTraits "traits class"131 /// \brief The \ref MinCostArborescenceDefaultTraits "traits class" 132 132 /// of the algorithm. 133 133 typedef TR Traits; -
lemon/nagamochi_ibaraki.h
r1270 r1130 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 304 304 //This is here to avoid a gcc-3.3 compilation error. 305 305 //It should never be called. 306 NagamochiIbaraki() {} 307 306 NagamochiIbaraki() {} 307 308 308 public: 309 309 … … 415 415 for (typename Graph::OutArcIt a(_graph, n); a != INVALID; ++a) { 416 416 typename Graph::Node m = _graph.target(a); 417 417 418 418 if (!(n < m)) continue; 419 419 420 420 (*_nodes)[n].sum += (*_capacity)[a]; 421 421 (*_nodes)[m].sum += (*_capacity)[a]; 422 422 423 423 int c = (*_nodes)[m].curr_arc; 424 424 if (c != -1 && _arcs[c ^ 1].target == n) { … … 426 426 } else { 427 427 _edges[index].capacity = (*_capacity)[a]; 428 428 429 429 _arcs[index << 1].prev = -1; 430 430 if ((*_nodes)[n].first_arc != -1) { … … 436 436 437 437 (*_nodes)[m].curr_arc = (index << 1); 438 438 439 439 _arcs[(index << 1) | 1].prev = -1; 440 440 if ((*_nodes)[m].first_arc != -1) { … … 444 444 (*_nodes)[m].first_arc = ((index << 1) | 1); 445 445 _arcs[(index << 1) | 1].target = n; 446 446 447 447 ++index; 448 448 } … … 453 453 _min_cut = std::numeric_limits<Value>::max(); 454 454 455 for (typename Graph::Node n = _first_node; 455 for (typename Graph::Node n = _first_node; 456 456 n != INVALID; n = (*_nodes)[n].next) { 457 457 if ((*_nodes)[n].sum < _min_cut) { … … 478 478 479 479 _heap->clear(); 480 for (typename Graph::Node n = _first_node; 480 for (typename Graph::Node n = _first_node; 481 481 n != INVALID; n = (*_nodes)[n].next) { 482 482 (*_heap_cross_ref)[n] = Heap::PRE_HEAP; … … 498 498 for (int a = (*_nodes)[n].first_arc; a != -1; a = _arcs[a].next) { 499 499 switch (_heap->state(_arcs[a].target)) { 500 case Heap::PRE_HEAP: 500 case Heap::PRE_HEAP: 501 501 { 502 502 Value nv = _edges[a >> 1].capacity; … … 564 564 if (!merged) { 565 565 for (int b = (*_nodes)[n].first_arc; b != -1; b = _arcs[b].next) { 566 (*_nodes)[_arcs[b].target].curr_arc = b; 566 (*_nodes)[_arcs[b].target].curr_arc = b; 567 567 } 568 568 merged = true; … … 574 574 if ((b ^ a) == 1) continue; 575 575 typename Graph::Node o = _arcs[b].target; 576 int c = (*_nodes)[o].curr_arc; 576 int c = (*_nodes)[o].curr_arc; 577 577 if (c != -1 && _arcs[c ^ 1].target == n) { 578 578 _edges[c >> 1].capacity += _edges[b >> 1].capacity; … … 607 607 } else { 608 608 (*_nodes)[n].first_arc = _arcs[a].next; 609 } 609 } 610 610 if (_arcs[a].next != -1) { 611 611 _arcs[_arcs[a].next].prev = _arcs[a].prev; … … 615 615 (*_next_rep)[(*_nodes)[n].last_rep] = m; 616 616 (*_nodes)[n].last_rep = (*_nodes)[m].last_rep; 617 617 618 618 if ((*_nodes)[m].prev != INVALID) { 619 619 (*_nodes)[(*_nodes)[m].prev].next = (*_nodes)[m].next; -
lemon/nearest_neighbor_tsp.h
r1294 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 116 116 for (IncEdgeIt e(_gr, n1); e != INVALID; ++e) { 117 117 if (!used[_gr.runningNode(e)] && 118 ( min_edge1 == INVALID || _cost[e] < _cost[min_edge1])) {118 (_cost[e] < _cost[min_edge1] || min_edge1 == INVALID)) { 119 119 min_edge1 = e; 120 120 } … … 125 125 for (IncEdgeIt e(_gr, n2); e != INVALID; ++e) { 126 126 if (!used[_gr.runningNode(e)] && 127 ( min_edge2 == INVALID||_cost[e] < _cost[min_edge2])) {127 (_cost[e] < _cost[min_edge2] || min_edge2 == INVALID)) { 128 128 min_edge2 = e; 129 129 } … … 216 216 /// 217 217 /// This function copies the found tour as a list of arcs/edges into 218 /// the given \ref lemon::concepts::Path "path structure".218 /// the given \ref concept::Path "path structure". 219 219 /// 220 220 /// \pre run() must be called before using this function. -
lemon/network_simplex.h
r1298 r1297 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 42 42 /// \ref NetworkSimplex implements the primal Network Simplex algorithm 43 43 /// for finding a \ref min_cost_flow "minimum cost flow" 44 /// \ cite amo93networkflows, \citedantzig63linearprog,45 /// \ citekellyoneill91netsimplex.44 /// \ref amo93networkflows, \ref dantzig63linearprog, 45 /// \ref kellyoneill91netsimplex. 46 46 /// This algorithm is a highly efficient specialized version of the 47 47 /// linear programming simplex method directly for the minimum cost … … 974 974 /// 975 975 /// This function returns the total cost of the found flow. 976 /// Its complexity is O( m).976 /// Its complexity is O(e). 977 977 /// 978 978 /// \note The return type of the function can be specified as a … … 1235 1235 return true; 1236 1236 } 1237 1237 1238 1238 // Check if the upper bound is greater than or equal to the lower bound 1239 1239 // on each arc. … … 1517 1517 } 1518 1518 } else { 1519 // Find the min. cost incom ing arc for each demand node1519 // Find the min. cost incomming arc for each demand node 1520 1520 for (int i = 0; i != int(demand_nodes.size()); ++i) { 1521 1521 Node v = demand_nodes[i]; -
lemon/opt2_tsp.h
r1270 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 253 253 /// 254 254 /// This function copies the found tour as a list of arcs/edges into 255 /// the given \ref lemon::concepts::Path "path structure".255 /// the given \ref concept::Path "path structure". 256 256 /// 257 257 /// \pre run() must be called before using this function. -
lemon/path.h
r1270 r1162 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 318 318 /// Constructor with starting point 319 319 ArcIt(const SimplePath &_path, int _idx) 320 : path(&_path), idx(_idx) {}320 : idx(_idx), path(&_path) {} 321 321 322 322 public: -
lemon/planarity.h
r1270 r1160 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/preflow.h
r1270 r1111 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 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 \ citeclrs01algorithms,106 /// \ cite amo93networkflows, \citegoldberg88newapproach.105 /// "flow of maximum value" in a digraph \ref clrs01algorithms, 106 /// \ref amo93networkflows, \ref goldberg88newapproach. 107 107 /// The preflow algorithms are the fastest known maximum 108 108 /// flow algorithms. The current implementation uses a mixture of the 109 109 /// \e "highest label" and the \e "bound decrease" heuristics. 110 /// The worst case time complexity of the algorithm is \f$O(n^2\sqrt{ m})\f$.110 /// The worst case time complexity of the algorithm is \f$O(n^2\sqrt{e})\f$. 111 111 /// 112 112 /// The algorithm consists of two phases. After the first phase … … 135 135 public: 136 136 137 ///The \ref lemon::PreflowDefaultTraits "traits class" of the algorithm.137 ///The \ref PreflowDefaultTraits "traits class" of the algorithm. 138 138 typedef TR Traits; 139 139 ///The type of the digraph the algorithm runs on. … … 555 555 } 556 556 } 557 for (NodeIt n(_graph); n != INVALID; ++n) 557 for (NodeIt n(_graph); n != INVALID; ++n) 558 558 if(n!=_source && n!=_target && _tolerance.positive((*_excess)[n])) 559 559 _level->activate(n); 560 560 561 561 return true; 562 562 } … … 586 586 level = _level->highestActiveLevel(); 587 587 --num; 588 588 589 589 Value excess = (*_excess)[n]; 590 590 int new_level = _level->maxLevel(); -
lemon/radix_sort.h
r1270 r1210 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/smart_graph.h
r1270 r1193 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1264 1264 max_red = -1; 1265 1265 } 1266 Parent::notifier(RedNode()).erase(asRedNodeUnsafe(node)); 1266 Parent::notifier(RedNode()).erase(asRedNodeUnsafe(node)); 1267 1267 } else { 1268 1268 first_blue = nodes[n].partition_next; -
lemon/soplex.cc
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/soplex.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/suurballe.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 138 138 typedef typename TR::Heap Heap; 139 139 140 /// The \ref lemon::SuurballeDefaultTraits "traits class" of the algorithm.140 /// The \ref SuurballeDefaultTraits "traits class" of the algorithm. 141 141 typedef TR Traits; 142 142 … … 683 683 /// This function returns the total length of the found paths, i.e. 684 684 /// the total cost of the found flow. 685 /// The complexity of the function is O( m).685 /// The complexity of the function is O(e). 686 686 /// 687 687 /// \pre \ref run() or \ref findFlow() must be called before using -
lemon/time_measure.h
r1270 r833 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 35 35 #include <fstream> 36 36 #include <iostream> 37 #include <lemon/math.h>38 37 39 38 namespace lemon { … … 65 64 double rtime; 66 65 67 public:68 ///Display format specifier69 70 ///\e71 ///72 enum Format {73 /// Reports all measured values74 NORMAL = 0,75 /// Only real time and an error indicator is displayed76 SHORT = 177 };78 79 private:80 static Format _format;81 82 66 void _reset() { 83 67 utime = stime = cutime = cstime = rtime = 0; … … 85 69 86 70 public: 87 88 ///Set output format89 90 ///Set output format.91 ///92 ///The output format is global for all timestamp instances.93 static void format(Format f) { _format = f; }94 ///Retrieve the current output format95 96 ///Retrieve the current output format97 ///98 ///The output format is global for all timestamp instances.99 static Format format() { return _format; }100 101 71 102 72 ///Read the current time values of the process … … 255 225 inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t) 256 226 { 257 switch(t._format) 258 { 259 case TimeStamp::NORMAL: 260 os << "u: " << t.userTime() << 261 "s, s: " << t.systemTime() << 262 "s, cu: " << t.cUserTime() << 263 "s, cs: " << t.cSystemTime() << 264 "s, real: " << t.realTime() << "s"; 265 break; 266 case TimeStamp::SHORT: 267 double total = t.userTime()+t.systemTime()+ 268 t.cUserTime()+t.cSystemTime(); 269 os << t.realTime() 270 << "s (err: " << round((t.realTime()-total)/ 271 t.realTime()*10000)/100 272 << "%)"; 273 break; 274 } 227 os << "u: " << t.userTime() << 228 "s, s: " << t.systemTime() << 229 "s, cu: " << t.cUserTime() << 230 "s, cs: " << t.cSystemTime() << 231 "s, real: " << t.realTime() << "s"; 275 232 return os; 276 233 } … … 512 469 std::string _title; 513 470 std::ostream &_os; 514 bool _active;515 471 public: 516 472 ///Constructor … … 520 476 ///\param os The stream to print the report to. 521 477 ///\param run Sets whether the timer should start immediately. 522 ///\param active Sets whether the report should actually be printed 523 /// on destruction. 524 TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true, 525 bool active=true) 526 : Timer(run), _title(title), _os(os), _active(active) {} 478 TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true) 479 : Timer(run), _title(title), _os(os){} 527 480 ///Destructor that prints the ellapsed time 528 481 ~TimeReport() 529 482 { 530 if(_active) _os << _title << *this << std::endl; 531 } 532 533 ///Retrieve the activity status 534 535 ///\e 536 /// 537 bool active() const { return _active; } 538 ///Set the activity status 539 540 /// This function set whether the time report should actually be printed 541 /// on destruction. 542 void active(bool a) { _active=a; } 483 _os << _title << *this << std::endl; 484 } 543 485 }; 544 486 -
lemon/unionfind.h
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/CMakeLists.txt
r1264 r1206 42 42 max_cardinality_search_test 43 43 max_clique_test 44 max_flow_test45 44 min_cost_arborescence_test 46 45 min_cost_flow_test … … 49 48 path_test 50 49 planarity_test 50 preflow_test 51 51 radix_sort_test 52 52 random_test … … 70 70 ENDIF() 71 71 IF(LEMON_HAVE_CPLEX) 72 SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${ ILOG_LIBRARIES})72 SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${CPLEX_LIBRARIES}) 73 73 ENDIF() 74 74 IF(LEMON_HAVE_CLP) 75 75 SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES}) 76 ENDIF()77 IF(LEMON_HAVE_SOPLEX)78 SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${SOPLEX_LIBRARIES})79 76 ENDIF() 80 77 … … 97 94 GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) 98 95 ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD 99 COMMAND ${CMAKE_COMMAND} -E copy ${ ILOG_CPLEX_DLL}${TARGET_PATH}96 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} 100 97 ) 101 98 ENDIF() … … 115 112 ENDIF() 116 113 IF(LEMON_HAVE_CPLEX) 117 SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${ ILOG_LIBRARIES})114 SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${CPLEX_LIBRARIES}) 118 115 ENDIF() 119 116 IF(LEMON_HAVE_CBC) … … 139 136 GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) 140 137 ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD 141 COMMAND ${CMAKE_COMMAND} -E copy ${ ILOG_CPLEX_DLL}${TARGET_PATH}138 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} 142 139 ) 143 140 ENDIF() -
test/adaptors_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 66 66 Digraph::Arc a2 = digraph.addArc(n1, n3); 67 67 Digraph::Arc a3 = digraph.addArc(n2, n3); 68 ::lemon::ignore_unused_variable_warning(a3);68 ignore_unused_variable_warning(a3); 69 69 70 70 // Check the adaptor … … 101 101 Adaptor::Arc a7 = adaptor.addArc(n1, n4); 102 102 Adaptor::Arc a8 = adaptor.addArc(n1, n2); 103 ::lemon::ignore_unused_variable_warning(a6,a7,a8);103 ignore_unused_variable_warning(a6,a7,a8); 104 104 105 105 adaptor.erase(a1); … … 761 761 Digraph::Arc a2 = digraph.addArc(n1, n3); 762 762 Digraph::Arc a3 = digraph.addArc(n2, n3); 763 ::lemon::ignore_unused_variable_warning(a1,a2,a3);763 ignore_unused_variable_warning(a1,a2,a3); 764 764 765 765 checkGraphNodeList(adaptor, 6); -
test/arc_look_up_test.cc
r1270 r1149 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 69 69 std::istringstream lgfs(lgf); 70 70 DigraphReader<ListDigraph>(graph, lgfs).run(); 71 71 72 72 AllArcLookUp<ListDigraph> lookup(graph); 73 73 74 74 int numArcs = countArcs(graph); 75 75 76 76 int arcCnt = 0; 77 77 for(ListDigraph::NodeIt n1(graph); n1 != INVALID; ++n1) 78 78 for(ListDigraph::NodeIt n2(graph); n2 != INVALID; ++n2) 79 79 for(ListDigraph::Arc a = lookup(n1, n2); a != INVALID; 80 81 80 a = lookup(n1, n2, a)) 81 ++arcCnt; 82 82 check(arcCnt==numArcs, "Wrong total number of arcs"); 83 83 -
test/bellman_ford_test.cc
r1270 r1174 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 66 66 Arc e; 67 67 Value l; 68 ::lemon::ignore_unused_variable_warning(l);68 ignore_unused_variable_warning(l); 69 69 int k=3; 70 70 bool b; 71 ::lemon::ignore_unused_variable_warning(b);71 ignore_unused_variable_warning(b); 72 72 BF::DistMap d(gr); 73 73 BF::PredMap p(gr); … … 150 150 Digraph g; 151 151 bool b; 152 ::lemon::ignore_unused_variable_warning(b);152 ignore_unused_variable_warning(b); 153 153 154 154 bellmanFord(g,LengthMap()).run(Node()); -
test/bfs_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 62 62 Arc e; 63 63 int l, i; 64 ::lemon::ignore_unused_variable_warning(l,i);64 ignore_unused_variable_warning(l,i); 65 65 bool b; 66 66 BType::DistMap d(G); … … 152 152 Digraph g; 153 153 bool b; 154 ::lemon::ignore_unused_variable_warning(b);154 ignore_unused_variable_warning(b); 155 155 156 156 bfs(g).run(Node()); -
test/bpgraph_test.cc
r1292 r1194 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 79 79 e2 = G.addEdge(bn1, rn1), 80 80 e3 = G.addEdge(rn1, bn2); 81 ::lemon::ignore_unused_variable_warning(e2,e3);82 81 83 82 checkGraphNodeList(G, 3); … … 115 114 BpGraph G; 116 115 RedNode 117 n1 = G.addRedNode(), n4 = G.addRedNode(); 116 n1 = G.addRedNode(), n4 = G.addRedNode(); 118 117 BlueNode 119 118 n2 = G.addBlueNode(), n3 = G.addBlueNode(); … … 121 120 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), 122 121 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); 123 ::lemon::ignore_unused_variable_warning(e1,e3,e4);124 122 125 123 // Check edge deletion … … 164 162 BpGraph G; 165 163 RedNode 166 n1 = G.addRedNode(), n4 = G.addRedNode(); 164 n1 = G.addRedNode(), n4 = G.addRedNode(); 167 165 BlueNode 168 166 n2 = G.addBlueNode(), n3 = G.addBlueNode(); … … 170 168 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), 171 169 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); 172 ::lemon::ignore_unused_variable_warning(e1,e3,e4);173 170 174 171 G.changeRed(e2, n4); … … 220 217 n2 = G.addBlueNode(), 221 218 n3 = G.addBlueNode(); 222 Edge 219 Edge 223 220 e1 = G.addEdge(n1, n2), 224 221 e2 = G.addEdge(n1, n3); 225 ::lemon::ignore_unused_variable_warning(e1,e2);226 222 227 223 checkGraphNodeList(G, 3); … … 309 305 e1 = g.addEdge(n1, n2), 310 306 e2 = g.addEdge(n1, n3); 311 ::lemon::ignore_unused_variable_warning(e2);312 307 313 308 check(g.valid(n1), "Wrong validity check"); -
test/circulation_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 74 74 VType v; 75 75 bool b; 76 ::lemon::ignore_unused_variable_warning(v,b);76 ignore_unused_variable_warning(v,b); 77 77 78 78 typedef Circulation<Digraph, CapMap, CapMap, SupplyMap> … … 105 105 const_circ_test.barrierMap(bar); 106 106 107 ::lemon::ignore_unused_variable_warning(fm);107 ignore_unused_variable_warning(fm); 108 108 } 109 109 -
test/connectivity_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 69 69 Graph g(d); 70 70 Digraph::Node n = d.addNode(); 71 ::lemon::ignore_unused_variable_warning(n);71 ignore_unused_variable_warning(n); 72 72 73 73 check(stronglyConnected(d), "This digraph is strongly connected"); … … 98 98 check(simpleGraph(g), "This graph is simple."); 99 99 } 100 101 {102 ListGraph g;103 ListGraph::NodeMap<bool> map(g);104 105 ListGraph::Node n1 = g.addNode();106 ListGraph::Node n2 = g.addNode();107 108 ListGraph::Edge e1 = g.addEdge(n1, n2);109 ::lemon::ignore_unused_variable_warning(e1);110 check(biNodeConnected(g), "Graph is bi-node-connected");111 112 ListGraph::Node n3 = g.addNode();113 ::lemon::ignore_unused_variable_warning(n3);114 check(!biNodeConnected(g), "Graph is not bi-node-connected");115 }116 117 100 118 101 { … … 264 247 Digraph::Node watch = d.addNode(); 265 248 Digraph::Node pants = d.addNode(); 266 ::lemon::ignore_unused_variable_warning(watch);249 ignore_unused_variable_warning(watch); 267 250 268 251 d.addArc(socks, shoe); -
test/dfs_test.cc
r1270 r1176 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 68 68 int l, i; 69 69 bool b; 70 ::lemon::ignore_unused_variable_warning(l,i,b);70 ignore_unused_variable_warning(l,i,b); 71 71 72 72 DType::DistMap d(G); … … 154 154 Digraph g; 155 155 bool b; 156 ::lemon::ignore_unused_variable_warning(b);156 ignore_unused_variable_warning(b); 157 157 158 158 dfs(g).run(Node()); … … 224 224 check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6."); 225 225 } 226 226 227 227 { 228 228 NullMap<Node,Arc> myPredMap; -
test/digraph_test.cc
r1270 r1160 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 65 65 a3 = G.addArc(n2, n3), 66 66 a4 = G.addArc(n2, n3); 67 ::lemon::ignore_unused_variable_warning(a2,a3,a4);67 ignore_unused_variable_warning(a2,a3,a4); 68 68 69 69 checkGraphNodeList(G, 3); … … 94 94 Arc a1 = G.addArc(n1, n2), a2 = G.addArc(n2, n1), 95 95 a3 = G.addArc(n2, n3), a4 = G.addArc(n2, n3); 96 ::lemon::ignore_unused_variable_warning(a1,a2,a3,a4);96 ignore_unused_variable_warning(a1,a2,a3,a4); 97 97 98 98 Node n4 = G.split(n2); … … 128 128 a3 = G.addArc(n4, n3), a4 = G.addArc(n4, n3), 129 129 a5 = G.addArc(n2, n4); 130 ::lemon::ignore_unused_variable_warning(a1,a2,a3,a5);130 ignore_unused_variable_warning(a1,a2,a3,a5); 131 131 132 132 checkGraphNodeList(G, 4); … … 208 208 a3 = G.addArc(n4, n3), a4 = G.addArc(n3, n1), 209 209 a5 = G.addArc(n2, n4); 210 ::lemon::ignore_unused_variable_warning(a2,a3,a4,a5);210 ignore_unused_variable_warning(a2,a3,a4,a5); 211 211 212 212 // Check arc deletion … … 256 256 Arc a1 = G.addArc(n1, n2), a2 = G.addArc(n2, n1), 257 257 a3 = G.addArc(n2, n3), a4 = G.addArc(n2, n3); 258 ::lemon::ignore_unused_variable_warning(a1,a2,a3,a4);258 ignore_unused_variable_warning(a1,a2,a3,a4); 259 259 260 260 typename Digraph::Snapshot snapshot(G); … … 357 357 e1 = g.addArc(n1, n2), 358 358 e2 = g.addArc(n2, n3); 359 ::lemon::ignore_unused_variable_warning(e2);359 ignore_unused_variable_warning(e2); 360 360 361 361 check(g.valid(n1), "Wrong validity check"); … … 443 443 a3 = g.addArc(n2, n3), 444 444 a4 = g.addArc(n2, n3); 445 ::lemon::ignore_unused_variable_warning(a2,a3,a4);445 ignore_unused_variable_warning(a2,a3,a4); 446 446 447 447 digraphCopy(g, G).nodeRef(nref).run(); -
test/dijkstra_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 66 66 int i; 67 67 bool b; 68 ::lemon::ignore_unused_variable_warning(l,i,b);68 ignore_unused_variable_warning(l,i,b); 69 69 70 70 DType::DistMap d(G); … … 165 165 Digraph g; 166 166 bool b; 167 ::lemon::ignore_unused_variable_warning(b);167 ignore_unused_variable_warning(b); 168 168 169 169 dijkstra(g,LengthMap()).run(Node()); -
test/edge_set_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 45 45 46 46 Digraph::Arc ga1 = digraph.addArc(n1, n2); 47 ::lemon::ignore_unused_variable_warning(ga1);47 ignore_unused_variable_warning(ga1); 48 48 49 49 ArcSet arc_set(digraph); 50 50 51 51 Digraph::Arc ga2 = digraph.addArc(n2, n1); 52 ::lemon::ignore_unused_variable_warning(ga2);52 ignore_unused_variable_warning(ga2); 53 53 54 54 checkGraphNodeList(arc_set, 2); … … 78 78 a3 = arc_set.addArc(n2, n3), 79 79 a4 = arc_set.addArc(n2, n3); 80 ::lemon::ignore_unused_variable_warning(a2,a3,a4);80 ignore_unused_variable_warning(a2,a3,a4); 81 81 82 82 checkGraphNodeList(arc_set, 3); … … 115 115 116 116 Digraph::Arc ga1 = digraph.addArc(n1, n2); 117 ::lemon::ignore_unused_variable_warning(ga1);117 ignore_unused_variable_warning(ga1); 118 118 119 119 ArcSet arc_set(digraph); 120 120 121 121 Digraph::Arc ga2 = digraph.addArc(n2, n1); 122 ::lemon::ignore_unused_variable_warning(ga2);122 ignore_unused_variable_warning(ga2); 123 123 124 124 checkGraphNodeList(arc_set, 2); … … 148 148 a3 = arc_set.addArc(n2, n3), 149 149 a4 = arc_set.addArc(n2, n3); 150 ::lemon::ignore_unused_variable_warning(a2,a3,a4);150 ignore_unused_variable_warning(a2,a3,a4); 151 151 152 152 checkGraphNodeList(arc_set, 3); … … 199 199 200 200 Digraph::Arc ga1 = digraph.addArc(n1, n2); 201 ::lemon::ignore_unused_variable_warning(ga1);201 ignore_unused_variable_warning(ga1); 202 202 203 203 EdgeSet edge_set(digraph); 204 204 205 205 Digraph::Arc ga2 = digraph.addArc(n2, n1); 206 ::lemon::ignore_unused_variable_warning(ga2);206 ignore_unused_variable_warning(ga2); 207 207 208 208 checkGraphNodeList(edge_set, 2); … … 241 241 e3 = edge_set.addEdge(n2, n3), 242 242 e4 = edge_set.addEdge(n2, n3); 243 ::lemon::ignore_unused_variable_warning(e2,e3,e4);243 ignore_unused_variable_warning(e2,e3,e4); 244 244 245 245 checkGraphNodeList(edge_set, 3); … … 287 287 288 288 Digraph::Arc ga1 = digraph.addArc(n1, n2); 289 ::lemon::ignore_unused_variable_warning(ga1);289 ignore_unused_variable_warning(ga1); 290 290 291 291 EdgeSet edge_set(digraph); 292 292 293 293 Digraph::Arc ga2 = digraph.addArc(n2, n1); 294 ::lemon::ignore_unused_variable_warning(ga2);294 ignore_unused_variable_warning(ga2); 295 295 296 296 checkGraphNodeList(edge_set, 2); … … 329 329 e3 = edge_set.addEdge(n2, n3), 330 330 e4 = edge_set.addEdge(n2, n3); 331 ::lemon::ignore_unused_variable_warning(e2,e3,e4);331 ignore_unused_variable_warning(e2,e3,e4); 332 332 333 333 checkGraphNodeList(edge_set, 3); -
test/euler_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 102 102 Graph g(d); 103 103 Digraph::Node n = d.addNode(); 104 ::lemon::ignore_unused_variable_warning(n);105 104 ignore_unused_variable_warning(n); 105 106 106 checkDiEulerIt(d); 107 107 checkDiEulerIt(g); … … 191 191 Digraph::Node n4 = d.addNode(); 192 192 Digraph::Node n5 = d.addNode(); 193 ::lemon::ignore_unused_variable_warning(n0,n4,n5);193 ignore_unused_variable_warning(n0,n4,n5); 194 194 195 195 d.addArc(n1, n2); -
test/fractional_matching_test.cc
r1270 r1160 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 343 343 pv += weight[mwfm.matching(n)]; 344 344 SmartGraph::Node o = graph.target(mwfm.matching(n)); 345 ::lemon::ignore_unused_variable_warning(o);345 ignore_unused_variable_warning(o); 346 346 } else { 347 347 check(mwfm.nodeValue(n) == 0, "Invalid matching"); … … 408 408 pv += weight[mwpfm.matching(n)]; 409 409 SmartGraph::Node o = graph.target(mwpfm.matching(n)); 410 ::lemon::ignore_unused_variable_warning(o);410 ignore_unused_variable_warning(o); 411 411 } 412 412 -
test/gomory_hu_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 69 69 Value v; 70 70 int d; 71 ::lemon::ignore_unused_variable_warning(v,d);71 ignore_unused_variable_warning(v,d); 72 72 73 73 GomoryHu<Graph, CapMap> gh_test(g, cap); -
test/graph_copy_test.cc
r1270 r1194 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 54 54 } 55 55 } 56 56 57 57 // Test digraph copy 58 58 GR to; … … 73 73 nodeCrossRef(ncr).arcCrossRef(ecr). 74 74 node(fn, tn).arc(fa, ta).run(); 75 75 76 76 check(countNodes(from) == countNodes(to), "Wrong copy."); 77 77 check(countArcs(from) == countArcs(to), "Wrong copy."); … … 101 101 // Test repeated copy 102 102 digraphCopy(from, to).run(); 103 103 104 104 check(countNodes(from) == countNodes(to), "Wrong copy."); 105 105 check(countArcs(from) == countArcs(to), "Wrong copy."); … … 204 204 // Test repeated copy 205 205 graphCopy(from, to).run(); 206 206 207 207 check(countNodes(from) == countNodes(to), "Wrong copy."); 208 208 check(countEdges(from) == countEdges(to), "Wrong copy."); … … 367 367 // Test repeated copy 368 368 bpGraphCopy(from, to).run(); 369 369 370 370 check(countNodes(from) == countNodes(to), "Wrong copy."); 371 371 check(countRedNodes(from) == countRedNodes(to), "Wrong copy."); -
test/graph_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 67 67 Edge e2 = G.addEdge(n2, n1), 68 68 e3 = G.addEdge(n2, n3); 69 ::lemon::ignore_unused_variable_warning(e2,e3);69 ignore_unused_variable_warning(e2,e3); 70 70 71 71 checkGraphNodeList(G, 3); … … 100 100 e3 = G.addEdge(n2, n3), e4 = G.addEdge(n1, n4), 101 101 e5 = G.addEdge(n4, n3); 102 ::lemon::ignore_unused_variable_warning(e1,e3,e4,e5);102 ignore_unused_variable_warning(e1,e3,e4,e5); 103 103 104 104 checkGraphNodeList(G, 4); … … 180 180 e3 = G.addEdge(n2, n3), e4 = G.addEdge(n1, n4), 181 181 e5 = G.addEdge(n4, n3); 182 ::lemon::ignore_unused_variable_warning(e1,e3,e4,e5);182 ignore_unused_variable_warning(e1,e3,e4,e5); 183 183 184 184 // Check edge deletion … … 221 221 Edge e1 = G.addEdge(n1, n2), e2 = G.addEdge(n2, n1), 222 222 e3 = G.addEdge(n2, n3); 223 ::lemon::ignore_unused_variable_warning(e1,e2,e3);223 ignore_unused_variable_warning(e1,e2,e3); 224 224 225 225 checkGraphNodeList(G, 3); … … 386 386 e1 = g.addEdge(n1, n2), 387 387 e2 = g.addEdge(n2, n3); 388 ::lemon::ignore_unused_variable_warning(e2);388 ignore_unused_variable_warning(e2); 389 389 390 390 check(g.valid(n1), "Wrong validity check"); … … 525 525 526 526 Node n = G.nodeFromId(dim); 527 ::lemon::ignore_unused_variable_warning(n);527 ignore_unused_variable_warning(n); 528 528 529 529 for (NodeIt n(G); n != INVALID; ++n) { -
test/graph_test.h
r1270 r1195 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/hao_orlin_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 67 67 CutMap cut; 68 68 Value v; 69 ::lemon::ignore_unused_variable_warning(v);69 ignore_unused_variable_warning(v); 70 70 71 71 HaoOrlin<Digraph, CapMap> ho_test(g, cap); -
test/heap_test.cc
r1270 r1065 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/lgf_reader_writer_test.cc
r1270 r1198 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 386 386 writer.arcMap("arc_map1", arc_map); 387 387 writer.arcMap("arc_map2", arc_map, WriterConverter()); 388 writer.node("node", n2); 388 writer.node("node", n2); 389 389 writer.edge("edge", e1); 390 390 writer.arc("arc", graph.direct(e1, false)); … … 493 493 writer.arcMap("arc_map2", arc_map, WriterConverter()); 494 494 writer.node("node", n); 495 writer.redNode("red_node", rn1); 495 writer.redNode("red_node", rn1); 496 496 writer.blueNode("blue_node", bn2); 497 497 writer.edge("edge", e1); -
test/lgf_test.cc
r1270 r1087 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2011 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 64 64 65 65 66 int main() 66 int main() 67 67 { 68 68 { 69 ListDigraph d; 69 ListDigraph d; 70 70 ListDigraph::Node s,t; 71 71 ListDigraph::ArcMap<int> label(d); … … 94 94 95 95 { 96 ListDigraph d; 96 ListDigraph d; 97 97 std::istringstream input(test_lgf_nomap); 98 98 digraphReader(d, input). … … 111 111 112 112 { 113 ListDigraph d; 113 ListDigraph d; 114 114 std::istringstream input(test_lgf_bad1); 115 115 bool ok=false; … … 118 118 run(); 119 119 } 120 catch (FormatError&) 120 catch (FormatError&) 121 121 { 122 122 ok = true; … … 140 140 141 141 { 142 ListDigraph d; 142 ListDigraph d; 143 143 std::istringstream input(test_lgf_bad2); 144 144 bool ok=false; -
test/lp_test.cc
r1270 r1140 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 199 199 c = c <= 4; 200 200 LP::Constr c2; 201 #if ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ == 3 )202 c2 = ( -3 <= v ) <= 4;203 #else204 201 c2 = -3 <= v <= 4; 205 #endif206 207 202 } 208 203 … … 246 241 { 247 242 LP::DualExpr e,f,g; 248 LP::Row p1 = INVALID, p2 = INVALID; 243 LP::Row p1 = INVALID, p2 = INVALID, p3 = INVALID, 244 p4 = INVALID, p5 = INVALID; 249 245 250 246 e[p1]=2; -
test/maps_test.cc
r1270 r1159 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 104 104 NullMap<A,B> map1; 105 105 NullMap<A,B> map2 = map1; 106 ::lemon::ignore_unused_variable_warning(map2);106 ignore_unused_variable_warning(map2); 107 107 map1 = nullMap<A,B>(); 108 108 } … … 115 115 ConstMap<A,B> map2 = B(); 116 116 ConstMap<A,B> map3 = map1; 117 ::lemon::ignore_unused_variable_warning(map2,map3);117 ignore_unused_variable_warning(map2,map3); 118 118 119 119 map1 = constMap<A>(B()); … … 122 122 ConstMap<A,C> map4(C(1)); 123 123 ConstMap<A,C> map5 = map4; 124 ::lemon::ignore_unused_variable_warning(map5);124 ignore_unused_variable_warning(map5); 125 125 126 126 map4 = constMap<A>(C(2)); … … 144 144 IdentityMap<A> map1; 145 145 IdentityMap<A> map2 = map1; 146 ::lemon::ignore_unused_variable_warning(map2);146 ignore_unused_variable_warning(map2); 147 147 148 148 map1 = identityMap<A>(); … … 205 205 checkConcept<ReadMap<B,double>, CompMap>(); 206 206 CompMap map1 = CompMap(DoubleMap(),ReadMap<B,A>()); 207 ::lemon::ignore_unused_variable_warning(map1);207 ignore_unused_variable_warning(map1); 208 208 CompMap map2 = composeMap(DoubleMap(), ReadMap<B,A>()); 209 ::lemon::ignore_unused_variable_warning(map2);209 ignore_unused_variable_warning(map2); 210 210 211 211 SparseMap<double, bool> m1(false); m1[3.14] = true; … … 220 220 checkConcept<ReadMap<A,double>, CombMap>(); 221 221 CombMap map1 = CombMap(DoubleMap(), DoubleMap()); 222 ::lemon::ignore_unused_variable_warning(map1);222 ignore_unused_variable_warning(map1); 223 223 CombMap map2 = combineMap(DoubleMap(), DoubleMap(), std::plus<double>()); 224 ::lemon::ignore_unused_variable_warning(map2);224 ignore_unused_variable_warning(map2); 225 225 226 226 check(combineMap(constMap<B,int,2>(), identityMap<B>(), &binc)[B()] == 3, … … 234 234 FunctorToMap<F> map1; 235 235 FunctorToMap<F> map2 = FunctorToMap<F>(F()); 236 ::lemon::ignore_unused_variable_warning(map2);236 ignore_unused_variable_warning(map2); 237 237 238 238 B b = functorToMap(F())[A()]; 239 ::lemon::ignore_unused_variable_warning(b);239 ignore_unused_variable_warning(b); 240 240 241 241 checkConcept<ReadMap<A,B>, MapToFunctor<ReadMap<A,B> > >(); 242 242 MapToFunctor<ReadMap<A,B> > map = 243 243 MapToFunctor<ReadMap<A,B> >(ReadMap<A,B>()); 244 ::lemon::ignore_unused_variable_warning(map);244 ignore_unused_variable_warning(map); 245 245 246 246 check(functorToMap(&func)[A()] == 3, … … 260 260 ConvertMap<ReadMap<double, int>, double> >(); 261 261 ConvertMap<RangeMap<bool>, int> map1(rangeMap(1, true)); 262 ::lemon::ignore_unused_variable_warning(map1);262 ignore_unused_variable_warning(map1); 263 263 ConvertMap<RangeMap<bool>, int> map2 = convertMap<int>(rangeMap(2, false)); 264 ::lemon::ignore_unused_variable_warning(map2);264 ignore_unused_variable_warning(map2); 265 265 266 266 } … … 536 536 537 537 typedef Orienter<Graph, const ConstMap<Edge, bool> > Digraph; 538 ConstMap<Edge, bool> true_edge_map(true); 539 Digraph dgr(gr, true_edge_map); 538 Digraph dgr(gr, constMap<Edge, bool>(true)); 540 539 OutDegMap<Digraph> odm(dgr); 541 540 InDegMap<Digraph> idm(dgr); -
test/matching_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 146 146 MaxMatching<Graph>::Status stat = 147 147 const_mat_test.status(n); 148 ::lemon::ignore_unused_variable_warning(stat);148 ignore_unused_variable_warning(stat); 149 149 const MaxMatching<Graph>::StatusMap& smap = 150 150 const_mat_test.statusMap(); -
test/max_cardinality_search_test.cc
r1270 r1088 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 68 68 ProcMap proc; 69 69 HeapCrossRef crossref(g); 70 70 71 71 typedef MaxCardinalitySearch<Digraph,CapMap> 72 72 ::SetCapacityMap<CapMap> … … 82 82 MaxCardType::Heap& heap = const_cast<MaxCardType::Heap&>(heap_const); 83 83 maxcard.heap(heap,crossref); 84 84 85 85 maxcard.capacityMap(cap).cardinalityMap(card).processedMap(proc); 86 86 -
test/max_clique_test.cc
r1270 r1022 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 55 55 "5 7 14\n" 56 56 "6 7 15\n"; 57 57 58 58 59 59 // Check with general graphs … … 63 63 typedef GrossoLocatelliPullanMc<GR> McAlg; 64 64 typedef McAlg::CliqueNodeIt CliqueIt; 65 65 66 66 // Basic tests 67 67 { … … 82 82 check(static_cast<GR::Node>(it1) == u && ++it1 == INVALID, 83 83 "Wrong CliqueNodeIt"); 84 84 85 85 GR::Node v = g.addNode(); 86 86 check(mc.run(rule) == McAlg::ITERATION_LIMIT, "Wrong termination cause"); … … 110 110 .nodeMap("max_clique", max_clique) 111 111 .run(); 112 112 113 113 McAlg mc(g); 114 114 mc.iterationLimit(50); … … 134 134 typedef GrossoLocatelliPullanMc<FullGraph> McAlg; 135 135 typedef McAlg::CliqueNodeIt CliqueIt; 136 136 137 137 for (int size = 0; size <= 40; size = size * 3 + 1) { 138 138 GR g(size); … … 157 157 GridGraph::NodeMap<char> map(g); 158 158 GrossoLocatelliPullanMc<GridGraph> mc(g); 159 159 160 160 mc.iterationLimit(100); 161 161 check(mc.run(rule) == mc.ITERATION_LIMIT, "Wrong termination cause"); … … 180 180 checkMaxCliqueFullGraph(GrossoLocatelliPullanMc<FullGraph>::DEGREE_BASED); 181 181 checkMaxCliqueFullGraph(GrossoLocatelliPullanMc<FullGraph>::PENALTY_BASED); 182 182 183 183 checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::RANDOM); 184 184 checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::DEGREE_BASED); 185 185 checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::PENALTY_BASED); 186 186 187 187 return 0; 188 188 } -
test/min_cost_arborescence_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 92 92 VType c; 93 93 bool b; 94 ::lemon::ignore_unused_variable_warning(c,b);94 ignore_unused_variable_warning(c,b); 95 95 int i; 96 96 CostMap cost; … … 128 128 c = const_mcarb_test.dualValue(i); 129 129 130 ::lemon::ignore_unused_variable_warning(am);131 ::lemon::ignore_unused_variable_warning(pm);130 ignore_unused_variable_warning(am); 131 ignore_unused_variable_warning(pm); 132 132 } 133 133 -
test/min_cost_flow_test.cc
r1270 r956 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/min_mean_cycle_test.cc
r1270 r1178 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 211 211 checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l3, c3, 0, 1); 212 212 checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1); 213 213 214 214 // Howard with iteration limit 215 215 HowardMmc<GR, IntArcMap> mmc(gr, l1); -
test/nagamochi_ibaraki_test.cc
r1270 r1177 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 66 66 Value v; 67 67 bool b; 68 ::lemon::ignore_unused_variable_warning(v,b);68 ignore_unused_variable_warning(v,b); 69 69 70 70 NagamochiIbaraki<Graph, CapMap> ni_test(g, cap); -
test/path_test.cc
r1270 r1144 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 22 22 #include <lemon/concepts/path.h> 23 23 #include <lemon/concepts/digraph.h> 24 #include <lemon/concept_check.h>25 24 26 25 #include <lemon/path.h> … … 32 31 using namespace lemon; 33 32 34 template <typename GR> 35 void checkConcepts() { 36 checkConcept<concepts::Path<GR>, concepts::Path<GR> >(); 37 checkConcept<concepts::Path<GR>, Path<GR> >(); 38 checkConcept<concepts::Path<GR>, SimplePath<GR> >(); 39 checkConcept<concepts::Path<GR>, StaticPath<GR> >(); 40 checkConcept<concepts::Path<GR>, ListPath<GR> >(); 41 } 42 43 // Conecpt checking for path structures 44 void checkPathConcepts() { 45 checkConcepts<concepts::Digraph>(); 46 checkConcepts<ListDigraph>(); 33 void check_concepts() { 34 checkConcept<concepts::Path<ListDigraph>, concepts::Path<ListDigraph> >(); 35 checkConcept<concepts::Path<ListDigraph>, Path<ListDigraph> >(); 36 checkConcept<concepts::Path<ListDigraph>, SimplePath<ListDigraph> >(); 37 checkConcept<concepts::Path<ListDigraph>, StaticPath<ListDigraph> >(); 38 checkConcept<concepts::Path<ListDigraph>, ListPath<ListDigraph> >(); 47 39 } 48 40 49 41 // Check if proper copy consructor is called (use valgrind for testing) 50 template <typename GR, typename P1, typename P2> 51 void checkCopy(typename GR::Arc a) { 52 P1 p; 42 template<class _Path> 43 void checkCopy() 44 { 45 ListDigraph g; 46 ListDigraph::Arc a = g.addArc(g.addNode(), g.addNode()); 47 48 _Path p,q; 53 49 p.addBack(a); 54 P1 q; 55 q = p; 56 P1 r(p); 57 P2 q2; 58 q2 = p; 59 P2 r2(p); 50 q=p; 51 _Path r(p); 52 StaticPath<ListDigraph> s(r); 60 53 } 54 55 int main() { 56 check_concepts(); 61 57 62 // Tests for copy constructors and assignment operators of paths 63 void checkPathCopy() { 58 checkCopy<Path<ListDigraph> >(); 59 checkCopy<SimplePath<ListDigraph> >(); 60 checkCopy<ListPath<ListDigraph> >(); 61 64 62 ListDigraph g; 65 ListDigraph::Arc a = g.addArc(g.addNode(), g.addNode()); 66 67 typedef Path<ListDigraph> Path1; 68 typedef SimplePath<ListDigraph> Path2; 69 typedef ListPath<ListDigraph> Path3; 70 typedef StaticPath<ListDigraph> Path4; 71 checkCopy<ListDigraph, Path1, Path2>(a); 72 checkCopy<ListDigraph, Path1, Path3>(a); 73 checkCopy<ListDigraph, Path1, Path4>(a); 74 checkCopy<ListDigraph, Path2, Path1>(a); 75 checkCopy<ListDigraph, Path2, Path3>(a); 76 checkCopy<ListDigraph, Path2, Path4>(a); 77 checkCopy<ListDigraph, Path3, Path1>(a); 78 checkCopy<ListDigraph, Path3, Path2>(a); 79 checkCopy<ListDigraph, Path3, Path4>(a); 80 } 81 82 // Class for testing path functions 83 class CheckPathFunctions { 84 typedef ListDigraph GR; 85 DIGRAPH_TYPEDEFS(GR); 86 GR gr; 87 const GR& cgr; 88 Node n1, n2, n3, n4; 89 Node tmp_n; 90 Arc a1, a2, a3, a4; 91 Arc tmp_a; 92 93 public: 94 95 CheckPathFunctions() : cgr(gr) { 96 n1 = gr.addNode(); 97 n2 = gr.addNode(); 98 n3 = gr.addNode(); 99 n4 = gr.addNode(); 100 a1 = gr.addArc(n1, n2); 101 a2 = gr.addArc(n2, n3); 102 a3 = gr.addArc(n3, n4); 103 a4 = gr.addArc(n4, n1); 104 } 105 106 void run() { 107 checkBackAndFrontInsertablePath<Path<GR> >(); 108 checkBackAndFrontInsertablePath<ListPath<GR> >(); 109 checkBackInsertablePath<SimplePath<GR> >(); 110 111 checkListPathSplitAndSplice(); 112 } 113 114 private: 115 116 template <typename P> 117 void checkBackInsertablePath() { 118 119 // Create and check empty path 120 P p; 121 const P& cp = p; 122 check(cp.empty(), "The path is not empty"); 123 check(cp.length() == 0, "The path is not empty"); 124 // check(cp.front() == INVALID, "Wrong front()"); 125 // check(cp.back() == INVALID, "Wrong back()"); 126 typename P::ArcIt ai(cp); 127 check(ai == INVALID, "Wrong ArcIt"); 128 check(pathSource(cgr, cp) == INVALID, "Wrong pathSource()"); 129 check(pathTarget(cgr, cp) == INVALID, "Wrong pathTarget()"); 130 check(checkPath(cgr, cp), "Wrong checkPath()"); 131 PathNodeIt<P> ni(cgr, cp); 132 check(ni == INVALID, "Wrong PathNodeIt"); 133 134 // Check single-arc path 135 p.addBack(a1); 136 check(!cp.empty(), "Wrong empty()"); 137 check(cp.length() == 1, "Wrong length"); 138 check(cp.front() == a1, "Wrong front()"); 139 check(cp.back() == a1, "Wrong back()"); 140 check(cp.nth(0) == a1, "Wrong nth()"); 141 ai = cp.nthIt(0); 142 check((tmp_a = ai) == a1, "Wrong nthIt()"); 143 check(++ai == INVALID, "Wrong nthIt()"); 144 typename P::ArcIt ai2(cp); 145 check((tmp_a = ai2) == a1, "Wrong ArcIt"); 146 check(++ai2 == INVALID, "Wrong ArcIt"); 147 check(pathSource(cgr, cp) == n1, "Wrong pathSource()"); 148 check(pathTarget(cgr, cp) == n2, "Wrong pathTarget()"); 149 check(checkPath(cgr, cp), "Wrong checkPath()"); 150 PathNodeIt<P> ni2(cgr, cp); 151 check((tmp_n = ni2) == n1, "Wrong PathNodeIt"); 152 check((tmp_n = ++ni2) == n2, "Wrong PathNodeIt"); 153 check(++ni2 == INVALID, "Wrong PathNodeIt"); 154 155 // Check adding more arcs 156 p.addBack(a2); 157 p.addBack(a3); 158 check(!cp.empty(), "Wrong empty()"); 159 check(cp.length() == 3, "Wrong length"); 160 check(cp.front() == a1, "Wrong front()"); 161 check(cp.back() == a3, "Wrong back()"); 162 check(cp.nth(0) == a1, "Wrong nth()"); 163 check(cp.nth(1) == a2, "Wrong nth()"); 164 check(cp.nth(2) == a3, "Wrong nth()"); 165 typename P::ArcIt ai3(cp); 166 check((tmp_a = ai3) == a1, "Wrong ArcIt"); 167 check((tmp_a = ++ai3) == a2, "Wrong nthIt()"); 168 check((tmp_a = ++ai3) == a3, "Wrong nthIt()"); 169 check(++ai3 == INVALID, "Wrong nthIt()"); 170 ai = cp.nthIt(0); 171 check((tmp_a = ai) == a1, "Wrong nthIt()"); 172 check((tmp_a = ++ai) == a2, "Wrong nthIt()"); 173 ai = cp.nthIt(2); 174 check((tmp_a = ai) == a3, "Wrong nthIt()"); 175 check(++ai == INVALID, "Wrong nthIt()"); 176 check(pathSource(cgr, cp) == n1, "Wrong pathSource()"); 177 check(pathTarget(cgr, cp) == n4, "Wrong pathTarget()"); 178 check(checkPath(cgr, cp), "Wrong checkPath()"); 179 PathNodeIt<P> ni3(cgr, cp); 180 check((tmp_n = ni3) == n1, "Wrong PathNodeIt"); 181 check((tmp_n = ++ni3) == n2, "Wrong PathNodeIt"); 182 check((tmp_n = ++ni3) == n3, "Wrong PathNodeIt"); 183 check((tmp_n = ++ni3) == n4, "Wrong PathNodeIt"); 184 check(++ni3 == INVALID, "Wrong PathNodeIt"); 185 186 // Check arc removal and addition 187 p.eraseBack(); 188 p.eraseBack(); 189 p.addBack(a2); 190 check(!cp.empty(), "Wrong empty()"); 191 check(cp.length() == 2, "Wrong length"); 192 check(cp.front() == a1, "Wrong front()"); 193 check(cp.back() == a2, "Wrong back()"); 194 check(pathSource(cgr, cp) == n1, "Wrong pathSource()"); 195 check(pathTarget(cgr, cp) == n3, "Wrong pathTarget()"); 196 check(checkPath(cgr, cp), "Wrong checkPath()"); 197 198 // Check clear() 199 p.clear(); 200 check(cp.empty(), "The path is not empty"); 201 check(cp.length() == 0, "The path is not empty"); 202 203 // Check inconsistent path 204 p.addBack(a4); 205 p.addBack(a2); 206 p.addBack(a1); 207 check(!cp.empty(), "Wrong empty()"); 208 check(cp.length() == 3, "Wrong length"); 209 check(cp.front() == a4, "Wrong front()"); 210 check(cp.back() == a1, "Wrong back()"); 211 check(pathSource(cgr, cp) == n4, "Wrong pathSource()"); 212 check(pathTarget(cgr, cp) == n2, "Wrong pathTarget()"); 213 check(!checkPath(cgr, cp), "Wrong checkPath()"); 214 } 215 216 template <typename P> 217 void checkBackAndFrontInsertablePath() { 218 219 // Include back insertable test cases 220 checkBackInsertablePath<P>(); 221 222 // Check front and back insertion 223 P p; 224 const P& cp = p; 225 p.addFront(a4); 226 p.addBack(a1); 227 p.addFront(a3); 228 check(!cp.empty(), "Wrong empty()"); 229 check(cp.length() == 3, "Wrong length"); 230 check(cp.front() == a3, "Wrong front()"); 231 check(cp.back() == a1, "Wrong back()"); 232 check(cp.nth(0) == a3, "Wrong nth()"); 233 check(cp.nth(1) == a4, "Wrong nth()"); 234 check(cp.nth(2) == a1, "Wrong nth()"); 235 typename P::ArcIt ai(cp); 236 check((tmp_a = ai) == a3, "Wrong ArcIt"); 237 check((tmp_a = ++ai) == a4, "Wrong nthIt()"); 238 check((tmp_a = ++ai) == a1, "Wrong nthIt()"); 239 check(++ai == INVALID, "Wrong nthIt()"); 240 ai = cp.nthIt(0); 241 check((tmp_a = ai) == a3, "Wrong nthIt()"); 242 check((tmp_a = ++ai) == a4, "Wrong nthIt()"); 243 ai = cp.nthIt(2); 244 check((tmp_a = ai) == a1, "Wrong nthIt()"); 245 check(++ai == INVALID, "Wrong nthIt()"); 246 check(pathSource(cgr, cp) == n3, "Wrong pathSource()"); 247 check(pathTarget(cgr, cp) == n2, "Wrong pathTarget()"); 248 check(checkPath(cgr, cp), "Wrong checkPath()"); 249 250 // Check eraseFront() 251 p.eraseFront(); 252 p.addBack(a2); 253 check(!cp.empty(), "Wrong empty()"); 254 check(cp.length() == 3, "Wrong length"); 255 check(cp.front() == a4, "Wrong front()"); 256 check(cp.back() == a2, "Wrong back()"); 257 check(cp.nth(0) == a4, "Wrong nth()"); 258 check(cp.nth(1) == a1, "Wrong nth()"); 259 check(cp.nth(2) == a2, "Wrong nth()"); 260 typename P::ArcIt ai2(cp); 261 check((tmp_a = ai2) == a4, "Wrong ArcIt"); 262 check((tmp_a = ++ai2) == a1, "Wrong nthIt()"); 263 check((tmp_a = ++ai2) == a2, "Wrong nthIt()"); 264 check(++ai2 == INVALID, "Wrong nthIt()"); 265 ai = cp.nthIt(0); 266 check((tmp_a = ai) == a4, "Wrong nthIt()"); 267 check((tmp_a = ++ai) == a1, "Wrong nthIt()"); 268 ai = cp.nthIt(2); 269 check((tmp_a = ai) == a2, "Wrong nthIt()"); 270 check(++ai == INVALID, "Wrong nthIt()"); 271 check(pathSource(cgr, cp) == n4, "Wrong pathSource()"); 272 check(pathTarget(cgr, cp) == n3, "Wrong pathTarget()"); 273 check(checkPath(cgr, cp), "Wrong checkPath()"); 274 } 275 276 void checkListPathSplitAndSplice() { 277 278 // Build a path with spliceFront() and spliceBack() 279 ListPath<GR> p1, p2, p3, p4; 280 p1.addBack(a3); 281 p1.addFront(a2); 282 p2.addBack(a1); 283 p1.spliceFront(p2); 284 p3.addFront(a4); 285 p1.spliceBack(p3); 286 check(p1.length() == 4, "Wrong length"); 287 check(p1.front() == a1, "Wrong front()"); 288 check(p1.back() == a4, "Wrong back()"); 289 ListPath<GR>::ArcIt ai(p1); 290 check((tmp_a = ai) == a1, "Wrong ArcIt"); 291 check((tmp_a = ++ai) == a2, "Wrong nthIt()"); 292 check((tmp_a = ++ai) == a3, "Wrong nthIt()"); 293 check((tmp_a = ++ai) == a4, "Wrong nthIt()"); 294 check(++ai == INVALID, "Wrong nthIt()"); 295 check(checkPath(cgr, p1), "Wrong checkPath()"); 296 297 // Check split() 298 p1.split(p1.nthIt(2), p2); 299 check(p1.length() == 2, "Wrong length"); 300 ai = p1.nthIt(0); 301 check((tmp_a = ai) == a1, "Wrong ArcIt"); 302 check((tmp_a = ++ai) == a2, "Wrong nthIt()"); 303 check(++ai == INVALID, "Wrong nthIt()"); 304 check(checkPath(cgr, p1), "Wrong checkPath()"); 305 check(p2.length() == 2, "Wrong length"); 306 ai = p2.nthIt(0); 307 check((tmp_a = ai) == a3, "Wrong ArcIt"); 308 check((tmp_a = ++ai) == a4, "Wrong nthIt()"); 309 check(++ai == INVALID, "Wrong nthIt()"); 310 check(checkPath(cgr, p2), "Wrong checkPath()"); 311 312 // Check split() and splice() 313 p1.spliceFront(p2); 314 p1.split(p1.nthIt(2), p2); 315 p2.split(p2.nthIt(1), p3); 316 p2.spliceBack(p1); 317 p2.splice(p2.nthIt(1), p3); 318 check(p2.length() == 4, "Wrong length"); 319 check(p2.front() == a1, "Wrong front()"); 320 check(p2.back() == a4, "Wrong back()"); 321 ai = p2.nthIt(0); 322 check((tmp_a = ai) == a1, "Wrong ArcIt"); 323 check((tmp_a = ++ai) == a2, "Wrong nthIt()"); 324 check((tmp_a = ++ai) == a3, "Wrong nthIt()"); 325 check((tmp_a = ++ai) == a4, "Wrong nthIt()"); 326 check(++ai == INVALID, "Wrong nthIt()"); 327 check(checkPath(cgr, p2), "Wrong checkPath()"); 328 } 329 330 }; 331 332 int main() { 333 checkPathConcepts(); 334 checkPathCopy(); 335 CheckPathFunctions cpf; 336 cpf.run(); 63 ListDigraph::Arc a = g.addArc(g.addNode(), g.addNode()); 64 65 Path<ListDigraph> p; 66 StaticPath<ListDigraph> q,r; 67 p.addBack(a); 68 q=p; 69 r=q; 70 StaticPath<ListDigraph> s(q); 337 71 338 72 return 0; -
test/radix_sort_test.cc
r1270 r1211 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 53 53 template<class T> 54 54 T listsort(typename T::iterator b, typename T::iterator e) 55 { 55 { 56 56 if(b==e) return T(); 57 57 typename T::iterator bn=b; -
test/suurballe_test.cc
r1270 r1173 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 118 118 int f; 119 119 VType c; 120 ::lemon::ignore_unused_variable_warning(f,c);120 ignore_unused_variable_warning(f,c); 121 121 122 122 c = const_suurb_test.totalLength(); … … 130 130 Path<Digraph> p = const_suurb_test.path(k); 131 131 132 ::lemon::ignore_unused_variable_warning(fm);133 ::lemon::ignore_unused_variable_warning(pm);132 ignore_unused_variable_warning(fm); 133 ignore_unused_variable_warning(pm); 134 134 } 135 135 -
test/time_measure_test.cc
r1270 r1157 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-20 135 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 36 36 { 37 37 TimeStamp x(T); 38 ::lemon::ignore_unused_variable_warning(x);38 ignore_unused_variable_warning(x); 39 39 } 40 40 } -
test/tsp_test.cc
r1271 r1205 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 42 42 // check(checkMetricCost(g, constMap<Edge>(1)), "Wrong checkMetricCost()"); 43 43 // check(!checkMetricCost(g, constMap<Edge>(-1)), "Wrong checkMetricCost()"); 44 // 44 // 45 45 // FullGraph::EdgeMap<float> cost(g); 46 46 // for (NodeIt u(g); u != INVALID; ++u) { … … 65 65 bool checkTour(const FullGraph &gr, const Container &p) { 66 66 FullGraph::NodeMap<bool> used(gr, false); 67 67 68 68 int node_cnt = 0; 69 for (typename Container::const_iterator it = p.begin(); it != p.end(); ++it) 70 { 71 FullGraph::Node node = *it; 72 if (used[node]) return false; 73 used[node] = true; 74 ++node_cnt; 75 } 76 69 for (typename Container::const_iterator it = p.begin(); it != p.end(); ++it) { 70 FullGraph::Node node = *it; 71 if (used[node]) return false; 72 used[node] = true; 73 ++node_cnt; 74 } 75 77 76 return (node_cnt == gr.nodeNum()); 78 77 } … … 81 80 bool checkTourPath(const FullGraph &gr, const Path<FullGraph> &p) { 82 81 FullGraph::NodeMap<bool> used(gr, false); 83 82 84 83 if (!checkPath(gr, p)) return false; 85 84 if (gr.nodeNum() <= 1 && p.length() != 0) return false; … … 183 182 } 184 183 } 185 184 186 185 check(alg.run() > 0, alg_name + ": Wrong total cost"); 187 186 … … 197 196 check(checkCost(g, path, cost, alg.tourCost()), 198 197 alg_name + ": Wrong tour cost"); 199 198 200 199 check(!Tolerance<double>().less(alg.tourCost(), opt2.run(alg.tourNodes())), 201 200 "2-opt improvement: Wrong total cost"); … … 204 203 check(checkCost(g, opt2.tourNodes(), cost, opt2.tourCost()), 205 204 "2-opt improvement: Wrong tour cost"); 206 205 207 206 check(!Tolerance<double>().less(alg.tourCost(), opt2.run(path)), 208 207 "2-opt improvement: Wrong total cost"); … … 214 213 } 215 214 216 // Algorithm class for Nearest Insertion 215 // Algorithm class for Nearest Insertion 217 216 template <typename CM> 218 217 class NearestInsertionTsp : public InsertionTsp<CM> { … … 225 224 }; 226 225 227 // Algorithm class for Farthest Insertion 226 // Algorithm class for Farthest Insertion 228 227 template <typename CM> 229 228 class FarthestInsertionTsp : public InsertionTsp<CM> { … … 236 235 }; 237 236 238 // Algorithm class for Cheapest Insertion 237 // Algorithm class for Cheapest Insertion 239 238 template <typename CM> 240 239 class CheapestInsertionTsp : public InsertionTsp<CM> { … … 247 246 }; 248 247 249 // Algorithm class for Random Insertion 248 // Algorithm class for Random Insertion 250 249 template <typename CM> 251 250 class RandomInsertionTsp : public InsertionTsp<CM> { … … 266 265 tspTestSmall<GreedyTsp<ConstMap<Edge, int> > >("Greedy"); 267 266 tspTestSmall<NearestInsertionTsp<ConstMap<Edge, int> > >("Nearest Insertion"); 268 tspTestSmall<FarthestInsertionTsp<ConstMap<Edge, int> > > 269 ("Farthest Insertion"); 270 tspTestSmall<CheapestInsertionTsp<ConstMap<Edge, int> > > 271 ("Cheapest Insertion"); 267 tspTestSmall<FarthestInsertionTsp<ConstMap<Edge, int> > >("Farthest Insertion"); 268 tspTestSmall<CheapestInsertionTsp<ConstMap<Edge, int> > >("Cheapest Insertion"); 272 269 tspTestSmall<RandomInsertionTsp<ConstMap<Edge, int> > >("Random Insertion"); 273 270 tspTestSmall<ChristofidesTsp<ConstMap<Edge, int> > >("Christofides"); -
tools/dimacs-solver.cc
r1271 r1169 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-201 35 * Copyright (C) 2003-2010 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 128 128 if (report) { 129 129 std::cerr << "Run NetworkSimplex: " << ti << "\n\n"; 130 std::cerr << "Feasible flow: " << (res == MCF::OPTIMAL ? "found" : 131 "not found") << '\n'; 130 std::cerr << "Feasible flow: " << (res == MCF::OPTIMAL ? "found" : "not found") << '\n'; 132 131 if (res) std::cerr << "Min flow cost: " 133 132 << ns.template totalCost<LargeValue>() << '\n';
Note: See TracChangeset
for help on using the changeset viewer.