0
9
0
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 |
#ifndef LEMON_BITS_PRED_MAP_PATH_H |
|
| 20 |
#define LEMON_BITS_PRED_MAP_PATH_H |
|
| 19 |
#ifndef LEMON_BITS_PATH_DUMP_H |
|
| 20 |
#define LEMON_BITS_PATH_DUMP_H |
|
| 21 | 21 |
|
| 22 | 22 |
#include <lemon/core.h> |
| 23 | 23 |
#include <lemon/concept_check.h> |
| 24 | 24 |
|
| 25 | 25 |
namespace lemon {
|
| 26 | 26 |
|
| 27 | 27 |
template <typename _Digraph, typename _PredMap> |
| 28 | 28 |
class PredMapPath {
|
| 29 | 29 |
public: |
| 30 | 30 |
typedef True RevPathTag; |
| 31 | 31 |
|
| 32 | 32 |
typedef _Digraph Digraph; |
| 33 | 33 |
typedef typename Digraph::Arc Arc; |
| 34 | 34 |
typedef _PredMap PredMap; |
| 35 | 35 |
|
| 36 | 36 |
PredMapPath(const Digraph& _digraph, const PredMap& _predMap, |
| 37 | 37 |
typename Digraph::Node _target) |
| 38 | 38 |
: digraph(_digraph), predMap(_predMap), target(_target) {}
|
| 39 | 39 |
|
| 40 | 40 |
int length() const {
|
| 41 | 41 |
int len = 0; |
| 42 | 42 |
typename Digraph::Node node = target; |
| 43 | 43 |
typename Digraph::Arc arc; |
| 44 | 44 |
while ((arc = predMap[node]) != INVALID) {
|
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 |
#ifndef LEMON_WINDOWS_H |
|
| 20 |
#define LEMON_WINDOWS_H |
|
| 19 |
#ifndef LEMON_BITS_WINDOWS_H |
|
| 20 |
#define LEMON_BITS_WINDOWS_H |
|
| 21 | 21 |
|
| 22 | 22 |
#include <string> |
| 23 | 23 |
|
| 24 | 24 |
namespace lemon {
|
| 25 | 25 |
namespace bits {
|
| 26 | 26 |
void getWinProcTimes(double &rtime, |
| 27 | 27 |
double &utime, double &stime, |
| 28 | 28 |
double &cutime, double &cstime); |
| 29 | 29 |
std::string getWinFormattedDate(); |
| 30 | 30 |
int getWinRndSeed(); |
| 31 | 31 |
} |
| 32 | 32 |
} |
| 33 | 33 |
|
| 34 | 34 |
#endif |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 |
#ifndef LEMON_CONCEPT_DIGRAPH_H |
|
| 20 |
#define LEMON_CONCEPT_DIGRAPH_H |
|
| 19 |
#ifndef LEMON_CONCEPTS_DIGRAPH_H |
|
| 20 |
#define LEMON_CONCEPTS_DIGRAPH_H |
|
| 21 | 21 |
|
| 22 | 22 |
///\ingroup graph_concepts |
| 23 | 23 |
///\file |
| 24 | 24 |
///\brief The concept of directed graphs. |
| 25 | 25 |
|
| 26 | 26 |
#include <lemon/core.h> |
| 27 | 27 |
#include <lemon/concepts/maps.h> |
| 28 | 28 |
#include <lemon/concept_check.h> |
| 29 | 29 |
#include <lemon/concepts/graph_components.h> |
| 30 | 30 |
|
| 31 | 31 |
namespace lemon {
|
| 32 | 32 |
namespace concepts {
|
| 33 | 33 |
|
| 34 | 34 |
/// \ingroup graph_concepts |
| 35 | 35 |
/// |
| 36 | 36 |
/// \brief Class describing the concept of directed graphs. |
| 37 | 37 |
/// |
| 38 | 38 |
/// This class describes the \ref concept "concept" of the |
| 39 | 39 |
/// immutable directed digraphs. |
| 40 | 40 |
/// |
| 41 | 41 |
/// Note that actual digraph implementation like @ref ListDigraph or |
| 42 | 42 |
/// @ref SmartDigraph may have several additional functionality. |
| 43 | 43 |
/// |
| 44 | 44 |
/// \sa concept |
| ... | ... |
@@ -463,25 +463,25 @@ |
| 463 | 463 |
///Assignment operator |
| 464 | 464 |
template <typename CMap> |
| 465 | 465 |
ArcMap& operator=(const CMap&) {
|
| 466 | 466 |
checkConcept<ReadMap<Arc, T>, CMap>(); |
| 467 | 467 |
return *this; |
| 468 | 468 |
} |
| 469 | 469 |
}; |
| 470 | 470 |
|
| 471 | 471 |
template <typename _Digraph> |
| 472 | 472 |
struct Constraints {
|
| 473 | 473 |
void constraints() {
|
| 474 | 474 |
checkConcept<IterableDigraphComponent<>, _Digraph>(); |
| 475 | 475 |
checkConcept<IDableDigraphComponent<>, _Digraph>(); |
| 476 | 476 |
checkConcept<MappableDigraphComponent<>, _Digraph>(); |
| 477 | 477 |
} |
| 478 | 478 |
}; |
| 479 | 479 |
|
| 480 | 480 |
}; |
| 481 | 481 |
|
| 482 | 482 |
} //namespace concepts |
| 483 | 483 |
} //namespace lemon |
| 484 | 484 |
|
| 485 | 485 |
|
| 486 | 486 |
|
| 487 |
#endif |
|
| 487 |
#endif |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 | 19 |
///\ingroup graph_concepts |
| 20 | 20 |
///\file |
| 21 | 21 |
///\brief The concept of Undirected Graphs. |
| 22 | 22 |
|
| 23 |
#ifndef LEMON_CONCEPT_GRAPH_H |
|
| 24 |
#define LEMON_CONCEPT_GRAPH_H |
|
| 23 |
#ifndef LEMON_CONCEPTS_GRAPH_H |
|
| 24 |
#define LEMON_CONCEPTS_GRAPH_H |
|
| 25 | 25 |
|
| 26 | 26 |
#include <lemon/concepts/graph_components.h> |
| 27 |
#include <lemon/concepts/graph.h> |
|
| 28 | 27 |
#include <lemon/core.h> |
| 29 | 28 |
|
| 30 | 29 |
namespace lemon {
|
| 31 | 30 |
namespace concepts {
|
| 32 | 31 |
|
| 33 | 32 |
/// \ingroup graph_concepts |
| 34 | 33 |
/// |
| 35 | 34 |
/// \brief Class describing the concept of Undirected Graphs. |
| 36 | 35 |
/// |
| 37 | 36 |
/// This class describes the common interface of all Undirected |
| 38 | 37 |
/// Graphs. |
| 39 | 38 |
/// |
| 40 | 39 |
/// As all concept describing classes it provides only interface |
| 41 | 40 |
/// without any sensible implementation. So any algorithm for |
| 42 | 41 |
/// undirected graph should compile with this class, but it will not |
| 43 | 42 |
/// run properly, of course. |
| 44 | 43 |
/// |
| 45 | 44 |
/// The LEMON undirected graphs also fulfill the concept of |
| 46 | 45 |
/// directed graphs (\ref lemon::concepts::Digraph "Digraph |
| 47 | 46 |
/// Concept"). Each edges can be seen as two opposite |
| 48 | 47 |
/// directed arc and consequently the undirected graph can be |
| 49 | 48 |
/// seen as the direceted graph of these directed arcs. The |
| 50 | 49 |
/// Graph has the Edge inner class for the edges and |
| 51 | 50 |
/// the Arc type for the directed arcs. The Arc type is |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 | 19 |
///\ingroup graph_concepts |
| 20 | 20 |
///\file |
| 21 | 21 |
///\brief The concept of graph components. |
| 22 | 22 |
|
| 23 | 23 |
|
| 24 |
#ifndef LEMON_CONCEPT_GRAPH_COMPONENTS_H |
|
| 25 |
#define LEMON_CONCEPT_GRAPH_COMPONENTS_H |
|
| 24 |
#ifndef LEMON_CONCEPTS_GRAPH_COMPONENTS_H |
|
| 25 |
#define LEMON_CONCEPTS_GRAPH_COMPONENTS_H |
|
| 26 | 26 |
|
| 27 | 27 |
#include <lemon/core.h> |
| 28 | 28 |
#include <lemon/concepts/maps.h> |
| 29 | 29 |
|
| 30 | 30 |
#include <lemon/bits/alteration_notifier.h> |
| 31 | 31 |
|
| 32 | 32 |
namespace lemon {
|
| 33 | 33 |
namespace concepts {
|
| 34 | 34 |
|
| 35 | 35 |
/// \brief Skeleton class for graph Node and Arc types |
| 36 | 36 |
/// |
| 37 | 37 |
/// This class describes the interface of Node and Arc (and Edge |
| 38 | 38 |
/// in undirected graphs) subtypes of graph types. |
| 39 | 39 |
/// |
| 40 | 40 |
/// \note This class is a template class so that we can use it to |
| 41 | 41 |
/// create graph skeleton classes. The reason for this is than Node |
| 42 | 42 |
/// and Arc types should \em not derive from the same base class. |
| 43 | 43 |
/// For Node you should instantiate it with character 'n' and for Arc |
| 44 | 44 |
/// with 'a'. |
| 45 | 45 |
|
| 46 | 46 |
#ifndef DOXYGEN |
| 47 | 47 |
template <char _selector = '0'> |
| 48 | 48 |
#endif |
| 49 | 49 |
class GraphItem {
|
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 | 19 |
///\ingroup concept |
| 20 | 20 |
///\file |
| 21 | 21 |
///\brief The concept of heaps. |
| 22 | 22 |
|
| 23 |
#ifndef LEMON_CONCEPT_HEAP_H |
|
| 24 |
#define LEMON_CONCEPT_HEAP_H |
|
| 23 |
#ifndef LEMON_CONCEPTS_HEAP_H |
|
| 24 |
#define LEMON_CONCEPTS_HEAP_H |
|
| 25 | 25 |
|
| 26 | 26 |
#include <lemon/core.h> |
| 27 | 27 |
#include <lemon/concept_check.h> |
| 28 | 28 |
|
| 29 | 29 |
namespace lemon {
|
| 30 | 30 |
|
| 31 | 31 |
namespace concepts {
|
| 32 | 32 |
|
| 33 | 33 |
/// \addtogroup concept |
| 34 | 34 |
/// @{
|
| 35 | 35 |
|
| 36 | 36 |
/// \brief The heap concept. |
| 37 | 37 |
/// |
| 38 | 38 |
/// Concept class describing the main interface of heaps. |
| 39 | 39 |
template <typename Priority, typename ItemIntMap> |
| 40 | 40 |
class Heap {
|
| 41 | 41 |
public: |
| 42 | 42 |
|
| 43 | 43 |
/// Type of the items stored in the heap. |
| 44 | 44 |
typedef typename ItemIntMap::Key Item; |
| 45 | 45 |
|
| 46 | 46 |
/// Type of the priorities. |
| 47 | 47 |
typedef Priority Prio; |
| 48 | 48 |
|
| ... | ... |
@@ -222,25 +222,25 @@ |
| 222 | 222 |
heap.set(own_item, own_prio); |
| 223 | 223 |
heap.decrease(own_item, own_prio); |
| 224 | 224 |
heap.increase(own_item, own_prio); |
| 225 | 225 |
|
| 226 | 226 |
heap.erase(item); |
| 227 | 227 |
heap.erase(own_item); |
| 228 | 228 |
heap.clear(); |
| 229 | 229 |
|
| 230 | 230 |
own_state = heap.state(own_item); |
| 231 | 231 |
heap.state(own_item, own_state); |
| 232 | 232 |
|
| 233 | 233 |
own_state = _Heap::PRE_HEAP; |
| 234 | 234 |
own_state = _Heap::IN_HEAP; |
| 235 | 235 |
own_state = _Heap::POST_HEAP; |
| 236 | 236 |
} |
| 237 | 237 |
|
| 238 | 238 |
_Heap& heap; |
| 239 | 239 |
ItemIntMap& map; |
| 240 | 240 |
}; |
| 241 | 241 |
}; |
| 242 | 242 |
|
| 243 | 243 |
/// @} |
| 244 | 244 |
} // namespace lemon |
| 245 | 245 |
} |
| 246 |
#endif |
|
| 246 |
#endif |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 |
#ifndef LEMON_CONCEPT_MAPS_H |
|
| 20 |
#define LEMON_CONCEPT_MAPS_H |
|
| 19 |
#ifndef LEMON_CONCEPTS_MAPS_H |
|
| 20 |
#define LEMON_CONCEPTS_MAPS_H |
|
| 21 | 21 |
|
| 22 | 22 |
#include <lemon/core.h> |
| 23 | 23 |
#include <lemon/concept_check.h> |
| 24 | 24 |
|
| 25 | 25 |
///\ingroup map_concepts |
| 26 | 26 |
///\file |
| 27 | 27 |
///\brief The concept of maps. |
| 28 | 28 |
|
| 29 | 29 |
namespace lemon {
|
| 30 | 30 |
|
| 31 | 31 |
namespace concepts {
|
| 32 | 32 |
|
| 33 | 33 |
/// \addtogroup map_concepts |
| 34 | 34 |
/// @{
|
| 35 | 35 |
|
| 36 | 36 |
/// Readable map concept |
| 37 | 37 |
|
| 38 | 38 |
/// Readable map concept. |
| 39 | 39 |
/// |
| 40 | 40 |
template<typename K, typename T> |
| 41 | 41 |
class ReadMap |
| 42 | 42 |
{
|
| 43 | 43 |
public: |
| 44 | 44 |
/// The key type of the map. |
| ... | ... |
@@ -192,25 +192,25 @@ |
| 192 | 192 |
m[own_key] = own_val; |
| 193 | 193 |
m[own_key] = own_ref; |
| 194 | 194 |
m[own_key] = own_cref; |
| 195 | 195 |
m[key] = m[own_key]; |
| 196 | 196 |
m[own_key] = m[key]; |
| 197 | 197 |
} |
| 198 | 198 |
const Key& key; |
| 199 | 199 |
Value& val; |
| 200 | 200 |
Reference ref; |
| 201 | 201 |
ConstReference cref; |
| 202 | 202 |
const typename _ReferenceMap::Key& own_key; |
| 203 | 203 |
typename _ReferenceMap::Value& own_val; |
| 204 | 204 |
typename _ReferenceMap::Reference own_ref; |
| 205 | 205 |
typename _ReferenceMap::ConstReference own_cref; |
| 206 | 206 |
_ReferenceMap& m; |
| 207 | 207 |
}; |
| 208 | 208 |
}; |
| 209 | 209 |
|
| 210 | 210 |
// @} |
| 211 | 211 |
|
| 212 | 212 |
} //namespace concepts |
| 213 | 213 |
|
| 214 | 214 |
} //namespace lemon |
| 215 | 215 |
|
| 216 |
#endif |
|
| 216 |
#endif |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2009 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 | 19 |
///\ingroup concept |
| 20 | 20 |
///\file |
| 21 | 21 |
///\brief Classes for representing paths in digraphs. |
| 22 | 22 |
/// |
| 23 | 23 |
|
| 24 |
#ifndef LEMON_CONCEPT_PATH_H |
|
| 25 |
#define LEMON_CONCEPT_PATH_H |
|
| 24 |
#ifndef LEMON_CONCEPTS_PATH_H |
|
| 25 |
#define LEMON_CONCEPTS_PATH_H |
|
| 26 | 26 |
|
| 27 | 27 |
#include <lemon/core.h> |
| 28 | 28 |
#include <lemon/concept_check.h> |
| 29 | 29 |
|
| 30 | 30 |
namespace lemon {
|
| 31 | 31 |
namespace concepts {
|
| 32 | 32 |
|
| 33 | 33 |
/// \addtogroup concept |
| 34 | 34 |
/// @{
|
| 35 | 35 |
|
| 36 | 36 |
/// \brief A skeleton structure for representing directed paths in |
| 37 | 37 |
/// a digraph. |
| 38 | 38 |
/// |
| 39 | 39 |
/// A skeleton structure for representing directed paths in a |
| 40 | 40 |
/// digraph. |
| 41 | 41 |
/// \tparam _Digraph The digraph type in which the path is. |
| 42 | 42 |
/// |
| 43 | 43 |
/// In a sense, the path can be treated as a list of arcs. The |
| 44 | 44 |
/// lemon path type stores just this list. As a consequence it |
| 45 | 45 |
/// cannot enumerate the nodes in the path and the zero length |
| 46 | 46 |
/// paths cannot store the source. |
| 47 | 47 |
/// |
| 48 | 48 |
template <typename _Digraph> |
| 49 | 49 |
class Path {
|
| ... | ... |
@@ -284,25 +284,25 @@ |
| 284 | 284 |
bool operator==(const RevArcIt&) const {return true;}
|
| 285 | 285 |
/// Comparison operator |
| 286 | 286 |
bool operator!=(const RevArcIt&) const {return true;}
|
| 287 | 287 |
/// Comparison operator |
| 288 | 288 |
bool operator<(const RevArcIt&) const {return false;}
|
| 289 | 289 |
|
| 290 | 290 |
}; |
| 291 | 291 |
|
| 292 | 292 |
template <typename _Path> |
| 293 | 293 |
struct Constraints {
|
| 294 | 294 |
void constraints() {
|
| 295 | 295 |
function_requires<_path_bits:: |
| 296 | 296 |
PathDumperConstraints<Digraph, _Path> >(); |
| 297 | 297 |
} |
| 298 | 298 |
}; |
| 299 | 299 |
|
| 300 | 300 |
}; |
| 301 | 301 |
|
| 302 | 302 |
|
| 303 | 303 |
///@} |
| 304 | 304 |
} |
| 305 | 305 |
|
| 306 | 306 |
} // namespace lemon |
| 307 | 307 |
|
| 308 |
#endif |
|
| 308 |
#endif |
| 1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
| 2 | 2 |
* |
| 3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
| 4 | 4 |
* |
| 5 | 5 |
* Copyright (C) 2003-2008 |
| 6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
| 7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
| 8 | 8 |
* |
| 9 | 9 |
* Permission to use, modify and distribute this software is granted |
| 10 | 10 |
* provided that this copyright notice appears in all copies. For |
| 11 | 11 |
* precise terms see the accompanying LICENSE file. |
| 12 | 12 |
* |
| 13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
| 14 | 14 |
* express or implied, and with no claim as to its suitability for any |
| 15 | 15 |
* purpose. |
| 16 | 16 |
* |
| 17 | 17 |
*/ |
| 18 | 18 |
|
| 19 |
#ifndef LEMON_LP_SKELETON |
|
| 20 |
#define LEMON_LP_SKELETON |
|
| 19 |
#ifndef LEMON_LP_SKELETON_H |
|
| 20 |
#define LEMON_LP_SKELETON_H |
|
| 21 | 21 |
|
| 22 | 22 |
#include <lemon/lp_base.h> |
| 23 | 23 |
|
| 24 | 24 |
///\file |
| 25 | 25 |
///\brief A skeleton file to implement LP solver interfaces |
| 26 | 26 |
namespace lemon {
|
| 27 | 27 |
|
| 28 | 28 |
///A skeleton class to implement LP solver interfaces |
| 29 | 29 |
class SkeletonSolverBase : public virtual LpBase {
|
| 30 | 30 |
int col_num,row_num; |
| 31 | 31 |
|
| 32 | 32 |
protected: |
| 33 | 33 |
|
| 34 | 34 |
SkeletonSolverBase() |
| 35 | 35 |
: col_num(-1), row_num(-1) {}
|
| 36 | 36 |
|
| 37 | 37 |
/// \e |
| 38 | 38 |
virtual int _addCol(); |
| 39 | 39 |
/// \e |
| 40 | 40 |
virtual int _addRow(); |
| 41 | 41 |
/// \e |
| 42 | 42 |
virtual void _eraseCol(int i); |
| 43 | 43 |
/// \e |
| 44 | 44 |
virtual void _eraseRow(int i); |
| ... | ... |
@@ -205,25 +205,25 @@ |
| 205 | 205 |
///\e |
| 206 | 206 |
|
| 207 | 207 |
///\bug Wrong interface |
| 208 | 208 |
/// |
| 209 | 209 |
virtual Value _getSolValue() const; |
| 210 | 210 |
|
| 211 | 211 |
///\e |
| 212 | 212 |
|
| 213 | 213 |
///\bug Wrong interface |
| 214 | 214 |
/// |
| 215 | 215 |
virtual ProblemType _getType() const; |
| 216 | 216 |
|
| 217 | 217 |
///\e |
| 218 | 218 |
virtual MipSkeleton* _newSolver() const; |
| 219 | 219 |
|
| 220 | 220 |
///\e |
| 221 | 221 |
virtual MipSkeleton* _cloneSolver() const; |
| 222 | 222 |
///\e |
| 223 | 223 |
virtual const char* _solverName() const; |
| 224 | 224 |
|
| 225 | 225 |
}; |
| 226 | 226 |
|
| 227 | 227 |
} //namespace lemon |
| 228 | 228 |
|
| 229 |
#endif |
|
| 229 |
#endif |
0 comments (0 inline)