< previous page page_25 next page >
Page 25
guists, and electrical engineers including: Huffman [69], Schützenberger [114], Mealy [90], Chomsky
[27], Moore [95], Medvedev [91], Myhill [97], and Nerode [98]. The definition of finite automaton given
in this chapter is due to Rabin and Scott [109], whose paper, appearing at the end of the 1950s, served
as a useful reference on automata theory in subsequent work.
If you want to know more about the history of finite automata, the essay by Perrin [101] is interesting,
and there are surveys of important papers in Brauer [16]. The collections of papers that appear in [118]
and [96] convey something of the flavour of this early work. References to work on automata theory in
the former Soviet bloc can be found in [50] and [55] as well as Brauer [16].
The theory of finite automata is an established part of theoretical computer science, and so any book
dealing with this subject will contain accounts of finite automata to a greater or lesser extent. Textbooks
that contain chapters on finite automata, at approximately the same level as this one, are [23], [34],
[66], [75], [80], [113], and [123].
The books by Büchi [22], Conway [35], Eilenberg7 [39, 40], and Minsky [93] are classics: those by
Büchi and Minsky are eminently readable and Conway’s is inventive and thought-provoking. Eilenberg’s
two volumes provided the key texts for the algebraic theory of automata, which we develop in Chapters
9 to 12.
Two other techniques for handling regular languages which are not discussed in this book are based on
logic, see Straubing [129] and Thomas [130], and formal power series, see Berstel and Reutenauer
[14].
Applications of finite automata and their languages cover an enormous range. The book by Petzold
[102] is an elementary introduction to circuit design and [79] a more advanced one; Aho, Sethi, and
Ullman [1] explain how finite automata form one of the ingredients in designing compilers; Friedl [47]
describes the thousand-and-one uses of regular expressions to professional programmers—such
expressions are equivalent to finite automata as we shall prove in Chapter 5; searching for patterns in
texts can be carried out efficiently using automata [37]; the collection of papers to be found in [112]
demonstrates the usefulness of finite automata in natural language processing; Lind and Marcus [81]
show how finite automata, under the alias of ‘sofic system,’ can be used in encoding information, a
further useful introduction to these ideas is [10]; von Haeseler [58] uses finite automata to generate
sequences of numbers; Sims [122] uses finite automata to describe some algorithms in group theory;
Epstein et al [43] explain how finite automata form an important tool in combinatorial group theory and
geometry; Thurston [132] interweaves groups, tilings, dynamical systems, and finite automata;
Grigorchuk et al [57] actually build groups from automata; finally, Pin [103] develops the algebraic
theory of recognisable languages within finite semigroup theory.
7It is important to add that Volume B contains important contributions by Bret Tilson.
< previous page page_25 next page >