Changes in / [1060:b4af20d02ae0:900:5100072d83ca] in lemon
- Files:
-
- 1 added
- 2 deleted
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
CMakeLists.txt
r1033 r727 3 3 SET(PROJECT_NAME "LEMON") 4 4 PROJECT(${PROJECT_NAME}) 5 6 INCLUDE(FindPythonInterp)7 INCLUDE(FindWget)8 5 9 6 IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake) … … 12 9 SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.") 13 10 ELSE() 14 EXECUTE_PROCESS(15 COMMAND ${PYTHON_EXECUTABLE} ./scripts/chg-len.py16 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}17 OUTPUT_VARIABLE HG_REVISION_PATH18 ERROR_QUIET19 OUTPUT_STRIP_TRAILING_WHITESPACE20 )21 11 EXECUTE_PROCESS( 22 12 COMMAND hg id -i … … 27 17 ) 28 18 IF(HG_REVISION STREQUAL "") 29 SET(HG_REVISION_ID "hg-tip") 30 ELSE() 31 IF(HG_REVISION_PATH STREQUAL "") 32 SET(HG_REVISION_ID ${HG_REVISION}) 33 ELSE() 34 SET(HG_REVISION_ID ${HG_REVISION_PATH}.${HG_REVISION}) 35 ENDIF() 19 SET(HG_REVISION "hg-tip") 36 20 ENDIF() 37 SET(LEMON_VERSION ${HG_REVISION _ID} CACHE STRING "LEMON version string.")21 SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.") 38 22 ENDIF() 39 23 … … 48 32 FIND_PACKAGE(COIN) 49 33 50 IF(DEFINED ENV{LEMON_CXX_WARNING})51 SET(CXX_WARNING $ENV{LEMON_CXX_WARNING})52 ELSE()53 IF(CMAKE_COMPILER_IS_GNUCXX)54 SET(CXX_WARNING "-Wall -W -Wunused -Wformat=2 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wno-char-subscripts -Wwrite-strings -Wno-char-subscripts -Wreturn-type -Wcast-qual -Wcast-align -Wsign-promo -Woverloaded-virtual -ansi -fno-strict-aliasing -Wold-style-cast -Wno-unknown-pragmas")55 SET(CMAKE_CXX_FLAGS_DEBUG CACHE STRING "-ggdb")56 SET(CMAKE_C_FLAGS_DEBUG CACHE STRING "-ggdb")57 ELSEIF(MSVC)58 # This part is unnecessary 'casue the same is set by the lemon/core.h.59 # Still keep it as an example.60 SET(CXX_WARNING "/wd4250 /wd4355 /wd4503 /wd4800 /wd4996")61 # Suppressed warnings:62 # C4250: 'class1' : inherits 'class2::member' via dominance63 # C4355: 'this' : used in base member initializer list64 # C4503: 'function' : decorated name length exceeded, name was truncated65 # C4800: 'type' : forcing value to bool 'true' or 'false'66 # (performance warning)67 # C4996: 'function': was declared deprecated68 ELSE()69 SET(CXX_WARNING "-Wall -W")70 ENDIF()71 ENDIF()72 SET(LEMON_CXX_WARNING_FLAGS ${CXX_WARNING} CACHE STRING "LEMON warning flags.")73 74 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LEMON_CXX_WARNING_FLAGS}")75 76 SET( CMAKE_CXX_FLAGS_MAINTAINER "-Werror -ggdb" CACHE STRING77 "Flags used by the C++ compiler during maintainer builds."78 FORCE )79 SET( CMAKE_C_FLAGS_MAINTAINER "-Werror" CACHE STRING80 "Flags used by the C compiler during maintainer builds."81 FORCE )82 SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER83 "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING84 "Flags used for linking binaries during maintainer builds."85 FORCE )86 SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER87 "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING88 "Flags used by the shared libraries linker during maintainer builds."89 FORCE )90 MARK_AS_ADVANCED(91 CMAKE_CXX_FLAGS_MAINTAINER92 CMAKE_C_FLAGS_MAINTAINER93 CMAKE_EXE_LINKER_FLAGS_MAINTAINER94 CMAKE_SHARED_LINKER_FLAGS_MAINTAINER )95 96 IF(CMAKE_CONFIGURATION_TYPES)97 LIST(APPEND CMAKE_CONFIGURATION_TYPES Maintainer)98 LIST(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)99 SET(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING100 "Add the configurations that we need"101 FORCE)102 endif()103 104 IF(NOT CMAKE_BUILD_TYPE)105 SET(CMAKE_BUILD_TYPE "Release")106 ENDIF()107 108 SET( CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING109 "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel Maintainer."110 FORCE )111 112 113 34 INCLUDE(CheckTypeSize) 114 35 CHECK_TYPE_SIZE("long long" LONG_LONG) … … 116 37 117 38 ENABLE_TESTING() 118 119 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer")120 ADD_CUSTOM_TARGET(check ALL COMMAND ${CMAKE_CTEST_COMMAND})121 ELSE()122 ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND})123 ENDIF()124 39 125 40 ADD_SUBDIRECTORY(lemon) … … 148 63 ENDIF() 149 64 150 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} )65 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32) 151 66 SET(CPACK_PACKAGE_NAME ${PROJECT_NAME}) 152 67 SET(CPACK_PACKAGE_VENDOR "EGRES") -
Makefile.am
r799 r676 18 18 cmake/FindGLPK.cmake \ 19 19 cmake/FindCOIN.cmake \ 20 cmake/LEMONConfig.cmake.in \21 20 cmake/version.cmake.in \ 22 21 cmake/version.cmake \ -
configure.ac
r1037 r727 99 99 dnl Add dependencies on files generated by configure. 100 100 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], 101 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/ doc/mainpage.dox.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in'])101 ['$(top_srcdir)/doc/Doxyfile.in $(top_srcdir)/lemon/lemon.pc.in $(top_srcdir)/cmake/version.cmake.in']) 102 102 103 103 AC_CONFIG_FILES([ … … 106 106 cmake/version.cmake 107 107 doc/Doxyfile 108 doc/mainpage.dox109 108 lemon/lemon.pc 110 109 ]) -
doc/CMakeLists.txt
r1037 r726 4 4 SET(abs_top_builddir ${PROJECT_BINARY_DIR}) 5 5 6 SET(LEMON_DOC_SOURCE_BROWSER "NO" CACHE STRING "Include source into the doc (YES/NO).")7 8 6 CONFIGURE_FILE( 9 7 ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in 10 8 ${PROJECT_BINARY_DIR}/doc/Doxyfile 11 @ONLY12 )13 14 CONFIGURE_FILE(15 ${PROJECT_SOURCE_DIR}/doc/mainpage.dox.in16 ${PROJECT_BINARY_DIR}/doc/mainpage.dox17 9 @ONLY 18 10 ) … … 58 50 59 51 ENDIF() 60 61 IF(WGET_FOUND)62 ADD_CUSTOM_TARGET(update-external-tags63 COMMAND ${CMAKE_COMMAND} -E make_directory dl64 # COMMAND ${CMAKE_COMMAND} -E copy libstdc++.tag dl65 COMMAND ${WGET_EXECUTABLE} wget -P dl -N libstdc++.tag.tmp http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/libstdc++.tag66 COMMAND ${CMAKE_COMMAND} -E rename dl/libstdc++.tag libstdc++.tag67 COMMAND ${CMAKE_COMMAND} -E remove dl/libstdc++.tag68 COMMAND ${CMAKE_COMMAND} -E remove_directory dl69 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}70 )71 ENDIF() -
doc/Doxyfile.in
r1037 r379 1 # Doxyfile 1. 7.31 # Doxyfile 1.5.7.1 2 2 3 3 #--------------------------------------------------------------------------- … … 5 5 #--------------------------------------------------------------------------- 6 6 DOXYFILE_ENCODING = UTF-8 7 PROJECT_NAME = 8 PROJECT_NUMBER = 9 PROJECT_BRIEF = 10 PROJECT_LOGO = 7 PROJECT_NAME = @PACKAGE_NAME@ 8 PROJECT_NUMBER = @PACKAGE_VERSION@ 11 9 OUTPUT_DIRECTORY = 12 10 CREATE_SUBDIRS = NO … … 24 22 QT_AUTOBRIEF = NO 25 23 MULTILINE_CPP_IS_BRIEF = NO 24 DETAILS_AT_TOP = YES 26 25 INHERIT_DOCS = NO 27 26 SEPARATE_MEMBER_PAGES = NO … … 32 31 OPTIMIZE_FOR_FORTRAN = NO 33 32 OPTIMIZE_OUTPUT_VHDL = NO 34 EXTENSION_MAPPING =35 33 BUILTIN_STL_SUPPORT = YES 36 34 CPP_CLI_SUPPORT = NO … … 58 56 HIDE_SCOPE_NAMES = YES 59 57 SHOW_INCLUDE_FILES = YES 60 FORCE_LOCAL_INCLUDES = NO61 58 INLINE_INFO = YES 62 59 SORT_MEMBER_DOCS = NO 63 60 SORT_BRIEF_DOCS = NO 64 SORT_MEMBERS_CTORS_1ST = NO65 61 SORT_GROUP_NAMES = NO 66 62 SORT_BY_SCOPE_NAME = NO 67 STRICT_PROTO_MATCHING = NO68 63 GENERATE_TODOLIST = YES 69 64 GENERATE_TESTLIST = YES … … 77 72 SHOW_NAMESPACES = YES 78 73 FILE_VERSION_FILTER = 79 LAYOUT_FILE = "@abs_top_srcdir@/doc/DoxygenLayout.xml"74 LAYOUT_FILE = DoxygenLayout.xml 80 75 #--------------------------------------------------------------------------- 81 76 # configuration options related to warning and progress messages … … 97 92 "@abs_top_srcdir@/demo" \ 98 93 "@abs_top_srcdir@/tools" \ 99 "@abs_top_srcdir@/test/test_tools.h" \ 100 "@abs_top_builddir@/doc/mainpage.dox" 94 "@abs_top_srcdir@/test/test_tools.h" 101 95 INPUT_ENCODING = UTF-8 102 96 FILE_PATTERNS = *.h \ … … 118 112 FILTER_PATTERNS = 119 113 FILTER_SOURCE_FILES = NO 120 FILTER_SOURCE_PATTERNS =121 114 #--------------------------------------------------------------------------- 122 115 # configuration options related to source browsing 123 116 #--------------------------------------------------------------------------- 124 SOURCE_BROWSER = @LEMON_DOC_SOURCE_BROWSER@117 SOURCE_BROWSER = NO 125 118 INLINE_SOURCES = NO 126 119 STRIP_CODE_COMMENTS = YES … … 145 138 HTML_FOOTER = 146 139 HTML_STYLESHEET = 147 HTML_COLORSTYLE_HUE = 220148 HTML_COLORSTYLE_SAT = 100149 HTML_COLORSTYLE_GAMMA = 80150 HTML_TIMESTAMP = YES151 140 HTML_ALIGN_MEMBERS = YES 152 HTML_DYNAMIC_SECTIONS = YES141 HTML_DYNAMIC_SECTIONS = NO 153 142 GENERATE_DOCSET = NO 154 143 DOCSET_FEEDNAME = "Doxygen generated docs" 155 144 DOCSET_BUNDLE_ID = org.doxygen.Project 156 DOCSET_PUBLISHER_ID = org.doxygen.Publisher157 DOCSET_PUBLISHER_NAME = Publisher158 145 GENERATE_HTMLHELP = NO 159 146 CHM_FILE = … … 167 154 QHP_NAMESPACE = org.doxygen.Project 168 155 QHP_VIRTUAL_FOLDER = doc 169 QHP_CUST_FILTER_NAME =170 QHP_CUST_FILTER_ATTRS =171 QHP_SECT_FILTER_ATTRS =172 156 QHG_LOCATION = 173 GENERATE_ECLIPSEHELP = NO174 ECLIPSE_DOC_ID = org.doxygen.Project175 157 DISABLE_INDEX = NO 176 158 ENUM_VALUES_PER_LINE = 4 177 159 GENERATE_TREEVIEW = NO 178 USE_INLINE_TREES = NO179 160 TREEVIEW_WIDTH = 250 180 EXT_LINKS_IN_WINDOW = NO181 161 FORMULA_FONTSIZE = 10 182 FORMULA_TRANSPARENT = YES183 USE_MATHJAX = NO184 MATHJAX_RELPATH = http://www.mathjax.org/mathjax185 SEARCHENGINE = YES186 SERVER_BASED_SEARCH = NO187 162 #--------------------------------------------------------------------------- 188 163 # configuration options related to the LaTeX output … … 201 176 LATEX_BATCHMODE = NO 202 177 LATEX_HIDE_INDICES = NO 203 LATEX_SOURCE_CODE = NO204 178 #--------------------------------------------------------------------------- 205 179 # configuration options related to the RTF output … … 250 224 SKIP_FUNCTION_MACROS = YES 251 225 #--------------------------------------------------------------------------- 252 # Configuration::additions related to external references 253 #--------------------------------------------------------------------------- 254 TAGFILES = "@abs_top_ builddir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ "226 # Configuration::additions related to external references 227 #--------------------------------------------------------------------------- 228 TAGFILES = "@abs_top_srcdir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/ " 255 229 GENERATE_TAGFILE = html/lemon.tag 256 230 ALLEXTERNALS = NO … … 264 238 HIDE_UNDOC_RELATIONS = YES 265 239 HAVE_DOT = YES 266 DOT_NUM_THREADS = 0267 240 DOT_FONTNAME = FreeSans 268 241 DOT_FONTSIZE = 10 … … 282 255 DOT_PATH = 283 256 DOTFILE_DIRS = 284 MSCFILE_DIRS =285 257 DOT_GRAPH_MAX_NODES = 50 286 258 MAX_DOT_GRAPH_DEPTH = 0 … … 289 261 GENERATE_LEGEND = YES 290 262 DOT_CLEANUP = YES 263 #--------------------------------------------------------------------------- 264 # Configuration::additions related to the search engine 265 #--------------------------------------------------------------------------- 266 SEARCHENGINE = NO -
doc/DoxygenLayout.xml
r1036 r316 3 3 <navindex> 4 4 <tab type="mainpage" visible="yes" title=""/> 5 <tab type="modules" visible="yes" title="" intro=""/>5 <tab type="modules" visible="yes" title=""/> 6 6 <tab type="classes" visible="yes" title=""> 7 <tab type="classes" visible="yes" title="" intro=""/>8 <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 9 <tab type="hierarchy" visible="yes" title="" intro=""/>10 <tab type="classmembers" visible="yes" title="" intro=""/>7 <tab type="classes" visible="yes" title=""/> 8 <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 9 <tab type="hierarchy" visible="yes" title=""/> 10 <tab type="classmembers" visible="yes" title=""/> 11 11 </tab> 12 12 <tab type="namespaces" visible="yes" title=""> 13 <tab type="namespaces" visible="yes" title="" intro=""/>14 <tab type="namespacemembers" visible="yes" title="" intro=""/>13 <tab type="namespaces" visible="yes" title=""/> 14 <tab type="namespacemembers" visible="yes" title=""/> 15 15 </tab> 16 16 <tab type="files" visible="yes" title=""> 17 <tab type="files" visible="yes" title="" intro=""/>18 <tab type="globals" visible="yes" title="" intro=""/>17 <tab type="files" visible="yes" title=""/> 18 <tab type="globals" visible="yes" title=""/> 19 19 </tab> 20 <tab type="dirs" visible="yes" title="" intro=""/>21 <tab type="examples" visible="yes" title="" intro=""/>22 <tab type="pages" visible="yes" title="" intro=""/>20 <tab type="dirs" visible="yes" title=""/> 21 <tab type="examples" visible="yes" title=""/> 22 <tab type="pages" visible="yes" title=""/> 23 23 </navindex> 24 24 -
lemon/CMakeLists.txt
r1012 r726 7 7 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake 8 8 ${CMAKE_CURRENT_BINARY_DIR}/config.h 9 )10 11 CONFIGURE_FILE(12 ${CMAKE_CURRENT_SOURCE_DIR}/lemon.pc.cmake13 ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc14 @ONLY15 9 ) 16 10 … … 73 67 COMPONENT headers 74 68 ) 75 76 INSTALL(77 FILES ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc78 DESTINATION lib/pkgconfig79 )80 -
lemon/circulation.h
r735 r688 454 454 /// 455 455 /// Sets the tolerance used by algorithm. 456 Circulation& tolerance(const Tolerance& tolerance) {456 Circulation& tolerance(const Tolerance& tolerance) const { 457 457 _tol = tolerance; 458 458 return *this; … … 463 463 /// Returns a const reference to the tolerance. 464 464 const Tolerance& tolerance() const { 465 return _tol;465 return tolerance; 466 466 } 467 467 -
lemon/matching.h
r945 r698 806 806 _matching = new MatchingMap(_graph); 807 807 } 808 809 808 if (!_node_potential) { 810 809 _node_potential = new NodePotential(_graph); 811 810 } 812 813 811 if (!_blossom_set) { 814 812 _blossom_index = new IntNodeMap(_graph); 815 813 _blossom_set = new BlossomSet(*_blossom_index); 816 814 _blossom_data = new RangeMap<BlossomData>(_blossom_num); 817 } else if (_blossom_data->size() != _blossom_num) {818 delete _blossom_data;819 _blossom_data = new RangeMap<BlossomData>(_blossom_num);820 815 } 821 816 … … 824 819 _node_heap_index = new IntArcMap(_graph); 825 820 _node_data = new RangeMap<NodeData>(_node_num, 826 NodeData(*_node_heap_index)); 827 } else { 828 delete _node_data; 829 _node_data = new RangeMap<NodeData>(_node_num, 830 NodeData(*_node_heap_index)); 821 NodeData(*_node_heap_index)); 831 822 } 832 823 … … 834 825 _tree_set_index = new IntIntMap(_blossom_num); 835 826 _tree_set = new TreeSet(*_tree_set_index); 836 } else { 837 _tree_set_index->resize(_blossom_num); 838 } 839 827 } 840 828 if (!_delta1) { 841 829 _delta1_index = new IntNodeMap(_graph); 842 830 _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index); 843 831 } 844 845 832 if (!_delta2) { 846 833 _delta2_index = new IntIntMap(_blossom_num); 847 834 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 848 } else { 849 _delta2_index->resize(_blossom_num); 850 } 851 835 } 852 836 if (!_delta3) { 853 837 _delta3_index = new IntEdgeMap(_graph); 854 838 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 855 839 } 856 857 840 if (!_delta4) { 858 841 _delta4_index = new IntIntMap(_blossom_num); 859 842 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 860 } else {861 _delta4_index->resize(_blossom_num);862 843 } 863 844 } … … 1705 1686 createStructures(); 1706 1687 1707 _blossom_node_list.clear();1708 _blossom_potential.clear();1709 1710 1688 for (ArcIt e(_graph); e != INVALID; ++e) { 1711 1689 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 1721 1699 (*_delta4_index)[i] = _delta4->PRE_HEAP; 1722 1700 } 1723 1724 _delta1->clear();1725 _delta2->clear();1726 _delta3->clear();1727 _delta4->clear();1728 _blossom_set->clear();1729 _tree_set->clear();1730 1701 1731 1702 int index = 0; … … 1739 1710 } 1740 1711 (*_node_index)[n] = index; 1741 (*_node_data)[index].heap_index.clear();1742 (*_node_data)[index].heap.clear();1743 1712 (*_node_data)[index].pot = max; 1744 1713 _delta1->push(n, max); … … 2230 2199 _matching = new MatchingMap(_graph); 2231 2200 } 2232 2233 2201 if (!_node_potential) { 2234 2202 _node_potential = new NodePotential(_graph); 2235 2203 } 2236 2237 2204 if (!_blossom_set) { 2238 2205 _blossom_index = new IntNodeMap(_graph); 2239 2206 _blossom_set = new BlossomSet(*_blossom_index); 2240 _blossom_data = new RangeMap<BlossomData>(_blossom_num);2241 } else if (_blossom_data->size() != _blossom_num) {2242 delete _blossom_data;2243 2207 _blossom_data = new RangeMap<BlossomData>(_blossom_num); 2244 2208 } … … 2249 2213 _node_data = new RangeMap<NodeData>(_node_num, 2250 2214 NodeData(*_node_heap_index)); 2251 } else if (_node_data->size() != _node_num) {2252 delete _node_data;2253 _node_data = new RangeMap<NodeData>(_node_num,2254 NodeData(*_node_heap_index));2255 2215 } 2256 2216 … … 2258 2218 _tree_set_index = new IntIntMap(_blossom_num); 2259 2219 _tree_set = new TreeSet(*_tree_set_index); 2260 } else { 2261 _tree_set_index->resize(_blossom_num); 2262 } 2263 2220 } 2264 2221 if (!_delta2) { 2265 2222 _delta2_index = new IntIntMap(_blossom_num); 2266 2223 _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index); 2267 } else { 2268 _delta2_index->resize(_blossom_num); 2269 } 2270 2224 } 2271 2225 if (!_delta3) { 2272 2226 _delta3_index = new IntEdgeMap(_graph); 2273 2227 _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index); 2274 2228 } 2275 2276 2229 if (!_delta4) { 2277 2230 _delta4_index = new IntIntMap(_blossom_num); 2278 2231 _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index); 2279 } else {2280 _delta4_index->resize(_blossom_num);2281 2232 } 2282 2233 } … … 2976 2927 createStructures(); 2977 2928 2978 _blossom_node_list.clear();2979 _blossom_potential.clear();2980 2981 2929 for (ArcIt e(_graph); e != INVALID; ++e) { 2982 2930 (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP; … … 2989 2937 (*_delta4_index)[i] = _delta4->PRE_HEAP; 2990 2938 } 2991 2992 _delta2->clear();2993 _delta3->clear();2994 _delta4->clear();2995 _blossom_set->clear();2996 _tree_set->clear();2997 2939 2998 2940 int index = 0; … … 3006 2948 } 3007 2949 (*_node_index)[n] = index; 3008 (*_node_data)[index].heap_index.clear();3009 (*_node_data)[index].heap.clear();3010 2950 (*_node_data)[index].pot = max; 3011 2951 int blossom = -
lemon/network_simplex.h
r976 r710 1043 1043 ART_COST = std::numeric_limits<Cost>::max() / 2 + 1; 1044 1044 } else { 1045 ART_COST = 0;1045 ART_COST = std::numeric_limits<Cost>::min(); 1046 1046 for (int i = 0; i != _arc_num; ++i) { 1047 1047 if (_cost[i] > ART_COST) ART_COST = _cost[i]; … … 1458 1458 if (_sum_supply == 0) { 1459 1459 if (_stype == GEQ) { 1460 Cost max_pot = -std::numeric_limits<Cost>::max();1460 Cost max_pot = std::numeric_limits<Cost>::min(); 1461 1461 for (int i = 0; i != _node_num; ++i) { 1462 1462 if (_pi[i] > max_pot) max_pot = _pi[i]; -
lemon/preflow.h
r1027 r688 375 375 /// 376 376 /// Sets the tolerance used by algorithm. 377 Preflow& tolerance(const Tolerance& tolerance) {377 Preflow& tolerance(const Tolerance& tolerance) const { 378 378 _tolerance = tolerance; 379 379 return *this; … … 384 384 /// Returns a const reference to the tolerance. 385 385 const Tolerance& tolerance() const { 386 return _tolerance;386 return tolerance; 387 387 } 388 388 … … 526 526 _flow->set(e, (*_capacity)[e]); 527 527 (*_excess)[u] += rem; 528 if (u != _target && !_level->active(u)) { 529 _level->activate(u); 530 } 528 531 } 529 532 } … … 535 538 _flow->set(e, 0); 536 539 (*_excess)[v] += rem; 537 } 538 } 539 for (NodeIt n(_graph); n != INVALID; ++n) 540 if(n!=_source && n!=_target && _tolerance.positive((*_excess)[n])) 541 _level->activate(n); 542 540 if (v != _target && !_level->active(v)) { 541 _level->activate(v); 542 } 543 } 544 } 543 545 return true; 544 546 } … … 557 559 _phase = true; 558 560 559 while (true) { 561 Node n = _level->highestActive(); 562 int level = _level->highestActiveLevel(); 563 while (n != INVALID) { 560 564 int num = _node_num; 561 565 562 Node n = INVALID; 563 int level = -1; 564 565 while (num > 0) { 566 n = _level->highestActive(); 567 if (n == INVALID) goto first_phase_done; 568 level = _level->highestActiveLevel(); 569 --num; 570 566 while (num > 0 && n != INVALID) { 571 567 Value excess = (*_excess)[n]; 572 568 int new_level = _level->maxLevel(); … … 634 630 _level->deactivate(n); 635 631 } 632 633 n = _level->highestActive(); 634 level = _level->highestActiveLevel(); 635 --num; 636 636 } 637 637 638 638 num = _node_num * 20; 639 while (num > 0) { 640 while (level >= 0 && _level->activeFree(level)) { 641 --level; 642 } 643 if (level == -1) { 644 n = _level->highestActive(); 645 level = _level->highestActiveLevel(); 646 if (n == INVALID) goto first_phase_done; 647 } else { 648 n = _level->activeOn(level); 649 } 650 --num; 651 639 while (num > 0 && n != INVALID) { 652 640 Value excess = (*_excess)[n]; 653 641 int new_level = _level->maxLevel(); … … 715 703 _level->deactivate(n); 716 704 } 717 } 718 } 719 first_phase_done:; 705 706 while (level >= 0 && _level->activeFree(level)) { 707 --level; 708 } 709 if (level == -1) { 710 n = _level->highestActive(); 711 level = _level->highestActiveLevel(); 712 } else { 713 n = _level->activeOn(level); 714 } 715 --num; 716 } 717 } 720 718 } 721 719 -
lemon/suurballe.h
r925 r670 56 56 /// The default value is <tt>GR::ArcMap<int></tt>. 57 57 /// 58 /// \warning Length values should be \e non-negative .58 /// \warning Length values should be \e non-negative \e integers. 59 59 /// 60 60 /// \note For finding node-disjoint paths this algorithm can be used … … 253 253 _graph(graph), _length(length), _flow(0), _local_flow(false), 254 254 _potential(0), _local_potential(false), _pred(graph) 255 {} 255 { 256 LEMON_ASSERT(std::numeric_limits<Length>::is_integer, 257 "The length type of Suurballe must be integer"); 258 } 256 259 257 260 /// Destructor. … … 518 521 /// \pre \ref run() or \ref findPaths() must be called before using 519 522 /// this function. 520 const Path&path(int i) const {523 Path path(int i) const { 521 524 return paths[i]; 522 525 } -
lemon/unionfind.h
r945 r606 740 740 void clear() { 741 741 items.clear(); 742 classes.clear ();742 classes.clear; 743 743 firstClass = firstFreeClass = firstFreeItem = -1; 744 744 } … … 1289 1289 first_free_class(-1), first_free_node(-1) {} 1290 1290 1291 /// \brief Clears the union-find data structure1292 ///1293 /// Erase each item from the data structure.1294 void clear() {1295 nodes.clear();1296 classes.clear();1297 first_free_node = first_free_class = first_class = -1;1298 }1299 1300 1291 /// \brief Insert a new node into a new component. 1301 1292 /// -
m4/lx_check_coin.m4
r796 r674 89 89 CBC_LDFLAGS="-L$with_coin/lib" 90 90 fi 91 CBC_LIBS="-lOsi -lCbc -l CbcSolver -lClp -lOsiClp -lCoinUtils -lVol -lOsiVol -lCgl -lm -llapack -lblas"91 CBC_LIBS="-lOsi -lCbc -lOsiCbc -lCbcSolver -lClp -lOsiClp -lCoinUtils -lVol -lOsiVol -lCgl -lm -llapack -lblas" 92 92 93 93 lx_save_cxxflags="$CXXFLAGS" -
test/CMakeLists.txt
r1044 r726 7 7 ${PROJECT_BINARY_DIR}/lemon 8 8 ) 9 10 SET(TEST_WITH_VALGRIND "NO" CACHE STRING11 "Run the test with valgrind (YES/NO).")12 SET(VALGRIND_FLAGS "" CACHE STRING "Valgrind flags used by the tests.")13 9 14 10 SET(TESTS … … 46 42 47 43 IF(LEMON_HAVE_LP) 48 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 49 ADD_EXECUTABLE(lp_test lp_test.cc) 50 ELSE() 51 ADD_EXECUTABLE(lp_test EXCLUDE_FROM_ALL lp_test.cc) 52 ENDIF() 53 44 ADD_EXECUTABLE(lp_test lp_test.cc) 54 45 SET(LP_TEST_LIBS lemon) 55 46 … … 87 78 88 79 IF(LEMON_HAVE_MIP) 89 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 90 ADD_EXECUTABLE(mip_test mip_test.cc) 91 ELSE() 92 ADD_EXECUTABLE(mip_test EXCLUDE_FROM_ALL mip_test.cc) 93 ENDIF() 94 80 ADD_EXECUTABLE(mip_test mip_test.cc) 95 81 SET(MIP_TEST_LIBS lemon) 96 82 … … 128 114 129 115 FOREACH(TEST_NAME ${TESTS}) 130 IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer") 131 ADD_EXECUTABLE(${TEST_NAME} ${TEST_NAME}.cc) 132 ELSE() 133 ADD_EXECUTABLE(${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_NAME}.cc) 134 ENDIF() 116 ADD_EXECUTABLE(${TEST_NAME} ${TEST_NAME}.cc) 135 117 TARGET_LINK_LIBRARIES(${TEST_NAME} lemon) 136 IF(TEST_WITH_VALGRIND) 137 ADD_TEST(${TEST_NAME} 138 valgrind --error-exitcode=1 ${VALGRIND_FLAGS} 139 ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME} ) 140 ELSE() 141 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 142 ENDIF() 143 ADD_DEPENDENCIES(check ${TEST_NAME}) 118 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 144 119 ENDFOREACH() -
test/mip_test.cc
r795 r678 51 51 if (stat == MipSolver::OPTIMAL) { 52 52 std::ostringstream sbuf; 53 sbuf << "Wrong optimal value ("<< mip.solValue() 54 <<" instead of " << exp_opt << ")"; 53 buf << "Wrong optimal value: the right optimum is " << exp_opt; 55 54 check(std::abs(mip.solValue()-exp_opt) < 1e-3, sbuf.str()); 56 55 //+ecvt(exp_opt,2) -
test/preflow_test.cc
r1027 r632 152 152 } 153 153 154 void initFlowTest()155 {156 DIGRAPH_TYPEDEFS(SmartDigraph);157 158 SmartDigraph g;159 SmartDigraph::ArcMap<int> cap(g),iflow(g);160 Node s=g.addNode(); Node t=g.addNode();161 Node n1=g.addNode(); Node n2=g.addNode();162 Arc a;163 a=g.addArc(s,n1); cap[a]=20; iflow[a]=20;164 a=g.addArc(n1,n2); cap[a]=10; iflow[a]=0;165 a=g.addArc(n2,t); cap[a]=20; iflow[a]=0;166 167 Preflow<SmartDigraph> pre(g,cap,s,t);168 pre.init(iflow);169 pre.startFirstPhase();170 check(pre.flowValue() == 10, "The incorrect max flow value.");171 check(pre.minCut(s), "Wrong min cut (Node s).");172 check(pre.minCut(n1), "Wrong min cut (Node n1).");173 check(!pre.minCut(n2), "Wrong min cut (Node n2).");174 check(!pre.minCut(t), "Wrong min cut (Node t).");175 }176 177 178 154 int main() { 179 155 … … 266 242 "The max flow value or the three min cut values are incorrect."); 267 243 268 initFlowTest();269 270 244 return 0; 271 245 }
Note: See TracChangeset
for help on using the changeset viewer.