Results 1 -
3 of
3
Efficient Piecewise-Linear Function Approximation Using the Uniform Metric
- Discrete & Computational Geometry
, 1994
"... We give an O(n log n)-time method for finding a best k-link piecewise-linear function approximating an n-point planar data set using the well-known uniform metric to measure the error, ffl 0, of the approximation. Our method is based upon new characterizations of such functions, which we exploit to ..."
Abstract
-
Cited by 33 (0 self)
- Add to MetaCart
We give an O(n log n)-time method for finding a best k-link piecewise-linear function approximating an n-point planar data set using the well-known uniform metric to measure the error, ffl 0, of the approximation. Our method is based upon new characterizations of such functions, which we exploit to design an efficient algorithm using a plane sweep in "ffl space" followed by several applications of the parametric searching technique. The previous best running time for this problem was O(n 2 ). 1 Introduction Approximating a set S = f(x 1 ; y 1 ); (x 2 ; y 2 ); : : : ; (x n ; y n )g of points in the plane by a function is a classic problem in applied mathematics. The general goals in this area of research are to find a function F belonging to a class of functions F such that each F 2 F is simple to describe, represent, and compute and such that the chosen F approximates S well. For example, one may desire that F be the class of linear or piecewise-linear functions, and, for any parti...
Purely Functional Random-Access Lists
- In Functional Programming Languages and Computer Architecture
, 1995
"... We present a new data structure, called a random-access 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 15 (2 self)
- Add to MetaCart
We present a new data structure, called a random-access 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...
Data Structural Bootstrapping, Linear Path Compression, and Catenable Heap Ordered Double Ended Queues
- SIAM Journal on Computing
, 1992
"... A deque with heap order is a linear list of elements with real-valued keys which allows insertions and deletions of elements at both ends of the list. It also allows the findmin (equivalently findmax) operation, which returns the element of least (greatest) key, but it does not allow a general delet ..."
Abstract
-
Cited by 15 (7 self)
- Add to MetaCart
A deque with heap order is a linear list of elements with real-valued keys which allows insertions and deletions of elements at both ends of the list. It also allows the findmin (equivalently findmax) operation, which returns the element of least (greatest) key, but it does not allow a general deletemin (deletemax) operation. Such a data structure is also called a mindeque (maxdeque) . Whereas implementing mindeques in constant time per operation is a solved problem, catenating mindeques in sublogarithmic time has until now remained open. This paper provides an efficient implementation of catenable mindeques, yielding constant amortized time per operation. The important algorithmic technique employed is an idea which is best described as data structural bootstrapping: We abstract mindeques so that their elements represent other mindeques, effecting catenation while preserving heap order. The efficiency of the resulting data structure depends upon the complexity of a special case of pa...

