15-211 fundamental data structures and algorithms (spring ’05)
DESCRIPTION
15-211 Fundamental Data Structures and Algorithms (Spring ’05). Recitation Notes: Tries Slides prepared by Uri Dekel, udekel@cs Based on recitation notes by Will Haines. Radix Sort. A bucket-based sorting algorithm Input: elements with digits in longest key Algorithm: - PowerPoint PPT PresentationTRANSCRIPT
15-211 Fundamental Data Structures and Algorithms (Spring ’05)Recitation Notes: Tries
Slides prepared by Uri Dekel, udekel@cs
Based on recitation notes by Will Haines
15-211 Recitation notes on tries, Uri Dekel and Will Haines
2
Radix Sort
A bucket-based sorting algorithm Input: elements with digits in longest key Algorithm:
From least-significant digit to most significant Place into bins by current digit while preserving
original order (“stable sort”) Append bins into a sequence
Sort time complexity:
n
n
15-211 Recitation notes on tries, Uri Dekel and Will Haines
3
Radix sort example
Input: {115, 364,112, 003, 087, 006, 091, 911}
Phase 1: {091, 911, 112, 003, 364, 115, 006, 087}
Phase 2: {003, 006, 911, 112, 115, 364, 087, 091}
Phase 3: {003, 006, 087, 091, 112, 115, 364, 911}
15-211 Recitation notes on tries, Uri Dekel and Will Haines
4
Tries
Based on the same principle as radix sort Create an -level tree Support search in
O
15-211 Recitation notes on tries, Uri Dekel and Will Haines
5
Multiway Tries with values at predefined depth Every internal node has |A| pointers
|A| is the size of the “alphabet” |A|=10 for decimal digits 0..9 |A|=26 for the English alphabet
The -th level nodes point to leafs that contain actual value of key
Limitations: All keys must have exactly digits
Search time is One key cannot be a prefix of another key
Significant time/space tradeoff Lots of wasted space but the tree is very shallow
15-211 Recitation notes on tries, Uri Dekel and Will Haines
6
Multiway Tries with values at unknown depth Allows searching for -digit key in
Even if longest key is digits Add one “terminal” signal cell to each node
Indicates that the key entered so far is a member of the collection
Allows us to go on searching for longer key
k k
15-211 Recitation notes on tries, Uri Dekel and Will Haines
7
Digital Trie example
Input sequence: {0, 2, 10, 011, 01, 20, 21} We use three digit buckets and one for signal
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
8
Digital Trie example
Search for “2”: Hit!
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
9
Digital Trie example
Search for “01”: Hit!
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
10
Digital Trie example
Search for “011”: Hit!
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
11
Digital Trie example
Search for “1”: Miss (within trie)
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
12
Digital Trie example
Search for “22”: Miss (runs off of tree)
0 1 2 T
0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
X0 1 2 T
15-211 Recitation notes on tries, Uri Dekel and Will Haines
13
Hashmap Tries
What if we don’t know the digits of our alphabet? e.g., in HW2 we will have individual words as
“digits” of the search tree We will associate them with final words to complete
phrases
We use a hashmap at each node Amortized constant lookup at each node Amortized constant insert at each node
15-211 Recitation notes on tries, Uri Dekel and Will Haines
14
Hashmap Trie Example
Store frequency of all 3-word sequence Input sentence: “in at the ox at the in the in at ox
at ox in the at the in at in ox the ox at the ox”AT IN OX THE
IN OX THE AT OX THE AT IN THE AT IN OX
OX:1AT:1IN:1
IN:2OX:2
IN:1OX:1
THE:1
THE:1AT:1IN:1
THE:2OX:1
THE:1 OX:1 THE:1THE:1AT:2
AT:2
15-211 Fundamental Data Structures and Algorithms Klaus Sutner April 22, 2004 Computational Geometry
Introduction to Graphs 15-211 Fundamental Data Structures and Algorithms Klaus Sutner March 16, 2004