Results 11  20
of
25
RealTime Deques, Multihead Turing Machines, and Purely Functional Programming
 In Conference on Functional Programming Languages and Computer Architecture
, 1993
"... We answer the following question: Can a deque (double ended queue) be implemented in a purely functional language such that each push or pop operation on either end of a queue is accomplished in O(1) time in the worst case? The answer is yes, thus solving a problem posted by Gajewska and Tarjan [1 ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
We answer the following question: Can a deque (double ended queue) be implemented in a purely functional language such that each push or pop operation on either end of a queue is accomplished in O(1) time in the worst case? The answer is yes, thus solving a problem posted by Gajewska and Tarjan [14] and by Ponder, McGeer, and Ng [25], and refining results of Sarnak [26] and Hoogerwoord [18]. We term such a deque realtime, since its constant worstcase behavior might be useful in real time programs (assuming realtime garbage collection [3], etc.) Furthermore, we show that no restriction of the functional language is necessary, and that push and pop operations on previous versions of a deque can also be achieved in constant time. We present a purely functional implementation of real time deques and its complexity analysis. We then show that the implementation has some interesting implications, and can be used to give a realtime simulation of a multihead Turing machine in a purel...
Approximate Regular Expression Pattern Matching with Concave Gap Penalties
 ALGORITHMICA
, 1992
"... Given a sequence A of length M and a regular expression R of length P , an approximate regular expression pattern matching algorithm computes the score of the optimal alignment between A and one of the sequences B exactly matched by R. An alignment between sequences A = a 1 a 2 : : : aM and B = b ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
Given a sequence A of length M and a regular expression R of length P , an approximate regular expression pattern matching algorithm computes the score of the optimal alignment between A and one of the sequences B exactly matched by R. An alignment between sequences A = a 1 a 2 : : : aM and B = b 1 b 2 : : : b N is a list of ordered pairs, !(i 1 ; j 1 ); (i 2 ; j 2 ); : : : (i t ; j t )? such that i k ! i k+1 and j k ! j k+1 . In this case, the alignment aligns symbols a i k and b jk , and leaves blocks of unaligned symbols, or gaps, between them. A scoring scheme S associates costs for each aligned symbol pair and each gap. The alignment's score is the sum of the associated costs, and an optimal alignment is one of minimal score. There are a variety of schemes for scoring alignments. In a concave gappenalty scoring scheme S = fffi; wg, a function ffi (a; b) gives the score of each aligned pair of symbols a and b, and a concave function w(k) gives the score of a gap of lengt...
Improved MemoryAccess Analysis for x86 Executables
"... Over the last seven years, we have developed staticanalysis methods to recover a good approximation to the variables and dynamically allocated memory objects of a stripped executable, and to track the flow of values through them. It is relatively easy to track the effects of an instruction operand ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Over the last seven years, we have developed staticanalysis methods to recover a good approximation to the variables and dynamically allocated memory objects of a stripped executable, and to track the flow of values through them. It is relatively easy to track the effects of an instruction operand that refers to a global address (i.e., an access to a global variable) or that uses a stackframe offset (i.e., an access to a local scalar variable via the frame pointer or stack pointer). In our work, our algorithms are able to provide useful information for close to 100% of such “direct ” uses and defs. It is much harder for a staticanalysis algorithm to track the effects of an instruction operand that uses a nonstackframe register. These “indirect” uses and defs correspond to accesses to an array or a dynamically allocated memory object. In one study, our approach recovered useful information for only 29 % of indirect uses and 33 % of indirect defs. However, using the technique described in this paper, the algorithm recovered useful information for 81 % of indirect uses and 90 % of indirect defs.
Amortization, Lazy Evaluation, and Persistence: Lists with Catenation via Lazy Linking
 Pages 646654 of: IEEE Symposium on Foundations of Computer Science
, 1995
"... Amortization has been underutilized in the design of persistent data structures, largely because traditional accounting schemes break down in a persistent setting. Such schemes depend on saving "credits" for future use, but a persistent data structure may have multiple "futures", each competing for ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
Amortization has been underutilized in the design of persistent data structures, largely because traditional accounting schemes break down in a persistent setting. Such schemes depend on saving "credits" for future use, but a persistent data structure may have multiple "futures", each competing for the same credits. We describe how lazy evaluation can often remedy this problem, yielding persistent data structures with good amortized efficiency. In fact, such data structures can be implemented purely functionally in any functional language supporting lazy evaluation. As an example of this technique, we present a purely functional (and therefore persistent) implementation of lists that simultaneously support catenation and all other usual list primitives in constant amortized time. This data structure is much simpler than the only existing data structure with comparable bounds, the recently discovered catenable lists of Kaplan and Tarjan, which support all operations in constant worstca...
Parallel Implementation of Bags
 in Proc. ACM Conf. on Functional Programming and Computer Architecture, ACM
, 1993
"... Multisets (also called bags) are an interesting data structure for parallelly implemented functional programming languages, since they do not force an unneeded restriction of the data flow and allow to exploit as much parallelism as possible. Most operations on multisets can be understood as special ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Multisets (also called bags) are an interesting data structure for parallelly implemented functional programming languages, since they do not force an unneeded restriction of the data flow and allow to exploit as much parallelism as possible. Most operations on multisets can be understood as special cases of the socalled Gamma scheme [?]. In the present paper, we investigate efficient implementations of several instances of this Gamma scheme on MIMDmachines. 1 Introduction The ubiquitous data structure in functional (and logic) programming language is the list. For a parallel implementation of such a language, however, lists have the drawback that they force a sequential access to their elements. Hence, it is only interesting to use lists, if the computation related to every element is large compared to the length of the list. Several researchers have investigated other applicative data structures which are more adequate for parallel implementations, among them modifications of cla...
A Probabilistic Approach to the Problem of Automatic Selection of Data Representations
 In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming
, 1996
"... The design and implementation of efficient aggregate data structures has been an important issue in functional programming. It is not clear how to select a good representation for an aggregate when access patterns to the aggregate are highly variant, or even unpredictable. Previous approaches rely o ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
The design and implementation of efficient aggregate data structures has been an important issue in functional programming. It is not clear how to select a good representation for an aggregate when access patterns to the aggregate are highly variant, or even unpredictable. Previous approaches rely on compiletime analyses or programmer annotations. These methods can be unreliable because they try to predict program behaviors before they are executed. We propose a probabilistic approach, which is based on Markov processes, for automatic selection of data representations. The selection is modeled as a random process moving in a graph with weighted edges. The proposed approach employs coin tossing at runtime to aid choosing suitable data representations. The transition probability function used by the coin tossing is constructed in a simple and common way from a measured cost function. We show that, under this setting, random selection of data representations can be quite effective. Th...
Automated Benchmarking of Functional Data Structures
 In Practical Aspects of Declarative Languages
, 1999
"... . Despite a lot of recent interest in purely functional data structures, for example [Ada93, Oka95, BO96, Oka96, OB97, Erw97], few have been benchmarked. Of these, even fewer have their performance qualified by how they are used. But how a data structure is used can significantly affect performa ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
. Despite a lot of recent interest in purely functional data structures, for example [Ada93, Oka95, BO96, Oka96, OB97, Erw97], few have been benchmarked. Of these, even fewer have their performance qualified by how they are used. But how a data structure is used can significantly affect performance. This paper makes three original contributions. (1) We present an algorithm for generating a benchmark according to a given use of data structure. (2) We compare use of an automated tool based on this algorithm, with the traditional technique of handpicked benchmarks, by benchmarking six implementations of randomaccess list using both methods. (3) We use the results of this benchmarking to present a decision tree for the choice of randomaccess list implementation, according to how the list will be used. 1 Motivation Recent years have seen renewed interest in purely functional data structures: sets [Ada93], randomaccess lists [Oka95], priority queues [BO96], arrays [OB97], gr...
Scan Grammars: Parallel Attribute Evaluation Via DataParallelism
, 1992
"... This paper concerns the problem of how to exploit parallelism during the phases of compilation involving syntaxdirected analysis and translation. In particular, we address the problem of how to exploit parallelism during the evaluation of the attributes of a derivation tree of a noncircular attribu ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
This paper concerns the problem of how to exploit parallelism during the phases of compilation involving syntaxdirected analysis and translation. In particular, we address the problem of how to exploit parallelism during the evaluation of the attributes of a derivation tree of a noncircular attribute grammar. What distinguishes the ideas presented in this paper from earlier work on parallel attribute evaluation is the use of a dataparallel model: We define a new variant of attribute grammars, called scan grammars, that incorporates a dataparallel attribution construct. 1. Introduction Because symbolic (nonnumeric) computations often involve irregular structures, the task of devising parallel algorithms for such problems is generally very difficult and attempts are often unsuccessful. This paper addresses a certain class of symbolic computational problems and shows that for these problems speedups on the order of 64fold with 100 processors and 100fold with 250 processors may wel...
F.: Refinementbased CFG Reconstruction from Unstructured Programs
 In: VMCAI 2011
, 2011
"... Abstract. This paper addresses the issue of recovering a both safe and precise approximation of the Control Flow Graph (CFG) of an unstructured program, typically an executable file. The problem is tackled in an original way, with a refinementbased static analysis working over finite sets of consta ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Abstract. This paper addresses the issue of recovering a both safe and precise approximation of the Control Flow Graph (CFG) of an unstructured program, typically an executable file. The problem is tackled in an original way, with a refinementbased static analysis working over finite sets of constant values. Requirement propagation allows the analysis to automatically adjust the domain precision only where it is needed, resulting in precise CFG recovery at moderate cost. First experiments, including an industrial case study, show that the method outperforms standard analyses in terms of precision, efficiency or robustness. 1
Going Against The Grain
 Proc. 3rd South American Workshop on String Processing, International Informatics Series #4
, 1996
"... . We review a general, space and time efficient technique for delivering a sequence of values computable by a recurrence relation, in the order opposing the datadependencies of the recurrence. The technique provides a series of time/space tradeoffs we characterize by parameter K ? 0. Namely, N val ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
. We review a general, space and time efficient technique for delivering a sequence of values computable by a recurrence relation, in the order opposing the datadependencies of the recurrence. The technique provides a series of time/space tradeoffs we characterize by parameter K ? 0. Namely, N values can be delivered against the grain in O(KN) time and O(KN 1=K ) space. This basic idea is not new, but here we present it in a framework exposing its essential nature and we give a concise yet easily understood explanation of it in terms of counting in a radixN 1=K number system. We then show how to apply this paradigm to a couple of problems in sequence comparison, a domain where it has here to fore not been used. We show that in the limiting case of K = log 2 N , the method coincides with the wellknown divideand conquer algorithm of Hirschberg. Thus, our observation provides a continuum of time/space tradeoffs for all comparison problems that have appealed to the Hirschberg para...