18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Dictionaries<br />

Implementation-oriented treatments of a variety of dictionary data structures appear in [BR95], including<br />

hashing, splay trees, red-black trees, and what looks like a thorough implementation of B-trees. Code in<br />

C for these data structures is included in the text and is available on disk for a modest fee.<br />

Notes: Mehlhorn and Tsakalidis [MT90b] give a thorough survey of the state of the art in modern data<br />

structures. Knuth [Knu73a] provides a detailed analysis and exposition on fundamental dictionary data<br />

structures but misses such modern data structures as red-black and splay trees. Gonnet and Baeza-Yates<br />

[GBY91] provide implementations (in C and Pascal), detailed references, and experimental results for a<br />

wide variety of dictionary data structures. We defer to these sources to avoid giving original references<br />

for each of the data structures described above.<br />

Good expositions on red-black trees [GS78] include [BR95, CLR90, Woo93]. Good expositions on splay<br />

trees [ST85] include [Tar83, Woo93]. Good expositions on B-trees [BM72] include [BR95, CLR90].<br />

Good expositions on hashing includes [Meh84, Woo93].<br />

Several modern data structures, such as splay trees, have been studied via amortized analysis, where we<br />

bound the total amount of time used by any sequence of operations. In an amortized analysis, we show<br />

that if a single operation is very expensive, this is because we have already benefited from enough cheap<br />

operations before it to pay off the higher cost. A data structure realizing an amortized complexity of<br />

O(f(n)) is less desirable than one whose worst-case complexity is O(f(n)) (since a very bad operation<br />

might still occur) but better than one with an average-case complexity O(f(n)), since the amortized bound<br />

will achieve this average on any input.<br />

Newer dictionary data structures that explicitly incorporate randomization into the construction include<br />

randomized search trees [AS89] and skip lists [Pug90].<br />

Related Problems: Sorting (see page ), Searching (see page ).<br />

Next: Priority Queues Up: Data Structures Previous: Data Structures<br />

<strong>Algorithm</strong>s<br />

Mon Jun 2 23:33:50 EDT 1997<br />

file:///E|/BOOK/BOOK3/NODE129.HTM (5 of 5) [19/1/2003 1:30:03]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!