Binary Trees, While 3-Ary Trees Are Sometimes Called Ternary Trees
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
15-122: Principles of Imperative Computation, Fall 2010 Assignment 6: Trees and Secret Codes
15-122: Principles of Imperative Computation, Fall 2010 Assignment 6: Trees and Secret Codes Karl Naden (kbn@cs) Out: Tuesday, March 22, 2010 Due (Written): Tuesday, March 29, 2011 (before lecture) Due (Programming): Tuesday, March 29, 2011 (11:59 pm) 1 Written: (25 points) The written portion of this week’s homework will give you some practice reasoning about variants of binary search trees. You can either type up your solutions or write them neatly by hand, and you should submit your work in class on the due date just before lecture begins. Please remember to staple your written homework before submission. 1.1 Heaps and BSTs Exercise 1 (3 pts). Draw a tree that matches each of the following descriptions. a) Draw a heap that is not a BST. b) Draw a BST that is not a heap. c) Draw a non-empty BST that is also a heap. 1.2 Binary Search Trees Refer to the binary search tree code posted on the course website for Lecture 17 if you need to remind yourself how BSTs work. Exercise 2 (4 pts). The height of a binary search tree (or any binary tree for that matter) is the number of levels it has. (An empty binary tree has height 0.) (a) Write a function bst height that returns the height of a binary search tree. You will need a wrapper function with the following specification: 1 int bst_height(bst B); This function should not be recursive, but it will require a helper function that will be recursive. See the BST code for examples of wrapper functions and recursive helper functions. -
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] -
Advanced Data Structures
Advanced Data Structures PETER BRASS City College of New York CAMBRIDGE UNIVERSITY PRESS Cambridge, New York, Melbourne, Madrid, Cape Town, Singapore, São Paulo Cambridge University Press The Edinburgh Building, Cambridge CB2 8RU, UK Published in the United States of America by Cambridge University Press, New York www.cambridge.org Information on this title: www.cambridge.org/9780521880374 © Peter Brass 2008 This publication is in copyright. Subject to statutory exception and to the provision of relevant collective licensing agreements, no reproduction of any part may take place without the written permission of Cambridge University Press. First published in print format 2008 ISBN-13 978-0-511-43685-7 eBook (EBL) ISBN-13 978-0-521-88037-4 hardback Cambridge University Press has no responsibility for the persistence or accuracy of urls for external or third-party internet websites referred to in this publication, and does not guarantee that any content on such websites is, or will remain, accurate or appropriate. Contents Preface page xi 1 Elementary Structures 1 1.1 Stack 1 1.2 Queue 8 1.3 Double-Ended Queue 16 1.4 Dynamical Allocation of Nodes 16 1.5 Shadow Copies of Array-Based Structures 18 2 Search Trees 23 2.1 Two Models of Search Trees 23 2.2 General Properties and Transformations 26 2.3 Height of a Search Tree 29 2.4 Basic Find, Insert, and Delete 31 2.5ReturningfromLeaftoRoot35 2.6 Dealing with Nonunique Keys 37 2.7 Queries for the Keys in an Interval 38 2.8 Building Optimal Search Trees 40 2.9 Converting Trees into Lists 47 2.10 -
Algorithms Documentation Release 1.0.0
algorithms Documentation Release 1.0.0 Nic Young April 14, 2018 Contents 1 Usage 3 2 Features 5 3 Installation: 7 4 Tests: 9 5 Contributing: 11 6 Table of Contents: 13 6.1 Algorithms................................................ 13 Python Module Index 31 i ii algorithms Documentation, Release 1.0.0 Algorithms is a library of algorithms and data structures implemented in Python. The main purpose of this library is to be an educational tool. You probably shouldn’t use these in production, instead, opting for the optimized versions of these algorithms that can be found else where. You should totally check out the docs for implementation details, complexities and further info. Contents 1 algorithms Documentation, Release 1.0.0 2 Contents CHAPTER 1 Usage If you want to use the algorithms in your code it is as simple as: from algorithms.sorting import bubble_sort my_list= bubble_sort.sort(my_list) 3 algorithms Documentation, Release 1.0.0 4 Chapter 1. Usage CHAPTER 2 Features • Pseudo code, algorithm complexities and futher info with each algorithm. • Test coverage for each algorithm and data structure. • Super sweet documentation. 5 algorithms Documentation, Release 1.0.0 6 Chapter 2. Features CHAPTER 3 Installation: Installation is as easy as: $ pip install algorithms 7 algorithms Documentation, Release 1.0.0 8 Chapter 3. Installation: CHAPTER 4 Tests: Pytest is used as the main test runner and all Unit Tests can be run with: $ ./run_tests.py 9 algorithms Documentation, Release 1.0.0 10 Chapter 4. Tests: CHAPTER 5 Contributing: Contributions are always welcome. Check out the contributing guidelines to get started. -
Herent Ambiguity of Context-Free Languages
Philippe Flajolet and Analytic Combinatorics This conference pays homage to the man as well as the multi-faceted mathe- matician and computer-scientist. It also helps more people understand his rich and varied work, through talks aimed at a large audience. The first afternoon is devoted to testimonies and official talks. The next two days are dedicated to scientific talks. These talks are intended to people who want to learn about Philippe Flajolet's work, and are given mostly by co-authors of Philippe. In 30 minutes, they give a pedagogical introduction to his work, identify his main ideas and contributions and possibly show their evolution. Most of the talks form a basis for an introduction to the corresponding chapter in Philippe Flajolet's collected works, to be edited soon. Fr´ed´eriqueBassino, Mireille Bousquet-M´elou, Brigitte Chauvin, Julien Cl´ement, Antoine Genitrini, Cyril Nicaud, Bruno Salvy, Robert Sedgewick, Mich`ele Soria, Wojciech Szpankowski and Brigitte Vall´ee. Support: Virginie Collette and Chantal Girodon. 2 Wednesday, December 14 - Testimonies 13:30 - 14:00 Welcome. 14:00 - 15:30 • Inria: Welcome by Michel Cosnard. • UPMC: Welcome by Serge Fdida. • Jean-Marc Steyaert. Being 20 with Philippe. • Maurice Nivat. Un savant modeste, Philippe Flajolet. • Jean Vuillemin. Beginnings of Algo. • Bruno Salvy. Life at Algo from 1988 on. • Laure Reinhart. Philippe at the Helm of Rocquencourt Research Activities. • G´erard Huet. Philippe and Linguistics. • Marie Albenque, Lucas G´erin, Eric´ Fusy, Carine Pivoteau, Vlady Ravelomanana. Short Testimonies. 16:00-17:30 • Mich`eleSoria. Teaching with Philippe. • Brigitte Vall´ee. Philippe and the French \MathInfo" Interface. -
Secretary Ranking with Minimal Inversions
Secretary Ranking with Minimal Inversions∗ § Sepehr Assadi† Eric Balkanski‡ Renato Paes Leme Abstract We study a twist on the classic secretary problem, which we term the secretary ranking problem: elements from an ordered set arrive in random order and instead of picking the maxi- mum element, the algorithm is asked to assign a rank, or position, to each of the elements. The rank assigned is irrevocable and is given knowing only the pairwise comparisons with elements previously arrived. The goal is to minimize the distance of the rank produced to the true rank of the elements measured by the Kendall-Tau distance, which corresponds to the number of pairs that are inverted with respect to the true order. Our main result is a matching upper and lower bound for the secretary ranking problem. We present an algorithm that ranks n elements with only O(n3/2) inversions in expectation, and show that any algorithm necessarily suffers Ω(n3/2) inversions when there are n available positions. In terms of techniques, the analysis of our algorithm draws connections to linear prob- ing in the hashing literature, while our lower bound result relies on a general anti-concentration bound for a generic balls and bins sampling process. We also consider the case where the number of positions m can be larger than the number of secretaries n and provide an improved bound by showing a connection of this problem with random binary trees. arXiv:1811.06444v1 [cs.DS] 15 Nov 2018 ∗Work done in part while the first two authors were summer interns at Google Research, New York. -
The Fractal Dimension Making Similarity Queries More Efficient
The Fractal Dimension Making Similarity Queries More Efficient Adriano S. Arantes, Marcos R. Vieira, Agma J. M. Traina, Caetano Traina Jr. Computer Science Department - ICMC University of Sao Paulo at Sao Carlos Avenida do Trabalhador Sao-Carlense, 400 13560-970 - Sao Carlos, SP - Brazil Phone: +55 16-273-9693 {arantes | mrvieira | agma | caetano}@icmc.usp.br ABSTRACT time series, among others, are not useful, and the simila- This paper presents a new algorithm to answer k-nearest rity between pairs of elements is the most important pro- neighbor queries called the Fractal k-Nearest Neighbor (k- perty in such domains [5]. Thus, a new class of queries, ba- NNF ()). This algorithm takes advantage of the fractal di- sed on algorithms that search for similarity among elements mension of the dataset under scan to estimate a suitable emerged as more adequate to manipulate these data. To radius to shrinks a query that retrieves the k-nearest neigh- be able to apply similarity queries over elements of a data bors of a query object. k-NN() algorithms starts searching domain, a dissimilarity function, or a “distance function”, for elements at any distance from the query center, progres- must be defined on the domain. A distance function δ() ta- sively reducing the allowed distance used to consider ele- kes pairs of elements of the domain, quantifying the dissimi- ments as worth to analyze. If a proper radius can be set larity among them. If δ() satisfies the following properties: to start the process, a significant reduction in the number for any elements x, y and z of the data domain, δ(x, x) = 0 of distance calculations can be achieved. -
A Pointer-Free Data Structure for Merging Heaps and Min-Max Heaps
Theoretical Computer Science 84 (1991) 107-126 107 Elsevier A pointer-free data structure for merging heaps and min-max heaps Giorgio Gambosi and Enrico Nardelli Istituto di Analisi dei Sistemi ed Informutica, C.N.R., Roma, Italy Maurizio Talamo Dipartimento di Matematica Pura ed Applicata, University of L’Aquila, L’Aquila, Italy, and Istituto di Analisi dei Sistemi ed Informatica, C.N.R., Roma, Italy Abstract Gambosi, G., E. Nardelli and M. Talamo, A pointer-free data structure for merging heaps and min-max heaps, Theoretical Computer Science 84 (1991) 107-126. In this paper a data structure for the representation of mergeable heaps and min-max heaps without using pointers is introduced. The supported operations are: Insert, DeleteMax, DeleteMin, FindMax, FindMin, Merge, NewHeap, DeleteHeap. The structure is analyzed in terms of amortized time complexity, resulting in a O(1) amortized time for each operation except for Insert, for which a O(lg n) bound holds. 1. Introduction The use of pointers in data structures seems to contribute quite significantly to the design of efficient algorithms for data access and management. Implicit data structures [ 131 have been introduced in order to evaluate the impact of the absence of pointers on time efficiency. Traditionally, implicit data structures have been mostly studied for what concerns the dictionary problem, both in l-dimensional [4,5,9, 10, 141, and in multi- dimensional space [l]. In such papers, the maintenance of a single dictionary has been analyzed, not considering the case in which several instances of the same structure (i.e. several dictionaries) have to be represented and maintained at the same time and within the same array-structured memory. -
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. -
Pivot Selection Method for Optimizing Both Pruning and Balancing in Metric Space Indexes
Pivot Selection Method for Optimizing both Pruning and Balancing in Metric Space Indexes Hisashi Kurasawa1, Daiji Fukagawa2, Atsuhiro Takasu3, and Jun Adachi3 1 The University of Tokyo, 2-1-2 Hitotsubashi, Chiyoda-ku, Tokyo, Japan 2 Doshisha University, 1-3 Tatara Miyakodani, Kyotanabe-shi, Kyoto, Japan 3 National Institute of Informatics, 2-1-2 Hitotsubashi, Chiyoda-ku, Tokyo, Japan Abstract. We researched to try to find a way to reduce the cost of nearest neighbor searches in metric spaces. Many similarity search indexes recur- sively divide a region into subregions by using pivots, and construct a tree structure index. A problem in the existing indexes is that they only focus on the pruning objects and do not take into consideration the tree balanc- ing. The balance of the indexes depends on the data distribution and the indexes don’t reduce the search cost for all data. We propose a similar- ity search index called the Partitioning Capacity Tree (PCTree). PCTree automatically optimizes the pivot selection based on both the balance of the regions partitioned by a pivot and the estimated effectiveness of the search pruning by the pivot. As a result, PCTree reduces the search cost for various data distributions. Our evaluations comparing it with four in- dexes on three real datasets showed that PCTree successfully reduces the search cost and is good at handling various data distributions. Keywords: Similarity Search, Metric Space, Indexing. 1 Introduction Finding similar objects in a large dataset is a fundamental process of many applications, such as image completion [7]. These applications can be speeded up by reducing the query execution cost of a similarity search. -
Peer-To-Peer Similarity Search Based on M-Tree Indexing
Peer-to-Peer Similarity Search based on M-Tree Indexing Akrivi Vlachou1?, Christos Doulkeridis1?, and Yannis Kotidis2 1Dept.of Computer and Information Science, Norwegian University of Science and Technology 2Dept.of Informatics, Athens University of Economics and Business fvlachou,[email protected], [email protected] Abstract. Similarity search in metric spaces has several important applications both in centralized and distributed environments. In centralized applications, such as similarity-based image retrieval, usually a server indexes its data with a state- of-the-art centralized metric indexing technique, such as the M-Tree. In this pa- per, we propose a framework for distributed similarity search, where each par- ticipating peer stores its own data autonomously, under the assumption that data is indexed locally by peers using M-Trees. In order to support scalability and efficiency of search, we adopt a super-peer architecture, where super-peers are responsible for query routing. We propose the construction of metric routing in- dices suitable for distributed similarity search in metric spaces. We study the performance of the proposed framework using both synthetic and real data. 1 Introduction Similarity search in metric spaces has received significant attention in centralized set- tings [1, 6], but also recently in decentralized environments [3, 5, 8]. A prominent appli- cation is distributed search for multimedia content, such as images, video or plain text. Existing approaches for P2P metric-based similarity search mainly rely on a structured P2P overlay, which is used to intentionally store objects to peers [5, 8]. The aim is to achieve high parallelism and share the high processing cost over a set of cooperative computers. -
Compact Fenwick Trees for Dynamic Ranking and Selection
Compact Fenwick trees for dynamic ranking and selection Stefano Marchini Sebastiano Vigna Dipartimento di Informatica, Universit`adegli Studi di Milano, Italy October 15, 2019 Abstract The Fenwick tree [3] is a classical implicit data structure that stores an array in such a way that modifying an element, accessing an element, computing a prefix sum and performing a predecessor search on prefix sums all take logarithmic time. We introduce a number of variants which improve the classical implementation of the tree: in particular, we can reduce its size when an upper bound on the array element is known, and we can perform much faster predecessor searches. Our aim is to use our variants to implement an efficient dynamic bit vector: our structure is able to perform updates, ranking and selection in logarithmic time, with a space overhead in the order of a few percents, outperforming existing data structures with the same purpose. Along the way, we highlight the pernicious interplay between the arithmetic behind the Fenwick tree and the structure of current CPU caches, suggesting simple solutions that improve performance significantly. 1 Introduction The problem of building static data structures which perform rank and select operations on vectors of n bits in constant time using additional o(n) bits has received a great deal of attention in the last two decades starting form Jacobson's seminal work on succinct data structures. [7] The rank operator takes a position in the bit vector and returns the number of preceding ones. The select operation returns the position of the k-th one in the vector, given k.