Results 11  20
of
66
Checking Mergeable Priority Queues
 In Digest of the 24th Symposium on FaultTolerant Computing
, 1994
"... We present an efficient algorithm which can check the answers given by the fundamental abstract data types priority queues and mergeable priority queues. This is the first lineartime checker for mergeable priority queues. These abstract data types are widely used in routing, scheduling, simulation, ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
We present an efficient algorithm which can check the answers given by the fundamental abstract data types priority queues and mergeable priority queues. This is the first lineartime checker for mergeable priority queues. These abstract data types are widely used in routing, scheduling, simulation, computational geometry and many other algorithmic domains. We have implemented our answer checker and have performed experiments comparing the speed of our checker to recently benchmarked priority queue and mergeable priority queue implementations, and our checker is substantially faster than the best of these implementations. 1 Introduction This paper concerns the fundamental abstract data types of priority queues (PQs) and mergeable priority queues (MPQs). These abstract data types have been recognized as centrally important from the early days of computeralgorithm design. They appear in seminal algorithm texts such as Knuth's [10] and Aho, Hopcroft and Ullman's [1]. Data structure impl...
Optimal Purely Functional Priority Queues
 JOURNAL OF FUNCTIONAL PROGRAMMING
, 1996
"... Brodal recently introduced the first implementation of imperative priority queues to support findMin, insert, and meld in O(1) worstcase time, and deleteMin in O(log n) worstcase time. These bounds are asymptotically optimal among all comparisonbased priority queues. In this paper, we adapt B ..."
Abstract

Cited by 18 (1 self)
 Add to MetaCart
Brodal recently introduced the first implementation of imperative priority queues to support findMin, insert, and meld in O(1) worstcase time, and deleteMin in O(log n) worstcase time. These bounds are asymptotically optimal among all comparisonbased priority queues. In this paper, we adapt Brodal's data structure to a purely functional setting. In doing so, we both simplify the data structure and clarify its relationship to the binomial queues of Vuillemin, which support all four operations in O(log n) time. Specifically, we derive our implementation from binomial queues in three steps: first, we reduce the running time of insert to O(1) by eliminating the possibility of cascading links; second, we reduce the running time of findMin to O(1) by adding a global root to hold the minimum element; and finally, we reduce the running time of meld to O(1) by allowing priority queues to contain other priority queues. Each of these steps is expressed using MLstyle functors. The last transformation, known as datastructural bootstrapping, is an interesting application of higherorder functors and recursive structures.
Purely Functional RandomAccess Lists
 In Functional Programming Languages and Computer Architecture
, 1995
"... We present a new data structure, called a randomaccess list, that supports array lookup and update operations in O(log n) time, while simultaneously providing O(1) time list operations (cons, head, tail). A closer analysis of the array operations improves the bound to O(minfi; log ng) in the wor ..."
Abstract

Cited by 17 (2 self)
 Add to MetaCart
We present a new data structure, called a randomaccess list, that supports array lookup and update operations in O(log n) time, while simultaneously providing O(1) time list operations (cons, head, tail). A closer analysis of the array operations improves the bound to O(minfi; log ng) in the worst case and O(log i) in the expected case, where i is the index of the desired element. Empirical evidence suggests that this data structure should be quite efficient in practice. 1 Introduction Lists are the primary data structure in every functional programmer 's toolbox. They are simple, convenient, and usually quite efficient. The main drawback of lists is that accessing the ith element requires O(i) time. In such situations, functional programmers often find themselves longing for the efficient random access of arrays. Unfortunately, arrays can be quite awkward to implement in a functional setting, where previous versions of the array must be available even after an update. Since arra...
A New Look at Pfair Priorities
 In Submission
, 1999
"... We consider Pfair scheduling in realtime multiprocessor systems. Under Pfair scheduling, tasks are required to execute at steady rates. The most efficient Pfair scheduling algorithm proposed to date is an algorithm called PD developed by Baruah and colleagues. PD schedules periodic tasks by breakin ..."
Abstract

Cited by 16 (3 self)
 Add to MetaCart
We consider Pfair scheduling in realtime multiprocessor systems. Under Pfair scheduling, tasks are required to execute at steady rates. The most efficient Pfair scheduling algorithm proposed to date is an algorithm called PD developed by Baruah and colleagues. PD schedules periodic tasks by breaking them into quantumlength subtasks that are subject to intermediate deadlines. Ties among subtasks with the same intermediate deadline are broken by inspecting four tiebreak parameters. PD improved upon a previous algorithm called PF, which relies on a lessefficient procedure for resolving ties. In this paper, we show that the priority definition used in PD can be simplified to consist of one intermediate deadline and only two tiebreak parameters. We also show that further simplifications are, in general, unlikely. In particular, we show if either tiebreak parameter is eliminated, then there exists a feasible task set that is not correctly scheduled. Although both tiebreaks are needed ...
Efficient Simulation of Multiple Cache Configurations using Binomial Trees
, 1991
"... Simulation time is often the bottleneck in the cache design process. In this paper, algorithms for the efficient simulation of direct mapped and set associative caches are presented. Two classes of direct mapped caches are considered: fixed line size caches and fixed size caches. A binomial tree rep ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
Simulation time is often the bottleneck in the cache design process. In this paper, algorithms for the efficient simulation of direct mapped and set associative caches are presented. Two classes of direct mapped caches are considered: fixed line size caches and fixed size caches. A binomial tree representation of the caches in each class is introduced. The fixed line size class is considered for set associative caches. A generalization of the binomial tree data structure is introduced and the fixed line size class of set associative caches is represented using the generalized binomial tree. Algorithms are developed that use the data structures to determine miss ratios for the caches in each class. Analytical and empirical comparisons of the algorithms to previously published algorithms such as allassociativity and forest simulation are presented. Analytically it is shown that the new algorithms always perform better than earlier algorithms. Empirically, the new algorithms are shown to...
The Soft Heap: An Approximate Priority Queue with Optimal Error Rate
 J. ACM
, 2000
"... A simple variant of a priority queue, called a soft heap, is introduced. The data structure supports the usual operations: insert, delete, meld, and findmin. Its novelty is to beat the logarithmic bound on the complexity of a heap in a comparisonbased model. ..."
Abstract

Cited by 14 (1 self)
 Add to MetaCart
A simple variant of a priority queue, called a soft heap, is introduced. The data structure supports the usual operations: insert, delete, meld, and findmin. Its novelty is to beat the logarithmic bound on the complexity of a heap in a comparisonbased model.
The Role of Lazy Evaluation in Amortized Data Structures
 In Proc. of the International Conference on Functional Programming
, 1996
"... Traditional techniques for designing and analyzing amortized data structures in an imperative setting are of limited use in a functional setting because they apply only to singlethreaded data structures, yet functional data structures can be nonsinglethreaded. In earlier work, we showed how lazy e ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
Traditional techniques for designing and analyzing amortized data structures in an imperative setting are of limited use in a functional setting because they apply only to singlethreaded data structures, yet functional data structures can be nonsinglethreaded. In earlier work, we showed how lazy evaluation supports functional amortized data structures and described a technique (the banker's method) for analyzing such data structures. In this paper, we present a new analysis technique (the physicist's method) and show how one can sometimes derive a worstcase data structure from an amortized data structure by appropriately scheduling the premature execution of delayed components. We use these techniques to develop new implementations of FIFO queues and binomial queues. 1 Introduction Functional programmers have long debated the relative merits of strict versus lazy evaluation. Although lazy evaluation has many benefits [11], strict evaluation is clearly superior in at least one area:...
Algorithms for Learning by Distances
 Information and Computation
, 2001
"... We consider the information complexity of learning in metric spaces. We discuss two models of such learning processes. The first one is the Learning By Distances (LBD) model of BenDavid et al [BIK]. In this model a concept is a point in a metric space, at each step of the learning process the st ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
We consider the information complexity of learning in metric spaces. We discuss two models of such learning processes. The first one is the Learning By Distances (LBD) model of BenDavid et al [BIK]. In this model a concept is a point in a metric space, at each step of the learning process the student offers a hypothesis and receives from the teacher an approximation of its distance to the target. We also present a new Relative Distances (RD) model. In this model, at each step, the student presents two points and receives a bit indicating which of them is closer to the target. We investigate the learning complexity in both models. We provide general lower and upper bounds on the complexity of learning concept classes in these models. We then analyze the complexity of several natural concept classes in two metric spaces; the space of boolean formulas with the metric induced by the number of satisfying assignments and spaces defined on graphs with the metric induced by the length of the shortest path between pairs of nodes. 1
Functional Binomial Queues
 In Glasgow Workshop on Functional Programming
, 1994
"... Efficient implementations of priority queues can often be clumsy beasts. We express a functional implementation of binomial queues which is both elegant and efficient. We also quantify some of the differences with other functional implementations. The operations decreaseKey and delete always pose a ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
Efficient implementations of priority queues can often be clumsy beasts. We express a functional implementation of binomial queues which is both elegant and efficient. We also quantify some of the differences with other functional implementations. The operations decreaseKey and delete always pose a problem without destructive update, we show how our implementation may be extended to express these. 1 Functional priority queues A crucial part of many algorithms is the data structure that is used. Frequently, an algorithm needs an abstract data type providing a number of primitive operations on a data structure. A priority queue is one such data structure that is used by a number of algorithms. Applications include, Dijkstra's [4] algorithm for singlesource shortest paths, and the minimum cost spanning tree problem (see Tarjan [12] for a discussion of minimumspanning tree algorithms). See Knuth [8] and Aho et al [1] for many other applications of priority queues. A priority queue is a ...
Data Structures and Amortized Complexity in a Functional Setting
, 1992
"... views of amortization : : : : : : : : : : : : : : : : : : : 44 4 Implementation aspects 49 4.1 Functional program notation : : : : : : : : : : : : : : : : : : : : 50 4.2 Eager evaluation : : : : : : : : : : : : : : : : : : : : : : : : : : : 51 4.3 Pointer implementation of stacks : : : : : : : : : ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
views of amortization : : : : : : : : : : : : : : : : : : : 44 4 Implementation aspects 49 4.1 Functional program notation : : : : : : : : : : : : : : : : : : : : 50 4.2 Eager evaluation : : : : : : : : : : : : : : : : : : : : : : : : : : : 51 4.3 Pointer implementation of stacks : : : : : : : : : : : : : : : : : : 52 4.4 Destructivity : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 54 4.5 Queues and concatenable deques : : : : : : : : : : : : : : : : : : Contents iii 4.6 Linear usage of destructive monoalgebras : : : : : : : : : : : : : 58 4.7 Benevolent sideeffects : : : : : : : : : : : : : : : : : : : : : : : : 61 5 Analysis of functional programs and algebras 63 5.1 Cost measures : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 63 5.2 Worstcase analysis : : : : : : : : : : : : : : : : : : : : : : : : : : 67 5.3 Amortized cost of functions : : : : : : : : : : : : : : : : : : : : : 69 5.4 Amortized analysis : : : : : : : : : : : : : : : : : : : : : : : : : ...