A Set Intersection Algorithm Via X-Fast Trie
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Skip Lists: a Probabilistic Alternative to Balanced Trees
Skip Lists: A Probabilistic Alternative to Balanced Trees Skip lists are a data structure that can be used in place of balanced trees. Skip lists use probabilistic balancing rather than strictly enforced balancing and as a result the algorithms for insertion and deletion in skip lists are much simpler and significantly faster than equivalent algorithms for balanced trees. William Pugh Binary trees can be used for representing abstract data types Also giving every fourth node a pointer four ahead (Figure such as dictionaries and ordered lists. They work well when 1c) requires that no more than n/4 + 2 nodes be examined. the elements are inserted in a random order. Some sequences If every (2i)th node has a pointer 2i nodes ahead (Figure 1d), of operations, such as inserting the elements in order, produce the number of nodes that must be examined can be reduced to degenerate data structures that give very poor performance. If log2 n while only doubling the number of pointers. This it were possible to randomly permute the list of items to be in- data structure could be used for fast searching, but insertion serted, trees would work well with high probability for any in- and deletion would be impractical. put sequence. In most cases queries must be answered on-line, A node that has k forward pointers is called a level k node. so randomly permuting the input is impractical. Balanced tree If every (2i)th node has a pointer 2i nodes ahead, then levels algorithms re-arrange the tree as operations are performed to of nodes are distributed in a simple pattern: 50% are level 1, maintain certain balance conditions and assure good perfor- 25% are level 2, 12.5% are level 3 and so on. -
Skip B-Trees
Skip B-Trees Ittai Abraham1, James Aspnes2?, and Jian Yuan3 1 The Institute of Computer Science, The Hebrew University of Jerusalem, [email protected] 2 Department of Computer Science, Yale University, [email protected] 3 Google, [email protected] Abstract. We describe a new data structure, the Skip B-Tree that combines the advantages of skip graphs with features of traditional B-trees. A skip B-Tree provides efficient search, insertion and deletion operations. The data structure is highly fault tolerant even to adversarial failures, and allows for particularly simple repair mechanisms. Related resource keys are kept in blocks near each other enabling efficient range queries. Using this data structure, we describe a new distributed peer-to-peer network, the Distributed Skip B-Tree. Given m data items stored in a system with n nodes, the network allows to perform a range search operation for r consecutive keys that costs only O(logb m + r/b) where b = Θ(m/n). In addition, our distributed Skip B-tree search network has provable polylogarithmic costs for all its other basic operations like insert, delete, and node join. To the best of our knowledge, all previous distributed search networks either provide a range search operation whose cost is worse than ours or may require a linear cost for some basic operation like insert, delete, and node join. ? Supported in part by NSF grants CCR-0098078, CNS-0305258, and CNS-0435201. 1 Introduction Peer-to-peer systems provide a decentralized way to share resources among machines. An ideal peer-to-peer network should have such properties as decentralization, scalability, fault-tolerance, self-stabilization, load- balancing, dynamic addition and deletion of nodes, efficient query searching and exploiting spatial as well as temporal locality in searches. -
On the Cost of Persistence and Authentication in Skip Lists*
On the Cost of Persistence and Authentication in Skip Lists⋆ Micheal T. Goodrich1, Charalampos Papamanthou2, and Roberto Tamassia2 1 Department of Computer Science, University of California, Irvine 2 Department of Computer Science, Brown University Abstract. We present an extensive experimental study of authenticated data structures for dictionaries and maps implemented with skip lists. We consider realizations of these data structures that allow us to study the performance overhead of authentication and persistence. We explore various design decisions and analyze the impact of garbage collection and virtual memory paging, as well. Our empirical study confirms the effi- ciency of authenticated skip lists and offers guidelines for incorporating them in various applications. 1 Introduction A proven paradigm from distributed computing is that of using a large collec- tion of widely distributed computers to respond to queries from geographically dispersed users. This approach forms the foundation, for example, of the DNS system. Of course, we can abstract the main query and update tasks of such systems as simple data structures, such as distributed versions of dictionar- ies and maps, and easily characterize their asymptotic performance (with most operations running in logarithmic time). There are a number of interesting im- plementation issues concerning practical systems that use such distributed data structures, however, including the additional features that such structures should provide. For instance, a feature that can be useful in a number of real-world ap- plications is that distributed query responders provide authenticated responses, that is, answers that are provably trustworthy. An authenticated response in- cludes both an answer (for example, a yes/no answer to the query “is item x a member of the set S?”) and a proof of this answer, equivalent to a digital signature from the data source. -
Exploring the Duality Between Skip Lists and Binary Search Trees
Exploring the Duality Between Skip Lists and Binary Search Trees Brian C. Dean Zachary H. Jones School of Computing School of Computing Clemson University Clemson University Clemson, SC Clemson, SC [email protected] [email protected] ABSTRACT statically optimal [5] skip lists have already been indepen- Although skip lists were introduced as an alternative to bal- dently derived in the literature). anced binary search trees (BSTs), we show that the skip That the skip list can be interpreted as a type of randomly- list can be interpreted as a type of randomly-balanced BST balanced tree is not particularly surprising, and this has whose simplicity and elegance is arguably on par with that certainly not escaped the attention of other authors [2, 10, of today’s most popular BST balancing mechanisms. In this 9, 8]. However, essentially every tree interpretation of the paper, we provide a clear, concise description and analysis skip list in the literature seems to focus entirely on casting of the “BST” interpretation of the skip list, and compare the skip list as a randomly-balanced multiway branching it to similar randomized BST balancing mechanisms. In tree (e.g., a randomized B-tree [4]). Messeguer [8] calls this addition, we show that any rotation-based BST balancing structure the skip tree. Since there are several well-known mechanism can be implemented in a simple fashion using a ways to represent a multiway branching search tree as a BST skip list. (e.g., replace each multiway branching node with a minia- ture balanced BST, or replace (first child, next sibling) with (left child, right child) pointers), it is clear that the skip 1. -
Investigation of a Dynamic Kd Search Skip List Requiring [Theta](Kn) Space
Hcqulslmns ana nqulstwns et Bibliographie Services services bibliographiques 395 Wellington Street 395, rue Wellington Ottawa ON KIA ON4 Ottawa ON KIA ON4 Canada Canada Your file Votre réference Our file Notre reldrence The author has granted a non- L'auteur a accordé une licence non exclusive licence allowing the exclusive permettant a la National Libraq of Canada to Bibliothèque nationale du Canada de reproduce, loan, distribute or sell reproduire, prêter, distribuer ou copies of this thesis in microforni, vendre des copies de cette thèse sous paper or electronic formats. la forme de microfiche/film, de reproduction sur papier ou sur format électronique. The author retains ownership of the L'auteur conserve la propriété du copyright in this thesis. Neither the droit d'auteur qui protège cette thèse. thesis nor substantial extracts fiom it Ni la thèse ni des extraits substantiels may be printed or othexwise de celle-ci ne doivent être imprimés reproduced without the author's ou autrement reproduits sans son permission. autorisation. A new dynamic k-d data structure (supporting insertion and deletion) labeled the k-d Search Skip List is developed and analyzed. The time for k-d semi-infinite range search on n k-d data points without space restriction is shown to be SZ(k1og n) and O(kn + kt), and there is a space-time trade-off represented as (log T' + log log n) = Sà(n(1og n)"e), where 0 = 1 for k =2, 0 = 2 for k 23, and T' is the scaled query time. The dynamic update tirne for the k-d Search Skip List is O(k1og a). -
Comparison of Dictionary Data Structures
A Comparison of Dictionary Implementations Mark P Neyer April 10, 2009 1 Introduction A common problem in computer science is the representation of a mapping between two sets. A mapping f : A ! B is a function taking as input a member a 2 A, and returning b, an element of B. A mapping is also sometimes referred to as a dictionary, because dictionaries map words to their definitions. Knuth [?] explores the map / dictionary problem in Volume 3, Chapter 6 of his book The Art of Computer Programming. He calls it the problem of 'searching,' and presents several solutions. This paper explores implementations of several different solutions to the map / dictionary problem: hash tables, Red-Black Trees, AVL Trees, and Skip Lists. This paper is inspired by the author's experience in industry, where a dictionary structure was often needed, but the natural C# hash table-implemented dictionary was taking up too much space in memory. The goal of this paper is to determine what data structure gives the best performance, in terms of both memory and processing time. AVL and Red-Black Trees were chosen because Pfaff [?] has shown that they are the ideal balanced trees to use. Pfaff did not compare hash tables, however. Also considered for this project were Splay Trees [?]. 2 Background 2.1 The Dictionary Problem A dictionary is a mapping between two sets of items, K, and V . It must support the following operations: 1. Insert an item v for a given key k. If key k already exists in the dictionary, its item is updated to be v. -
Binary Search Tree
ADT Binary Search Tree! Ellen Walker! CPSC 201 Data Structures! Hiram College! Binary Search Tree! •" Value-based storage of information! –" Data is stored in order! –" Data can be retrieved by value efficiently! •" Is a binary tree! –" Everything in left subtree is < root! –" Everything in right subtree is >root! –" Both left and right subtrees are also BST#s! Operations on BST! •" Some can be inherited from binary tree! –" Constructor (for empty tree)! –" Inorder, Preorder, and Postorder traversal! •" Some must be defined ! –" Insert item! –" Delete item! –" Retrieve item! The Node<E> Class! •" Just as for a linked list, a node consists of a data part and links to successor nodes! •" The data part is a reference to type E! •" A binary tree node must have links to both its left and right subtrees! The BinaryTree<E> Class! The BinaryTree<E> Class (continued)! Overview of a Binary Search Tree! •" Binary search tree definition! –" A set of nodes T is a binary search tree if either of the following is true! •" T is empty! •" Its root has two subtrees such that each is a binary search tree and the value in the root is greater than all values of the left subtree but less than all values in the right subtree! Overview of a Binary Search Tree (continued)! Searching a Binary Tree! Class TreeSet and Interface Search Tree! BinarySearchTree Class! BST Algorithms! •" Search! •" Insert! •" Delete! •" Print values in order! –" We already know this, it#s inorder traversal! –" That#s why it#s called “in order”! Searching the Binary Tree! •" If the tree is -
An Experimental Study of Dynamic Biased Skip Lists
AN EXPERIMENTAL STUDY OF DYNAMIC BIASED SKIP LISTS by Yiqun Zhao Submitted in partial fulfillment of the requirements for the degree of Master of Computer Science at Dalhousie University Halifax, Nova Scotia August 2017 ⃝c Copyright by Yiqun Zhao, 2017 Table of Contents List of Tables ................................... iv List of Figures .................................. v Abstract ...................................... vii List of Abbreviations and Symbols Used .................. viii Acknowledgements ............................... ix Chapter 1 Introduction .......................... 1 1.1 Dynamic Data Structures . .2 1.1.1 Move-to-front Lists . .3 1.1.2 Red-black Trees . .3 1.1.3 Splay Trees . .3 1.1.4 Skip Lists . .4 1.1.5 Other Biased Data Structures . .7 1.2 Our Work . .8 1.3 Organization of The Thesis . .8 Chapter 2 A Review of Different Search Structures ......... 10 2.1 Move-to-front Lists . 10 2.2 Red-black Trees . 11 2.3 Splay Trees . 14 2.3.1 Original Splay Tree . 14 2.3.2 Randomized Splay Tree . 18 2.3.3 W-splay Tree . 19 2.4 Skip Lists . 20 Chapter 3 Dynamic Biased Skip Lists ................. 24 3.1 Biased Skip List . 24 3.2 Modifications . 29 3.2.1 Improved Construction Scheme . 29 3.2.2 Lazy Update Scheme . 32 ii 3.3 Hybrid Search Algorithm . 34 Chapter 4 Experiments .......................... 36 4.1 Experimental Setup . 38 4.2 Analysis of Different C1 Sizes . 40 4.3 Analysis of Varying Value of t in H-DBSL . 46 4.4 Comparison of Data Structures using Real-World Data . 49 4.5 Comparison with Data Structures using Generated Data . 55 Chapter 5 Conclusions .......................... -
Binary Search Trees (BST)
CSCI-UA 102 Joanna Klukowska Lecture 7: Binary Search Trees [email protected] Lecture 7: Binary Search Trees (BST) Reading materials Goodrich, Tamassia, Goldwasser: Chapter 8 OpenDSA: Chapter 18 and 12 Binary search trees visualizations: http://visualgo.net/bst.html http://www.cs.usfca.edu/~galles/visualization/BST.html Topics Covered 1 Binary Search Trees (BST) 2 2 Binary Search Tree Node 3 3 Searching for an Item in a Binary Search Tree3 3.1 Binary Search Algorithm..............................................4 3.1.1 Recursive Approach............................................4 3.1.2 Iterative Approach.............................................4 3.2 contains() Method for a Binary Search Tree..................................5 4 Inserting a Node into a Binary Search Tree5 4.1 Order of Insertions.................................................6 5 Removing a Node from a Binary Search Tree6 5.1 Removing a Leaf Node...............................................7 5.2 Removing a Node with One Child.........................................7 5.3 Removing a Node with Two Children.......................................8 5.4 Recursive Implementation.............................................9 6 Balanced Binary Search Trees 10 6.1 Adding a balance() Method........................................... 10 7 Self-Balancing Binary Search Trees 11 7.1 AVL Tree...................................................... 11 7.1.1 When balancing is necessary........................................ 12 7.2 Red-Black Trees.................................................. 15 1 CSCI-UA 102 Joanna Klukowska Lecture 7: Binary Search Trees [email protected] 1 Binary Search Trees (BST) A binary search tree is a binary tree with additional properties: • the value stored in a node is greater than or equal to the value stored in its left child and all its descendants (or left subtree), and • the value stored in a node is smaller than the value stored in its right child and all its descendants (or its right subtree). -
Leftist Heap: Is a Binary Tree with the Normal Heap Ordering Property, but the Tree Is Not Balanced. in Fact It Attempts to Be Very Unbalanced!
Leftist heap: is a binary tree with the normal heap ordering property, but the tree is not balanced. In fact it attempts to be very unbalanced! Definition: the null path length npl(x) of node x is the length of the shortest path from x to a node without two children. The null path lengh of any node is 1 more than the minimum of the null path lengths of its children. (let npl(nil)=-1). Only the tree on the left is leftist. Null path lengths are shown in the nodes. Definition: the leftist heap property is that for every node x in the heap, the null path length of the left child is at least as large as that of the right child. This property biases the tree to get deep towards the left. It may generate very unbalanced trees, which facilitates merging! It also also means that the right path down a leftist heap is as short as any path in the heap. In fact, the right path in a leftist tree of N nodes contains at most lg(N+1) nodes. We perform all the work on this right path, which is guaranteed to be short. Merging on a leftist heap. (Notice that an insert can be considered as a merge of a one-node heap with a larger heap.) 1. (Magically and recursively) merge the heap with the larger root (6) with the right subheap (rooted at 8) of the heap with the smaller root, creating a leftist heap. Make this new heap the right child of the root (3) of h1. -
Objectives Objectives Searching a Simple Searching Problem A
Python Programming: Objectives An Introduction to To understand the basic techniques for Computer Science analyzing the efficiency of algorithms. To know what searching is and understand the algorithms for linear and binary Chapter 13 search. Algorithm Design and Recursion To understand the basic principles of recursive definitions and functions and be able to write simple recursive functions. Python Programming, 1/e 1 Python Programming, 1/e 2 Objectives Searching To understand sorting in depth and Searching is the process of looking for a know the algorithms for selection sort particular value in a collection. and merge sort. For example, a program that maintains To appreciate how the analysis of a membership list for a club might need algorithms can demonstrate that some to look up information for a particular problems are intractable and others are member œ this involves some sort of unsolvable. search process. Python Programming, 1/e 3 Python Programming, 1/e 4 A simple Searching Problem A Simple Searching Problem Here is the specification of a simple In the first example, the function searching function: returns the index where 4 appears in def search(x, nums): the list. # nums is a list of numbers and x is a number # Returns the position in the list where x occurs # or -1 if x is not in the list. In the second example, the return value -1 indicates that 7 is not in the list. Here are some sample interactions: >>> search(4, [3, 1, 4, 2, 5]) 2 Python includes a number of built-in >>> search(7, [3, 1, 4, 2, 5]) -1 search-related methods! Python Programming, 1/e 5 Python Programming, 1/e 6 Python Programming, 1/e 1 A Simple Searching Problem A Simple Searching Problem We can test to see if a value appears in The only difference between our a sequence using in. -
Prefix Hash Tree an Indexing Data Structure Over Distributed Hash
Prefix Hash Tree An Indexing Data Structure over Distributed Hash Tables Sriram Ramabhadran ∗ Sylvia Ratnasamy University of California, San Diego Intel Research, Berkeley Joseph M. Hellerstein Scott Shenker University of California, Berkeley International Comp. Science Institute, Berkeley and and Intel Research, Berkeley University of California, Berkeley ABSTRACT this lookup interface has allowed a wide variety of Distributed Hash Tables are scalable, robust, and system to be built on top DHTs, including file sys- self-organizing peer-to-peer systems that support tems [9, 27], indirection services [30], event notifi- exact match lookups. This paper describes the de- cation [6], content distribution networks [10] and sign and implementation of a Prefix Hash Tree - many others. a distributed data structure that enables more so- phisticated queries over a DHT. The Prefix Hash DHTs were designed in the Internet style: scala- Tree uses the lookup interface of a DHT to con- bility and ease of deployment triumph over strict struct a trie-based structure that is both efficient semantics. In particular, DHTs are self-organizing, (updates are doubly logarithmic in the size of the requiring no centralized authority or manual con- domain being indexed), and resilient (the failure figuration. They are robust against node failures of any given node in the Prefix Hash Tree does and easily accommodate new nodes. Most impor- not affect the availability of data stored at other tantly, they are scalable in the sense that both la- nodes). tency (in terms of the number of hops per lookup) and the local state required typically grow loga- Categories and Subject Descriptors rithmically in the number of nodes; this is crucial since many of the envisioned scenarios for DHTs C.2.4 [Comp.