1 /* -*- C++ -*- |
1 /* -*- C++ -*- |
2 * src/hugo/list_graph.h - Part of HUGOlib, a generic C++ optimization library |
2 * src/lemon/list_graph.h - Part of LEMON, a generic C++ optimization library |
3 * |
3 * |
4 * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
4 * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
5 * (Egervary Combinatorial Optimization Research Group, EGRES). |
5 * (Egervary Combinatorial Optimization Research Group, EGRES). |
6 * |
6 * |
7 * Permission to use, modify and distribute this software is granted |
7 * Permission to use, modify and distribute this software is granted |
12 * express or implied, and with no claim as to its suitability for any |
12 * express or implied, and with no claim as to its suitability for any |
13 * purpose. |
13 * purpose. |
14 * |
14 * |
15 */ |
15 */ |
16 |
16 |
17 #ifndef HUGO_LIST_GRAPH_H |
17 #ifndef LEMON_LIST_GRAPH_H |
18 #define HUGO_LIST_GRAPH_H |
18 #define LEMON_LIST_GRAPH_H |
19 |
19 |
20 ///\ingroup graphs |
20 ///\ingroup graphs |
21 ///\file |
21 ///\file |
22 ///\brief ListGraph, SymListGraph, NodeSet and EdgeSet classes. |
22 ///\brief ListGraph, SymListGraph, NodeSet and EdgeSet classes. |
23 |
23 |
24 #include <vector> |
24 #include <vector> |
25 #include <climits> |
25 #include <climits> |
26 |
26 |
27 #include <hugo/invalid.h> |
27 #include <lemon/invalid.h> |
28 |
28 |
29 #include <hugo/map_registry.h> |
29 #include <lemon/map_registry.h> |
30 #include <hugo/array_map.h> |
30 #include <lemon/array_map.h> |
31 |
31 |
32 #include <hugo/sym_map.h> |
32 #include <lemon/sym_map.h> |
33 |
33 |
34 #include <hugo/map_defines.h> |
34 #include <lemon/map_defines.h> |
35 |
35 |
36 |
36 |
37 namespace hugo { |
37 namespace lemon { |
38 |
38 |
39 /// \addtogroup graphs |
39 /// \addtogroup graphs |
40 /// @{ |
40 /// @{ |
41 |
41 |
42 ///A list graph class. |
42 ///A list graph class. |
421 |
421 |
422 ///The purpose of this graph structure is to handle graphs |
422 ///The purpose of this graph structure is to handle graphs |
423 ///having bidirectional edges. Here the function \c addEdge(u,v) adds a pair |
423 ///having bidirectional edges. Here the function \c addEdge(u,v) adds a pair |
424 ///of oppositely directed edges. |
424 ///of oppositely directed edges. |
425 ///There is a new edge map type called |
425 ///There is a new edge map type called |
426 ///\ref hugo::SymListGraph::SymEdgeMap "SymEdgeMap" |
426 ///\ref lemon::SymListGraph::SymEdgeMap "SymEdgeMap" |
427 ///that complements this |
427 ///that complements this |
428 ///feature by |
428 ///feature by |
429 ///storing shared values for the edge pairs. The usual |
429 ///storing shared values for the edge pairs. The usual |
430 ///\ref hugo::skeleton::StaticGraph::EdgeMap "EdgeMap" |
430 ///\ref lemon::skeleton::StaticGraph::EdgeMap "EdgeMap" |
431 ///can be used |
431 ///can be used |
432 ///as well. |
432 ///as well. |
433 /// |
433 /// |
434 ///The oppositely directed edge can also be obtained easily |
434 ///The oppositely directed edge can also be obtained easily |
435 ///using \ref hugo::SymListGraph::opposite() "opposite()" member function. |
435 ///using \ref lemon::SymListGraph::opposite() "opposite()" member function. |
436 /// |
436 /// |
437 ///Here erase(Edge) deletes a pair of edges. |
437 ///Here erase(Edge) deletes a pair of edges. |
438 /// |
438 /// |
439 ///\todo this date structure need some reconsiderations. Maybe it |
439 ///\todo this date structure need some reconsiderations. Maybe it |
440 ///should be implemented independently from ListGraph. |
440 ///should be implemented independently from ListGraph. |