Just Join for Parallel Ordered Sets

  title={Just Join for Parallel Ordered Sets},
  author={Guy E. Blelloch and Daniel Ferizovic and Yihan Sun},
  journal={Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures},
Ordered sets (and maps when data is associated with each key) are one of the most important and useful data types. The set-set functions union, intersection and difference are particularly useful in certain applications. Brown and Tarjan first described an algorithm for these functions, based on 2-3 trees, that meet the optimal Θ(m log (n/m+1)) time bounds in the comparison model (n and m ≤ n are the input sizes). Later Adams showed very elegant algorithms for the functions, and others, based… 

Figures and Tables from this paper

Low-latency graph streaming using compressed purely-functional trees

This paper designs theoretically-efficient and practical algorithms for performing batch updates to C-trees, and shows that it can store massive dynamic real-world graphs using only a few bytes per edge, thereby achieving space usage close to that of the best static graph processing frameworks.

Hinted Dictionaries: Efficient Functional Ordered Sets and Maps

In this example, alternative data structures can be provided by simply changing the type signature of the hinted set from hinted_set to another implementation, without modifying anything else.

The Log-Interleave Bound: Towards the Unification of Sorting and the BST Model

The main vehicle of this study is the log-interleave bound, a measure of the information-theoretic complexity of a permutation π which is comparable to the most powerful known measure of disorder.

Parallel Batched Interpolation Search Tree

This work parallelize Interpolation Search Tree which serves each request from a smooth distribution in doubly-logarithmic time and performs a batch of< operations in (< log log=) work and poly-log span.

Provably Efficient and Scalable Shared-Memory Graph Algorithms

A new graph-streaming system called Aspen is proposed, and it is shown that using Aspen, one can concurrently update and analyze the WebDataCommons hyperlink graph on a single commodity multicore machine with a terabyte of main memory.

PaC-trees: supporting parallel and compressed purely-functional collections

This paper presents PaC-trees, a purely-functional data structure supporting functional interfaces for sets, maps, and sequences that provides a significant reduction in space over existing approaches and designed CPAM, a C++ library that implements the full functionality of PAM, while offering significant extra functionality for compression.

Joinable Parallel Balanced Binary Trees

This article shows how a single function, join, can be used to implement parallel balanced binary search trees (BSTs) simply and efficiently, and describes the technique as an algorithmic framework called join-based algorithms.

Introduction to Parallel Algorithms (DRAFT)

PAM: parallel augmented maps

An interface for ordered maps that is augmented to support fast range queries and sums, and a parallel and concurrent library called PAM (Parallel Augmented Maps) that implements the interface are described.

Proposal : Parallel Balanced Binary Trees Using Just Join

This thesis proposes a parallel algorithmic framework that overcomes challenges, which captures all balancing criteria in a single function JOIN, which is parallel, work-efficient, generic across balancing schemes, persistent, safe for concurrency and applicable to a wide range of applications and queries by proper augmentations.



Parallel Bi-objective Shortest Paths Using Weight-Balanced B-trees with Bulk Updates

A practical parallel algorithm for finding shortest paths in the presence of two objective functions by carefully re-engineering the algorithm for moderate parallelism and develops a parallel weight-balanced B-tree data structure that cache efficiently supports bulk updates.

STL tutorial and reference guide - C++ programming with the standard template library

This second edition of the STL Tutorial and Reference Guide is fully updated to reflect all of the changes made to STL for the final ANSI/ISO C++ language standard and has been expanded with new chapters and appendices.

Fast Parallel Operations on Search Trees

Using (a, b)-trees as an example, we show how to perform a parallel split with logarithmic latency and parallel join, bulk updates, intersection, union (or merge), and (symmetric) set difference with

Fast set operations using treaps

The main advantage of the algorithms for set operations seem simpler than previous sequential algorithms with the same work bounds, and might therefore also be useful in a sequential context.

Parallelization of Bulk Operations for STL Dictionaries

This work considers parallelizing two of their bulk operations, namely the construction from many elements, and the insertion of many elements at a time, which can make programs profit in an easy way from multi-core processing power.

Data structures and network algorithms

  • R. Tarjan
  • Computer Science
    CBMS-NSF regional conference series in applied mathematics
  • 1983
This paper presents a meta-trees tree model that automates the very labor-intensive and therefore time-heavy and therefore expensive process of manually selecting trees to grow in a graph.


The organization of information placed in the points of an automatic computer is discussed and the role of memory, storage and retrieval in this regard is discussed.

Functional Pearls Efficient sets—a balancing act

  • S. Adams
  • Computer Science
    Journal of Functional Programming
  • 1993
In this 'functional pearl', Adams describes a generalization of bis competition entry, which was almost as fast as Freeman's for very large sets, and was faster for smaller sets.

Fast concurrent lock-free binary search trees

A new lock-free algorithm for concurrent manipulation of a binary search tree in an asynchronous shared memory system that supports search, insert and delete operations and significantly outperforms all other algorithms for a concurrent binarysearch tree in many cases.

Parallel algorithms for red-black trees