An introduction to formal languages and automata / Peter Linz. . The study of the theory of computation has several purposes, most importantly (1) to familiarize. Introduction to Automata Theory, Languages and. Computation. Addison-Wesley, Peter Linz. An introduction to formal languages and. The Sixth Edition of An Introduction to Formal Languages and Automata provides an of all material essential to an introductory Theory of Computation course. Written The author, Peter Linz, continues to offer a straightforward, uncomplicated Appendix B: Jflap: A Useful Tool · Answers Solutions and Hints for Selected.
|Language:||English, Indonesian, French|
|ePub File Size:||30.39 MB|
|PDF File Size:||19.45 MB|
|Distribution:||Free* [*Register to download]|
Automata Theory (COT ). Tuesday and Thursday, , LIF Textbook: Peter Linz， An introduction to formal languages and automata, Third. grammar and Finite state automata - Context free grammars - Normal forms - uvwxy theorem Peter Linz, "An Introduction to Formal. Language and M. Sipser; Introduction to the Theory of. Computation Problems and Solutions. 3. 5 . An Introduction to Formal Languages and Automata -- peter thtonmonnixilon.tk of computing ebook download, theory of computing, theory of computing pdf, peter linz.
The author, Peter Linz, continues to offer a straightforward, uncomplicated treatment of formal languages and automata and avoids excessive mathematical detail so that students may focus on and understand the underlying principles.
Introduction to the Theory of Computation 1. Finite Automata 2. Regular Languages and Regular Grammars 3. Properties of Regular Languages 4. Context-Free Languages 5. Pushdown Automata 7. Properties of Context-Free Languages 8. Turing Machines 9.
Other Models of Turing Machines A Hierarchy of Formal Languages and Automata For mathematically well-trained students these exercises tend to be simple, but for those not in this cat- egory e. They are useful primarily in sharpening mathematical reasoning and formalizing skills. The prevalent and most satisfying type of exercise involves both an understanding of the material and an ability to carry it a step further.
These exercises are a little like puzzles whose solution involves inventiveness, ranging from the fairly easy to the very challenging. Finally, there are some exercises that take the student beyond the scope of this course, to do some additional reading or implement a method on the computer. These are normally quite time consuming and are suitable only for extra-credit assignments. For the actual solutions, I have done what I think is most helpful.
When a problem has a simple and concise answer, I give it. But there are many cases where the solution is lengthy and uninformative.
There are also some quite general and open-ended problems where no particular answer can be given. In these instances, I simply tell you why I think that such an exercise is useful. The exercises are all of the type done in a discrete mathematics course. If students are com- fortable with this material, one or two of these can be assigned as refresher or as warm-up exercises.
If students are struggling with this material, extra time will be needed to remedy the situation. Working out some of these exercises in class and reading the solved exercises should help. These exercises are all fairly simple, involving arguments with sets. Most of them can be solved by direct deduction or simple induction. Exercise 8 establishes a result that is needed later. Material on order of magnitude is needed in later chapters. Some routine exercises to remind students of the terminology of graphs.
Exercises in induction. Most students will have seen something close to this in their discrete math course and should know that induction is the way to go. Exercise 28 combines order of magnitude notation with induction, but the exercise may be hard for some students. Simple examples of using proof by contradiction. Classic examples that should be known to most students.
This is easier than it looks. One could leave the section out, since everything recurs later. Also, it gives students an immediate introduction to the kinds of problems they will face later. Like Example 1.
All can be done with induction and are useful for practicing such arguments in a simple setting. The results are needed again and again, so it is useful to do some of these exercises. A good exercise for working with language complements and set notation.
An exercise in understanding notation. The exercises are good tests of the under- standing of concatenation, reversal, and star-closure of languages. To get the grammars should be easy, but giving convincing argu- ments may prove to be a little harder. It is important that the issue of how much rigor and detail you expect is settled early.
A mixed bag of exercises. Parts e to h let the students discover how to combine grammars, e. This anticipates important results for context-free grammars. This simple exercise introduces a language that we encounter in many subsequent examples. In spite of the similarity of this grammar to that of Example 1. A set of fairly hard problems, which can be solved by the trick of count- ing described in Example 1.
It is important that the students realize early that any given language can have many grammars. A counterex- ample for 23 is aa. Exercises 1 to 6 are suitable for those with a background and interest in programming languages. Exercises 8 to 14 deal with some fundamental hardware issues familiar to most com- puter science students from a course in computer organization.
Generally these exercises are not hard. A more prosaic way of stating the problem is: The resulting automaton is a little large, but easy in principle. This introduces an important idea, namely how an automaton can re- member things. For example, if an a 1 is read, it will have to be reproduced later, so the automaton has to remember. This can be done by labeling the state with the appropriate information.
A simple extension of the idea in Exercise 8. The automaton must complement each bit, add one to the lower order bit, and propagate a carry. Students will probably need to try a few examples by hand before discovering an answer such as the one below.
A fairly simple solved exercise. They all require that the automaton remember some of the previously encoun- tered bits. Chapter 2 Finite Automata 2.
A drill exercise to see if students can follow the workings of a dfa. Some of these languages are the same as Exercise 11, Section 1. Since this is a very fundamental issue, this is a good introductory problem.
All the exercises are relatively easy if mnemonic labeling is used. These two exercises let the student discover closure of regular languages under complementation. This is discussed later in the treatment of closure, so this gives a preview of things to come. It also shows that the dfa for L can be constructed by complementing the state set of the dfa for L.
Easy exercises. Similar to Exercise 15 in Section 1. The answers all involve simple modular counting by an automaton.
Once students grasp this principle, all parts are easy. May be quite hard until the student gets into the habit of using mnemonic labels. Continues the theme of Exercise 8, but is on the whole a little easier. After this exercise, the students should be convinced of the usefulness of mnemonic labeling.
Note that a and b are not the same problem. A simple problem, pointing out an application in programming languages. These exercises look easier than they are. They introduce the important technique of a general construction.
This is intuitively reasonable, but it has to be spelled out in detail, so a formal argument will still be hard. However, as it is one of the simplest cases of justifying a construction, asking for a proof that the construction works is a good introduction to this sort of thing.
A good exercise in inductive reasoning as well as in handling concise, but not very transparent, mathematical notation. These involve generalization of the idea introduced in Example 2. Generalizes the above idea in Exercises 20 and 21 a little more and points to closure properties to come. Gets the student to think ahead about issues that will be treated in more detail later.
Not too hard for students with the ability to generalize, although the formal proof may be challenging. An exercise for reasoning with transition graphs. The answer is intuitively easy to see, but may be troublesome if you are asking for a formal proof.
Constructions of this type are very fundamental in subsequent discus- sions, but at this point the student has no experience with them, so this will be hard.
But if the student can discover the idea behind the solution, later material will make much more sense. This will probably give the construction away, but any kind of formal proof will still be hard for most.
Such exercises tend to be unexciting to many stu- dents and you may not want to assign a lot of them. An occasional one, though, is appropriate. An answer such as a a a a a a is not entirely trivial for students at this point.
Routine drill exercises in understanding and following transition graphs. These require solutions with a bound on the number of states. Without such bounds the exercises would be trivial, but even with them they are not too hard.
The main virtue of this set is that it gets the student to play around with various options. A solution to 7 is easy. Exercise 8 is solved. The answer is pretty obvious, but how can one defend such a conclusion?
A question without a very tidy answer, but it gets the student to think. An easy exercise. A routine, but worthwhile exercise, since some students get confused tracing through an nfa. Can be a little hard, mainly because of the unusual nature of the ques- tion. It is easy to come up with an incorrect result.
For the solution, see the solved exercises. Again the obvious answer is no, but this is not so easy to defend. A worthwhile exercise about a generalization of an nfa.
Exercise in reasoning with transition graphs. Straightforward, drill exercise. These are easy drill exercises. Yes, it is true. A formal argument is not hard. This exercise makes a good contrast with Exercise 5 above and Exercise 4, Section 2. The answer requires some thinking.
A solution is provided. This is a troublesome construction. Then convert back to a dfa and note that the construction of Theorem 2. An instructive and easy exercise, establishing a result needed on occa- sion. Another exercise foreshadowing closure results. The construction is easy: Then use the con- clusion of Exercise 18, Section 2.
Not obvious, but should be manageable after one or two similar prob- lems. Find the set of states Q 2 for which there is a path of length two from the initial state. This is an easy drill exercise. This is an important point that may have escaped notice: So things will work as stated only if reduce produces a dfa.
Another easy drill. Not obvious, but the solution is given. Again, a test of understanding equivalences involving a short proof by contradiction.
Formal Languages And Automata Theory Peter Linz Pdf Nudist familyrar
While the uniqueness question is not addressed in the text, it is worth mentioning. But discovering a proof is probably beyond the capability of most students, so the best you can do is to point to the literature e. Denning, Dennis and Qualitz for help. Chapter 3 Regular Languages and Grammars 3.
It is easy to make up similar problems, but one needs to be careful. A routine drill exercise. Easy, if you split this into n and m both even or n and m both odd.
We must also include strings in which a can follow b. Uncovers some notational subtleties that may have escaped attention. Particularly, the concatenation of a language with the empty set is often misunderstood of course, it is not really a very important point.
Exercise to see how to get L R by reversing the regular expression. Leads to the more general question in Exercise Split into three cases: A little hard to see. But we also must include strings where an a can follow a b. A problem in unraveling notation.
Examples 3. A sequence of simple to harder problems. This gives a subset of what we want, but several other parts have to be considered. Not too important, since these identities will not be used much. They are easy to see but quite hard to justify precisely, so if you assign any, say what level of detail you expect.
Not very precise, but good enough to see that the student understands the principle. A general question on how to get the reverse of a language through the reverse of its regular expression. Formal arguments to provide some omitted details. Gets the student to think about the meaning of closure.
These are simple exercises, but interesting as they point to some advanced applications in pattern recognition. There is lots in the literature on chain-codes.
Easy, but introduces the concepts of the next section. Routine application of a given construction. Hard if not approached correctly what is the complement of L? Here the answer can be found by complementing an appropriate dfa.
This works, since the most natural construction is a dfa or at least an incomplete one. Routine drill exercise. Traps those who blindly follow the algo- rithmic constructions. Good contrast to Exercise 17 f , Section 3. Find an nfa for the language, convert to a dfa, then minimize.
A little tedious, but straightforward. Routine application of the construction leading up to Theorem 3. The regular expression can be obtained by inspection.
Part a can be done by inspection. This is a reminder that the construction in Theorem 3. Drill exercises to make sure the students can follow the con- struction. It will be hard for students to make the argument precise, but it serves to justify an important step in the construction. Easy, mainly to keep connection with applications in mind. Quite hard, but the given solution should help students in the next exercise.
Create a duplicate dfa for L, then follow the pattern suggested by the diagram below. This shows why the simple automata in Figure 3.
The construction works even for the unusual situations in this exercise. Routine drill exercises. From this the left-linear gram- mar can be found without much trouble. A solved exercise. If you follow the suggestion in Theorem 3. This suggests a direct approach: Notice that the grammar has several useless productions.
Of this, more later. This is an exercise in combining grammars to get the union of languages. Theoretical, but the solution is in the solved problems section. See the answer to Exercise 5 above. These exercises look harder than they are. Split into two parts: Constructing a dfa for these languages should by now be easy for most students.
After this apply Theorem 3. Introduces the important idea of a normal form, about which we say more later. The technique here is also important: It is satisfying for the student to discover this. If there is no such rule, no sentence can be derived. A straightforward, applications-oriented exercise. This is a worthwhile exercise whose solution is outlined. Perhaps students can be asked to make the given outline more precise.
Chapter 4 Properties of Regular Languages 4. The exercises in this section expand on these observations. Prove the result by induction on the number of moves of the nfa.
Formal Languages and Automata Peter Linz Solution Manual
This is a routine exercise that tests the understanding of the algorithm involved in a constructive proof. It is worthwhile because it gets students used to constructions involving Cartesian products of states. Follow the construction for the intersection. Good example of simple induction on the number of languages.
A constructive proof along the lines of intersection in Theorem 4. Gets the student thinking about homomorphism. A counterexample may not be obvious. Here is one: A somewhat unusual and challenging problem. The answer is given. Neither approach should be hard to discover.
An easy problem. Since L is regular, so is L R. Then by closure under concatenation, so is the language under consideration.
While for someone who thoroughly understands the construction of Theorem 4. We can change the right-quotient argument as follows. All such reachable states are then made the initial states of an nfa for L 1 L 2. This gives an nfa with multiple initial states, but according to Exercise 13 in Section 2. However, once a student has mastered one or two, the rest are not so bad. This is mostly a matter of using induction on the length of the strings involved, but there are lots of details that will give many students trouble.
Although these are not easy problems, I suggest you assign at least one or two of them. Examining the given solution of 18 should help. You may want to assign this problem just so that students will read the given answer.
Extend the construction in Exercise 14, Section 2. The idea is the same here, but there are a few more details. Suppose the graph for L looks like a b.
The idea here is similar to Exercise We replace each part of the graph of the form a m a 1. Note that this works only if we start with a dfa!
An Introduction to Formal Languages and Automata, 6th Edition
Simple view of closure via grammars. The ideas are intuitively easy to see, but the arguments should be done carefully. But as demon- strated with several examples in previous sections, set operations together with known algorithms are often a quicker way to the solution. Construct a dfa. Construct the regular language L 1 L 2 e. This is a little harder than some of the above exercises. Take a dfa for L.
By Exercise 22, Section 4. Similar to Exercise A good exercise that involves a simple, but not obvious trick. Some students will come to grief trying to argue from transition graphs. Look at the transition graph for the dfa. If not, check the lengths of all possible paths. The proofs of these are nearly identical to the proof of Theorem 4. These are theoretical, but worthwhile exercises; they make the student think about what is involved in the proof of the pumping lemma.
The results are useful in Exercise 20 below. A simple problem: This set is generally easy and involves little more than a routine appli- cation of the pumping lemma, similar to Examples 4. A simpler solution is by contradiction; if L is assumed regular, so is L.
But we already know that, in this particular case, L is not regular. I think that all parts of this exercise should be done before proceeding to harder problems. This set is harder than Exercise 4, since some algebra is required. Part b follows from a , since the language here is the complement of that in a. Parts c and d require similar algebraic manipulations. The language in a is regular, but b is not.
Stay ahead with the world's most comprehensive technology and business learning platform.
Applying the pumping lemma to b requires some care. An easy application of the pumping lemma. A hard problem. Part a is very hard. The argument through closure is easy since we have Example 4. Very easy. We can easily pump out this language. Good exercise for students to develop some intuition about what is and what is not a regular language.
The key is how much has to be remembered by the automaton. No, but it is hard to apply the pumping lemma directly.
The latter is clearly not regular. Repeat the argument in Example 4. The solution is given. It seems impossible to pick a string to which Theorem 4. We can do better by applying the extended version of the pumping lemma as stated in Exercises 1 and 2 previously.
The result can be pumped out of the language, although it takes a fair amount of arguing to convince yourself that this is so. The proof can be done by induction on the number of vertices.
The answer is no. Consequently, z is in the union of all the L i. Conversely, take any string z of length m that is in all of the L i.
Very similar in appearance to Exercise 12 in Section 4. Rectangles are described by u n r m d n l m. Apply the pumping lemma to show that the language is not regular. A problem for students who misunderstand what the pumping lemma is all about.
Chapter 5 Context-Free Languages 5. Most of the exercises explore the concepts in a fairly direct way. Many of the exercises are reminiscent of or extensions to the grammar problems in Section 1. Straightforward reasoning: Simple drill exercise. No, by an easy application of the pumping lemma for regular languages. Fill-in-the-details via an induction on the number of steps in the derivation. Several of the exercises simplify when split into subsets e. Again, they are much easier if split intelligently.
The other parts are similar in nature. Conceptually not hard, but the answer is long: An easy exercise, involving two familiar ideas. An answer: Introduce new variables and rewrite rules so that all terminals are on the left side of the productions. This anticipates some of the grammar manipulations of Chapter 6 and is easier after that material has been covered. This exercise anticipates the closure results of Chapter 8.
S 1 , where S 1 derives L. Another simple exercise, anticipating closure under union. A little easier than solving Exercise Two alternatives have to be consid- ered: Routine drill to give the derivation tree, but an intuitive characteriza- tion of the underlying language is quite hard to make. An easily solved problem. Easy, but there are many answers. This exercise is not hard, but it is worthwhile since it introduces an important idea. You can view this as an example of a metalanguage, that is, a language about languages.
Same idea as in Exercise For a leftmost derivation, traverse tree in preorder, that is, process root, process left subtree, process right subtree, recursively, expanding each variable in turn. The fact that we can do this shows that a leftmost derivation is always possible.
Expands on discussion in Example 5. A fairly simple exercise involving some counting of leaves in a tree.
The major purpose is to get students to think about derivation trees. To get the answer, establish a relation between the height of the derivation tree and the maximum number of leaves. For a tree of height h, the maximum number is h k.
The other extreme is when there is only one node i. Clearly, there is no choice in a leftmost derivation. A simple, solved problem.
Construct a dfa and from it a regular grammar. Since the dfa never has a choice, there will never be a choice in the productions. In fact, the resulting grammar is an s-grammar.
Follow the approach used for arithmetic expressions. But, by comparing the sentential form with the string to be parsed, we see that there is never a choice in what production to apply, so the grammar is unambiguous. Simple variations on the current theme. So every two productions produce two terminals, and we have at most [w[ rounds. Consider leftmost productions. Since the variable to be ex- panded occurs on the left side of only one production, there is never a choice.
The main purpose of this type of exercise is to remind students of potential applications. Assign one or two of these if you feel that such a reminder is necessary.
The exercises are useful to reinforce the constructions. Without them, the students may be left with some misunderstandings. A reminder of derivation trees. Simple, just substitute for B.
A routine application of the algorithm in Theorem 6. The grammar generates the empty set. Straightforward, but shows that order matters. Routing applications of the given theorems. Involve elementary arguments to complete some missing detail.
This leads into a subsequent exercise, where the particular observation is made general. This generalizes the previous two exercises. To prove it, show that every nonempty string in L G can still be derived. Here we add no productions at all. An argument, which is at least plausible, can be made from the derivation tree. Since the tree does not embody any order, the order of replacement of variables cannot matter. An important point: B will be recognized as useless, but not A. Exercises 21 and 22 are intimidating in appearance, but really quite simple, once the notation is understood.
I include them, because students sometimes ask: Looks harder than it is. Obviously, in removing useless variables we introduce no new productions; therefore, the complexity decreases. Serves to point out that just removing useless variables does not simplify the grammar as far as possible. The proof can be done by showing that crucial sentential forms generated by one grammar can also be generated by the other one.
This is actually an important result, dealing with the removal of certain left-recursive productions from the grammar and is needed if one were to discuss the general algorithm for converting a grammar into Greibach normal form. A routine application illustrating the result of Exercise The arguments are similar to those in Exercise Straightforward even though a bit theoretical. By now the stu- dents should have no trouble with this sort of thing.
Routine drills, involving an easy application of Theorem 6. To apply the method described in Theorem 6. The rest is easy, but a little lengthy. An exercise that looks harder than it is. It can be solved with elementary arguments. Enumerate the productions generated in each step.
The stated result follows easily. A trivial exercise, just to get students to work with the widely used concept of a dependency graph. A simple solved exercise leading to a normal form for linear gram- mars.
Another normal form, which can be obtained from Chomsky nor- mal form. They serve to make it plausible that conver- sion to Greibach normal form is always possible. No, since the result is a regular grammar. This exercise shows an important extension of the material in the text. Start from Greibach normal form, then make substitutions to reduce the number of variables in the productions.
Complete arguments can be found in some advanced treatments, for example, in Harrison This exercise may be suitable for an extra-credit assignment for the better students.
The exercises in this section can be used to complement what might be a very short discussion in class. Exercises 1 and 2 are drill, requiring no more than an understanding of the notation by which the algorithm is described. Exercises 3 and 4 involve an extension and actual implementation.
For this, the student will have to have a good understanding of the construction. Chapter 7 Pushdown Automata 7. Particularly in- structive are the ones that force the student to think nondeterministically. But once they discover the solution, they begin to understand something about nondeterminism. An even more convincing problem is Exercise 10 in Section 8.
No need for state q 1 ; substitute q 0 wherever q 1 occurs. This problem is not too hard, but requires a little bit of analysis of the nondeterministic nature of the pda in Example 7. For this reason, it is a helpful exercise. An argument goes somewhat like this: But if it is not made in the middle of the string, the emergence of the stack start symbol will not coincide with the end of the input.
The only way the stack can be cleared is to make the transition in the middle of the input string. One of these problems may be useful in illustrating this point. A set of exercises in programming a pda. Most students will have some experience in programming with stacks, so this is not too far removed from their experience and consequently tends to be easy.
Those problems, such as f and j , that illustrate nondeterminism may be a little harder. Part a is easy: Parts b and c are also easy. Part d is a little harder.The easiest way is an indirect approach, using several established re- sults. Academic Calendar attested But we already know that, in this particular case, L is not regular. Noto Personal Organizer 1. Putting the two together proves the claim. Split into three cases: Most students will have some experience in programming with stacks, so this is not too far removed from their experience and consequently tends to be easy.
Parts g , h , and i are easy, following the approach suggested in Example 7. This recovery procedure..