This document discusses non-deterministic finite automata (NFAs). It defines NFAs as recognizers for languages that can have multiple transition actions for the same input symbol. It describes Thompson's construction algorithm for building an NFA from a regular expression in steps, introducing at most two new states per operation. It also explains how to simulate an NFA on an input string by computing the epsilon-closure of states after reading each symbol.