10 Patterns, Automata, and Regular Expressions
CHAPTER 10 Patterns, Automata, ✦ ✦ ✦ ✦ and Regular Expressions A pattern is a set of objects with some recognizable property. One type of pattern is a set of character strings, such as the set of legal C identifiers, each of which is a string of letters, digits, and underscores, beginning with a letter or underscore. Another example would be the set of arrays of 0’s and 1’s of a given size that a character reader might interpret as representing the same symbol. Figure 10.1 shows three 7 × 7-arrays that might be interpreted as letter A’s. The set of all such arrays would constitute the pattern called “A.” 0001000 0000000 0001000 0011100 0010000 0010100 0010100 0011000 0110100 0110110 0101000 0111110 0111110 0111000 1100011 1100011 1001100 1000001 1000001 1000100 0000000 Fig. 10.1. Three instances of the pattern “A.” The two fundamental problems associated with patterns are their definition and their recognition, subjects of this and the next chapter. Recognizing patterns is an integral part of tasks such as optical character recognition, an example of which was suggested by Fig. 10.1. In some applications, pattern recognition is a component of a larger problem. For example, recognizing patterns in programs is an essential part of compiling — that is, the translation of programs from one language, such as C, into another, such as machine language. There are many other examples of pattern use in computer science. Patterns play a key role in the design of the electronic circuits used to build computers and other digital devices. They are used in text editors to allow us to search for instances of specific words or sets of character strings, such as “the letters if followed by any sequence of characters followed by then.” Most operating systems allow us to use 529 530 PATTERNS, AUTOMATA, AND REGULAR EXPRESSIONS patterns in commands; for example, the UNIX command “ls *tex” lists all files whose names end with the three-character sequence “tex”.
[Show full text]