Finite automata are simple machines that recognize patterns in input strings. They have a finite number of states and transition between states based on reading input symbols. A finite automaton will either accept or reject a string depending on whether it is able to transition through all the symbols to a final state. There are two main types: deterministic finite automata (DFAs) which have a single transition between states for each symbol, and nondeterministic finite automata (NFAs) which may have multiple transitions for a symbol. Regular expressions can be converted to equivalent NFAs using Thompson's construction.