Results 1 
7 of
7
Code and parse trees for lossless source encoding
 Communications in Information and Systems
, 2001
"... This paper surveys the theoretical literature on fixedtovariablelength lossless source code trees, called code trees, and on variablelengthtofixed lossless sounce code trees, called parse trees. Huffman coding [ l] is the most well known code tree problem, but there are a number of interestin ..."
Abstract

Cited by 60 (1 self)
 Add to MetaCart
This paper surveys the theoretical literature on fixedtovariablelength lossless source code trees, called code trees, and on variablelengthtofixed lossless sounce code trees, called parse trees. Huffman coding [ l] is the most well known code tree problem, but there are a number of interesting variants of the problem formulation which lead to other combinatorial optimization problems. Huffman coding as an
Checking mergeable priority queues
 In Digest of the 24th Symposium on FaultTolerant Computing
, 1994
"... ..."
(Show Context)
Upper and Lower Bounds on Constructing Alphabetic Binary Trees
 Proceedings of the 4 th ACMSIAM Symposium on Discrete Algorithms
, 1993
"... This paper studies the longstanding open question of whether optimal alphabetic binary trees can be constructed in o(n lg n) time. We show that a class of techniques for finding optimal alphabetic trees which includes all current methods yielding O(n lg n) time algorithms are at least as hard as so ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
(Show Context)
This paper studies the longstanding open question of whether optimal alphabetic binary trees can be constructed in o(n lg n) time. We show that a class of techniques for finding optimal alphabetic trees which includes all current methods yielding O(n lg n) time algorithms are at least as hard as sorting in whatever model of computation is used. We also give O(n) time algorithms for the case where all the input weights are within a constant factor of one another and when they are exponentially separated. 1 Overview The problem of finding optimal alphabetic binary trees can be stated as follows: Given a sequence of n positive weights w 1 ; : : : ; wn , construct a binary tree whose leaves have these weights, such that the tree is optimal with respect to some cost function and also has the property that the weights on the leaves occur in order as the tree is traversed from left to right. A tree which satisfies this last requirement is said to be alphabetic. Although more general cost fu...
Optimum Alphabetic Binary Trees
 in Combinatorics and Computer Science, ser. Lecture Notes in Computer Science
, 1996
"... We describe a modification of the HuTucker algorithm for constructing an optimal alphabetic tree that runs in O(n) time for several classes of inputs. These classes can be described in simple terms and can be detected in linear time. We also give simple conditions and a linear algorithm for determ ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
We describe a modification of the HuTucker algorithm for constructing an optimal alphabetic tree that runs in O(n) time for several classes of inputs. These classes can be described in simple terms and can be detected in linear time. We also give simple conditions and a linear algorithm for determining, in some cases, if two adjacent nodes will be combined in the optimal alphabetic tree.
Checking and Certifying Computational Results
, 1994
"... For many years, there has been tremendous interest in methods to make computation more reliable. In this thesis, we explore various techniques that can be implemented in software to help insure the correctness of the output of a program. The basic tool we use is a generalization of the notion of a p ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
For many years, there has been tremendous interest in methods to make computation more reliable. In this thesis, we explore various techniques that can be implemented in software to help insure the correctness of the output of a program. The basic tool we use is a generalization of the notion of a program checker called a certifier. A certifier is given intermediate computations from a program computing an answer in an effort to simplify the checking process. The certifier is constructed in such a way that even if the intermediate computations it is given are incorrect, the certifier will never accept an incorrect output. We have constructed certifiers and program checkers for several common abstract data types including mergeable priority queues and splittable priority queues. We have also constructed a certifier for an abstract data type that allows approximate nearest neighbor queries to be performed efficiently. We have implemented and experimentally evaluated some of these algorithms. In the parallel domain, we have developed both general and problem specific techniques for certifying parallel computation. Lastly, we have formally proven correct a certifier for sorting, and have analyzed the advantages of using certifiers in conjunction with formal program verification techniques. This work forms a thesis presented by Jonathan D. Bright to the faculty of the Department of Computer Science, at the Johns Hopkins University, in partial fulfillment of the requirements for the degree of Doctor of Philosophy, under the supervision of Professor Gregory F. Sullivan. iii Acknowledgements I would like to thank my advisor, Gregory Sullivan, for giving me an excellent research topic for my thesis, and for vastly improving my writing skills during my stay at Hopkins. Also, ...
BlackBox Correctness Tests for Basic Parallel Data Structures
, 2002
"... Operations on basic data structures such as queues, priority queues, stacks, and counters can dominate the execution time of a parallel program due to both their frequency and their coordination and contention overheads. There are considerable performance payoffs in developing highly optimized, as ..."
Abstract
 Add to MetaCart
(Show Context)
Operations on basic data structures such as queues, priority queues, stacks, and counters can dominate the execution time of a parallel program due to both their frequency and their coordination and contention overheads. There are considerable performance payoffs in developing highly optimized, asynchronous, distributed, cacheconscious, parallel implementations of such data structures. Such implementations may employ a variety of tricks to reduce latencies and avoid serial bottlenecks, as long as the semantics of the data structure are preserved. The complexity of the implementation and the difficulty in reasoning about asynchronous systems increases concerns regarding possible bugs in the implementation. In this paper we consider postmortem, blackbox procedures for testing whether a parallel data structure behaved correctly. We present the first systematic study of algorithms and hardness results for such testing procedures, focusing on queues, priority queues, stacks, and counters, under various important scenarios. Our results demonstrate the importance of selecting test data such that distinct values are inserted into the data structure (as appropriate). In such cases we present an O(n) time algorithm for testing linearizable queues, an O(n log n) time algorithm for testing linearizable priority queues, and an O(np2) time algorithm for testing sequentially consistent queues, where n is the number of data structure operations and p is the
Limiting The Search for 2Dimensional Optimal Alphabetic Trees
, 1998
"... Twodimensional alphabetic trees have many applications in a wide variety of diverse fields. Although, a relatively fast algorithm that finds an approximate optimal alphabetic tree (OAT) does exist, yet, the only way to find the exact one is to use dynamic programming. In dynamic programming the (OA ..."
Abstract
 Add to MetaCart
(Show Context)
Twodimensional alphabetic trees have many applications in a wide variety of diverse fields. Although, a relatively fast algorithm that finds an approximate optimal alphabetic tree (OAT) does exist, yet, the only way to find the exact one is to use dynamic programming. In dynamic programming the (OAT) is found by simply examining all nodes in the two dimensional array of weights as possible roots (cuts) at each level of the tree and finding the one with minimal cost. In this paper, we introduce the concept of for each cut to limit the search for an optimal solution. The measure of goodness is a value we call the expense of the cut, only cuts with expense less than a given limit L are considered good cuts. Then at each level of the tree, only good cuts are tested as possible candidates for an optimal solution. Key Words: alphabetic tree  optimal tree  dynamic programmingtwo dimensional alphabetic trees branch and bound. 1 Introduction With the advent of technology and information...