The Knuth-Morris-Pratt algorithm is a linear-time string matching algorithm that improves on the naive algorithm. It works by preprocessing the pattern string to determine where matches can continue after a mismatch. This allows it to avoid re-examining characters. The algorithm computes a prefix function during preprocessing to determine the size of the longest prefix that is also a suffix. It then uses this information to efficiently determine where to continue matching after a mismatch by avoiding backtracking.