Algoritmo para encontrar as substrings mais comuns em uma string
Existe algum algoritmo que pode ser usado para encontrar as frases mais comuns (ou substrings) em uma string? Por exemplo, a seguinte string teria "olá mundo" como sua frase mais comum de duas palavras:
"hello world this is hello world. hello world repeats three times in this string!"
Na seqüência acima, a seqüência mais comum (após o caractere de seqüência vazia, que se repete um número infinito de vezes) seria o caractere de espaço.
Existe alguma maneira de gerar uma lista de substrings comuns nesta string, do mais comum ao menos comum?