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