Changeset 1038:a2d142bb5d3c in lemon-main
- Timestamp:
- 03/01/13 17:59:08 (12 years ago)
- Branch:
- default
- Parents:
- 1030:4936be66d2f5 (diff), 1037:d3dcc49e6403 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Phase:
- public
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/CMakeLists.txt
r983 r1038 47 47 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/planar.png ${CMAKE_CURRENT_SOURCE_DIR}/images/planar.eps 48 48 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/strongly_connected_components.png ${CMAKE_CURRENT_SOURCE_DIR}/images/strongly_connected_components.eps 49 COMMAND ${GHOSTSCRIPT_EXECUTABLE} ${GHOSTSCRIPT_OPTIONS} -r18 -sOutputFile=gen-images/tsp.png ${CMAKE_CURRENT_SOURCE_DIR}/images/tsp.eps 49 50 COMMAND ${CMAKE_COMMAND} -E remove_directory html 50 51 COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/bib2dox.py ${CMAKE_CURRENT_SOURCE_DIR}/references.bib >references.dox -
doc/CMakeLists.txt
r1032 r1038 11 11 @ONLY 12 12 ) 13 14 CONFIGURE_FILE( 15 ${PROJECT_SOURCE_DIR}/doc/mainpage.dox.in 16 ${PROJECT_BINARY_DIR}/doc/mainpage.dox 17 @ONLY 18 ) 19 20 # Copy doc from source (if exists) 21 IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/html AND 22 NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html) 23 MESSAGE(STATUS "Copy doc from source tree") 24 EXECUTE_PROCESS( 25 COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/html ${CMAKE_CURRENT_BINARY_DIR}/html 26 ) 27 ENDIF() 13 28 14 29 IF(DOXYGEN_EXECUTABLE AND PYTHONINTERP_FOUND AND GHOSTSCRIPT_EXECUTABLE) -
doc/groups.dox
r1003 r1038 559 559 \image latex planar.eps "Plane graph" width=\textwidth 560 560 */ 561 562 /** 563 @defgroup tsp Traveling Salesman Problem 564 @ingroup algs 565 \brief Algorithms for the symmetric traveling salesman problem 566 567 This group contains basic heuristic algorithms for the the symmetric 568 \e traveling \e salesman \e problem (TSP). 569 Given an \ref FullGraph "undirected full graph" with a cost map on its edges, 570 the problem is to find a shortest possible tour that visits each node exactly 571 once (i.e. the minimum cost Hamiltonian cycle). 572 573 These TSP algorithms are intended to be used with a \e metric \e cost 574 \e function, i.e. the edge costs should satisfy the triangle inequality. 575 Otherwise the algorithms could yield worse results. 576 577 LEMON provides five well-known heuristics for solving symmetric TSP: 578 - \ref NearestNeighborTsp Neareast neighbor algorithm 579 - \ref GreedyTsp Greedy algorithm 580 - \ref InsertionTsp Insertion heuristic (with four selection methods) 581 - \ref ChristofidesTsp Christofides algorithm 582 - \ref Opt2Tsp 2-opt algorithm 583 584 \ref NearestNeighborTsp, \ref GreedyTsp, and \ref InsertionTsp are the fastest 585 solution methods. Furthermore, \ref InsertionTsp is usually quite effective. 586 587 \ref ChristofidesTsp is somewhat slower, but it has the best guaranteed 588 approximation factor: 3/2. 589 590 \ref Opt2Tsp usually provides the best results in practice, but 591 it is the slowest method. It can also be used to improve given tours, 592 for example, the results of other algorithms. 593 594 \image html tsp.png 595 \image latex tsp.eps "Traveling salesman problem" width=\textwidth 596 */ 561 597 562 598 /** -
doc/groups.dox
r1036 r1038 407 407 strongly polynomial \ref klein67primal, \ref goldberg89cyclecanceling. 408 408 409 In general NetworkSimplex is the most efficient implementation, 410 but in special cases other algorithms could be faster. 409 In general, \ref NetworkSimplex and \ref CostScaling are the most efficient 410 implementations. 411 \ref NetworkSimplex is usually the fastest on relatively small graphs (up to 412 several thousands of nodes) and on dense graphs, while \ref CostScaling is 413 typically more efficient on large graphs (e.g. hundreds of thousands of 414 nodes or above), especially if they are sparse. 415 However, other algorithms could be faster in special cases. 411 416 For example, if the total supply and/or capacities are rather small, 412 CapacityScaling is usually the fastest algorithm (without effective scaling). 417 \ref CapacityScaling is usually the fastest algorithm (without effective scaling). 418 419 These classes are intended to be used with integer-valued input data 420 (capacities, supply values, and costs), except for \ref CapacityScaling, 421 which is capable of handling real-valued arc costs (other numerical 422 data are required to be integer). 413 423 */ 414 424 … … 449 459 450 460 This group contains the algorithms for finding minimum mean cycles 451 \ref clrs01algorithms, \ref amo93networkflows.461 \ref amo93networkflows, \ref karp78characterization. 452 462 453 463 The \e minimum \e mean \e cycle \e problem is to find a directed cycle … … 465 475 466 476 LEMON contains three algorithms for solving the minimum mean cycle problem: 467 - \ref KarpMmc Karp's original algorithm \ref amo93networkflows, 468 \ref dasdan98minmeancycle. 477 - \ref KarpMmc Karp's original algorithm \ref karp78characterization. 469 478 - \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved 470 version of Karp's algorithm \ref dasdan98minmeancycle.479 version of Karp's algorithm \ref hartmann93finding. 471 480 - \ref HowardMmc Howard's policy iteration algorithm 472 \ref dasdan98minmeancycle .473 474 In practice, the \ref HowardMmc "Howard" algorithm provedto be by far the481 \ref dasdan98minmeancycle, \ref dasdan04experimental. 482 483 In practice, the \ref HowardMmc "Howard" algorithm turned out to be by far the 475 484 most efficient one, though the best known theoretical bound on its running 476 485 time is exponential. … … 540 549 541 550 /** 542 @defgroup planar Planar ityEmbedding and Drawing551 @defgroup planar Planar Embedding and Drawing 543 552 @ingroup algs 544 553 \brief Algorithms for planarity checking, embedding and drawing -
test/CMakeLists.txt
r1030 r1038 53 53 suurballe_test 54 54 time_measure_test 55 tsp_test 55 56 unionfind_test 56 57 ) -
test/CMakeLists.txt
r1035 r1038 8 8 ) 9 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.") 13 10 14 SET(TESTS 11 15 adaptors_test 16 arc_look_up_test 12 17 bellman_ford_test 13 18 bfs_test 19 bpgraph_test 14 20 circulation_test 15 21 connectivity_test … … 30 36 heap_test 31 37 kruskal_test 38 lgf_reader_writer_test 39 lgf_test 32 40 maps_test 33 41 matching_test … … 70 78 TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS}) 71 79 ADD_TEST(lp_test lp_test) 80 ADD_DEPENDENCIES(check lp_test) 72 81 73 82 IF(WIN32 AND LEMON_HAVE_GLPK) … … 85 94 GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) 86 95 ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD 87 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex 91.dll ${TARGET_PATH}96 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} 88 97 ) 89 98 ENDIF() … … 111 120 TARGET_LINK_LIBRARIES(mip_test ${MIP_TEST_LIBS}) 112 121 ADD_TEST(mip_test mip_test) 122 ADD_DEPENDENCIES(check mip_test) 113 123 114 124 IF(WIN32 AND LEMON_HAVE_GLPK) … … 126 136 GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) 127 137 ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD 128 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex 91.dll ${TARGET_PATH}138 COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} 129 139 ) 130 140 ENDIF() … … 138 148 ENDIF() 139 149 TARGET_LINK_LIBRARIES(${TEST_NAME} lemon) 140 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 150 IF(TEST_WITH_VALGRIND) 151 ADD_TEST(${TEST_NAME} 152 valgrind --error-exitcode=1 ${VALGRIND_FLAGS} 153 ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME} ) 154 ELSE() 155 ADD_TEST(${TEST_NAME} ${TEST_NAME}) 156 ENDIF() 141 157 ADD_DEPENDENCIES(check ${TEST_NAME}) 142 158 ENDFOREACH()
Note: See TracChangeset
for help on using the changeset viewer.