← capítulo

Búsqueda ingenua y KMP

Encuentra un patrón en un texto sin retroceder nunca el puntero del texto. Velocidad a partir de una tabla de fallo precalculada.

Un mismatch es información

La función de fallo

Mira deslizarse al patrón

Azul = comparando · verde = coincidió · rojo = mismatch. Después de que abab falla, el patrón brinca hacia adelante — sin rebobinar.

Lineal vs cuadrático

aaaa…a vs aaaa…b: ingenuo 398K comparaciones, KMP 16K → 25× menos.

Para llevar

El ingenuo no está mal — está frágil (cuadrático latente con entrada repetitiva). KMP paga un setup O(m) por una garantía lineal, sea cual sea la entrada. Sigue: Rabin-Karp — comparar números (rolling hash), no cadenas.