one minute to learn programming: finite automata
DESCRIPTION
a. b. b. a. a. b. a. a. b. b. One Minute To Learn Programming: Finite Automata. Let me teach you a programming language so simple that you can learn it in less than a minute. Meet “ABA” The Automaton!. a. b. b. a. a. a. b. a. b. b. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/1.jpg)
Great Theoretical Ideas In Computer Science
Steven Rudich
CS 15-251 Spring 2004
Lecture 12 Feb 19. 2004 Carnegie Mellon University
b
ba
b
a
a
a
ba
b
One Minute To Learn Programming:
Finite Automata
![Page 2: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/2.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Let me teach you a programming language so simple
that you can learn it in
less than a minute.
![Page 3: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/3.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Meet “ABA” The Automaton!
b
ba
ba
a
a
bab
Input String Result
aba Accept
aabb Reject
aabba Accept
Accept
![Page 4: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/4.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
The Simplest Interesting Machine:
Finite State Machine OR
Finite Automaton
![Page 5: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/5.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Finite set of states
A start state
A set of accepting states
A finite alphabet
a b #
x 1State transition instructions
1 2{ , , , , }o kQ q q q q
Finite Automaton
oq
1 2, , ,
ri i iF q q q
:
( , )i j
Q Q
q a q
iq jq
a
![Page 6: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/6.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
How Machine M operates.
M “reads” one letter at a time from the input string (going from left to right)
M starts in state q0.If M is in state qi reads the letter a then
If (qi. a) is undefined then CRASH.
Otherwise M moves to state (qi,a)
![Page 7: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/7.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
M accepts the string x if when M reads x it ends in an accepting state.
M rejects the string x if when M reads x it ends in a non-accepting state.
M crashes on x if M crashes while reading x.
Let M=(Q,,F,) be a finite automaton.
![Page 8: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/8.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
The set (or language) accepted by M is:
*M
k
* 0 1 2 3
L x | M accepts x
All length k strings over the alphabet
...
Notice that this is
![Page 9: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/9.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What is the language accepted by this machine?
L = {a,b}* = all finite strings of a’s and b’s
a,b
![Page 10: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/10.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What is the language accepted by this machine?
L = all even length strings of a’s and b’s
a,b
a,b
![Page 11: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/11.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What machine accepts this language?
L = all strings in {a,b}* that contain at least one a
aa,bb
![Page 12: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/12.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What machine accepts this language?
L = strings with an odd number of b’s and any number of a’s
b aa
b
![Page 13: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/13.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What is the language accepted by this machine?
L = any string ending with a b
b ba
a
![Page 14: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/14.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What is the language accepted by this machine?
L = any string with at least two a’s
b ba,ba a
![Page 15: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/15.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What machine accepts this language?
L = any string with an a and a b
b
ba,b
a
a
b a
![Page 16: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/16.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
What machine accepts this language?
L = strings with an even number of ab pairs
a
bb
a
a
b a
b
![Page 17: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/17.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
L = all strings containing ababb as a consecutive substring
b
a,ba a
b
b
bb
aa
a
a ab aba ababInvariant: I am state s exactly when s is the longest suffix of the input (so far) that forms a prefix of ababb.
![Page 18: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/18.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Problem:Does the string S appear inside the text T ?
The “grep” Problem
Input:• text T of length t• string S of length n
Cost: O(nt) comparisons1 2 3, , , , ta a a a
symbols
n Naïve method:
![Page 19: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/19.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Automata Solution
•Build a machine M that accepts any string with S as a consecutive substring.
•Feed the text to M.
•Cost: t comparisons + time to build M.
•As luck would have it, the Knuth, Morris, Pratt algorithm builds M quickly.
•By the way, it can be done with fewer than t comparisons in the worst case!
![Page 20: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/20.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Real-life uses of finite state machines
•grep
•coke machines
•thermostats (fridge)
•elevators
•train track switches
•lexical analyzers for parsers
![Page 21: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/21.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Any L is defined to be a language.
L is just a set of strings. It is called a language for historical reasons.
![Page 22: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/22.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Let L be a language.
L is called a regular language if there is some finite automaton that accepts L.
In this lecture we have seen many regular languages.•
• even length strings
• strings containing ababb
![Page 23: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/23.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Theorem: Any finite langage is regular.
Proof: Make a machine with a “path” for each string in the language.
Example: L = {a, bcd, ac, bb}
b
d
a
c b c
![Page 24: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/24.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Are all languages regular?
![Page 25: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/25.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
, , , ,n na b ab aabb aaabbb
Consider the language
i.e., a bunch of a’s followed by an equal number of b’s
No finite automaton accepts this language.
Can you prove this?
![Page 26: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/26.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
anbn is not regular. No machine has enough states to keep track of the number of a’s it might encounter.
![Page 27: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/27.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
That is a fairly weak argument. Consider the following example…
![Page 28: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/28.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
L = strings where the # of occurrences of the pattern ab is equal to the number of occurrences of the pattern ba
Can’t be regular. No machine has enough states to keep track of the number of occurrences of ab.
![Page 29: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/29.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Remember “ABA”?
b
ba
ba
a
a
bab
ABA accepts only the strings with an equal number of ab’s and ba’s!
![Page 30: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/30.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Let me show you a professional strength proof that anbn is not
regular….
![Page 31: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/31.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Professional Strength Proof
Theorem: anbn is not regular.
Proof: Assume that it is. Then M with k states that accepts it.
For each 0 i k, let Si be the state M is in after reading ai.
i,j k s.t. Si = Sj, but i j
M will do the same thing on aibi and ajbi .
But a valid M must reject ajbi and accept aibi.
![Page 32: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/32.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
MORAL:
Finite automata can’t count.
![Page 33: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/33.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Advertisement
You can learn much more about these creatures in the FLAC course.
Formal Languages, Automata, and Computation
• There is a unique smallest automaton for any regular language
• It can be found by a fast algorithm.
• ……
![Page 34: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/34.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Cellular Automata•Line up a bunch of identical finite automata in a straight line.
( , , )k i j l
Q Q Q Q
q q q q
kq lq
,i jq q
iq jqkq
•Transitions are based on the states of the machine’s two neighbors or an indicator that a neighbor is missing. (There is no other input.)
•All cells move to their next states at the same time:synchronous transition
![Page 35: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/35.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
The Firing Squad Problem•Five “soldiers” all start in the sleep state. You change the one on the left to the wake state.•All five must get to the fire state at the same time (for the first time).
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
sleepwakefire
![Page 36: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/36.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Shorthand
, , ,Q a b d
Means use this transition when your left neighbor is in any state at all and your right neighbor is in state a,b, or d.
![Page 37: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/37.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
sleep sleep sleep sleep sleep
sleep sleep sleep sleep sleep
sleep sleep sleep sleep sleep
sleep sleep sleep sleep sleep
sleep sleep sleep sleep sleep
![Page 38: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/38.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
wake sleep sleep sleep sleep
![Page 39: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/39.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
wake sleep sleep sleep sleep
wake2 wake2 sleep sleep sleep
![Page 40: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/40.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
wake sleep sleep sleep sleep
wake2 wake2 sleep sleep sleep
wake3 wake3 wake3 sleep sleep
![Page 41: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/41.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
wake sleep sleep sleep sleep
wake2 wake2 sleep sleep sleep
wake3 wake3 wake3 sleep sleep
wake4 wake4 wake4 wake4 sleep
![Page 42: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/42.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
sleep
wake wake2 wake3 wake4
fire!
{w2},Q{w},Q {w3},Q
Q,Q
{w4},Q
{sleep,fire,end},Q
Q,Q Q,Q Q,Q
1 2 3 4 5
wake sleep sleep sleep sleep
wake2 wake2 sleep sleep sleep
wake3 wake3 wake3 sleep sleep
wake4 wake4 wake4 wake4 sleep
fire fire fire fire fire
![Page 43: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/43.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Question
Can you build the soldier’s finite automaton brain before you know how many soldiers will be in the line?
No. Finite automata can’t count!
![Page 44: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/44.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Don’t jump to conclusions! It is possible to design a single cellular automaton that works for any number of soldiers!
![Page 45: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/45.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Your neighbor “notices” that you are in a signaling state.
An automaton can “signal” to its neighbors.
Certain subsets of its states will correspond to signaling.
signal
normaloperation
![Page 46: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/46.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Useful subroutine:method to find the center
after leftmost soldier is awakened.
Define the center of the line to be:
•The guy in the middle if the # of soldiers is odd.
•The two guys in the middle if the the # of soldiers is even.
![Page 47: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/47.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
A Method to Find the Center• Send a signal back and forth from “end” to “end”.
• Each time it gets to an “end”, send it back, but tell the neighbor of the “end” that it is the “new end”.
•The center(s) will get a “new end” signal from both sides.
• # of steps: 2O n
![Page 48: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/48.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Coyote and Roadrunner.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 49: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/49.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Coyote and Roadrunner.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 50: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/50.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Coyote and Roadrunner.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 51: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/51.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Coyote and Roadrunner.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 52: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/52.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Coyote and Roadrunner.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 53: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/53.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
The move where coyote sees roadrunner along side or just behind him is the move across the center.
Roadrunner is exactly three times faster than coyote.
C
R
![Page 54: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/54.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Roadrunner Coyote Center Algorithm
• Use two signals: one fast and one slow
• When you get the fast signal, pass it on (or bounce it back) on the next time step.
• When you get the slow signal, hold it for two steps, then pass it on the next time step.
• When you wake and you are leftmost, consider yourself to hold both the slow and fast signal.
• If you get one signal from each side, shout, “I am the center!”
![Page 55: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/55.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Firing Squad Problem
•Keep finding the middle recursively: If you’re the center, mark yourself as an “end” and find the centers on each side of you.
•If you are an “end” and your neighbor is starting both signals, send back a “fire next step”.
![Page 56: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/56.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Firing Squad Analysis
3 3 3 3
2 2 2 2 4 2 83 1 1 1
12 2 4 8
32 3
2
n n nn
n
n n
How many steps to find the center?
How many steps to fire?
3 steps
2n
n
2
n
![Page 57: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/57.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
The fact that firing squad
can be solved in 3n steps is impressive!
![Page 58: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/58.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Can you show a matching lower bound?
![Page 59: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/59.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Lower Bound
Can you see why any solution must use at least 2n -2 steps?
![Page 60: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/60.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
MATHCING UPPER BOUND!
It takes at least 2n-2 for a signal to reach one end and come back.
There is a way to solve firing squad in 2n-2 steps!
![Page 61: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/61.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Wow! Firing squad can be
solved in exactly 2n-2
time!
![Page 62: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/62.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Yes, that was shown by Abraham Waksman Information and Control 9 (1966), Pages 66-78
The solution used 16 states.
![Page 63: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/63.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
I have been reading:
http://xraysgi.ims.uconn.edu/fsquad/firing-solution.html
![Page 64: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/64.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Waserman’s Solution running on 768 soldiers.
![Page 65: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/65.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Jacques Mazoyer (Theoretical Computer Science 50 (1987), pages 183-238)
Gives a 6 state 2n-2 time solution!
![Page 66: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/66.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Mozoyer’s Solution running on 1000 soldiers.
![Page 67: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/67.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
It can be shown that there is no 4 state solution.
OPEN PROBLEM:
Is there a five state minimal time solution?
![Page 68: One Minute To Learn Programming: Finite Automata](https://reader035.vdocuments.us/reader035/viewer/2022070404/56813c0e550346895da5801a/html5/thumbnails/68.jpg)
Steven Rudich: www.cs.cmu.edu/~rudich rudich0123456789
Other Research
• Different topologies
• Self-stabilizing clocks
• all cells fire simultaneously at regular intervals
• even if you mess with the states of all the cells they get back on schedule (eventually)