Subset construction is the method of converting a nondeterministic finite-state machine into a deterministic one. The process of determinization is important in any implementation of finite-state machines. The reasons are that nondeterministic machines are often easier to describe than their deterministic equivalents and the conversion of regular expressions to finite-state machines usually produces nondeterministic machines. We discuss one aspect of subset construction; namely, the computation of the instructions of the equivalent deterministic machine. Although the discussion is to a large extent independent of any specific assumptions, we draw some conclusions within the context of INR and Grail, both of which are packages for the manipulation of finite-state machines. Related work is described by Aho [1] and by Crochemore and Rytter [4] in the context of pattern matching, and by Perrin [10] in the context the conversion of regular expressions into finite-state machines. The aim of the discussion is to present the problem and suggest some possible solutions.
[1]
Derick Wood,et al.
Grail : engineering automata in C++, version 2.5
,
1996
.
[2]
Ken Thompson,et al.
Programming Techniques: Regular expression search algorithm
,
1968,
Commun. ACM.
[3]
Jeffrey D. Ullman,et al.
Introduction to Automata Theory, Languages and Computation
,
1979
.
[4]
Ronald L. Rivest,et al.
Introduction to Algorithms
,
1990
.
[5]
Alfred V. Aho,et al.
Algorithms for Finding Patterns in Strings
,
1991,
Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity.
[6]
Alfred V. Aho,et al.
Data Structures and Algorithms
,
1983
.
[7]
Donald Ervin Knuth,et al.
The Art of Computer Programming
,
1968
.
[8]
Wojciech Rytter,et al.
Text Algorithms
,
1994
.
[9]
Derick Wood,et al.
Theory of computation
,
1986
.
[10]
Derick Wood,et al.
Data structures, algorithms, and performance
,
1992
.
[11]
Dominique Perrin,et al.
Finite Automata
,
1958,
Philosophy.