Transcript Chapter 1
CS 3240 – Chuck Allison
A model of computation
A very simple, manual computer (we draw
pictures!)
Our machines: automata
1) Finite automata (“finite-state machines”)
2) Push-down automata
3) Turing Machines
CS 3240 - Introduction
2
Meaningless sets of strings
We study their syntax properties
Not interested in semantics
Example:
The language over the alphabet* {a, b} with a run
of a’s followed by an equal-length run of b’s
anbn = {ab, aabb, aaabbb, …}
* An alphabet is a finite
set of symbols.
CS 3240 - Introduction
3
Length operator
If x = abaa, then |x| = 4
Concatenation
If y = bab then xy = abaabab
Replication (concatenation with self)
a3 = aaa
x2 = abaaabaa
Note: the empty string is denoted by λ
xλ = λx = x, x0 = λ
CS 3240 - Introduction
4
Also called “Kleene closure” or “Kleene star”
(roughly pronounced “CLAY-nee”)
The set of all possible concatenations of
elements of a set, taken zero or more times
Example:
Alphabet, Σ = {a, b}
“Proper order”
Σ* = {λ, a, b, aa, ab, ba, bb, aaa, aab, …}
Always an infinite set
Always includes λ
CS 3240 - Introduction
5
Languages are just sets of strings
You can therefore do set operations on them:
union, intersection, difference, cartesian product
Let L = {a, bb}, M = {aa, b}
L ∪ M = {a, b, aa, bb}
L∩M=∅
(in this case)
L - M = L, M – L = M
(in this case)
LM = {ab, aaa, bbb, bbaa}, ML = {ba, aaa, bbb, aabb}
L0 = {λ}, L1 = L, L2 = {aa, abb, bba, bbbb}
CS 3240 - Introduction
6
Complement: L
L’ = ∑* - L = {λ, b, aa, ab, ba, aaa, …}
Star Closure:
L* = {λ, a, aa, bb, aaa, abb, bba, aaaa, …}
Positive Closure (one or more):
L+ = {a, aa, bb, aaa, abb, bba, aaaa, …}
Just missing λ
Equivalent to LL* = L*L
CS 3240 - Introduction
7
A set of rules for generating strings
(“sentences”) in a language
A symbol on the left of the rule can be replaced by
the string on the right
A recursive rule is necessary to generate an
infinite language
See next 3 slides
CS 3240 - Introduction
8
<S> => the <NP> <VP>
<NP> => <N> | <ADJ> <NP>
<VP> => <V> | <V> <ADV>
<N> => dog | cat | professor | student | rat
<V> => ran | ate | slept | drank
<ADJ> => red | slow | dead
<ADV> => quickly | happily | well
Start with <S> (the “start symbol”)
CS 3240 - Introduction
9
<S> => the <NP> <VP>
=> the <ADJ> <NP> <VP>
=> the <ADJ> <ADJ> <NP> <VP>
=> the slow dead <N> <VP>
=> the slow dead student <VP>
=> the slow dead student <V> <ADV>
=> the slow dead student drank happily
CS 3240 - Introduction
10
S => aSb | λ
S => aSb => aaSbb => aaaSbbb => aaabbb
CS 3240 - Introduction
11
A finite automaton is a finite-state machine
It reads an input string 1 letter at a time
Different inputs place the machine in different states
Machines that emit output as they move from
state-to-state are called transducers
aka “Mealy Machines”
Machines that just answer “yes” or “no”
(depending on the state they finish in) are called
accepters
CS 3240 - Introduction
12
Figure 01.04:
CS 3240 - Introduction
13
CS 3240 - Introduction
14
A machine with output
(aka “transducer” or
“Mealy machine”)
CS 3240 - Introduction
15
Adds two bit strings according to the rules of
arithmetic
Traverses digits right-to-left
The output is either a 0 or 1 (duh)
but we also have to track whether we carry or not
leads to two states (carry vs. no-carry)
See next two slides
CS 3240 - Introduction
16
Figure 01.07:
Figure 01.09:
Front
pad
Rear,
Neither,
Both
Rear
pad
Front,
Rear,
Both
Front
closed
open
Neither
CS 3240 - Introduction
19
Language
Machine
Grammar
Regular
Finite Automaton
Regular Expression,
Regular Grammar
Context-Free
Pushdown Automaton
Context-Free
Grammar
Recursively
Enumerable
Turing Machine
Unrestricted PhraseStructure Grammar
CS 3240 - Introduction
20