Vaya ahi pone que se puede hacer en un patricia en O(m + log n) pero no lo explica, explica haciendolo de otra forma.
Pero la cosa es, que en el ejemplo ese, solo tiene 1 string y la "p", pero yo tengo un diccionario (strings) y una "p" que es cualquier permutacion de una secuencia de hasta 5 caracteres de longitud m hasta 2 (abcd -> tambien valen ab ac ad abc abd etc.. ). ( salen unos 100.000) , por lo que es O(m2 + log n*q) siendo "q" los 100k esos.
Gracias de todas formas.
Mierda, si que se puede
http://en.wikipedia.org/wiki/Suffix_tree#Applications
pero no dicen como.
EDIT:
Esto he encontrado, dice que se puede resolver en O(n+k) creo que n es el tamaño de la substring y k el numero de ocurrencias donde se encuentre la subcadena. A ver si encuentro alguno de los algoritmos que dice al final " the Knuth-
Morris-Pratt, Boyer-Moore, or even the Aho-Corasick algorithm"
Suffix trees yield a very attractive solution to this database problem. A
generalized suffix tree T for the strings in the database is built in 0(m) time and,
more importantly, requires only 0(m) space. Any single string S of length n is found
in the database, or declared not to be there, in 0(n) time. As usual, this is
accomplished by matching the string against a path in the tree starting from the root.
The full string S is in the database if and only if the matching path reaches a leaf of
T at the point where the last character of S is examined. Moreover, if S is a substring
of strings in the database then the algorithm can find all strings in the database
containing S as a substring. This takes O(n + k) time, where k is the number of
occurrences of the substring. As expected, this is achieved by traversing the subtree.
below the end of the matched path for S. If the full sting S cannot be matched
against a path in T, then S is not in the database and neither is it contained in any
string there. However, the matched path does specify the longest prefix of S that is
contained as a substring in the database.
The substring problem is one of the classic applications of suffix trees. The
results obtained using a suffix tree are dramatic and not achieved using the Knuth-
Morris-Pratt, Boyer-Moore, or even the Aho-Corasick algorithm.
Joer me he leido todo y siempre hablan de lo mismo, tener 1 cadena y encontrar en ella la subcadena, pero yo tengo un diccionario entero :S, le van a dar por el culo, total es 1 de 4 practicas...
Necesito un 2 sobre 10 en las practicas, malo sera....
Bueno por lo menos esto se queda aqui para la posteridad , igual a alguien le sirve.