Robert McCloskey - Academia.edu (original) (raw)
Uploads
Papers by Robert McCloskey
This paper describes a "gentle" approach we are taking in our Data Structures and Algor... more This paper describes a "gentle" approach we are taking in our Data Structures and Algorithms course to introduce the use of formal notation as an aid in the specification and implementation of abstract data types. So that it can be included as comments within source code (and be processed by the javadoc utility), we chose a notation that relies upon only ASCII symbols, plus the ability to italicize, boldface, and form subscripts, superscripts, and horizontal lines.
Journal of Computing Sciences in Colleges, Oct 1, 2003
This paper discusses the distinct roles of Java's Comparable and Comparator inte... more This paper discusses the distinct roles of Java's Comparable and Comparator interfaces for addressing natural orderings and application-specific orderings, respectively. We illustrate the Comparator interface as a tool for software reuse with examples of multi-key and indirect orderings.
This paper presents a LISP-like recursive list paradigm with implementations in the form of Java ... more This paper presents a LISP-like recursive list paradigm with implementations in the form of Java and C++ classes. The efficacy of this approach is demonstrated in both languages with the presentati...
We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, de... more We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, decides in O(n 2 ) time whether the language accepted by A is a code. Let Sigma be a finite alphabet. A language j ` Sigma is a code if every string in j is written uniquely as a concatenation of strings from j, or, equivalently, if j is a free submonoid of Sigma and j is its minimal generating set. Keywords: algorithm, code, finite automaton, regular language, free monoid 1 Introduction Informally, a code is a set of strings such that any "message" composed from its members is uniquely decipherable. In [10], Sardinas and Patterson characterized codes in a way that gave rise to the earliest algorithm for deciding whether a given finite set of strings is a code. (See also Chapter 5 of [8] or Chapter 4 of [9].) Other algorithms for this problem followed, including those described in [3] and [11]. An algorithm for the more general problem of deciding whether a given regular ...
Using the CRCW PRAM model, we describe a language recognition algorithm for an arbitrary grammar ... more Using the CRCW PRAM model, we describe a language recognition algorithm for an arbitrary grammar in the class of BCPP grammars [9]. (BCPP grammars, which admit ambiguity, are a generalization of both the NTS grammars [14] and Floyd's bounded context (BC) grammars [4].) Using n processors, the algorithm runs in time O(h Delta log n) (O(h) in the case of an unambiguous grammar), where n is the length of the input string x and h is bounded above by the height of the tallest parse tree for x. Estimating that h 2 O(log n) in the usual case, this yields a running time of O(log 2 n) (O(log n) in the unambiguous case). Keywords: ambiguous grammar, parallel algorithm, parsing 1 Introduction Ever since it was discovered, around 1960, that a context-free grammar (CFG) was capable of describing, to a close approximation, the syntax of a typical high-level programming language, the problem of parsing (with respect to such a grammar) has been of great interest among computer scientists...
Lecture Notes in Computer Science, 1989
A locally testable language is a language with the property that for some nonnegative integer k, ... more A locally testable language is a language with the property that for some nonnegative integer k, called the order of locality, whether or not a word w is in the language depends on (1) the prefix and suffix of w of length k, and (2) the set of intermediate substrings of w of length k + 1, without regard to the order in which these substrings occur. The local testability problem is, given a deterministic finite automaton, to decide whether it accepts a locally testable language or not. Recently, we introduced the first polynomial time algorithm for the local testability problem based on a simple characterization of locally testable deterministic automata. This paper investigates the upper bound on the order of locally testable automata. It shows that the order of a locally testable deterministic automaton is at most n 4 + 1, where n is the number of states of the automaton.
Physica D: Nonlinear Phenomena, 1990
ABSTRACT This paper investigates three different classes of one-dimensional CA languages that can... more ABSTRACT This paper investigates three different classes of one-dimensional CA languages that can be accepted in constant time. For each class of the languages, two characterizations are given, one in terms of finite sets and the other in terms of a subclass of deterministic finite automata. It is also shown that the constant-time CA languages have very restricted closure properties.
IEEE Transactions on Computers, 1991
We investigate the local testability problem of deterministic finite automata. A locally testable... more We investigate the local testability problem of deterministic finite automata. A locally testable language is a language with the property that, for some nonnegative integer FE, whether or not a word w is in the language depends on 1) the prefix and sufix of w of length IC, and 2) the set of substrings of w of length k + 1, without regard to the order in which these substrings occur. The local testability problem is, given a deterministic finite automaton, to decide whether or not it accepts a locally testable language. Until now, no polynomial time algorithm for this problem has appeared in the literature. We present an 0 (n2) time algorithm for the local testability problem based on two simple properties that characterize locally testable automata.
ACM SIGCSE Bulletin, 1995
... The crucial observation is that. for anv k satisi'ing AFIRST _< k _< ALAST, there ... more ... The crucial observation is that. for anv k satisi'ing AFIRST _< k _< ALAST, there e:dsts a segment of I that yields the maximum sum and that either (1) occurs within A(A'FIRST .. k-1), (2) occurs within A(k + 1 .. A'LAST), or (3) includes A(k). ...
We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, de... more We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, decides in O(n 2) time whether the language accepted by A is a code. Let Σ be a finite alphabet. A language η ⊆ Σ * is a code if every string in η * is written uniquely as a concatenation of strings from η, or, equivalently, if η * is a free submonoid of Σ * and η is its minimal generating set.
This paper describes a "gentle" approach we are taking in our Data Structures and Algor... more This paper describes a "gentle" approach we are taking in our Data Structures and Algorithms course to introduce the use of formal notation as an aid in the specification and implementation of abstract data types. So that it can be included as comments within source code (and be processed by the javadoc utility), we chose a notation that relies upon only ASCII symbols, plus the ability to italicize, boldface, and form subscripts, superscripts, and horizontal lines.
Journal of Computing Sciences in Colleges, Oct 1, 2003
This paper discusses the distinct roles of Java&amp;#x27;s Comparable and Comparator inte... more This paper discusses the distinct roles of Java&amp;#x27;s Comparable and Comparator interfaces for addressing natural orderings and application-specific orderings, respectively. We illustrate the Comparator interface as a tool for software reuse with examples of multi-key and indirect orderings.
This paper presents a LISP-like recursive list paradigm with implementations in the form of Java ... more This paper presents a LISP-like recursive list paradigm with implementations in the form of Java and C++ classes. The efficacy of this approach is demonstrated in both languages with the presentati...
We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, de... more We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, decides in O(n 2 ) time whether the language accepted by A is a code. Let Sigma be a finite alphabet. A language j ` Sigma is a code if every string in j is written uniquely as a concatenation of strings from j, or, equivalently, if j is a free submonoid of Sigma and j is its minimal generating set. Keywords: algorithm, code, finite automaton, regular language, free monoid 1 Introduction Informally, a code is a set of strings such that any "message" composed from its members is uniquely decipherable. In [10], Sardinas and Patterson characterized codes in a way that gave rise to the earliest algorithm for deciding whether a given finite set of strings is a code. (See also Chapter 5 of [8] or Chapter 4 of [9].) Other algorithms for this problem followed, including those described in [3] and [11]. An algorithm for the more general problem of deciding whether a given regular ...
Using the CRCW PRAM model, we describe a language recognition algorithm for an arbitrary grammar ... more Using the CRCW PRAM model, we describe a language recognition algorithm for an arbitrary grammar in the class of BCPP grammars [9]. (BCPP grammars, which admit ambiguity, are a generalization of both the NTS grammars [14] and Floyd's bounded context (BC) grammars [4].) Using n processors, the algorithm runs in time O(h Delta log n) (O(h) in the case of an unambiguous grammar), where n is the length of the input string x and h is bounded above by the height of the tallest parse tree for x. Estimating that h 2 O(log n) in the usual case, this yields a running time of O(log 2 n) (O(log n) in the unambiguous case). Keywords: ambiguous grammar, parallel algorithm, parsing 1 Introduction Ever since it was discovered, around 1960, that a context-free grammar (CFG) was capable of describing, to a close approximation, the syntax of a typical high-level programming language, the problem of parsing (with respect to such a grammar) has been of great interest among computer scientists...
Lecture Notes in Computer Science, 1989
A locally testable language is a language with the property that for some nonnegative integer k, ... more A locally testable language is a language with the property that for some nonnegative integer k, called the order of locality, whether or not a word w is in the language depends on (1) the prefix and suffix of w of length k, and (2) the set of intermediate substrings of w of length k + 1, without regard to the order in which these substrings occur. The local testability problem is, given a deterministic finite automaton, to decide whether it accepts a locally testable language or not. Recently, we introduced the first polynomial time algorithm for the local testability problem based on a simple characterization of locally testable deterministic automata. This paper investigates the upper bound on the order of locally testable automata. It shows that the order of a locally testable deterministic automaton is at most n 4 + 1, where n is the number of states of the automaton.
Physica D: Nonlinear Phenomena, 1990
ABSTRACT This paper investigates three different classes of one-dimensional CA languages that can... more ABSTRACT This paper investigates three different classes of one-dimensional CA languages that can be accepted in constant time. For each class of the languages, two characterizations are given, one in terms of finite sets and the other in terms of a subclass of deterministic finite automata. It is also shown that the constant-time CA languages have very restricted closure properties.
IEEE Transactions on Computers, 1991
We investigate the local testability problem of deterministic finite automata. A locally testable... more We investigate the local testability problem of deterministic finite automata. A locally testable language is a language with the property that, for some nonnegative integer FE, whether or not a word w is in the language depends on 1) the prefix and sufix of w of length IC, and 2) the set of substrings of w of length k + 1, without regard to the order in which these substrings occur. The local testability problem is, given a deterministic finite automaton, to decide whether or not it accepts a locally testable language. Until now, no polynomial time algorithm for this problem has appeared in the literature. We present an 0 (n2) time algorithm for the local testability problem based on two simple properties that characterize locally testable automata.
ACM SIGCSE Bulletin, 1995
... The crucial observation is that. for anv k satisi'ing AFIRST _< k _< ALAST, there ... more ... The crucial observation is that. for anv k satisi'ing AFIRST _< k _< ALAST, there e:dsts a segment of I that yields the maximum sum and that either (1) occurs within A(A'FIRST .. k-1), (2) occurs within A(k + 1 .. A'LAST), or (3) includes A(k). ...
We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, de... more We describe an algorithm that, given as input a nondeterministic finite automaton A of size n, decides in O(n 2) time whether the language accepted by A is a code. Let Σ be a finite alphabet. A language η ⊆ Σ * is a code if every string in η * is written uniquely as a concatenation of strings from η, or, equivalently, if η * is a free submonoid of Σ * and η is its minimal generating set.