COIN-OR::LEMON - Graph Library

Ignore:
Files:
1 added
2 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    r1033 r727  
    33SET(PROJECT_NAME "LEMON")
    44PROJECT(${PROJECT_NAME})
    5 
    6 INCLUDE(FindPythonInterp)
    7 INCLUDE(FindWget)
    85
    96IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake)
     
    129  SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.")
    1310ELSE()
    14   EXECUTE_PROCESS(
    15     COMMAND ${PYTHON_EXECUTABLE} ./scripts/chg-len.py
    16     WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    17     OUTPUT_VARIABLE HG_REVISION_PATH
    18     ERROR_QUIET
    19     OUTPUT_STRIP_TRAILING_WHITESPACE
    20   )
    2111  EXECUTE_PROCESS(
    2212    COMMAND hg id -i
     
    2717  )
    2818  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")
    3620  ENDIF()
    37   SET(LEMON_VERSION ${HG_REVISION_ID} CACHE STRING "LEMON version string.")
     21  SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.")
    3822ENDIF()
    3923
     
    4832FIND_PACKAGE(COIN)
    4933
    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 dominance
    63     # C4355: 'this' : used in base member initializer list
    64     # C4503: 'function' : decorated name length exceeded, name was truncated
    65     # C4800: 'type' : forcing value to bool 'true' or 'false'
    66     #        (performance warning)
    67     # C4996: 'function': was declared deprecated
    68   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 STRING
    77     "Flags used by the C++ compiler during maintainer builds."
    78     FORCE )
    79 SET( CMAKE_C_FLAGS_MAINTAINER "-Werror" CACHE STRING
    80     "Flags used by the C compiler during maintainer builds."
    81     FORCE )
    82 SET( CMAKE_EXE_LINKER_FLAGS_MAINTAINER
    83     "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
    84     "Flags used for linking binaries during maintainer builds."
    85     FORCE )
    86 SET( CMAKE_SHARED_LINKER_FLAGS_MAINTAINER
    87     "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING
    88     "Flags used by the shared libraries linker during maintainer builds."
    89     FORCE )
    90 MARK_AS_ADVANCED(
    91     CMAKE_CXX_FLAGS_MAINTAINER
    92     CMAKE_C_FLAGS_MAINTAINER
    93     CMAKE_EXE_LINKER_FLAGS_MAINTAINER
    94     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 STRING
    100       "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 STRING
    109     "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 
    11334INCLUDE(CheckTypeSize)
    11435CHECK_TYPE_SIZE("long long" LONG_LONG)
     
    11637
    11738ENABLE_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()
    12439
    12540ADD_SUBDIRECTORY(lemon)
     
    14863ENDIF()
    14964
    150 IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
     65IF(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR} AND WIN32)
    15166  SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    15267  SET(CPACK_PACKAGE_VENDOR "EGRES")
  • Makefile.am

    r799 r676  
    1818        cmake/FindGLPK.cmake \
    1919        cmake/FindCOIN.cmake \
    20         cmake/LEMONConfig.cmake.in \
    2120        cmake/version.cmake.in \
    2221        cmake/version.cmake \
  • configure.ac

    r1037 r727  
    9999dnl Add dependencies on files generated by configure.
    100100AC_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'])
    102102
    103103AC_CONFIG_FILES([
     
    106106cmake/version.cmake
    107107doc/Doxyfile
    108 doc/mainpage.dox
    109108lemon/lemon.pc
    110109])
  • doc/CMakeLists.txt

    r1037 r726  
    44SET(abs_top_builddir ${PROJECT_BINARY_DIR})
    55
    6 SET(LEMON_DOC_SOURCE_BROWSER "NO" CACHE STRING "Include source into the doc (YES/NO).")
    7 
    86CONFIGURE_FILE(
    97  ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in
    108  ${PROJECT_BINARY_DIR}/doc/Doxyfile
    11   @ONLY
    12 )
    13 
    14 CONFIGURE_FILE(
    15   ${PROJECT_SOURCE_DIR}/doc/mainpage.dox.in
    16   ${PROJECT_BINARY_DIR}/doc/mainpage.dox
    179  @ONLY
    1810)
     
    5850
    5951ENDIF()
    60 
    61 IF(WGET_FOUND)
    62 ADD_CUSTOM_TARGET(update-external-tags
    63   COMMAND ${CMAKE_COMMAND} -E make_directory dl
    64   # COMMAND ${CMAKE_COMMAND} -E copy libstdc++.tag dl
    65   COMMAND ${WGET_EXECUTABLE} wget -P dl -N libstdc++.tag.tmp http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/libstdc++.tag
    66   COMMAND ${CMAKE_COMMAND} -E rename dl/libstdc++.tag libstdc++.tag
    67   COMMAND ${CMAKE_COMMAND} -E remove dl/libstdc++.tag
    68   COMMAND ${CMAKE_COMMAND} -E remove_directory dl
    69   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    70   )
    71 ENDIF()
  • doc/Doxyfile.in

    r1037 r379  
    1 # Doxyfile 1.7.3
     1# Doxyfile 1.5.7.1
    22
    33#---------------------------------------------------------------------------
     
    55#---------------------------------------------------------------------------
    66DOXYFILE_ENCODING      = UTF-8
    7 PROJECT_NAME           =
    8 PROJECT_NUMBER         =
    9 PROJECT_BRIEF          =
    10 PROJECT_LOGO           =
     7PROJECT_NAME           = @PACKAGE_NAME@
     8PROJECT_NUMBER         = @PACKAGE_VERSION@
    119OUTPUT_DIRECTORY       =
    1210CREATE_SUBDIRS         = NO
     
    2422QT_AUTOBRIEF           = NO
    2523MULTILINE_CPP_IS_BRIEF = NO
     24DETAILS_AT_TOP         = YES
    2625INHERIT_DOCS           = NO
    2726SEPARATE_MEMBER_PAGES  = NO
     
    3231OPTIMIZE_FOR_FORTRAN   = NO
    3332OPTIMIZE_OUTPUT_VHDL   = NO
    34 EXTENSION_MAPPING      =
    3533BUILTIN_STL_SUPPORT    = YES
    3634CPP_CLI_SUPPORT        = NO
     
    5856HIDE_SCOPE_NAMES       = YES
    5957SHOW_INCLUDE_FILES     = YES
    60 FORCE_LOCAL_INCLUDES   = NO
    6158INLINE_INFO            = YES
    6259SORT_MEMBER_DOCS       = NO
    6360SORT_BRIEF_DOCS        = NO
    64 SORT_MEMBERS_CTORS_1ST = NO
    6561SORT_GROUP_NAMES       = NO
    6662SORT_BY_SCOPE_NAME     = NO
    67 STRICT_PROTO_MATCHING  = NO
    6863GENERATE_TODOLIST      = YES
    6964GENERATE_TESTLIST      = YES
     
    7772SHOW_NAMESPACES        = YES
    7873FILE_VERSION_FILTER    =
    79 LAYOUT_FILE            = "@abs_top_srcdir@/doc/DoxygenLayout.xml"
     74LAYOUT_FILE            = DoxygenLayout.xml
    8075#---------------------------------------------------------------------------
    8176# configuration options related to warning and progress messages
     
    9792                         "@abs_top_srcdir@/demo" \
    9893                         "@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"
    10195INPUT_ENCODING         = UTF-8
    10296FILE_PATTERNS          = *.h \
     
    118112FILTER_PATTERNS        =
    119113FILTER_SOURCE_FILES    = NO
    120 FILTER_SOURCE_PATTERNS =
    121114#---------------------------------------------------------------------------
    122115# configuration options related to source browsing
    123116#---------------------------------------------------------------------------
    124 SOURCE_BROWSER         = @LEMON_DOC_SOURCE_BROWSER@
     117SOURCE_BROWSER         = NO
    125118INLINE_SOURCES         = NO
    126119STRIP_CODE_COMMENTS    = YES
     
    145138HTML_FOOTER            =
    146139HTML_STYLESHEET        =
    147 HTML_COLORSTYLE_HUE    = 220
    148 HTML_COLORSTYLE_SAT    = 100
    149 HTML_COLORSTYLE_GAMMA  = 80
    150 HTML_TIMESTAMP         = YES
    151140HTML_ALIGN_MEMBERS     = YES
    152 HTML_DYNAMIC_SECTIONS  = YES
     141HTML_DYNAMIC_SECTIONS  = NO
    153142GENERATE_DOCSET        = NO
    154143DOCSET_FEEDNAME        = "Doxygen generated docs"
    155144DOCSET_BUNDLE_ID       = org.doxygen.Project
    156 DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
    157 DOCSET_PUBLISHER_NAME  = Publisher
    158145GENERATE_HTMLHELP      = NO
    159146CHM_FILE               =
     
    167154QHP_NAMESPACE          = org.doxygen.Project
    168155QHP_VIRTUAL_FOLDER     = doc
    169 QHP_CUST_FILTER_NAME   =
    170 QHP_CUST_FILTER_ATTRS  =
    171 QHP_SECT_FILTER_ATTRS  =
    172156QHG_LOCATION           =
    173 GENERATE_ECLIPSEHELP   = NO
    174 ECLIPSE_DOC_ID         = org.doxygen.Project
    175157DISABLE_INDEX          = NO
    176158ENUM_VALUES_PER_LINE   = 4
    177159GENERATE_TREEVIEW      = NO
    178 USE_INLINE_TREES       = NO
    179160TREEVIEW_WIDTH         = 250
    180 EXT_LINKS_IN_WINDOW    = NO
    181161FORMULA_FONTSIZE       = 10
    182 FORMULA_TRANSPARENT    = YES
    183 USE_MATHJAX            = NO
    184 MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
    185 SEARCHENGINE           = YES
    186 SERVER_BASED_SEARCH    = NO
    187162#---------------------------------------------------------------------------
    188163# configuration options related to the LaTeX output
     
    201176LATEX_BATCHMODE        = NO
    202177LATEX_HIDE_INDICES     = NO
    203 LATEX_SOURCE_CODE      = NO
    204178#---------------------------------------------------------------------------
    205179# configuration options related to the RTF output
     
    250224SKIP_FUNCTION_MACROS   = YES
    251225#---------------------------------------------------------------------------
    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#---------------------------------------------------------------------------
     228TAGFILES               = "@abs_top_srcdir@/doc/libstdc++.tag = http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/  "
    255229GENERATE_TAGFILE       = html/lemon.tag
    256230ALLEXTERNALS           = NO
     
    264238HIDE_UNDOC_RELATIONS   = YES
    265239HAVE_DOT               = YES
    266 DOT_NUM_THREADS        = 0
    267240DOT_FONTNAME           = FreeSans
    268241DOT_FONTSIZE           = 10
     
    282255DOT_PATH               =
    283256DOTFILE_DIRS           =
    284 MSCFILE_DIRS           =
    285257DOT_GRAPH_MAX_NODES    = 50
    286258MAX_DOT_GRAPH_DEPTH    = 0
     
    289261GENERATE_LEGEND        = YES
    290262DOT_CLEANUP            = YES
     263#---------------------------------------------------------------------------
     264# Configuration::additions related to the search engine   
     265#---------------------------------------------------------------------------
     266SEARCHENGINE           = NO
  • doc/DoxygenLayout.xml

    r1036 r316  
    33  <navindex>
    44    <tab type="mainpage" visible="yes" title=""/>
    5     <tab type="modules" visible="yes" title="" intro=""/>
     5    <tab type="modules" visible="yes" title=""/>
    66    <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=""/>
    1111    </tab>
    1212    <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=""/>
    1515    </tab>
    1616    <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=""/>
    1919    </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=""/>
    2323  </navindex>
    2424
  • lemon/CMakeLists.txt

    r1012 r726  
    77  ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
    88  ${CMAKE_CURRENT_BINARY_DIR}/config.h
    9 )
    10 
    11 CONFIGURE_FILE(
    12   ${CMAKE_CURRENT_SOURCE_DIR}/lemon.pc.cmake
    13   ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc
    14   @ONLY
    159)
    1610
     
    7367  COMPONENT headers
    7468)
    75 
    76 INSTALL(
    77   FILES ${CMAKE_CURRENT_BINARY_DIR}/lemon.pc
    78   DESTINATION lib/pkgconfig
    79 )
    80 
  • lemon/circulation.h

    r735 r688  
    454454    ///
    455455    /// Sets the tolerance used by algorithm.
    456     Circulation& tolerance(const Tolerance& tolerance) {
     456    Circulation& tolerance(const Tolerance& tolerance) const {
    457457      _tol = tolerance;
    458458      return *this;
     
    463463    /// Returns a const reference to the tolerance.
    464464    const Tolerance& tolerance() const {
    465       return _tol;
     465      return tolerance;
    466466    }
    467467
  • lemon/matching.h

    r945 r698  
    806806        _matching = new MatchingMap(_graph);
    807807      }
    808 
    809808      if (!_node_potential) {
    810809        _node_potential = new NodePotential(_graph);
    811810      }
    812 
    813811      if (!_blossom_set) {
    814812        _blossom_index = new IntNodeMap(_graph);
    815813        _blossom_set = new BlossomSet(*_blossom_index);
    816814        _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);
    820815      }
    821816
     
    824819        _node_heap_index = new IntArcMap(_graph);
    825820        _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));
    831822      }
    832823
     
    834825        _tree_set_index = new IntIntMap(_blossom_num);
    835826        _tree_set = new TreeSet(*_tree_set_index);
    836       } else {
    837         _tree_set_index->resize(_blossom_num);
    838       }
    839 
     827      }
    840828      if (!_delta1) {
    841829        _delta1_index = new IntNodeMap(_graph);
    842830        _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index);
    843831      }
    844 
    845832      if (!_delta2) {
    846833        _delta2_index = new IntIntMap(_blossom_num);
    847834        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    848       } else {
    849         _delta2_index->resize(_blossom_num);
    850       }
    851 
     835      }
    852836      if (!_delta3) {
    853837        _delta3_index = new IntEdgeMap(_graph);
    854838        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    855839      }
    856 
    857840      if (!_delta4) {
    858841        _delta4_index = new IntIntMap(_blossom_num);
    859842        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    860       } else {
    861         _delta4_index->resize(_blossom_num);
    862843      }
    863844    }
     
    17051686      createStructures();
    17061687
    1707       _blossom_node_list.clear();
    1708       _blossom_potential.clear();
    1709 
    17101688      for (ArcIt e(_graph); e != INVALID; ++e) {
    17111689        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    17211699        (*_delta4_index)[i] = _delta4->PRE_HEAP;
    17221700      }
    1723      
    1724       _delta1->clear();
    1725       _delta2->clear();
    1726       _delta3->clear();
    1727       _delta4->clear();
    1728       _blossom_set->clear();
    1729       _tree_set->clear();
    17301701
    17311702      int index = 0;
     
    17391710        }
    17401711        (*_node_index)[n] = index;
    1741         (*_node_data)[index].heap_index.clear();
    1742         (*_node_data)[index].heap.clear();
    17431712        (*_node_data)[index].pot = max;
    17441713        _delta1->push(n, max);
     
    22302199        _matching = new MatchingMap(_graph);
    22312200      }
    2232 
    22332201      if (!_node_potential) {
    22342202        _node_potential = new NodePotential(_graph);
    22352203      }
    2236 
    22372204      if (!_blossom_set) {
    22382205        _blossom_index = new IntNodeMap(_graph);
    22392206        _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;
    22432207        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
    22442208      }
     
    22492213        _node_data = new RangeMap<NodeData>(_node_num,
    22502214                                            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));
    22552215      }
    22562216
     
    22582218        _tree_set_index = new IntIntMap(_blossom_num);
    22592219        _tree_set = new TreeSet(*_tree_set_index);
    2260       } else {
    2261         _tree_set_index->resize(_blossom_num);
    2262       }
    2263 
     2220      }
    22642221      if (!_delta2) {
    22652222        _delta2_index = new IntIntMap(_blossom_num);
    22662223        _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
    2267       } else {
    2268         _delta2_index->resize(_blossom_num);
    2269       }
    2270 
     2224      }
    22712225      if (!_delta3) {
    22722226        _delta3_index = new IntEdgeMap(_graph);
    22732227        _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
    22742228      }
    2275 
    22762229      if (!_delta4) {
    22772230        _delta4_index = new IntIntMap(_blossom_num);
    22782231        _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
    2279       } else {
    2280         _delta4_index->resize(_blossom_num);
    22812232      }
    22822233    }
     
    29762927      createStructures();
    29772928
    2978       _blossom_node_list.clear();
    2979       _blossom_potential.clear();
    2980 
    29812929      for (ArcIt e(_graph); e != INVALID; ++e) {
    29822930        (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
     
    29892937        (*_delta4_index)[i] = _delta4->PRE_HEAP;
    29902938      }
    2991 
    2992       _delta2->clear();
    2993       _delta3->clear();
    2994       _delta4->clear();
    2995       _blossom_set->clear();
    2996       _tree_set->clear();
    29972939
    29982940      int index = 0;
     
    30062948        }
    30072949        (*_node_index)[n] = index;
    3008         (*_node_data)[index].heap_index.clear();
    3009         (*_node_data)[index].heap.clear();
    30102950        (*_node_data)[index].pot = max;
    30112951        int blossom =
  • lemon/network_simplex.h

    r976 r710  
    10431043        ART_COST = std::numeric_limits<Cost>::max() / 2 + 1;
    10441044      } else {
    1045         ART_COST = 0;
     1045        ART_COST = std::numeric_limits<Cost>::min();
    10461046        for (int i = 0; i != _arc_num; ++i) {
    10471047          if (_cost[i] > ART_COST) ART_COST = _cost[i];
     
    14581458      if (_sum_supply == 0) {
    14591459        if (_stype == GEQ) {
    1460           Cost max_pot = -std::numeric_limits<Cost>::max();
     1460          Cost max_pot = std::numeric_limits<Cost>::min();
    14611461          for (int i = 0; i != _node_num; ++i) {
    14621462            if (_pi[i] > max_pot) max_pot = _pi[i];
  • lemon/preflow.h

    r1027 r688  
    375375    ///
    376376    /// Sets the tolerance used by algorithm.
    377     Preflow& tolerance(const Tolerance& tolerance) {
     377    Preflow& tolerance(const Tolerance& tolerance) const {
    378378      _tolerance = tolerance;
    379379      return *this;
     
    384384    /// Returns a const reference to the tolerance.
    385385    const Tolerance& tolerance() const {
    386       return _tolerance;
     386      return tolerance;
    387387    }
    388388
     
    526526          _flow->set(e, (*_capacity)[e]);
    527527          (*_excess)[u] += rem;
     528          if (u != _target && !_level->active(u)) {
     529            _level->activate(u);
     530          }
    528531        }
    529532      }
     
    535538          _flow->set(e, 0);
    536539          (*_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      }
    543545      return true;
    544546    }
     
    557559      _phase = true;
    558560
    559       while (true) {
     561      Node n = _level->highestActive();
     562      int level = _level->highestActiveLevel();
     563      while (n != INVALID) {
    560564        int num = _node_num;
    561565
    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) {
    571567          Value excess = (*_excess)[n];
    572568          int new_level = _level->maxLevel();
     
    634630            _level->deactivate(n);
    635631          }
     632
     633          n = _level->highestActive();
     634          level = _level->highestActiveLevel();
     635          --num;
    636636        }
    637637
    638638        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) {
    652640          Value excess = (*_excess)[n];
    653641          int new_level = _level->maxLevel();
     
    715703            _level->deactivate(n);
    716704          }
    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      }
    720718    }
    721719
  • lemon/suurballe.h

    r925 r670  
    5656  /// The default value is <tt>GR::ArcMap<int></tt>.
    5757  ///
    58   /// \warning Length values should be \e non-negative.
     58  /// \warning Length values should be \e non-negative \e integers.
    5959  ///
    6060  /// \note For finding node-disjoint paths this algorithm can be used
     
    253253      _graph(graph), _length(length), _flow(0), _local_flow(false),
    254254      _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    }
    256259
    257260    /// Destructor.
     
    518521    /// \pre \ref run() or \ref findPaths() must be called before using
    519522    /// this function.
    520     const Path& path(int i) const {
     523    Path path(int i) const {
    521524      return paths[i];
    522525    }
  • lemon/unionfind.h

    r945 r606  
    740740    void clear() {
    741741      items.clear();
    742       classes.clear();
     742      classes.clear;
    743743      firstClass = firstFreeClass = firstFreeItem = -1;
    744744    }
     
    12891289        first_free_class(-1), first_free_node(-1) {}
    12901290
    1291     /// \brief Clears the union-find data structure
    1292     ///
    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 
    13001291    /// \brief Insert a new node into a new component.
    13011292    ///
  • m4/lx_check_coin.m4

    r796 r674  
    8989        CBC_LDFLAGS="-L$with_coin/lib"
    9090      fi
    91       CBC_LIBS="-lOsi -lCbc -lCbcSolver -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"
    9292
    9393      lx_save_cxxflags="$CXXFLAGS"
  • test/CMakeLists.txt

    r1044 r726  
    77  ${PROJECT_BINARY_DIR}/lemon
    88)
    9 
    10 SET(TEST_WITH_VALGRIND "NO" CACHE STRING
    11   "Run the test with valgrind (YES/NO).")
    12 SET(VALGRIND_FLAGS "" CACHE STRING "Valgrind flags used by the tests.")
    139
    1410SET(TESTS
     
    4642
    4743IF(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)
    5445  SET(LP_TEST_LIBS lemon)
    5546
     
    8778
    8879IF(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)
    9581  SET(MIP_TEST_LIBS lemon)
    9682
     
    128114
    129115FOREACH(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)
    135117  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})
    144119ENDFOREACH()
  • test/mip_test.cc

    r795 r678  
    5151  if (stat ==  MipSolver::OPTIMAL) {
    5252    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;
    5554    check(std::abs(mip.solValue()-exp_opt) < 1e-3, sbuf.str());
    5655    //+ecvt(exp_opt,2)
  • test/preflow_test.cc

    r1027 r632  
    152152}
    153153
    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 
    178154int main() {
    179155
     
    266242        "The max flow value or the three min cut values are incorrect.");
    267243
    268   initFlowTest();
    269  
    270244  return 0;
    271245}
Note: See TracChangeset for help on using the changeset viewer.