Implement.tex
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:8k
开发平台:

MultiPlatform

  1. chapter{Implementations}
  2. label{Implementations}
  3. section{List of data structures}
  4. label{List of data structures}
  5. This section lists the data structures for dictionaries, dictionary
  6. arrays, priority queues, and geometric data types currently contained in LEDA. 
  7. For each of the data structures its name and type, the list of LEDA data types 
  8. it can implement, and a literature reference are given.
  9. Before using a data structures $xyz$ the corresponding header file
  10. <LEDA/impl/$xyz$.h> has to be included (cf. section ref{Specifications} for an example).
  11. subsection{Dictionaries}
  12. label{Implementations Dictionaries}
  13. begin{tabular}{llll}
  14. $ab_tree$    &a-b tree     &dictionary, d_array, {bf sortseq}&cite{BC72}\
  15. $avl_tree$   &AVL tree     &dictionary, d_array   &cite{AVL62}\
  16. $bb_tree$    &BB[$alpha$] tree&dictionary, d_array, sortseq&cite{BM80}\
  17. $ch_hashing$ &hashing with chaining&dictionary, d_array&cite{M84}\
  18. $dp_hashing$ &dyn. perf. hashing&{bf h_array}    &cite{DKMMRT88}, cite{We92}\
  19. $pers_tree$  &persistent   tree&{bf p_dictionary}&cite{DSST89}\
  20. $rb_tree$    &red-black tree&dictionary, d_array, sortseq&cite{GS78}\
  21. $rs_tree$    &rand. search tree&{bf dictionary}, {bf d_array}, sortseq&cite{AS89}\
  22. $skiplist$    &skip lists   &dictionary, d_array, sortseq&cite{Pu90}
  23. end{tabular}
  24. subsection{Priority Queues}
  25. label{Implementations Priority Queues}
  26. begin{tabular}{llll}
  27. $f_heap$  &Fibonnacci heap    &{bf priority_queue} &cite{FT87}\
  28. $p_heap$  &pairing heap       &priority_queue       &cite{SV87}\
  29. $k_heap$  &k-nary heap        &priority_queue       &cite{M84}\
  30. $m_heap$  &monotonic heap     &priority_queue       &cite{M84}\
  31. $eb_tree$ &Emde-Boas tree     &priority_queue       &cite{EKZ77}, cite{We92}
  32. end{tabular}
  33. subsection{Geometry}
  34. begin{tabular}{llll}
  35. $range_tree$ &range tree     &{bf d2_dictionary}, {bf point_set}&cite{Wi85}, cite{Lu78}\
  36. $seg_tree$   &segment tree         &{bf seg_set}      &cite{B79}, cite{Ed82}\
  37. $ps_tree$    &priority search tree &---             &cite{MC81}\
  38. $iv_tree$    &interval tree        &{bf interval_set} &cite{MC80}, cite{Ed82}\
  39. $delaunay_tree$ &delaunay tree     &{bf point_set}    &cite{De92}
  40. end{tabular}
  41. newpage
  42. section{User Implementations}
  43. label{User Implementations}
  44. In addition to the data structures listed in the previous section user-defined 
  45. data structures can also be used as actual implementation parameters provided 
  46. they fulfill certain requirements.
  47. subsection{Dictionaries}
  48. label{User Implementations Dictionaries}
  49. Any class $dic_impl$ that provides the following operations can be used as 
  50. actual implementation parameter for the $_dictionary<K,I,dic_impl>$ 
  51. and the $_d_array<I,E,dic_impl>$ data types (cf. sections ref{Dictionaries} and ref{Dictionary Arrays}).
  52. typedef ... dic_impl_item;
  53. class dic_impl ${$
  54. hspace*{.5cm}virtual int  cmp(GenPtr, GenPtr) const = 0;\
  55. hspace*{.5cm}virtual int  int_type()hspace*{2.3cm}const = 0;\
  56. hspace*{.5cm}virtual void clear_key(GenPtr&)hspace*{.35cm}const = 0;\
  57. hspace*{.5cm}virtual void clear_inf(GenPtr&)hspace*{.45cm}const = 0;\
  58. hspace*{.5cm}virtual void copy_key(GenPtr&)hspace*{.35cm}const = 0;\
  59. hspace*{.5cm}virtual void copy_inf(GenPtr&)hspace*{.5cm}const = 0;
  60. public:
  61. hspace*{.5cm}dic_impl();\
  62. hspace*{.5cm}dic_impl(const dic_impl&);\
  63. hspace*{.5cm}virtual ~dic_impl();
  64. hspace*{.5cm}dic_impl& operator=(const dic_impl&);
  65. hspace*{.5cm}GenPtr key(dic_impl_item)  const;\
  66. hspace*{.5cm}GenPtr inf(dic_impl_item)   const;
  67. hspace*{.5cm}dic_impl_item insert(GenPtr,GenPtr);\
  68. hspace*{.5cm}dic_impl_item lookup(GenPtr)  const;\
  69. hspace*{.5cm}dic_impl_item first_item()hspace*{1cm}const;\
  70. hspace*{.5cm}dic_impl_item next_item(dic_impl_item) const;
  71. hspace*{.5cm}dic_impl_item item(void$*$ $p$) const ${$ return dic_impl_item($p$); $}$
  72. hspace*{.5cm}void change_inf(dic_impl_item,GenPtr);\
  73. hspace*{.5cm}void del_item(dic_impl_item);\
  74. hspace*{.5cm}void del(GenPtr);\
  75. hspace*{.5cm}void clear();
  76. hspace*{.5cm}int size() const;\
  77. $}$;
  78. newpage
  79. subsection{Priority Queues}
  80. label{User Implementations Priority Queues}
  81. Any class $prio_impl$ that provides the following operations can be used as 
  82. actual implementation parameter for the $_priority_queue<K,I,prio_impl>$
  83. data type (cf. section ref{Priority Queues}).
  84. typedef ... prio_impl_item;
  85. class prio_impl { 
  86. hspace*{.5cm}virtual int  cmp(GenPtr, GenPtr) const = 0;\
  87. hspace*{.5cm}virtual int  int_type()hspace*{2.3cm}const = 0;\
  88. hspace*{.5cm}virtual void clear_key(GenPtr&)hspace*{.35cm}const = 0;\
  89. hspace*{.5cm}virtual void clear_inf(GenPtr&)hspace*{.45cm}const = 0;\
  90. hspace*{.5cm}virtual void copy_key(GenPtr&)hspace*{.35cm}const = 0;\
  91. hspace*{.5cm}virtual void copy_inf(GenPtr&)hspace*{.5cm}const = 0;
  92. public:
  93. hspace*{.5cm}prio_impl();\
  94. hspace*{.5cm}prio_impl(int);\
  95. hspace*{.5cm}prio_impl(int,int);\
  96. hspace*{.5cm}prio_impl(const prio_impl&);\
  97. hspace*{.5cm}virtual ~prio_impl();
  98. hspace*{.5cm}prio_impl& operator=(const prio_impl&);
  99. hspace*{.5cm}prio_impl_item insert(GenPtr,GenPtr);\
  100. hspace*{.5cm}prio_impl_item find_min()  const;\
  101. hspace*{.5cm}prio_impl_item first_item() const;\
  102. hspace*{.5cm}prio_impl_item next_item(prio_impl_item) const;
  103. hspace*{.5cm}prio_impl_item item(void$*$ $p$) const ${$ return prio_impl_item(p); $}$
  104.  
  105. hspace*{.5cm}GenPtr key(prio_impl_item) const;\
  106. hspace*{.5cm}GenPtr inf(prio_impl_item)  const;
  107. hspace*{.5cm}void del_min();\
  108. hspace*{.5cm}void del_item(prio_impl_item);\
  109. hspace*{.5cm}void decrease_key(prio_impl_item,GenPtr);\
  110. hspace*{.5cm}void change_inf(prio_impl_item,GenPtr);\
  111. hspace*{.5cm}void clear();
  112.   
  113. hspace*{.5cm}int  size()  const;\
  114. $}$;
  115. newpage
  116. subsection{Sorted Sequences}
  117. label{User Implementations Sorted Sequences}
  118. Any class $seq_impl$ that provides the following operations can be used as 
  119. actual implementation parameter for the $_sortseq<K,I,seq_impl>$ data
  120. type (cf. section ref{Sorted Sequences}).
  121. typedef ... seq_impl_item;
  122. class seq_impl  ${$
  123. hspace*{.5cm}virtual int  cmp(GenPtr, GenPtr) const = 0;\
  124. hspace*{.5cm}virtual int  int_type()hspace*{2.25cm}const = 0;\
  125. hspace*{.5cm}virtual void clear_key(GenPtr&)hspace*{.3cm}const = 0;\
  126. hspace*{.5cm}virtual void clear_inf(GenPtr&)hspace*{.4cm}const = 0;\
  127. hspace*{.5cm}virtual void copy_key(GenPtr&)hspace*{.3cm}const = 0;\
  128. hspace*{.5cm}virtual void copy_inf(GenPtr&)hspace*{.45cm}const = 0;
  129. public:
  130. hspace*{.5cm}seq_impl();\
  131. hspace*{.5cm}seq_impl(const seq_impl&);\
  132. hspace*{.5cm}virtual ~seq_impl();
  133. hspace*{.5cm}seq_impl& operator=(const seq_impl&);\
  134. hspace*{.5cm}seq_impl& conc(seq_impl&);
  135.  
  136. hspace*{.5cm}seq_impl_item insert(GenPtr,GenPtr);\
  137. hspace*{.5cm}seq_impl_item insert_at_item(seq_impl_item,GenPtr,GenPtr);\
  138. hspace*{.5cm}seq_impl_item lookup(GenPtr)hspace*{.9cm}const;\
  139. hspace*{.5cm}seq_impl_item locate(GenPtr)hspace*{1.05cm}const;\
  140. hspace*{.5cm}seq_impl_item locate_pred(GenPtr) const;\
  141. hspace*{.5cm}seq_impl_item succ(seq_impl_item)hspace*{.25cm}const;\
  142. hspace*{.5cm}seq_impl_item pred(seq_impl_item)hspace*{.05cm} const;\
  143. hspace*{.5cm}seq_impl_item item(void$*$ $p$) const ${$ return seq_impl_item($p$); $}$
  144.  
  145. hspace*{.5cm}GenPtr key(seq_impl_item) const;\
  146. hspace*{.5cm}GenPtr inf(seq_impl_item)  const;
  147.  
  148. hspace*{.5cm}void del(GenPtr);\ 
  149. hspace*{.5cm}void del_item(seq_impl_item);\ 
  150. hspace*{.5cm}void change_inf(seq_impl_item,GenPtr);\
  151. hspace*{.5cm}void split_at_item(seq_impl_item,seq_impl&,seq_impl&);\
  152. hspace*{.5cm}void reverse_items(seq_impl_item,seq_impl_item);\ 
  153. hspace*{.5cm}void clear();
  154.  
  155. hspace*{.5cm}int  size()  const;\
  156. $}$;