Results 1 - 10
of
13
What Are Principal Typings and What Are They Good For?
, 1995
"... We demonstrate the pragmatic value of the principal typing property, a property more general than ML's principal type property, by studying a type system with principal typings. The type system is based on rank 2 intersection types and is closely related to ML. Its principal typing property prov ..."
Abstract
-
Cited by 88 (0 self)
- Add to MetaCart
We demonstrate the pragmatic value of the principal typing property, a property more general than ML's principal type property, by studying a type system with principal typings. The type system is based on rank 2 intersection types and is closely related to ML. Its principal typing property provides elegant support for separate compilation, including "smartest recompilation" and incremental type inference, and for accurate type error messages. Moreover, it motivates a novel rule for typing recursive definitions that can type many examples of polymorphic recursion.
A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies
, 1995
"... Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph views. If the source program changes, the derived information needs to be updated. We present a simpl ..."
Abstract
-
Cited by 23 (9 self)
- Add to MetaCart
Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph views. If the source program changes, the derived information needs to be updated. We present a simple framework for maintaining intermodule dependencies, embodying different tradeoffs in terms of space usage, speed of processing, and selectivity of invalidation, that eases the implementation of incremental update of derived information. Our framework augments a directed acyclic graph representation of dependencies with factoring nodes (to save space) and filtering nodes (to increase selectivity), and it includes an algorithm for efficient invalidation processing. We show how several schemes for selective recompilation, such as smart recompilation, filter sets for interprocedural summary information, and dependencies for whole-program optimization of object-oriented languages, map naturally...
Incremental Algorithms for Managing Temporal Constraints
- In Proceedings of the 8th IEEE International Conference on Tools with Arti Intelligence
, 1996
"... This paper addresses the problem of efficiently updating a network of temporal constraints when constraints are removed from or added to an existing network. Such processing tasks are important in many AI applications requiring a temporal reasoning module. First we analyze the relationship between s ..."
Abstract
-
Cited by 11 (1 self)
- Add to MetaCart
This paper addresses the problem of efficiently updating a network of temporal constraints when constraints are removed from or added to an existing network. Such processing tasks are important in many AI applications requiring a temporal reasoning module. First we analyze the relationship between shortest-paths algorithms for directed graphs and arc-consistency techniques. Then we focus on a subclass of STP for which we propose new fast incremental algorithms for consistency checking and for maintaining the feasible times of the temporal variables. 1 Introduction The efficient management of temporal constraints is an important issue in several areas of Artificial Intelligence (AI), including knowledge representation and planning & scheduling. In these areas determining the consistency of a given set of constraints, and computing for each involved temporal variable a "window" of feasible values are essential reasoning tasks. In many AI applications these are "on-line" tasks prompted b...
An O(n 2.75 ) algorithm for online topological ordering
- In Proceedings of the 10th Scandinavian Workshop on Algorithm Theory, LNCS 4059
, 2006
"... Abstract. We present a simple algorithm which maintains the topological order of a directed acyclic graph with n nodes under an online edge insertion sequence in O(n 2.75) time, independent of the number of edges m inserted. For dense DAGs, this is an im-provement over the previous best result of O( ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Abstract. We present a simple algorithm which maintains the topological order of a directed acyclic graph with n nodes under an online edge insertion sequence in O(n 2.75) time, independent of the number of edges m inserted. For dense DAGs, this is an im-provement over the previous best result of O(min{m 3 2 log n,m 3 2 + n 2 log n}) by Katriel and Bodlaender. We also provide an empirical comparison of our algorithm with other algorithms for online topological sorting. 1
Average-case analysis of online topological ordering
- of Lecture Notes in Computer Science
, 2007
"... Many applications like pointer analysis and incremental compilation require maintaining a topological ordering of the nodes of a directed acyclic graph (DAG) under dynamic updates. All known algorithms for this problem are either only analyzed for worst-case insertion sequences or only evaluated exp ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
Many applications like pointer analysis and incremental compilation require maintaining a topological ordering of the nodes of a directed acyclic graph (DAG) under dynamic updates. All known algorithms for this problem are either only analyzed for worst-case insertion sequences or only evaluated experimentally on random DAGs. We present the first average-case analysis of online topological ordering algorithms. We prove an expected runtime of O(n 2 polylog(n)) under insertion of the edges of a complete DAG in a random order for the algorithms of Alpern et
Faster algorithms for incremental topological ordering
- In ICALP
, 2008
"... Abstract. We present two online algorithms for maintaining a topological order of a directed acyclic graph as arcs are added, and detecting a cycle when one is created. Our first algorithm takes O(m 1/2) amortized time per arc and our second algorithm takes O(n 2.5 /m) amortized time per arc, where ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Abstract. We present two online algorithms for maintaining a topological order of a directed acyclic graph as arcs are added, and detecting a cycle when one is created. Our first algorithm takes O(m 1/2) amortized time per arc and our second algorithm takes O(n 2.5 /m) amortized time per arc, where n is the number of vertices and m is the total number of arcs. For sparse graphs, our O(m 1/2) bound improves the best previous bound by a factor of log n and is tight to within a constant factor for a natural class of algorithms that includes all the existing ones. Our main insight is that the two-way search method of previous algorithms does not require an ordered search, but can be more general, allowing us to avoid the use of heaps (priority queues). Instead, the deterministic version of our algorithm uses (approximate) median-finding; the randomized version of our algorithm uses uniform random sampling. For dense graphs, our O(n 2.5 /m) bound improves the best previously published bound by a factor of n 1/4 and a recent bound obtained independently of our work by a factor of log n. Our main insight is that graph search is wasteful when the graph is dense and can be avoided by searching the topological order space instead. Our algorithms extend to the maintenance of strong components, in the same asymptotic time bounds. 1
Faster algorithms for online topological ordering
, 2007
"... We present two algorithms for maintaining the topological order of a directed acyclic graph with n vertices, under an online edge insertion sequence of m edges. Efficient algorithms for online topological ordering have many applications, including online cycle detection, which is to discover the fir ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
We present two algorithms for maintaining the topological order of a directed acyclic graph with n vertices, under an online edge insertion sequence of m edges. Efficient algorithms for online topological ordering have many applications, including online cycle detection, which is to discover the first edge that introduces a cycle under an arbitrary sequence of edge insertions in a directed graph. The current fastest algorithms for the online topological ordering problem run in time O(min(m 3/2 logn,m 3/2 + n 2 logn)) and O(n 2.75) (the latter algorithm is faster for dense graphs, i.e., when m> n 11/6). In this paper we present faster algorithms for this problem. We first present a simple algorithm with running time O(n 5/2) for the online topological ordering problem. This is the current fastest algorithm for this problem on dense graphs, i.e., when m> n 5/3. We then present an algorithm with running time O((m + nlogn) √ m), which is an improvement over the O(min(m 3/2 logn,m 3/2 + n 2 logn)) algorithm- it is a strict improvement when m is sandwiched between ω(n) and O(n 4/3). Our results yield an improved upper bound of O(min(n 5/2,(m+nlogn) √ m)) for the online topological ordering problem. 1
Incremental Topological Ordering and Strong Component Maintenance
, 2008
"... Abstract. We present an on-line algorithm for maintaining a topological order of a directed acyclic graph as arcs are added, and detecting a cycle when one is created. Our algorithm takes O(m 1/2) amortized time per arc, where m is the total number of arcs. For sparse graphs, this bound improves the ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Abstract. We present an on-line algorithm for maintaining a topological order of a directed acyclic graph as arcs are added, and detecting a cycle when one is created. Our algorithm takes O(m 1/2) amortized time per arc, where m is the total number of arcs. For sparse graphs, this bound improves the best previous bound by a logarithmic factor and is tight to within a constant factor for a natural class of algorithms that includes all the existing ones. Our main insight is that the bidirectional search method of previous algorithms does not require an ordered search, but can be more general. This allows us to avoid the use of heaps (priority queues) entirely. Instead, the deterministic version of our algorithm uses (approximate) median-finding. The randomized version of our algorithm avoids this complication, making it very simple. We extend our topological ordering algorithm to give the first detailed algorithm for maintaining the strong components of a directed graph, and a topological order of these components, as arcs are added. This extension also has an amortized time bound of O(m 1/2) per arc. 1
An
- ACM Transactions on Algorithms
, 2008
"... We present a simple algorithm which maintains the topological order of a directed acyclic graph with n nodes under an online edge insertion sequence in O(n 2.75) time, independent of the number m of edges inserted. For dense DAGs, this is an improvement over the previous best result of O(min{m 3 2 l ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
We present a simple algorithm which maintains the topological order of a directed acyclic graph with n nodes under an online edge insertion sequence in O(n 2.75) time, independent of the number m of edges inserted. For dense DAGs, this is an improvement over the previous best result of O(min{m 3 2 log n, m 3 2 + n 2 log n}) by Katriel and Bodlaender. We also provide an empirical comparison of our algorithm with other algorithms for incremental topological sorting. Categories and Subject Descriptors: F.2.2 [Analysis of Algorithms and Problem Complexity]: Nonnumerical Algorithms and Problems—Computations on discrete structures; E.1 [Data
Incremental Cycle Detection, Topological Ordering, and Strong Component Maintenance
, 2008
"... Abstract. We present two on-line algorithms for maintaining a topological order of a directed n-vertex acyclic graph as arcs are added, and detecting a cycle when one is created. Our first algorithm handles m arc additions in O(m 3/2) time. For sparse graphs (m/n = O(1)), this bound improves the bes ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. We present two on-line algorithms for maintaining a topological order of a directed n-vertex acyclic graph as arcs are added, and detecting a cycle when one is created. Our first algorithm handles m arc additions in O(m 3/2) time. For sparse graphs (m/n = O(1)), this bound improves the best previous bound by a logarithmic factor, and is tight to within a constant factor among algorithms satisfying a natural locality property. Our second algorithm handles an arbitrary sequence of arc additions in O(n 5/2) time. For sufficiently dense graphs, this bound improves the best previous bound by a polynomial factor. Our bound may be far from tight; we conjecture that the algorithm actually runs in O(n 2 log n) time. A completely different algorithm running in Θ(n 2 log n) time was given recently by Bender, Fineman, and Gilbert. We extend both of our algorithms to the maintenance of strong components, without affecting the asymptotic time bounds. 1

