Lecture Topic: # Equivalence Classes You can represent equivalence classes by writing each one as a set: $$C_0 = \{..., -10, -5, 0, 5, 10, 15, ...\} \text{ or } \{5p | p \in \mathbb{Z}\}$$ $$C_0 = \{..., -9, -4, 1, 6, 11, 16, ...\} \text{ or } \{5p + 1| p \in \mathbb{Z}\}$$ $$\text{and so on...}$$ # Graphs Definitions: - For each *vertex* v, the **degree** of v is the number of edges incident on v - A *path* is a **sequence** of vertices connected by edges - A *cycle* is a path that **starts and ends** at the same vertex - A *simple path* is a path that has **no repeated** vertices - A *connected graph* contains a path between **every pair** of vertices - A *disconnected graph* is the opposite (look at slides for real def) # Regular Languages A class of languages that can be processed by simple computers called **finite automata** ## Simple Example of a finite automaton Vending machine/toll booth gate Requires 25 cents or more to be deposited (gives no change) Takes as input, 5 cent, 10 cent, 25 cent coins Uses **states** to remember how much has been deposited so far States: - q_0 : 0 cents deposited (START STATE) - q_5 : 5 cents - q_10 : 10 cents - q_15 : 15 cents - q_20 : 20 cents - q_25 : 25 cents (ACCEPT STATE) We represent the input as a **string** of symbols. - n = nickel - d = dime - q = quarter Examples: - ddn - ndd - dnd - q Not accepted examples: - nd - d - $\epsilon$ ## State Diagram (not really possible without an image in obsidian) # Finite Automata (look at slides, didn't catch it)