About These Notes
Please note that the following material is not intended
to replace attendance in lectures and tutorials for this
course. You should use this material to prepare for lectures
and tutorials and to supplement your own notes.
Online Notes
Finite Automata and Regular Languages
-
Slides on Finite Automata and Regular Languages:
Prepared by Professor Verwaal, these will be used in the early
weeks of this course during the early afternoon (and, possibly,
the late afternoon) lectures.
-
Example: Design and Verification of a DFA:
Prepared by both instructors, this supplements material
presented in lectures on Friday, January 14 and
Monday, January 17.
-
Verification of Nondeterministic Finite Automata:
This discussion of the verification of NFAs is
not required reading, but it might be of
interest to students who are interested in knowing how to show
that a nondeterministic device has a given language
— the process to be followed is not quite the same as the
process one should use to verify a deterministic device.
-
More About Nondeterministic Finite Automata with
Epsilon-Transitions:
This document is not required reading.
Instead, it is for interest only. It includes additional
information about epsilon-closures that would be useful if you
wanted to write a computer program to decide whether a given
epsilon-NFA accepts a given string.
-
Proving Properties of Regular Expressions:
This includes brief descriptions of processes that can be
followed to prove various kinds of properties of regular
expressions, examples of these proofs, and exercises that
students can use to improve their proof-writing skills.
-
Conversion from Finite Automata to Regular Expressions:
This discusses a construction for the conversion of a
finite automaton into a regular expression that is slighty
simpler than the (very similar) construction given in
Section 3.2.2 of the textbook. It includes a complete
example of the use of this construction.
-
Proof That a Language is Not Regular:
This includes an example in which the “Pumping Lemma for
Regular Language” is used to show that a language is
not regular. This is provided as an example for students who
are not sure how much detail they should give when answering
questions on tests in this course.
Context-Free Grammars and Languages
-
Slides on Context-Free Grammars and Languages:
Prepared by Professor Verwaal, there will be used in the
middle of this course during the early afternoon (and, possibly,
the late afternoon) lectures.
-
Correctness of Context-Free Grammars:
This includes examples of proofs of correctness of
context-free grammars and a discussion of template for
these proofs. It may be helpful to read this document
before working on
Assignment #2.
-
Ambiguity in Context-Free Grammars and Languages:
This includes examples of proofs concerning ambiguity in
context-free gramamrs and a discussion of the things you should
try to do in order to develop proofs like these yourself.
-
Conversion to Chomsky Normal Form:
This includes a description of the process, discussed in
lectures, to produce a context-free grammar in Chomsky
Normal form whose language is almost the same as the
language of a given grammar (the language of the original
grammar might include the empty string but the language of
the derived grammar cannot). It also includes a detailed
example of the application of this process.
-
Chomsky Normal Form and Parsing:
Prepared by Professor Verwaal, these slides include an
example of the conversion of a grammar into Chomsky normal
form and an application of the “CYK algorithm”
to decide whether a string is in the language of the
resulting grammar.
Turing Machines and Decidability
-
Slides on Turing Machines and Computability:
Prepared by Professor Verwaal, there will be used for the
last part of this course during the early afternoon (and,
possibly, the late afternoon) lectures.
-
Turing Machines: An Example and Analysis:
This includes a proof that a given Turing machine has a given
language, as well as comments of correctness of both Turing
machines and computer programs. It is not required reading
— students will not be asked to generate proofs like these
in this course. On the other hand, it may be of interest to
students who are interested in seeing how complicated structures
(like Turing machines or programs) can be verified.
-
A Nondeterministic Turing Machine:
An example of a nondeterministic Turing machine is presented
and discussed.
-
Reductions and Undecidability:
This discusses the formal notion of “reductions between
languages” as well as a somewhat less formal notion of
“reductions between decision problems” that are
described in classes and in Chapter 9 of the textbook.
Students may find this material useful when working on
the final tutorial exercise
and on
Assignment #3
.
-
Reductions by Generalizations/Specializations:
This discusses one very simple kind of reduction between
problems that can sometimes be used to show that a problem
is undecidable.
-
Reductions by Transformations of Machines
This discusses another kind of reduction between problems
that is useful when considering problems whose inputs
include encodings of Turing machines.
This page was most recently changed on Tuesday, March 29, 2005 by
Wayne Eberly.
|