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 ↑
Show white space 6 line context
... ...
@@ -60,7 +60,7 @@
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 \
... ...
@@ -75,6 +75,7 @@
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 \
... ...
@@ -83,7 +84,6 @@
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 \
... ...
@@ -93,7 +93,6 @@
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 \
... ...
@@ -112,6 +111,7 @@
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 \
Show white space 6 line context
... ...
@@ -16,8 +16,8 @@
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
... ...
@@ -53,7 +53,7 @@
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;
... ...
@@ -94,7 +94,7 @@
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.
... ...
@@ -104,7 +104,7 @@
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.
... ...
@@ -424,7 +424,7 @@
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;
... ...
@@ -441,5 +441,5 @@
441 441

	
442 442
} //namespace lemon
443 443

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

	
Show white space 6 line context
... ...
@@ -16,12 +16,12 @@
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>
... ...
@@ -31,21 +31,21 @@
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.
... ...
@@ -55,12 +55,12 @@
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;
... ...
@@ -99,7 +99,7 @@
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
    ///
... ...
@@ -108,7 +108,7 @@
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.
... ...
@@ -131,8 +131,8 @@
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);
... ...
@@ -151,9 +151,9 @@
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
          }
... ...
@@ -345,8 +345,8 @@
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
Show white space 6 line context
... ...
@@ -16,12 +16,12 @@
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>
... ...
@@ -31,13 +31,14 @@
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.
... ...
@@ -47,13 +48,13 @@
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;
... ...
@@ -92,7 +93,7 @@
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
    ///
... ...
@@ -101,7 +102,7 @@
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.
... ...
@@ -335,7 +336,7 @@
335 336
      _data[idx].first = j;
336 337
    }
337 338

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

	
340 341
} // namespace lemon
341 342

	
Show white space 6 line context
... ...
@@ -30,12 +30,12 @@
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"
... ...
@@ -185,26 +185,26 @@
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
  }
... ...
@@ -245,14 +245,14 @@
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
  }
0 comments (0 inline)