Downloads provided by UsageCounts
Shuffling is the process of rearranging a sequence of elements into a random order such that any permutation occurs with equal probability. It is an important building block in a plethora of techniques used in virtually all scientific areas. Consequently considerable work has been devoted to the design and implementation of shuffling algorithms. We engineer, -- to the best of our knowledge -- for the first time, a practically fast, parallel shuffling algorithm with $\Oh{\sqrt{n}\log n}$ parallel depth that requires only poly-logarithmic auxiliary memory. Our reference implementations in Rust are freely available, easy to include in other projects, and can process large data sets approaching the size of the system's memory. In an empirical evaluation, we compare our implementations with a number of existing solutions on various computer architectures. Our algorithms consistently achieve the highest through-put on all machines. Further, we demonstrate that the runtime of our parallel algorithm is comparable to the time that other algorithms may take to acquire the memory from the operating system to copy the input.
practical implementation, FOS: Computer and information sciences, parallelism, random permutation, Shuffling, random permutation, parallelism, in-place, algorithm engineering, practical implementation, in-place, 004, Computer Science - Data Structures and Algorithms, Shuffling, Data Structures and Algorithms (cs.DS), algorithm engineering, ddc: ddc:004
practical implementation, FOS: Computer and information sciences, parallelism, random permutation, Shuffling, random permutation, parallelism, in-place, algorithm engineering, practical implementation, in-place, 004, Computer Science - Data Structures and Algorithms, Shuffling, Data Structures and Algorithms (cs.DS), algorithm engineering, ddc: ddc:004
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 0 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
| views | 18 | |
| downloads | 5 |

Views provided by UsageCounts
Downloads provided by UsageCounts