Adapting Tree Structures for Processing with SIMD Instructions
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Graph Traversals
Graph Traversals CS200 - Graphs 1 Tree traversal reminder Pre order A A B D G H C E F I In order B C G D H B A E C F I Post order D E F G H D B E I F C A Level order G H I A B C D E F G H I Connected Components n The connected component of a node s is the largest set of nodes reachable from s. A generic algorithm for creating connected component(s): R = {s} while ∃edge(u, v) : u ∈ R∧v ∉ R add v to R n Upon termination, R is the connected component containing s. q Breadth First Search (BFS): explore in order of distance from s. q Depth First Search (DFS): explores edges from the most recently discovered node; backtracks when reaching a dead- end. 3 Graph Traversals – Depth First Search n Depth First Search starting at u DFS(u): mark u as visited and add u to R for each edge (u,v) : if v is not marked visited : DFS(v) CS200 - Graphs 4 Depth First Search A B C D E F G H I J K L M N O P CS200 - Graphs 5 Question n What determines the order in which DFS visits nodes? n The order in which a node picks its outgoing edges CS200 - Graphs 6 DepthGraph Traversalfirst search algorithm Depth First Search (DFS) dfs(in v:Vertex) mark v as visited for (each unvisited vertex u adjacent to v) dfs(u) n Need to track visited nodes n Order of visiting nodes is not completely specified q if nodes have priority, then the order may become deterministic for (each unvisited vertex u adjacent to v in priority order) n DFS applies to both directed and undirected graphs n Which graph implementation is suitable? CS200 - Graphs 7 Iterative DFS: explicit Stack dfs(in v:Vertex) s – stack for keeping track of active vertices s.push(v) mark v as visited while (!s.isEmpty()) { if (no unvisited vertices adjacent to the vertex on top of the stack) { s.pop() //backtrack else { select unvisited vertex u adjacent to vertex on top of the stack s.push(u) mark u as visited } } CS200 - Graphs 8 Breadth First Search (BFS) n Is like level order in trees A B C D n Which is a BFS traversal starting E F G H from A? A. -
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 -
Lecture12: Trees II Tree Traversal Preorder Traversal Preorder Traversal
Tree Traversal • Process of visiting nodes in a tree systematically CSED233: Data Structures (2013F) . Some algorithms need to visit all nodes in a tree. Example: printing, counting nodes, etc. Lecture12: Trees II • Implementation . Can be done easily by recursion Computers”R”Us . Order of visits does matter. Bohyung Han Sales Manufacturing R&D CSE, POSTECH [email protected] US International Laptops Desktops Europe Asia Canada CSED233: Data Structures 2 by Prof. Bohyung Han, Fall 2013 Preorder Traversal Preorder Traversal • A preorder traversal of the subtree rooted at node n: . Visit node n (process the node's data). 1 . Recursively perform a preorder traversal of the left child. Recursively perform a preorder traversal of the right child. 2 7 • A preorder traversal starts at the root. public void preOrderTraversal(Node n) 3 6 8 12 { if (n == null) return; 4 5 9 System.out.print(n.value+" "); preOrderTraversal(n.left); preOrderTraversal(n.right); 10 11 } CSED233: Data Structures CSED233: Data Structures 3 by Prof. Bohyung Han, Fall 2013 4 by Prof. Bohyung Han, Fall 2013 Inorder Traversal Inorder Traversal • A preorder traversal of the subtree rooted at node n: . Recursively perform a preorder traversal of the left child. 6 . Visit node n (process the node's data). Recursively perform a preorder traversal of the right child. 4 11 • An iorder traversal starts at the root. public void inOrderTraversal(Node n) 2 5 7 12 { if (n == null) return; 1 3 9 inOrderTraversal(n.left); System.out.print(n.value+" "); inOrderTraversal(n.right); } 8 10 CSED233: Data Structures CSED233: Data Structures 5 by Prof. -
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). -
A Set Intersection Algorithm Via X-Fast Trie
Journal of Computers A Set Intersection Algorithm Via x-Fast Trie Bangyu Ye* National Engineering Laboratory for Information Security Technologies, Institute of Information Engineering, Chinese Academy of Sciences, Beijing, 100091, China. * Corresponding author. Tel.:+86-10-82546714; email: [email protected] Manuscript submitted February 9, 2015; accepted May 10, 2015. doi: 10.17706/jcp.11.2.91-98 Abstract: This paper proposes a simple intersection algorithm for two sorted integer sequences . Our algorithm is designed based on x-fast trie since it provides efficient find and successor operators. We present that our algorithm outperforms skip list based algorithm when one of the sets to be intersected is relatively ‘dense’ while the other one is (relatively) ‘sparse’. Finally, we propose some possible approaches which may optimize our algorithm further. Key words: Set intersection, algorithm, x-fast trie. 1. Introduction Fast set intersection is a key operation in the context of several fields when it comes to big data era [1], [2]. For example, modern search engines use the set intersection for inverted posting list which is a standard data structure in information retrieval to return relevant documents. So it has been studied in many domains and fields [3]-[8]. One of the most typical situations is Boolean query which is required to retrieval the documents that contains all the terms in the query. Besides, set intersection is naturally a key component of calculating the Jaccard coefficient of two sets, which is defined by the fraction of size of intersection and union. In this paper, we propose a new algorithm via x-fast trie which is a kind of advanced data structure. -
Efficient Stackless Hierarchy Traversal on Gpus with Backtracking in Constant Time
High Performance Graphics (2016) Ulf Assarsson and Warren Hunt (Editors) Efficient Stackless Hierarchy Traversal on GPUs with Backtracking in Constant Time Nikolaus Binder† and Alexander Keller‡ NVIDIA Corporation 1 1 1 2 3 2 3 2 3 4 5 6 7 4 5 6 7 4 5 6 7 10 11 10 11 10 11 22 23 22 23 22 23 a) b) c) 44 45 44 45 44 45 Figure 1: Backtracking from the current node with key 22 to the next node with key 3, which has been postponed most recently, by a) iterating along parent and sibling references, b) using references to uncle and grand uncle, c) using a stack, or as we propose, a perfect hash directly mapping the key for the next node to its address without using a stack. The heat maps visualize the reduction in the number of backtracking steps. Abstract The fastest acceleration schemes for ray tracing rely on traversing a bounding volume hierarchy (BVH) for efficient culling and use backtracking, which in the worst case may expose cost proportional to the depth of the hierarchy in either time or state memory. We show that the next node in such a traversal actually can be determined in constant time and state memory. In fact, our newly proposed parallel software implementation requires only a few modifications of existing traversal methods and outperforms the fastest stack-based algorithms on GPUs. In addition, it reduces memory access during traversal, making it a very attractive building block for ray tracing hardware. Categories and Subject Descriptors (according to ACM CCS): I.3.3 [Computer Graphics]: Picture/Image Generation—Ray Trac- ing 1. -
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. -
Chapter 13 Sorting & Searching
13-1 Java Au Naturel by William C. Jones 13-1 13 Sorting and Searching Overview This chapter discusses several standard algorithms for sorting, i.e., putting a number of values in order. It also discusses the binary search algorithm for finding a particular value quickly in an array of sorted values. The algorithms described here can be useful in various situations. They should also help you become more comfortable with logic involving arrays. These methods would go in a utilities class of methods for Comparable objects, such as the CompOp class of Listing 7.2. For this chapter you need a solid understanding of arrays (Chapter Seven). · Sections 13.1-13.2 discuss two basic elementary algorithms for sorting, the SelectionSort and the InsertionSort. · Section 13.3 presents the binary search algorithm and big-oh analysis, which provides a way of comparing the speed of two algorithms. · Sections 13.4-13.5 introduce two recursive algorithms for sorting, the QuickSort and the MergeSort, which execute much faster than the elementary algorithms when you have more than a few hundred values to sort. · Sections 13.6 goes further with big-oh analysis. · Section 13.7 presents several additional sorting algorithms -- the bucket sort, the radix sort, and the shell sort. 13.1 The SelectionSort Algorithm For Comparable Objects When you have hundreds of Comparable values stored in an array, you will often find it useful to keep them in sorted order from lowest to highest, which is ascending order. To be precise, ascending order means that there is no case in which one element is larger than the one after it -- if y is listed after x, then x.CompareTo(y) <= 0. -
MA/CSSE 473 Day 15
MA/CSSE 473 Day 15 BFS Topological Sort Combinatorial Object Generation MA/CSSE 473 Day 15 • HW 6 due tomorrow, HW 7 Friday, Exam next Tuesday • HW 8 has been updated for this term. Due Oct 8 • ConvexHull implementation problem due Day 27 (Oct 21); assignment is available now – Individual assignment (I changed my mind, but I am giving you 3.5 weeks to do it) • Schedule page now has my projected dates for all remaining reading assignments and written assignments – Topics for future class days and details of assignments 9-17 still need to be updated for this term • Student Questions • DFS and BFS • Topological Sort • Combinatorial Object Generation - Intro Q1 1 Recap: Pseudocode for DFS Graph may not be connected, so we loop. Backtracking happens when this loop ends (no more unmarked neighbors) Analysis? Q2 Notes on DFS • DFS can be implemented with graphs represented as: – adjacency matrix: Θ(|V| 2) – adjacency list: Θ(| V|+|E|) • Yields two distinct ordering of vertices: – order in which vertices are first encountered (pushed onto stack) – order in which vertices become dead-ends (popped off stack) • Applications: – check connectivity, finding connected components – Is this graph acyclic? – finding articulation points, if any (advanced) – searching the state-space of problem for (optimal) solution (AI) Q3 2 Breadth-first search (BFS) • Visits graph vertices by moving across to all the neighbors of last visited vertex. Vertices closer to the start are visited early • Instead of a stack, BFS uses a queue • Level-order tree traversal is -
P4 Sec 4.1.1, 4.1.2, 4.1.3) Abstraction, Algorithms and ADT's
Computer Science 9608 P4 Sec 4.1.1, 4.1.2, 4.1.3) Abstraction, Algorithms and ADT’s with Majid Tahir Syllabus Content: 4.1.1 Abstraction show understanding of how to model a complex system by only including essential details, using: functions and procedures with suitable parameters (as in procedural programming, see Section 2.3) ADTs (see Section 4.1.3) classes (as used in object-oriented programming, see Section 4.3.1) facts, rules (as in declarative programming, see Section 4.3.1) 4.1.2 Algorithms write a binary search algorithm to solve a particular problem show understanding of the conditions necessary for the use of a binary search show understanding of how the performance of a binary search varies according to the number of data items write an algorithm to implement an insertion sort write an algorithm to implement a bubble sort show understanding that performance of a sort routine may depend on the initial order of the data and the number of data items write algorithms to find an item in each of the following: linked list, binary tree, hash table write algorithms to insert an item into each of the following: stack, queue, linked list, binary tree, hash table write algorithms to delete an item from each of the following: stack, queue, linked list show understanding that different algorithms which perform the same task can be compared by using criteria such as time taken to complete the task and memory used 4.1.3 Abstract Data Types (ADT) show understanding that an ADT is a collection of data and a set of operations on those data -
Binary Search Algorithm This Article Is About Searching a Finite Sorted Array
Binary search algorithm This article is about searching a finite sorted array. For searching continuous function values, see bisection method. This article may require cleanup to meet Wikipedia's quality standards. No cleanup reason has been specified. Please help improve this article if you can. (April 2011) Binary search algorithm Class Search algorithm Data structure Array Worst case performance O (log n ) Best case performance O (1) Average case performance O (log n ) Worst case space complexity O (1) In computer science, a binary search or half-interval search algorithm finds the position of a specified input value (the search "key") within an array sorted by key value.[1][2] For binary search, the array should be arranged in ascending or descending order. In each step, the algorithm compares the search key value with the key value of the middle element of the array. If the keys match, then a matching element has been found and its index, or position, is returned. Otherwise, if the search key is less than the middle element's key, then the algorithm repeats its action on the sub-array to the left of the middle element or, if the search key is greater, on the sub-array to the right. If the remaining array to be searched is empty, then the key cannot be found in the array and a special "not found" indication is returned. A binary search halves the number of items to check with each iteration, so locating an item (or determining its absence) takes logarithmic time. A binary search is a dichotomic divide and conquer search algorithm.