Essa pergunta foi solicitada por estruturas de dados eficientes para criar um verificador ortográfico rápido .
Dadas duas cordas , dizemos que eles estão perto de se sua distância Damerau – Levenshtein ¹ for pequena, ou seja, para um fixo . Informalmente, é o número mínimo de operações de exclusão, inserção, substituição e troca (vizinho) necessárias para transformar em . Pode ser calculado em por programação dinâmica. Observe que é uma métrica , especialmente simétrica.
A questão do interesse é:
Dado um conjunto de cadeias acima de com comprimentos no máximo , qual é a cardinalidade de
?
Como até duas cordas do mesmo comprimento têm números diferentes de cordas close², pode ser difícil (impossível?) Encontrar uma fórmula / abordagem geral. Portanto, podemos ter que calcular o número explicitamente para cada fornecido , levando-nos à pergunta principal:
Qual é a complexidade (de tempo) de encontrar a cardinalidade do conjunto para (arbitrário) ?
Observe que a quantidade desejada é exponencial em, portanto, a enumeração explícita não é desejável. Um algoritmo eficiente seria ótimo.
Se ajudar, pode-se supor que temos realmente um conjunto (grande) de , ou seja, resolvemos a primeira questão destacada.
- As variantes possíveis incluem o uso da distância de Levenshtein .
- Considere e . Os conjuntos de cadeias close sobre são (8 palavras) e (10 palavras), respectivamente.