Rrrpdfauthor=Tttpdfsubject

Total Page:16

File Type:pdf, Size:1020Kb

Rrrpdfauthor=Tttpdfsubject Dipartimento di Informatica Universit`adi Pisa New Combinatorial Properties and Algorithms for AVL Trees Mahdi Amani Under Supervision of Linda Pagli, Anna Bernasconi 3 May 2016 Abstract In this thesis, new properties of AVL trees and a new partitioning of binary search trees named core partitioning scheme are discussed, this scheme is applied to three binary search trees namely AVL trees, weight-balanced trees, and plain binary search trees. We introduce the core partitioning scheme, which maintains a balanced search tree as a dynamic collection of complete balanced binary trees called cores. Using this technique we achieve the same theoretical efficiency of modern cache-oblivious data structures by using classic data structures such as weight-balanced trees or height balanced trees (e.g. AVL trees). We preserve the original topology and algorithms of the given balanced search tree using a simple post-processing with guaranteed performance to completely rebuild the changed cores (possibly all of them) after each update. Using our core partitioning scheme, we simultaneously achieve good memory allocation, space-efficient representation, and cache-obliviousness. We also apply this scheme to arbitrary binary search trees which can be unbalanced and we produce a new data structure, called Cache- Oblivious General Balanced Tree (COG-tree). Using our scheme, searching a key requires O(logB n) block transfers and O(log n) comparisons in the external-memory and in the cache-oblivious model. These complexities are theoretically ef- ficient. Interestingly, the core partition for weight-balanced trees and COG-tree can be maintained with amortized O(logB n) block transfers per update, whereas maintaining the core partition for AVL trees requires more than a poly-logarithmic amortized cost. Studying the properties of these trees also lead us to some other new properties of AVL trees and trees with bounded degree, namely, we present and study gaps in AVL trees and we prove Tarjan et al. 's conjecture on the number of rotations in a sequence of deletions and insertions. Keywords: AVL trees, Weight-balanced tree, External-memory model, Cache-oblivious model, Core partitioning scheme, COG-tree, Gap, AVL rotation. ii Dedication \Thesis topics come and go, but the adventurous styling of the journey is forever." I may not be a religious man, but it is hard to escape the feeling that, underneath all the problems you face in your routine life, there is something of the divine in the solutions you find. I've felt God carrying me when I was stuck and completely lost. This dissertation is dedicated to him and to my wife who shared her patience and support through the hard life of a young researcher. To the compassionate one and to Eli iv Acknowledgments This work could not have been achieved without the help, support, and encouragement of many people. My heartfelt thanks is owed to many people who made this journey possible. My special thanks and appreciation to Prof. Linda Pagli, Prof. Anna Bernasconi, and Prof. Roberto Grossi not only for their help and encouragement throughout my studies, but also for their compassion and empathetic understanding and touching my life during these years that I had the great honor to work with them. I am grateful as well to Prof. Pierpaolo Degano for coordinating and for all the support that he has given me throughout my academic life in Pisa. I thank the members of my dissertation committee for their contribution and their good-natured support, I also thank the other members of department of computer science, university of Pisa, for all good memories, help and all the things they taught me. I also thank Robert Tarjan for his time, support and encouragement to prove their conjecture on the number of rotations in AVL trees. Last but not least, I sincerely and wholeheartedly express my gratitude to all my family mem- bers specially my parents and my wonderful wife for their patience and support. vi Contents 1 Introduction 1 1.1 Memory Hierarchy and Memory Models........................1 1.2 Main Results.......................................2 1.3 Other Results on Properties of AVL Trees.......................5 1.4 Thesis Organization and Overview...........................7 2 Background 9 2.1 Trees and Binary Search Trees.............................9 2.1.1 Isomorphism on rooted trees.......................... 10 2.1.2 Positional Trees.................................. 11 2.1.3 Binary Search Trees............................... 13 2.1.4 B-tree, 2-3 Tree and (a,b)-trees......................... 23 2.1.5 Tree Representation............................... 24 2.1.6 Tree Traversal.................................. 24 2.2 External-Memory & Cache-Oblivious Memory Models................ 25 2.2.1 External-Memory Model............................. 26 2.2.2 Cache-Oblivious Memory Model........................ 27 2.3 Data Structures for External-Memory & Cache-Oblivious Memory Models..... 28 2.4 Exhaustive Generation of Trees with Bounded Degree................ 32 2.4.1 Generation Preliminaries............................ 33 2.4.2 Trees with Bounded Degree........................... 37 2.4.3 Related Works to Trees with Bounded Degree................. 39 2.5 Summary......................................... 39 3 Core Partitioning Scheme 41 3.1 Core Partitioning Preliminaries............................. 42 3.2 Core Partitioning Scheme................................ 44 3.2.1 Core Partitioning................................. 44 3.2.2 Memory Management.............................. 47 3.2.3 Maintaining the Core Partition......................... 47 3.3 Applications........................................ 49 3.3.1 External-Memory Search Trees......................... 49 3.3.2 Cache-Oblivious Search Trees.......................... 50 3.4 Case Study 1: Weight-Balanced Trees......................... 55 3.4.1 Cores in Weight-Balanced Trees........................ 56 3.4.2 Amortized Analysis for Repartitioning..................... 58 3.5 Case Study 2: AVL Trees................................ 59 3.5.1 Cores in AVL Trees............................... 59 3.5.2 Amortized Analysis for Repartitioning..................... 63 3.6 Summary......................................... 65 viii CONTENTS 4 Core Partitioning Directly on Plain Binary Trees 67 4.1 Preliminaries and Notation............................... 68 4.2 Definition of COG-Tree................................. 69 4.3 Memory Management.................................. 78 4.4 Maintaining a COG-Tree................................ 78 4.4.1 Deletions..................................... 79 4.4.2 Insertions..................................... 79 4.5 Applications........................................ 80 4.5.1 External-Memory Search Trees......................... 81 4.5.2 Cache-Oblivious Search Trees.......................... 81 4.6 Amortized Analysis.................................... 82 4.7 Summary......................................... 84 5 Other Properties of AVL Trees 85 5.1 GAP............................................ 85 5.1.1 General Properties of Gaps........................... 86 5.1.2 Gaps in Insertions and Deletions........................ 88 5.2 Amortized Rotation Cost in AVL Trees........................ 92 5.2.1 Expensive AVL Trees.............................. 95 5.3 Summary......................................... 97 6 Generation of Trees with Bounded Degree 99 6.1 The Encoding Schema.................................. 100 6.2 The Generation Algorithm................................ 103 6.3 Ranking and Unranking Algorithms.......................... 107 6.4 Summary......................................... 113 7 Conclusions and Discussion 115 Bibliography 119 List of Figures 2.1 An example of the heights and the levels of the nodes in a given tree......... 10 2.2 An embedding of an ordered rooted tree in the plane on a set of 11 nodes (4 internal nodes and 7 leaves) with root labeled by `x'....................... 11 2.3 An example of a 3-regular tree.............................. 12 2.4 In a BST, for every node with key x, the keys in the left (right) subtree are less (greater) than x...................................... 13 2.5 An example of AVL tree................................. 15 2.6 Right rotation at node x. Triangles denote subtrees. The inverse operation is a left rotation at y........................................ 15 2.7 A Fibonacci tree of height 5 in the left side and one of its isomorphisms in the right side............................................. 16 2.8 Single and double rotations in a red-black tree..................... 18 2.9 Recoloring in a red-black tree............................... 19 2.10 BB[α]-tree for α = 2=7 while it is not for α = 1=3................... 20 2.11 An example of Randomized Search Tree, in this picture the numbers are priorities and the alphabets are the keys.............................. 22 2.12 An inorder traversal algorithm for binary trees.................... 25 2.13 A postorder traversal algorithm for binary trees.................... 25 2.14 A preorder traversal algorithm for binary trees..................... 25 2.15 The external-memory model............................... 27 2.16 Left: C3H8 propane, middle and right: C4H10 butanes................ 38 2.17 A T ∆ tree with 12 nodes (for any ∆ ≥ 4)........................ 38 3.1 Decomposition of a binary search tree into its cores.................. 45 3.2 Left: when w is higher than v, so u = w. Right: when w is lower than v, so u = v. 48 3.3 Subtree τ with its core C
Recommended publications
  • Cache Oblivious Search Trees Via Binary Trees of Small Height
    Cache Oblivious Search Trees via Binary Trees of Small Height Gerth Stølting Brodal∗ Rolf Fagerberg∗ Riko Jacob∗ Abstract likely to increase in the future [13, pp. 7 and 429]. We propose a version of cache oblivious search trees As a consequence, the memory access pattern of an which is simpler than the previous proposal of Bender, algorithm has become a key component in determining Demaine and Farach-Colton and has the same complex- its running time in practice. Since classic asymptotical ity bounds. In particular, our data structure avoids the analysis of algorithms in the RAM model is unable to use of weight balanced B-trees, and can be implemented capture this, a number of more elaborate models for as just a single array of data elements, without the use of analysis have been proposed. The most widely used of pointers. The structure also improves space utilization. these is the I/O model of Aggarwal and Vitter [1], which For storing n elements, our proposal uses (1 + ε)n assumes a memory hierarchy containing two levels, the times the element size of memory, and performs searches lower level having size M and the transfer between the in worst case O(logB n) memory transfers, updates two levels taking place in blocks of B elements. The in amortized O((log2 n)/(εB)) memory transfers, and cost of the computation in the I/O model is the number range queries in worst case O(logB n + k/B) memory of blocks transferred. This model is adequate when transfers, where k is the size of the output.
    [Show full text]
  • Lecture 04 Linear Structures Sort
    Algorithmics (6EAP) MTAT.03.238 Linear structures, sorting, searching, etc Jaak Vilo 2018 Fall Jaak Vilo 1 Big-Oh notation classes Class Informal Intuition Analogy f(n) ∈ ο ( g(n) ) f is dominated by g Strictly below < f(n) ∈ O( g(n) ) Bounded from above Upper bound ≤ f(n) ∈ Θ( g(n) ) Bounded from “equal to” = above and below f(n) ∈ Ω( g(n) ) Bounded from below Lower bound ≥ f(n) ∈ ω( g(n) ) f dominates g Strictly above > Conclusions • Algorithm complexity deals with the behavior in the long-term – worst case -- typical – average case -- quite hard – best case -- bogus, cheating • In practice, long-term sometimes not necessary – E.g. for sorting 20 elements, you dont need fancy algorithms… Linear, sequential, ordered, list … Memory, disk, tape etc – is an ordered sequentially addressed media. Physical ordered list ~ array • Memory /address/ – Garbage collection • Files (character/byte list/lines in text file,…) • Disk – Disk fragmentation Linear data structures: Arrays • Array • Hashed array tree • Bidirectional map • Heightmap • Bit array • Lookup table • Bit field • Matrix • Bitboard • Parallel array • Bitmap • Sorted array • Circular buffer • Sparse array • Control table • Sparse matrix • Image • Iliffe vector • Dynamic array • Variable-length array • Gap buffer Linear data structures: Lists • Doubly linked list • Array list • Xor linked list • Linked list • Zipper • Self-organizing list • Doubly connected edge • Skip list list • Unrolled linked list • Difference list • VList Lists: Array 0 1 size MAX_SIZE-1 3 6 7 5 2 L = int[MAX_SIZE]
    [Show full text]
  • [Type the Document Title]
    International Journal of Engineering Science Invention (IJESI) ISSN (Online): 2319 – 6734, ISSN (Print): 2319 – 6726 www.ijesi.org || PP. 31-35 Parallel and Nearest Neighbor Search for High-Dimensional Index Structure of Content-Based Data Using Dva-Tree A.RosiyaSusaiMary1, Dr.R.Suguna 2 1(Department of Computer Science, Theivanai Ammal College for Women, India) 2(Department of Computer Science, Theivanai Ammal College for Women, India) Abstract: We propose a parallel high-dimensional index structure for content-based information retrieval so as to cope with the linear decrease in retrieval performance. In addition, we devise data insertion, range query and k-NN query processing algorithms which are suitable for a cluster-based parallel architecture. Finally, we show that our parallel index structure achieves good retrieval performance in proportion to the number of servers in the cluster-based architecture and it outperforms a parallel version of the VA-File. To address the demanding search needs caused by large-scale image collections, speeding up the search by using distributed index structures, and a Vector Approximation-file (DVA-file) in parallel. Keywords: Distributed Indexing Structure, High Dimensionality, KNN- Search I. Introduction The need to manage various types of large scale data stored in web environments has drastically increased and resulted in the development of index mechanism for high dimensional feature vector data about such a kinds of multimedia data. Recent search engine for the multimedia data in web location may collect billions of images, text and video data, which makes the performance bottleneck to get a suitable web documents and contents. Given large image and video data collections, a basic problem is to find objects that cover given information need.
    [Show full text]
  • Parallel and Nearest Neighbor Search for High-Dimensional Index Structure of Content- Based Data Using DVA-Tree R
    International Journal of Scientific Research and Review ISSN NO: 2279-543X Parallel and Nearest Neighbor search for high-dimensional index structure of content- based data using DVA-tree R. ROSELINE1, Z.JOHN BERNARD2, V. SUGANTHI3 1’2Assistant Professor PG & Research Department of Computer Applications, St Joseph’s College Of Arts and Science, Cuddalore. 2 Research Scholar, PG & Research Department of Computer Science, St Joseph’s College Of Arts and Science, Cuddalore. Abstract We propose a parallel high-dimensional index structure for content-based information retrieval so as to cope with the linear decrease in retrieval performance. In addition, we devise data insertion, range query and k-NN query processing algorithms which are suitable for a cluster-based parallel architecture. Finally, we show that our parallel index structure achieves good retrieval performance in proportion to the number of servers in the cluster-based architecture and it outperforms a parallel version of the VA-File. To address the demanding search needs caused by large-scale image collections, speeding up the search by using distributed index structures, and a Vector Approximation-file (DVA-file) in parallel Keywords: KNN- search, distributed indexing structure, high Dimensionality 1. Introduction The need to manage various types of large scale data stored in web environments has drastically increased and resulted in the development of index mechanism for high dimensional feature vector data about such a kinds of multimedia data. Recent search engine for the multimedia data in web location may collect billions of images, text and video data, which makes the performance bottleneck to get a suitable web documents and contents.
    [Show full text]
  • Arxiv:Submit/0396732
    Dynamic 3-sided Planar Range Queries with Expected Doubly Logarithmic Time⋆ Gerth Stølting Brodal1, Alexis C. Kaporis2, Apostolos N. Papadopoulos4, Spyros Sioutas3, Konstantinos Tsakalidis1, Kostas Tsichlas4 1 MADALGO⋆⋆, Department of Computer Science, Aarhus University, Denmark gerth,tsakalid @madalgo.au.dk 2 { } Computer Engineering and Informatics Department, University of Patras, Greece [email protected] 3 Department of Informatics, Ionian University, Corfu, Greece [email protected] 4 Department of Informatics, Aristotle University of Thessaloniki, Greece [email protected] Abstract. This work studies the problem of 2-dimensional searching for the 3-sided range query of the form [a,b] ( , c] in both main × −∞ and external memory, by considering a variety of input distributions. We present three sets of solutions each of which examines the 3-sided problem in both RAM and I/O model respectively. The presented data structures are deterministic and the expectation is with respect to the input distribution: (1) Under continuous µ-random distributions of the x and y coordinates, we present a dynamic linear main memory solution, which answers 3- sided queries in O(log n + t) worst case time and scales with O(log log n) expected with high probability update time, where n is the current num- ber of stored points and t is the size of the query output. We external- ize this solution, gaining O(logB n + t/B) worst case and O(logB logn) amortized expected with high probability I/Os for query and update operations respectively, where B is the disk block size. (2)Then, we assume that the inserted points have their x-coordinates drawn from a class of smooth distributions, whereas the y-coordinates are arbitrarily distributed.
    [Show full text]
  • Top Tree Compression of Tries∗
    Top Tree Compression of Tries∗ Philip Bille Pawe lGawrychowski Inge Li Gørtz [email protected] [email protected] [email protected] Gad M. Landau Oren Weimann [email protected] [email protected] Abstract We present a compressed representation of tries based on top tree compression [ICALP 2013] that works on a standard, comparison-based, pointer machine model of computation and supports efficient prefix search queries. Namely, we show how to preprocess a set of strings of total length n over an alphabet of size σ into a compressed data structure of worst-case optimal size O(n= logσ n) that given a pattern string P of length m determines if P is a prefix of one of the strings in time O(min(m log σ; m + log n)). We show that this query time is in fact optimal regardless of the size of the data structure. Existing solutions either use Ω(n) space or rely on word RAM techniques, such as tabulation, hashing, address arithmetic, or word-level parallelism, and hence do not work on a pointer machine. Our result is the first solution on a pointer machine that achieves worst-case o(n) space. Along the way, we develop several interesting data structures that work on a pointer machine and are of independent interest. These include an optimal data structures for random access to a grammar- compressed string and an optimal data structure for a variant of the level ancestor problem. 1 Introduction A string dictionary compactly represents a set of strings S = S1;:::;Sk to support efficient prefix queries, that is, given a pattern string P determine if P is a prefix of some string in S.
    [Show full text]
  • Exponential Structures for Efficient Cache-Oblivious Algorithms
    Exponential Structures for Efficient Cache-Oblivious Algorithms Michael A. Bender1, Richard Cole2, and Rajeev Raman3 1 Computer Science Department, SUNY Stony Brook, Stony Brook, NY 11794, USA. [email protected]. 2 Computer Science Department, Courant Institute, New York University, New York, NY 10012, USA. [email protected]. 3 Department of Mathematics and Computer Science, University of Leicester, Leicester LE1 7RH, UK. [email protected] Abstract. We present cache-oblivious data structures based upon exponential structures. These data structures perform well on a hierarchical memory but do not depend on any parameters of the hierarchy, including the block sizes and number of blocks at each level. The problems we consider are searching, partial persistence and planar point location. On a hierarchical memory where data is transferred in blocks of size B, some of the results we achieve are: – We give a linear-space data structure for dynamic searching that supports searches and updates in optimal O(logB N) worst-case I/Os, eliminating amortization from the result of Bender, Demaine, and Farach-Colton (FOCS ’00). We also consider finger searches and updates and batched searches. – We support partially-persistent operations on an ordered set, namely, we allow searches in any previous version of the set and updates to the latest version of the set (an update creates a new version of the set). All operations take an optimal O(logB (m+N)) amortized I/Os, where N is the size of the version being searched/updated, and m is the number of versions. – We solve the planar point location problem in linear space, taking optimal O(logB N) I/Os for point location queries, where N is the number of line segments specifying the partition of the plane.
    [Show full text]
  • List of Transparencies
    List of Transparencies Chapter 1 Primitive Java 1 A simple first program 2 The eight primitve types in Java 3 Program that illustrates operators 4 Result of logical operators 5 Examples of conditional and looping constructs 6 Layout of a switch statement 7 Illustration of method declaration and calls 8 Chapter 2 References 9 An illustration of a reference: The Point object stored at memory location 1000 is refer- enced by both point1 and point3. The Point object stored at memory location 1024 is referenced by point2. The memory locations where the variables are stored are arbitrary 10 The result of point3=point2: point3 now references the same object as point2 11 Simple demonstration of arrays 12 Array expansion: (a) starting point: a references 10 integers; (b) after step 1: original references the 10 integers; (c) after steps 2 and 3: a references 12 integers, the first 10 of which are copied from original; (d) after original exits scope, the orig- inal array is unreferenced and can be reclaimed 13 Common standard run-time exceptions 14 Common standard checked exceptions 15 Simple program to illustrate exceptions 16 Illustration of the throws clause 17 Program that demonstrates the string tokenizer 18 Program to list contents of a file 19 Chapter 3 Objects and Classes 20 Copyright 1998 by Addison-Wesley Publishing Company ii A complete declaration of an IntCell class 21 IntCell members: read and write are accessible, but storedValue is hidden 22 A simple test routine to show how IntCell objects are accessed 23 IntCell declaration with
    [Show full text]
  • Funnel Heap - a Cache Oblivious Priority Queue
    Alcom-FT Technical Report Series ALCOMFT-TR-02-136 Funnel Heap - A Cache Oblivious Priority Queue Gerth Stølting Brodal∗,† Rolf Fagerberg∗ Abstract The cache oblivious model of computation is a two-level memory model with the assumption that the parameters of the model are un- known to the algorithms. A consequence of this assumption is that an algorithm efficient in the cache oblivious model is automatically effi- cient in a multi-level memory model. Arge et al. recently presented the first optimal cache oblivious priority queue, and demonstrated the im- portance of this result by providing the first cache oblivious algorithms for graph problems. Their structure uses cache oblivious sorting and selection as subroutines. In this paper, we devise an alternative opti- mal cache oblivious priority queue based only on binary merging. We also show that our structure can be made adaptive to different usage profiles. Keywords: Cache oblivious algorithms, priority queues, memory hierar- chies, merging ∗BRICS (Basic Research in Computer Science, www.brics.dk, funded by the Danish National Research Foundation), Department of Computer Science, University of Aarhus, Ny Munkegade, DK-8000 Arhus˚ C, Denmark. E-mail: {gerth,rolf}@brics.dk. Partially supported by the Future and Emerging Technologies programme of the EU under contract number IST-1999-14186 (ALCOM-FT). †Supported by the Carlsberg Foundation (contract number ANS-0257/20). 1 1 Introduction External memory models are formal models for analyzing the impact of the memory access patterns of algorithms in the presence of several levels of memory and caches on modern computer architectures. The cache oblivious model, recently introduced by Frigo et al.
    [Show full text]
  • Design and Analysis of Data Structures for Dynamic Trees
    Design and Analysis of Data Structures for Dynamic Trees Renato Werneck Advisor: Robert Tarjan Outline The Dynamic Trees problem ) Existing data structures • A new worst-case data structure • A new amortized data structure • Experimental results • Final remarks • The Dynamic Trees Problem Dynamic trees: • { Goal: maintain an n-vertex forest that changes over time. link(v; w): adds edge between v and w. ∗ cut(v; w): deletes edge (v; w). ∗ { Application-specific data associated with vertices/edges: updates/queries can happen in bulk (entire paths or trees at once). ∗ Concrete examples: • { Find minimum-weight edge on the path between v and w. { Add a value to every edge on the path between v and w. { Find total weight of all vertices in a tree. Goal: O(log n) time per operation. • Applications Subroutine of network flow algorithms • { maximum flow { minimum cost flow Subroutine of dynamic graph algorithms • { dynamic biconnected components { dynamic minimum spanning trees { dynamic minimum cut Subroutine of standard graph algorithms • { multiple-source shortest paths in planar graphs { online minimum spanning trees • · · · Application: Online Minimum Spanning Trees Problem: • { Graph on n vertices, with new edges \arriving" one at a time. { Goal: maintain the minimum spanning forest (MSF) of G. Algorithm: • { Edge e = (v; w) with length `(e) arrives: 1. If v and w in different components: insert e; 2. Otherwise, find longest edge f on the path v w: · · · `(e) < `(f): remove f and insert e. ∗ `(e) `(f): discard e. ∗ ≥ Example: Online Minimum Spanning Trees Current minimum spanning forest. • Example: Online Minimum Spanning Trees Edge between different components arrives. • Example: Online Minimum Spanning Trees Edge between different components arrives: • { add it to the forest.
    [Show full text]
  • Dynamic Trees in Practice
    Dynamic Trees in Practice ROBERT E. TARJAN Princeton University and HP Labs and RENATO F. WERNECK Microsoft Research Silicon Valley Dynamic tree data structures maintain forests that change over time through edge insertions and deletions. Besides maintaining connectivity information in logarithmic time, they can support aggregation of information over paths, trees, or both. We perform an experimental comparison of several versions of dynamic trees: ST-trees, ET-trees, RC-trees, and two variants of top trees (self-adjusting and worst-case). We quantify their strengths and weaknesses through tests with various workloads, most stemming from practical applications. We observe that a simple, linear- time implementation is remarkably fast for graphs of small diameter, and that worst-case and randomized data structures are best when queries are very frequent. The best overall performance, however, is achieved by self-adjusting ST-trees. Categories and Subject Descriptors: E.1 [Data Structures]: Trees; G.2.1 [Discrete Mathe- matics]: Combinatorics—Combinatorial Algorithms; G.2.2 [Discrete Mathematics]: Graph Theory—Network Problems General Terms: Algorithms, Experimentation Additional Key Words and Phrases: dynamic trees, link-cut trees, top trees, experimental evalu- ation 1. INTRODUCTION The dynamic tree problem is that of maintaining an n-vertex forest that changes over time. Edges can be added or deleted in any order, as long as no cycle is ever created. In addition, data can be associated with vertices, edges, or both. This data can be manipulated individually (one vertex or edge at a time) or in bulk, with operations that deal with an entire path or tree at a time.
    [Show full text]
  • Lecture 16 Student Notes
    6.851: Advanced Data Structures Spring 2012 Lecture L16 | April 19, 2012 Prof. Erik Demaine 1 Overview In this lecture, we consider the string matching problem - finding some or all places in a text where the query string occurs as a substring. From the perspective of a one-shot approach, we can solve string matching in O(jT j) time, where jT j is the size of our text. This purely algorithmic approach has been studied extensively in the papers by Knuth-Morris-Pratt [6], Boyer-Moore [1], and Rabin-Karp [4]. However, we entertain the possibility that multiple queries will be made to the same text. This motivates the development of data structures that preprocess the text to allow for more efficient queries. We will show how to construct, use, and analyze these string data structures. 2 Predecessor Problem Before we get to string matching we will solve an easier problem which is necessary to solve string matching. This is the predecessor problem among strings. Assume we have k strings, T1;T2; :::; Tk and the query is: given some pattern P , we would like to know where P fits among the k strings in lexicographical order. More specifically we would like to know the predecessor of P among the k strings, according to the lexicographical order of the strings. Using our already developed data structures for this problem is not efficient as strings can be quite long and comparing strings is slow. So we need to use some other data structure that takes into account this fact. 2.1 Tries and Compressed Tries To solve the predecessor problem we will use a structure called a trie.A trie is a rooted tree where each child branch is labeled with letters in the alphabet Σ.
    [Show full text]