gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge #301
3 2 3
merge default
4 files changed with 56 insertions and 55 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -59,9 +59,9 @@
59 59
	lemon/assert.h \
60 60
	lemon/bellman_ford.h \
61 61
	lemon/bfs.h \
62 62
	lemon/bin_heap.h \
63
	lemon/binom_heap.h \
63
	lemon/binomial_heap.h \
64 64
	lemon/bucket_heap.h \
65 65
	lemon/capacity_scaling.h \
66 66
	lemon/cbc.h \
67 67
	lemon/circulation.h \
... ...
@@ -74,17 +74,17 @@
74 74
	lemon/counter.h \
75 75
	lemon/cplex.h \
76 76
	lemon/cycle_canceling.h \
77 77
	lemon/dfs.h \
78
	lemon/dheap.h \
78 79
	lemon/dijkstra.h \
79 80
	lemon/dim2.h \
80 81
	lemon/dimacs.h \
81 82
	lemon/edge_set.h \
82 83
	lemon/elevator.h \
83 84
	lemon/error.h \
84 85
	lemon/euler.h \
85 86
	lemon/fib_heap.h \
86
	lemon/fourary_heap.h \
87 87
	lemon/full_graph.h \
88 88
	lemon/glpk.h \
89 89
	lemon/gomory_hu.h \
90 90
	lemon/graph_to_eps.h \
... ...
@@ -92,9 +92,8 @@
92 92
	lemon/hartmann_orlin.h \
93 93
	lemon/howard.h \
94 94
	lemon/hypercube_graph.h \
95 95
	lemon/karp.h \
96
	lemon/kary_heap.h \
97 96
	lemon/kruskal.h \
98 97
	lemon/hao_orlin.h \
99 98
	lemon/lgf_reader.h \
100 99
	lemon/lgf_writer.h \
... ...
@@ -111,8 +110,9 @@
111 110
	lemon/pairing_heap.h \
112 111
	lemon/path.h \
113 112
	lemon/planarity.h \
114 113
	lemon/preflow.h \
114
	lemon/quad_heap.h \
115 115
	lemon/radix_heap.h \
116 116
	lemon/radix_sort.h \
117 117
	lemon/random.h \
118 118
	lemon/smart_graph.h \
Ignore white space 6 line context
... ...
@@ -15,10 +15,10 @@
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19
#ifndef LEMON_BINOM_HEAP_H
20
#define LEMON_BINOM_HEAP_H
19
#ifndef LEMON_BINOMIAL_HEAP_H
20
#define LEMON_BINOMIAL_HEAP_H
21 21

	
22 22
///\file
23 23
///\ingroup heaps
24 24
///\brief Binomial Heap implementation.
... ...
@@ -52,9 +52,9 @@
52 52
  template <typename PR, typename IM, typename CMP>
53 53
#else
54 54
  template <typename PR, typename IM, typename CMP = std::less<PR> >
55 55
#endif
56
  class BinomHeap {
56
  class BinomialHeap {
57 57
  public:
58 58
    /// Type of the item-int map.
59 59
    typedef IM ItemIntMap;
60 60
    /// Type of the priorities.
... ...
@@ -93,9 +93,9 @@
93 93
    /// Constructor.
94 94
    /// \param map A map that assigns \c int values to the items.
95 95
    /// It is used internally to handle the cross references.
96 96
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
97
    explicit BinomHeap(ItemIntMap &map)
97
    explicit BinomialHeap(ItemIntMap &map)
98 98
      : _min(0), _head(-1), _iim(map), _num_items(0) {}
99 99

	
100 100
    /// \brief Constructor.
101 101
    ///
... ...
@@ -103,9 +103,9 @@
103 103
    /// \param map A map that assigns \c int values to the items.
104 104
    /// It is used internally to handle the cross references.
105 105
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
106 106
    /// \param comp The function object used for comparing the priorities.
107
    BinomHeap(ItemIntMap &map, const Compare &comp)
107
    BinomialHeap(ItemIntMap &map, const Compare &comp)
108 108
      : _min(0), _head(-1), _iim(map), _comp(comp), _num_items(0) {}
109 109

	
110 110
    /// \brief The number of items stored in the heap.
111 111
    ///
... ...
@@ -423,9 +423,9 @@
423 423

	
424 424
  private:
425 425

	
426 426
    class Store {
427
      friend class BinomHeap;
427
      friend class BinomialHeap;
428 428

	
429 429
      Item name;
430 430
      int parent;
431 431
      int right_neighbor;
... ...
@@ -440,6 +440,6 @@
440 440
  };
441 441

	
442 442
} //namespace lemon
443 443

	
444
#endif //LEMON_BINOM_HEAP_H
444
#endif //LEMON_BINOMIAL_HEAP_H
445 445

	
Ignore white space 6 line context
... ...
@@ -15,14 +15,14 @@
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19
#ifndef LEMON_KARY_HEAP_H
20
#define LEMON_KARY_HEAP_H
19
#ifndef LEMON_DHEAP_H
20
#define LEMON_DHEAP_H
21 21

	
22 22
///\ingroup heaps
23 23
///\file
24
///\brief Fourary heap implementation.
24
///\brief D-ary heap implementation.
25 25

	
26 26
#include <vector>
27 27
#include <utility>
28 28
#include <functional>
... ...
@@ -30,23 +30,23 @@
30 30
namespace lemon {
31 31

	
32 32
  /// \ingroup heaps
33 33
  ///
34
  ///\brief K-ary heap data structure.
34
  ///\brief D-ary heap data structure.
35 35
  ///
36
  /// This class implements the \e K-ary \e heap data structure.
36
  /// This class implements the \e D-ary \e heap data structure.
37 37
  /// It fully conforms to the \ref concepts::Heap "heap concept".
38 38
  ///
39
  /// The \ref KaryHeap "K-ary heap" is a generalization of the
39
  /// The \ref DHeap "D-ary heap" is a generalization of the
40 40
  /// \ref BinHeap "binary heap" structure, its nodes have at most
41
  /// \c K children, instead of two.
42
  /// \ref BinHeap and \ref FouraryHeap are specialized implementations
43
  /// of this structure for <tt>K=2</tt> and <tt>K=4</tt>, respectively.
41
  /// \c D children, instead of two.
42
  /// \ref BinHeap and \ref QuadHeap are specialized implementations
43
  /// of this structure for <tt>D=2</tt> and <tt>D=4</tt>, respectively.
44 44
  ///
45 45
  /// \tparam PR Type of the priorities of the items.
46 46
  /// \tparam IM A read-writable item map with \c int values, used
47 47
  /// internally to handle the cross references.
48
  /// \tparam K The degree of the heap, each node have at most \e K
48
  /// \tparam D The degree of the heap, each node have at most \e D
49 49
  /// children. The default is 16. Powers of two are suggested to use
50 50
  /// so that the multiplications and divisions needed to traverse the
51 51
  /// nodes of the heap could be performed faster.
52 52
  /// \tparam CMP A functor class for comparing the priorities.
... ...
@@ -54,14 +54,14 @@
54 54
  ///
55 55
  ///\sa BinHeap
56 56
  ///\sa FouraryHeap
57 57
#ifdef DOXYGEN
58
  template <typename PR, typename IM, int K, typename CMP>
58
  template <typename PR, typename IM, int D, typename CMP>
59 59
#else
60
  template <typename PR, typename IM, int K = 16,
60
  template <typename PR, typename IM, int D = 16,
61 61
            typename CMP = std::less<PR> >
62 62
#endif
63
  class KaryHeap {
63
  class DHeap {
64 64
  public:
65 65
    /// Type of the item-int map.
66 66
    typedef IM ItemIntMap;
67 67
    /// Type of the priorities.
... ...
@@ -98,18 +98,18 @@
98 98
    /// Constructor.
99 99
    /// \param map A map that assigns \c int values to the items.
100 100
    /// It is used internally to handle the cross references.
101 101
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
102
    explicit KaryHeap(ItemIntMap &map) : _iim(map) {}
102
    explicit DHeap(ItemIntMap &map) : _iim(map) {}
103 103

	
104 104
    /// \brief Constructor.
105 105
    ///
106 106
    /// Constructor.
107 107
    /// \param map A map that assigns \c int values to the items.
108 108
    /// It is used internally to handle the cross references.
109 109
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
110 110
    /// \param comp The function object used for comparing the priorities.
111
    KaryHeap(ItemIntMap &map, const Compare &comp)
111
    DHeap(ItemIntMap &map, const Compare &comp)
112 112
      : _iim(map), _comp(comp) {}
113 113

	
114 114
    /// \brief The number of items stored in the heap.
115 115
    ///
... ...
@@ -130,10 +130,10 @@
130 130
    /// for each item.
131 131
    void clear() { _data.clear(); }
132 132

	
133 133
  private:
134
    int parent(int i) { return (i-1)/K; }
135
    int firstChild(int i) { return K*i+1; }
134
    int parent(int i) { return (i-1)/D; }
135
    int firstChild(int i) { return D*i+1; }
136 136

	
137 137
    bool less(const Pair &p1, const Pair &p2) const {
138 138
      return _comp(p1.second, p2.second);
139 139
    }
... ...
@@ -150,11 +150,11 @@
150 150

	
151 151
    void bubbleDown(int hole, Pair p, int length) {
152 152
      if( length>1 ) {
153 153
        int child = firstChild(hole);
154
        while( child+K<=length ) {
154
        while( child+D<=length ) {
155 155
          int min=child;
156
          for (int i=1; i<K; ++i) {
156
          for (int i=1; i<D; ++i) {
157 157
            if( less(_data[child+i], _data[min]) )
158 158
              min=child+i;
159 159
          }
160 160
          if( !less(_data[min], p) )
... ...
@@ -344,9 +344,9 @@
344 344
      _iim.set(j, idx);
345 345
      _data[idx].first=j;
346 346
    }
347 347

	
348
  }; // class KaryHeap
348
  }; // class DHeap
349 349

	
350 350
} // namespace lemon
351 351

	
352
#endif // LEMON_KARY_HEAP_H
352
#endif // LEMON_DHEAP_H
Ignore white space 6 line context
... ...
@@ -15,14 +15,14 @@
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19
#ifndef LEMON_FOURARY_HEAP_H
20
#define LEMON_FOURARY_HEAP_H
19
#ifndef LEMON_QUAD_HEAP_H
20
#define LEMON_QUAD_HEAP_H
21 21

	
22 22
///\ingroup heaps
23 23
///\file
24
///\brief Fourary heap implementation.
24
///\brief Fourary (quaternary) heap implementation.
25 25

	
26 26
#include <vector>
27 27
#include <utility>
28 28
#include <functional>
... ...
@@ -30,15 +30,16 @@
30 30
namespace lemon {
31 31

	
32 32
  /// \ingroup heaps
33 33
  ///
34
  ///\brief Fourary heap data structure.
34
  ///\brief Fourary (quaternary) heap data structure.
35 35
  ///
36
  /// This class implements the \e fourary \e heap data structure.
36
  /// This class implements the \e Fourary (\e quaternary) \e heap
37
  /// data structure.
37 38
  /// It fully conforms to the \ref concepts::Heap "heap concept".
38 39
  ///
39
  /// The fourary heap is a specialization of the \ref KaryHeap "K-ary heap"
40
  /// for <tt>K=4</tt>. It is similar to the \ref BinHeap "binary heap",
40
  /// The fourary heap is a specialization of the \ref DHeap "D-ary heap"
41
  /// for <tt>D=4</tt>. It is similar to the \ref BinHeap "binary heap",
41 42
  /// but its nodes have at most four children, instead of two.
42 43
  ///
43 44
  /// \tparam PR Type of the priorities of the items.
44 45
  /// \tparam IM A read-writable item map with \c int values, used
... ...
@@ -46,15 +47,15 @@
46 47
  /// \tparam CMP A functor class for comparing the priorities.
47 48
  /// The default is \c std::less<PR>.
48 49
  ///
49 50
  ///\sa BinHeap
50
  ///\sa KaryHeap
51
  ///\sa DHeap
51 52
#ifdef DOXYGEN
52 53
  template <typename PR, typename IM, typename CMP>
53 54
#else
54 55
  template <typename PR, typename IM, typename CMP = std::less<PR> >
55 56
#endif
56
  class FouraryHeap {
57
  class QuadHeap {
57 58
  public:
58 59
    /// Type of the item-int map.
59 60
    typedef IM ItemIntMap;
60 61
    /// Type of the priorities.
... ...
@@ -91,18 +92,18 @@
91 92
    /// Constructor.
92 93
    /// \param map A map that assigns \c int values to the items.
93 94
    /// It is used internally to handle the cross references.
94 95
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
95
    explicit FouraryHeap(ItemIntMap &map) : _iim(map) {}
96
    explicit QuadHeap(ItemIntMap &map) : _iim(map) {}
96 97

	
97 98
    /// \brief Constructor.
98 99
    ///
99 100
    /// Constructor.
100 101
    /// \param map A map that assigns \c int values to the items.
101 102
    /// It is used internally to handle the cross references.
102 103
    /// The assigned value must be \c PRE_HEAP (<tt>-1</tt>) for each item.
103 104
    /// \param comp The function object used for comparing the priorities.
104
    FouraryHeap(ItemIntMap &map, const Compare &comp)
105
    QuadHeap(ItemIntMap &map, const Compare &comp)
105 106
      : _iim(map), _comp(comp) {}
106 107

	
107 108
    /// \brief The number of items stored in the heap.
108 109
    ///
... ...
@@ -334,9 +335,9 @@
334 335
      _iim.set(j, idx);
335 336
      _data[idx].first = j;
336 337
    }
337 338

	
338
  }; // class FouraryHeap
339
  }; // class QuadHeap
339 340

	
340 341
} // namespace lemon
341 342

	
342 343
#endif // LEMON_FOURARY_HEAP_H
Ignore white space 8 line context
... ...
@@ -29,14 +29,14 @@
29 29
#include <lemon/dijkstra.h>
30 30
#include <lemon/maps.h>
31 31

	
32 32
#include <lemon/bin_heap.h>
33
#include <lemon/fourary_heap.h>
34
#include <lemon/kary_heap.h>
33
#include <lemon/quad_heap.h>
34
#include <lemon/dheap.h>
35 35
#include <lemon/fib_heap.h>
36 36
#include <lemon/pairing_heap.h>
37 37
#include <lemon/radix_heap.h>
38
#include <lemon/binom_heap.h>
38
#include <lemon/binomial_heap.h>
39 39
#include <lemon/bucket_heap.h>
40 40

	
41 41
#include "test_tools.h"
42 42

	
... ...
@@ -184,28 +184,28 @@
184 184
    checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();
185 185
    dijkstraHeapTest<NodeHeap>(digraph, length, source);
186 186
  }
187 187

	
188
  // FouraryHeap
188
  // QuadHeap
189 189
  {
190
    typedef FouraryHeap<Prio, ItemIntMap> IntHeap;
190
    typedef QuadHeap<Prio, ItemIntMap> IntHeap;
191 191
    checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();
192 192
    heapSortTest<IntHeap>();
193 193
    heapIncreaseTest<IntHeap>();
194 194

	
195
    typedef FouraryHeap<Prio, IntNodeMap > NodeHeap;
195
    typedef QuadHeap<Prio, IntNodeMap > NodeHeap;
196 196
    checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();
197 197
    dijkstraHeapTest<NodeHeap>(digraph, length, source);
198 198
  }
199 199

	
200
  // KaryHeap
200
  // DHeap
201 201
  {
202
    typedef KaryHeap<Prio, ItemIntMap> IntHeap;
202
    typedef DHeap<Prio, ItemIntMap> IntHeap;
203 203
    checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();
204 204
    heapSortTest<IntHeap>();
205 205
    heapIncreaseTest<IntHeap>();
206 206

	
207
    typedef KaryHeap<Prio, IntNodeMap > NodeHeap;
207
    typedef DHeap<Prio, IntNodeMap > NodeHeap;
208 208
    checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();
209 209
    dijkstraHeapTest<NodeHeap>(digraph, length, source);
210 210
  }
211 211

	
... ...
@@ -244,16 +244,16 @@
244 244
    checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();
245 245
    dijkstraHeapTest<NodeHeap>(digraph, length, source);
246 246
  }
247 247

	
248
  // BinomHeap
248
  // BinomialHeap
249 249
  {
250
    typedef BinomHeap<Prio, ItemIntMap> IntHeap;
250
    typedef BinomialHeap<Prio, ItemIntMap> IntHeap;
251 251
    checkConcept<Heap<Prio, ItemIntMap>, IntHeap>();
252 252
    heapSortTest<IntHeap>();
253 253
    heapIncreaseTest<IntHeap>();
254 254

	
255
    typedef BinomHeap<Prio, IntNodeMap > NodeHeap;
255
    typedef BinomialHeap<Prio, IntNodeMap > NodeHeap;
256 256
    checkConcept<Heap<Prio, IntNodeMap >, NodeHeap>();
257 257
    dijkstraHeapTest<NodeHeap>(digraph, length, source);
258 258
  }
259 259

	
0 comments (0 inline)