16 research outputs found
On duadic codes
The notion of duadic codes over GF(2)is generalized to arbitrary fields. Duadic codes of composite length are constructed. An upper bound is given for the minimum distance of duadic codes of length a prime power
Constructing plane spanners of bounded degree and low weight
Given a set S of n points in the plane, we give an O(n log n)-time algorithm that constructs a plane t-spanner for S, with t ≈ 10, such that the degree of each point of S is bounded from above by 27, and the total edge length is proportional to the weight of a minimum spanning tree of S. Previously, no algorithms were known for constructing plane t-spanners of bounded degree
Chips on wafers (Extended abstract)
A set of rectangles is said to be grid packed if there exists a rectangular grid (not necessarily regular) such that every rectangle lies in the grid and there is at most one rectangle of in each cell. The area of a grid packing is the area of a minimal bounding box that contains all the rectangles in the grid packing. We present an approximation algorithm that given a set of rectangles and a real constant produces a grid packing of whose area is at most times larger than an optimal packing in polynomial time. If is chosen large enough the running time of the algorithm will be linear. We also study several interesting variants, for example the smallest area grid packing containing at least rectangles, and given a region grid pack as many rectangles as possible within . Apart from the approximation algorithms we present several hardness results
Maintaining range trees in secondary memory. Part I: partitions
Range trees are used for solving the orthogonal range searching problem, a problem that has applications in e.g. databases and computer graphics. We study the problem of storing range trees in secondary memory. To this end, we partition range trees into parts that are stored in consecutive blocks in secondary memory. This paper gives a number of partition schemes that limit the part-sizes and the number of disk accesses necessary to perform updates and queries. We show e.g., that for each fixed positive integer k, there is a partition of a two-dimensional range tree into parts of size O(n 1/k ), such that each update requires at most k(2k+1) disk accesses, and each query requires at most 8k 2+2k+2t disk accesses, where t is the number of answers to the range query
Fast pruning of geometric spanners
Let S be a set of points in R d . Given a geometric spanner graph, G = (S,E), with constant stretch factor t, and a positive constant e, we show how to construct a (1+e)-spanner of G with O(|S|) edges in time O(|E|+|S|log|S|) . Previous algorithms require a preliminary step in which the edges are sorted in non-decreasing order of their lengths and, thus, have running time O(|E| log |S|). We obtain our result by designing a new algorithm that finds the pair in a well-separated pair decomposition separating two given query points. Previously, it was known how to answer such a query in O(log|S|) time. We show how a sequence of such queries can be answered in O(1) amortized time per query, provided all query pairs are from a polynomially bounded range
Distance-preserving approximations of polygonal paths
Given a polygonal path P with vertices p 1, p 2,...,p n and a real number t = 1, a path TeX is a t-distance-preserving approximation of P if 1 = i 1
Maintaining range trees in secondary memory. Part I: partitions
Range trees are used for solving the orthogonal range searching problem, a problem that has applications in e.g. databases and computer graphics. We study the problem of storing range trees in secondary memory. To this end, we partition range trees into parts that are stored in consecutive blocks in secondary memory. This paper gives a number of partition schemes that limit the part-sizes and the number of disk accesses necessary to perform updates and queries. We show e.g., that for each fixed positive integer k, there is a partition of a two-dimensional range tree into parts of size O(n 1/k ), such that each update requires at most k(2k+1) disk accesses, and each query requires at most 8k 2+2k+2t disk accesses, where t is the number of answers to the range query