Tengo un conjunto grande (100k) de cadenas cortas (no más de 100 caracteres) y necesito encontrar rápidamente a todos aquellos que tienen una cierta subcadena.Sugerencia del algoritmo de subcadena
Esto se usará como un cuadro de búsqueda donde el usuario comienza a escribir y el sistema inmediatamente da "sugerencias" (las cadenas que tienen como subcadena el texto que el usuario tipeó). Algo similar al cuadro "Etiqueta" en StackOverflow.
Como esto será interactivo, debería ser bastante rápido. ¿Qué algoritmo o estructura de datos recomiendas para esto?
Por cierto, voy a estar utilizando Delphi 2007.
Gracias de antemano.
Gracias a todos los que respondieron. Revisé el árbol de sufijo sugerido por Mike. Sin embargo, teniendo en cuenta mis limitaciones de tiempo y la falta de una implementación existente, voy a ir con algo más simple primero: Boyer-moore según lo sugerido por Oren. – cfischer
Acabo de probar Boyer-Moore-Horspool (gracias Oren y François) y es mucho más rápido de lo que esperaba. Más que suficiente para mis propósitos. – cfischer