Results 1  10
of
100
Introduction to Algorithms, second edition
 BOOK
, 2001
"... This part will get you started in thinking about designing and analyzing algorithms.
It is intended to be a gentle introduction to how we specify algorithms, some of the
design strategies we will use throughout this book, and many of the fundamental
ideas used in algorithm analysis. Later parts of t ..."
Abstract

Cited by 707 (3 self)
 Add to MetaCart
This part will get you started in thinking about designing and analyzing algorithms.
It is intended to be a gentle introduction to how we specify algorithms, some of the
design strategies we will use throughout this book, and many of the fundamental
ideas used in algorithm analysis. Later parts of this book will build upon this base.
Chapter 1 is an overview of algorithms and their place in modern computing
systems. This chapter defines what an algorithm is and lists some examples. It also
makes a case that algorithms are a technology, just as are fast hardware, graphical
user interfaces, objectoriented systems, and networks.
In Chapter 2, we see our first algorithms, which solve the problem of sorting
a sequence of n numbers. They are written in a pseudocode which, although not
directly translatable to any conventional programming language, conveys the structure
of the algorithm clearly enough that a competent programmer can implement
it in the language of his choice. The sorting algorithms we examine are insertion
sort, which uses an incremental approach, and merge sort, which uses a recursive
technique known as “divide and conquer.” Although the time each requires increases
with the value of n, the rate of increase differs between the two algorithms.
We determine these running times in Chapter 2, and we develop a useful notation
to express them.
Chapter 3 precisely defines this notation, which we call asymptotic notation. It
starts by defining several asymptotic notations, which we use for bounding algorithm
running times from above and/or below. The rest of Chapter 3 is primarily a
presentation of mathematical notation. Its purpose is more to ensure that your use
of notation matches that in this book than to teach you new mathematical concepts.
Making Data Structures Persistent
, 1989
"... This paper is a study of persistence in data structures. Ordinary data structures are ephemeral in the sense that a change to the structure destroys the old version, leaving only the new version available for use. In contrast, a persistent structure allows access to any version, old or new, at any t ..."
Abstract

Cited by 250 (6 self)
 Add to MetaCart
This paper is a study of persistence in data structures. Ordinary data structures are ephemeral in the sense that a change to the structure destroys the old version, leaving only the new version available for use. In contrast, a persistent structure allows access to any version, old or new, at any time. We develop simple, systematic, and effiient techniques for making linked data structures persistent. We use our techniques to devise persistent forms of binary search trees with logarithmic access, insertion, and deletion times and O(1) space bounds for insertion and deletion.
On Distinguishing Epistemic from Pragmatic Action
 Cognitive Science
, 1994
"... We present data and argument to show that in Tetrisa realtime, interactive video gamecertain cognitive and perceptual problems ore more quicktv, easily, and reliably solved by performing actions in the world than by performing computational actions in the head atone. We have found that some of t ..."
Abstract

Cited by 200 (8 self)
 Add to MetaCart
We present data and argument to show that in Tetrisa realtime, interactive video gamecertain cognitive and perceptual problems ore more quicktv, easily, and reliably solved by performing actions in the world than by performing computational actions in the head atone. We have found that some of the translations and rotations made by players of this video game are best understood as actions that use the world to improve cognition. These actions are not used to implement a plan, or to implement a reaction; they are used to change the world in order to simplify the problemsolving task. Thus, we distinguish pragmatic octionsactions performed to bring one physically closer to a goalfrom epistemic actionsactions performed to uncover informatioan that is hidden or hard to compute mentally. To illustrate the need for epistemic actions, we first develop a standard informationprocessing model of Tetris cognition and show that it cannot explain performance data from human players of the gameeven when we relax the assumption of fully sequential processing. Standard models disregard many actions taken by players because they appear unmotivated or superfluous. However, we show that such actions are actually far from superfluous; they play a valuable role in improving human performance. We argue that traditional accounts are limited because they regard action as having o single function: to change the world. By recognizing a second function of actionan epistemic functionwe can explain many of the actions that a traditional model cannot. Although our argument is supported by numerous examples specifically from Tetris, we outline how the new category of epistemic action can be incorporated into theories of action more generally. In this article, we introduce the general idea of an epistemic action and discuss its role in Tetris, a realtime, interactive video game. Epistemic actionsphysical actions that make mental computation easier, faster, or more We thank Steve Haehnichen for his work on the initial implementations of Tetris and
A Generic ArcConsistency Algorithm and its Specializations
 Artificial Intelligence
, 1992
"... Consistency techniques have been studied extensively in the past as a way of tackling constraint satisfaction problems (CSP). In particular, various arcconsistency algorithms have been proposed, originating from Waltz's filtering algorithm [26] and culminating in the optimal algorithm AC4 of Mohr ..."
Abstract

Cited by 192 (7 self)
 Add to MetaCart
Consistency techniques have been studied extensively in the past as a way of tackling constraint satisfaction problems (CSP). In particular, various arcconsistency algorithms have been proposed, originating from Waltz's filtering algorithm [26] and culminating in the optimal algorithm AC4 of Mohr and Henderson [15]. AC4 runs in O(ed 2 ) in the worst case, where e is the number of arcs (or constraints) and d is the size of the largest domain. Being applicable to the whole class of (binary) CSP, these algorithms do not take into account the semantics of constraints. In this paper, we present a new generic arcconsistency algorithm AC5. This algorithm is parametrized on two specified procedures and can be instantiated to reduce to AC3 and AC4. More important, AC5 can be instantiated to produce an O(ed) algorithm for a number of important classes of constraints: functional, antifunctional, monotonic and their generalization to (functional, antifunctional, and monotonic) piecewise constraints. We also show that AC5 has an important application in constraint logic programming over finite domains [23]. The kernel of the constraint solver for such a programming language is an arcconsistency algorithm for a set of basic constraints. We prove that AC5, in conjunction with node consistency, provides a decision procedure for these constraints running in time O(ed).
An optimal online algorithm for metrical task systems
 Journal of the ACM
, 1992
"... Abstract. In practice, almost all dynamic systems require decisions to be made online, without full knowledge of their future impact on the system. A general model for the processing of sequences of tasks is introduced, and a general online decnion algorithm is developed. It is shown that, for an ..."
Abstract

Cited by 186 (9 self)
 Add to MetaCart
Abstract. In practice, almost all dynamic systems require decisions to be made online, without full knowledge of their future impact on the system. A general model for the processing of sequences of tasks is introduced, and a general online decnion algorithm is developed. It is shown that, for an important algorithms. class of special cases, this algorithm is optimal among all online Specifically, a task system (S. d) for processing sequences of tasks consists of a set S of states and a cost matrix d where d(i, j) is the cost of changing from state i to state j (we assume that d satisfies the triangle inequality and all diagonal entries are f)). The cost of processing a given task depends on the state of the system. A schedule for a sequence T1, T2,..., Tk of tasks is a ‘equence sl,s~,..., Sk of states where s ~ is the state in which T ’ is processed; the cost of a schedule is the sum of all task processing costs and state transition costs incurred. An online scheduling algorithm is one that chooses s, only knowing T1 Tz ~.. T’. Such an algorithm is wcompetitive if, on any input task sequence, its cost is within an additive constant of w times the optimal offline schedule cost. The competitive ratio w(S, d) is the infimum w for which there is a wcompetitive online scheduling algorithm for (S, d). It is shown that w(S, d) = 2 ISI – 1 for eoery task system in which d is symmetric, and w(S, d) = 0(1 S]2) for every task system. Finally, randomized online scheduling algorithms are introduced. It is shown that for the uniform task system (in which d(i, j) = 1 for all i, j), the expected competitive ratio w(S, d) =
Fractional cascading: I. A data structuring technique
 Algorithmica
, 1986
"... Abstract. In computational geometry many search problems and range queries can be solved by performing an iterative search for the same key in separate ordered lists. In this paper we show that, if these ordered lists can be put in a onetoone correspondence with the nodes of a graph of degree d so ..."
Abstract

Cited by 159 (5 self)
 Add to MetaCart
Abstract. In computational geometry many search problems and range queries can be solved by performing an iterative search for the same key in separate ordered lists. In this paper we show that, if these ordered lists can be put in a onetoone correspondence with the nodes of a graph of degree d so that the iterative search always proceeds along edges of that graph, then we can do much better than the obvious sequence of binary searches. Without expanding the storage by more than a constant factor, we can build a datastructure, called a fractional cascading structure, in which all original searches after the first can be carried out at only log d extra cost per search. Several results related to the dynamization of this structure are also presented. A companion paper gives numerous applications of this technique to geometric problems.
Faster algorithms for the shortest path problem
, 1990
"... Efficient implementations of Dijkstra's shortest path algorithm are investigated. A new data structure, called the radix heap, is proposed for use in this algorithm. On a network with n vertices, mn edges, and nonnegative integer arc costs bounded by C, a onelevel form of radix heap gives a time b ..."
Abstract

Cited by 104 (10 self)
 Add to MetaCart
Efficient implementations of Dijkstra's shortest path algorithm are investigated. A new data structure, called the radix heap, is proposed for use in this algorithm. On a network with n vertices, mn edges, and nonnegative integer arc costs bounded by C, a onelevel form of radix heap gives a time bound for Dijkstra's algorithm of O(m + n log C). A twolevel form of radix heap gives a bound of O(m + n log C/log log C). A combination of a radix heap and a previously known data structure called a Fibonacci heap gives a bound of O(m + n /log C). The best previously known bounds are O(m + n log n) using Fibonacci heaps alone and O(m log log C) using the priority queue structure of Van Emde Boas et al. [17].
Dynamic planar convex hull
 Proc. 43rd IEEE Sympos. Found. Comput. Sci
, 2002
"... In this paper we determine the amortized computational complexity of the dynamic convex hull problem in the planar case. We present a data structure that maintains a finite set of n points in the plane under insertion and deletion of points in amortized O(log n) time per operation. The space usage o ..."
Abstract

Cited by 53 (1 self)
 Add to MetaCart
In this paper we determine the amortized computational complexity of the dynamic convex hull problem in the planar case. We present a data structure that maintains a finite set of n points in the plane under insertion and deletion of points in amortized O(log n) time per operation. The space usage of the data structure is O(n). The data structure supports extreme point queries in a given direction, tangent queries through a given point, and queries for the neighboring points on the convex hull in O(log n) time. The extreme point queries can be used to decide whether or not a given line intersects the convex hull, and the tangent queries to determine whether a given point is inside the convex hull. We give a lower bound on the amortized asymptotic time complexity that matches the performance of this data structure.