Three partition refinement algorithms
SIAM Journal on Computing
Sorting in c log n parallel steps
Combinatorica
Look ma, no hashing, and no arrays neither
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Surpassing the information theoretic bound with fusion trees
Journal of Computer and System Sciences - Special issue: papers from the 22nd ACM symposium on the theory of computing, May 14–16, 1990
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using multiset discrimination to solve language processing problems without hashing
Theoretical Computer Science
High level reading and data structure compilation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The art of computer programming, volume 3: (2nd ed.) sorting and searching
Journal of Computer and System Sciences
Journal of Experimental Algorithmics (JEA)
Programming pearls: Aha algorithms
Communications of the ACM
Communications of the ACM
A high-speed sorting procedure
Communications of the ACM
Efficient algorithms for isomorphisms of simple types
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Integer Sorting in 0(n sqrt (log log n)) Expected Time and Linear Space
FOCS '02 Proceedings of the 43rd Symposium on Foundations of Computer Science
Advanced Functional Programming, Second International School-Tutorial Text
Efficient trie-based sorting of large sets of strings
ACSC '03 Proceedings of the 26th Australasian computer science conference - Volume 16
Generalizing generalized tries
Journal of Functional Programming
Sorting and Searching (Eatcs Monographs on Theoretical Computer Science)
Sorting and Searching (Eatcs Monographs on Theoretical Computer Science)
SFCS '94 Proceedings of the 35th Annual Symposium on Foundations of Computer Science
Radix sorting with no extra space
ESA'07 Proceedings of the 15th annual European conference on Algorithms
Optimizing relational algebra operations using generic equivalence discriminators and lazy products
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Generic multiset programming for language-integrated querying
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Generic multiset programming with discrimination-based joins and symbolic Cartesian products
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
We introduce the notion of discrimination as a generalization of both sorting and partitioning and show that worst-case linear-time discrimination functions (discriminators) can be defined generically, by (co-)induction on an expressive language of order denotations. The generic definition yields discriminators that generalize both distributive sorting and multiset discrimination. The generic discriminator can be coded compactly using list comprehensions, with order denotations specified using Generalized Algebraic Data Types (GADTs). A GADT-free combinator formulation of discriminators is also given. We give some examples of the uses of discriminators, including a new most-significant-digit lexicographic sorting algorithm. Discriminators generalize binary comparison functions: They operate on n arguments at a time, but do not expose more information than the underlying equivalence, respectively ordering relation on the arguments. We argue that primitive types with equality (such as references in ML) and ordered types (such as the machine integer type), should expose their equality, respectively standard ordering relation, as discriminators: Having only a binary equality test on a type requires Θ(n2) time to find all the occurrences of an element in a list of length n, for each element in the list, even if the equality test takes only constant time. A discriminator accomplishes this in linear time. Likewise, having only a (constant-time) comparison function requires Θ(n log n) time to sort a list of n elements. A discriminator can do this in linear time.