lsb(x) = Least Significant Bit ?

Slides:



Advertisements
Similar presentations
Uniform algorithms for deterministic construction of efficient dictionaries Milan Ružić IT University of Copenhagen Faculty of Mathematics University of.
Advertisements

Gerth Stølting Brodal University of Aarhus Monday June 9, 2008, IT University of Copenhagen, Denmark International PhD School in Algorithms for Advanced.
Priority Queues  MakeQueuecreate new empty queue  Insert(Q,k,p)insert key k with priority p  Delete(Q,k)delete key k (given a pointer)  DeleteMin(Q)delete.
I/O-Algorithms Lars Arge Fall 2014 September 25, 2014.
Msb(x) in O(1) steps using 5 multiplications Word size n = g∙g, g a power of 2 [M.L. Fredman, D.E. Willard, Surpassing the information-theoretic bound.
1 Cell Probe Complexity - An Invitation Peter Bro Miltersen University of Aarhus.
1 Nearest Commen Ancestors (NCA) Discrete Range Maximum Cartesian Tree [Vuillemin 1980] i j max(i, j) i.
O(log n) bits or atomic elements
Update 1 Persistent Data Structures (Version Control) v0v0 v1v1 v2v2 v3v3 v4v4 v5v5 v6v6 Ephemeral query v0v0 v1v1 v2v2 v3v3 v4v4 v5v5 v6v6 Partial persistence.
Engineering a Sorted List Data Structure for 32 Bit Keys Roman Dementiev Lutz Kettner Jens Mehnert Peter Sanders MPI für Informatik, Saarbrücken.
B+-tree and Hashing.
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Course Review COMP171 Spring Hashing / Slide 2 Elementary Data Structures * Linked lists n Types: singular, doubly, circular n Operations: insert,
COMP 171 Data Structures and Algorithms Tutorial 10 Hash Tables.
Cache Oblivious Search Trees via Binary Trees of Small Height
The Complexity of Algorithms and the Lower Bounds of Problems
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Data Structures Hashing Uri Zwick January 2014.
Time O(log d) Exponential-search(13) Finger Search Searching in a sorted array time O(log n) Binary-search(13)
A Worst Case, Constant Time Priority Queue: Beating a Lower Bound Ian Munro University of Waterloo Joint work with Andrej Brodnik (Ljubljana & Luleå) Svante.
Λίστα Εργασιών Data Structures for Tree Manipulation D. Harel and R.E. Tarjan. Fast Algorithms for finding nearest common ancestors. SIAM J. Computing,
Java Methods Big-O Analysis of Algorithms Object-Oriented Programming
Dynamic Perfect Hashing By: Tomer Shlomi Dynamic Perfect Hashing: Upper and Lower Bounds – Martin Dietzfelbinger, Anna Karlin, Kurt Mehlhorn, Friedhelm.
Data Structure II So Pak Yeung Outline Review  Array  Sorted Array  Linked List Binary Search Tree Heap Hash Table.
1 Nearest Common Ancestors (NCA) Discrete Range Maximum Cartesian Tree [Vuillemin 1980] i j max(i, j) i.
Sorting Integers in the RAM Model Gerth Stølting Brodal Joint work with Djamal Belazzougui and Jesper Sindal Nielsen (to be presented at the 14th Scandinavian.
Advanced Sorting 7 2  9 4   2   4   7
Chapter 11 Sorting Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich, Tamassia and Mount.
Analysis of Algorithms and Inductive Proofs
Sorting With Priority Queue In-place Extra O(N) space
CSC317 Selection problem q p r Randomized‐Select(A,p,r,i)
Self-Adjusting Data Structures
Data Structures: Disjoint Sets, Segment Trees, Fenwick Trees
A Worst Case, Constant Time Priority Queue
Succinct Data Structures
List Order Maintenance
Experimental evaluation of Navigation piles
Persistent Data Structures (Version Control)
Searching in Trees Gerth Stølting Brodal Aarhus University
Hashing Exercises.
Space-efficient graph algorithms
Cse 373 April 26th – Exam Review.
Sorting.
Advanced Associative Structures
Data Structures: Segment Trees, Fenwick Trees
Chapter 4: Divide and Conquer
Algorithm design and Analysis
Priority Queue & Heap CSCI 3110 Nan Chen.
Randomized Algorithms CS648
CSCE 3110 Data Structures & Algorithm Analysis
What to do when you don’t know anything know nothing
Strict Fibonacci Heaps
Searching: linear & binary
Chapter 6: Transform and Conquer
Searching CLRS, Sections 9.1 – 9.3.
Database Systems (資料庫系統)
8th Workshop on Massive Data Algorithms, August 23, 2016
Binary and Binomial Heaps
Topic 5: Heap data structure heap sort Priority queue
Melding Priority Queues
Sorting And Searching CSE116A,B 4/7/2019 B.Ramamurthy.
Union-Find with Constant Time Deletions
Data Structures in Ethereum
Hashing.
Priority Queues Supports the following operations. Insert element x.
New Jersey, October 9-11, 2016 Field of theoretical computer science
Discrete Range Maximum
17CS1102 DATA STRUCTURES © 2018 KLEF – The contents of this presentation are an intellectual and copyrighted property of KL University. ALL RIGHTS RESERVED.
Algorithm Course Algorithms Lecture 3 Sorting Algorithm-1
Presentation transcript:

lsb(x) = Least Significant Bit ? w-1 lsb i 1 x

msb(x) in O(1) steps using 5 multiplications [M.L. Fredman, D.E. Willard, Surpassing the information-theoretic bound with fusion trees, Journal of Computer and System Sciences 47 (3): 424–436, 1993] Page 22, n=g*g, g is a power of 2. Not of practical interest Intel 386 and later: Hardware support for MSB by the BSR instruction (Bit Scan Reverse) LSB = Bit Scan Forward Word size n = g∙g, g a power of 2

RAM model (Random Access Machine) w bits CPU, O(1) registers 010100111010101 1 001010101010111 2 110101010101001 3 111010100101010 4 110110101010101 . 111100011110101 111100011111101 111010101010101 111100010000101 100010011110101 000000011111101 000011111111101 111111111111111 - XOR OR write shift-left + * shift-right Memory, infinite read NOT AND not an AC0 operation AC0 = circuits of depth O(1) and polynomial size, with unlimited-fanin AND gates and OR gates. # reads Complexity = + # writes + # instructions performed

w/log n x Counting-Sort = O(n∙w/log n) Radix Sort w bits 1 010100111010101 2 001010101010111 3 110101010101001 4 111010100101010 . 110110101010101 111100011110101 111100011111101 111010101010101 111100010000101 n 100010011110101 000000000000000 GOAL: Design algorithms with complexity independent of w (trans-dichotomous) [M.L. Fredman, D.E. Willard, Surpassing the information-theoretic bound with fusion trees, Journal of Computer and System Sciences 47 (3): 424–436, 1993] [Cormen et al. 2009]

Priority queues (Insert/DeleteMin) Sorting Comparison O(n∙log n) Radix-Sort O(n∙w/log n) [KR83] O(n∙log(w/log n)) [T96] O(n∙loglog n) [HT02] O(n∙loglog n) exp. [AHNR95] O(n) exp., w ≥ log2+ n [BBN14] O(n) exp., w ≥ log2 nloglog n [D. Kirkpatrick, S. Reisch, Upper bounds for sorting integers on random access machines. Theoretical Computer Science 28(3), 1983] [M. Thorup, On RAM Priority Queues. ACM-SIAM Symposium on Discrete Algorithms, 59-67, 1996] [Y. Han, M. Thorup, Integer Sorting in O(n log log n) Expected Time and Linear Space, IEEE Foundations of Computer Science, 135-144, 2002] [A. Andersson, T. Hagerup, S. Nilsson, R. Raman: Sorting in linear time? ACM Symposium on Theory of Computing, 427-436, 1995] [D. Belazzougu, G. S. Brodal, J. A. S. Nielsen, Expected Linear Time Sorting for Word Size (log2 nlog log n), Scandinavian Workshop on Algorithm Theory, 26-37, 2014] Priority queues (Insert/DeleteMin) Comparison O(log n) [T96] O(loglog n) [HT02,T07] O(loglog n) exp. [M. Thorup, On RAM Priority Queues. ACM-SIAM Symposium on Discrete Algorithms, 59-67, 1996] [Y. Han, M. Thorup, Integer Sorting in O(n log log n) Expected Time and Linear Space, IEEE Foundations of Computer Science, 135-144, 2002] [Mikkel Thorup, Equivalence between priority queues and sorting, J. ACM 54(6), 2007]

Dynamic predecessor searching (w dependent) [vKZ77] O(log w) [BF02] O(log w/loglog w) (static, space nO(1)) O(log w/loglog w∙loglog n) (dynamic) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] [P. Beame, F.E. Fich, Optimal Bounds for the Predecessor Problem and Related Problems. J. Comput. Syst. Sci. 65(1): 38-72, 2002] [M. Patrascu, M. Thorup, Time-space trade-offs for predecessor search, ACM Symposium on Theory of Computing, 232-240, 2006] Dynamic predecessor searching (w independent) Comparison O(log n) [FW93] O(log n/loglog n) [AT07] O(log n/loglog n) van Emde Boas optimal wrt O(n) space solutions, due to Patrascu & Thorup [M.L. Fredman, D.E. Willard, Surpassing the information-theoretic bound with fusion trees, Journal of Computer and System Sciences 47 (3): 424–436, 1993] [A. Andersson, M. Thorup, Dynamic ordered sets with exponential search trees. J. ACM 54(3): 13, 2007]

Sorting two elements in one word... ...without comparisons X Y test bit 1 w bits

Finding minimum of k elements in one word... ...without comparisons x1 x2 x3 x4 w bits 0 0 0 0 0 0 0 min(x1...x4) Searching a sorted set...

Batcher’s bitonic merger [K.E. Batcher, Sorting Networks and Their Applications, AFIPS Spring Joint Computing Conference 1968: 307-314] [S. Albers, T. Hagerup, Improved Parallel Integer Sorting without Concurrent Writing, ACM-SIAM Symposium on Discrete Algorithms, 463-472, 1992] word implementation, O(log #elements) operations increasing sequence decreasing sequence Merging 16 values Round 1 Round 2 Round 3 Round 4 Remark: Sorting networks recently revived interest for GPU sorting

van Emde Boas (the idea in the static case) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] min,max 0,13 0,2 13,13 0,2 13,13 0,0 2,2 13,13 2,2 13,13 0,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Predecessor : Find first ancestor with min smaller than search key. Answer = max of left child Universe U ≤ 2w Predecessor search = find nearest yellow ancestor = binary search on path O(loglog U) Space O(U) 

van Emde Boas (addressing) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] array indexing roots by msb bits min,max 0,13 0,2 13,13 0,2 002 012 102 112 13,13 0,0 2,2 13,13 2,2 13,13 0,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Universe U ≤ 2w

van Emde Boas (dynamic) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] 1 recursive top-structure and U bottom structures of the most and least significant log U/2 bits Keep min & max outside structure  1 recursive call O(loglog U) search & update min=0, max=13 9 = 2 ∙ 4 + 1 Gudmund’s note on vEB 002 012 102 112

van Emde Boas (pseudo code) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] succ(i) { i = an + b } if i > max then return + if i ≤ min then return min if size ≤ 2 then return max if bottom[a]. size > 0 and bottom[a].max ≥ b then return an + bottom[a].succ(b) else if top.max ≤ a then return max c := top.succ(a + 1) return cn + bottom[c].min insert(i) if size = 0 then max := min := i if size = 1 then if i < min then min := i else max := i if size ≥ 2 then if i < min then swap(i, min) if i > max then swap(i, max) { i = an + b } if bottom[a].size = 0 then top.insert(a) bottom[a].insert(b) size := size + 1 delete(i) if size = 2 then if i = max then max := min else min := max if size > 2 then if i = min then i := min := top.min ∙ n + bottom[top.min].min else if i = max then i := max := top.max ∙ n + bottom[top.max].max { i = an + b } bottom[a].delete(b) if bottom[a].size = 0 then top.delete(a) size := size – 1 O(loglog U)

van Emde Boas (linear space) [P. van Emde Boas, R. Kaas, and E. Zijlstra, Design and Implementation of an Efficient Priority Queue, Mathematical Systems Theory 10, 99-127, 1977] [Dan E. Willard, Log-logarithmic worst-case range queries are possible in space Θ(N), Information Processing Letters 17(2): 81–84, 1983] min=0, max=13 002 012 102 112 9 = 2 ∙ 4 + 1 Buckets = lists of size O(loglog U), store only bucket minimum in vEB (Dynamic perfect) Hashing to store all O(n) non-zero nodes of vEB O(n) space, O(loglog U) search

O(loglog n) priority queue O(n∙loglog n) Sorting [M. Thorup, On RAM Priority Queues. ACM-SIAM Symposium on Discrete Algorithms, 59-67, 1996] loglog n recursive levels of vEB  bottom of recursion log U / log n bit elements subproblems of k elements stored in k/log n words  mergesort O(k ∙ log k ∙ loglog n / log n) merge-sort merging 2 words #elements per word O(loglog n) priority queue [M. Thorup, On RAM Priority Queues. ACM-SIAM Symposium on Discrete Algorithms, 59-67, 1996] vEB ≤ log n min in single word Sorted lists of size 2i in 2i /w words

O(log n) Dynamic predecessor searching [Arne Andersson, Sublogarithmic Searching Without Multiplications. IEEE Foundations of Computer Science, 655-663, 1995] [Arne Andersson, Mikkel Thorup, Dynamic Ordered Sets with Exponential Search Trees, J. ACM 54(3): 13, 2007] vEB - log n recursive levels w / 2log n bit elements packed B-tree of degree = 2log n and height log n / log  = log n O(1) time navigation at node ... ... ... degree  search keys sorted in one word 16

Sorting in O(n) time ?

Dynamic perfect hashing [Michael L. Fredman, János Komlós, Endre Szemerédi, Storing a Sparse Table with O(1) Worst Case Access Time, J. ACM 31(3): 538-544, 1984] [Martin Dietzfelbinger, Anna R. Karlin, Kurt Mehlhorn, Friedhelm Meyer auf der Heide, Hans Rohnert, Robert Endre Tarjan, Dynamic Perfect Hashing: Upper and Lower Bounds, SIAM J. Computing 23(4): 738-761, 1994] x h(x) Prime p  U (=2w) H = { hk | 0<k<p  hk(x) = kx mod p } Pr[ h(x)=h(y) ] = 1/table-size E[ i|Bi|2 ] = O(n2/table-size) 1 2 3 i … n hi(x) 1 2 3 … |Bi|2 x  pr. (1) no collision in bucket  pr. (1) total bucket space O(n) no collisions 2-level hashing of set S of size n Random hash functions from H: h, h1, h2, … (mod table size) Bucket Bi = { x  S | h(x) = i } Rehash: whole table if i|Bi|2  cn  new table size n bucket if collision  new bucket size |Bi|2 Search O(1) worst-case & updates O(1) expected amortized Analysis : doubling phases; assume knowledge about all elements at the end of the phase; probability p>0 for success for each random choice; expected #retrys O(1), each of linear cost  all hash functions new  one new hi