Calculadora de distância de Levenshtein
Entradas
| Primeira cadeia | kitten |
|---|---|
| Segunda cadeia | sitting |
Calculadora de distância de Levenshtein
Calcula a distância de Levenshtein (distância de edição) entre duas cadeias de caracteres: o número mínimo de inserções, exclusões e substituições de um único caractere necessárias para transformar uma na outra, além de uma porcentagem de similaridade.
Entradas
Cadeias de caracteres
Resultados
Insira um valor para ver os resultados.
Resultados
Distância de Levenshtein
A distância de Levenshtein, também chamada de distância de edição, mede o quanto duas cadeias de caracteres são diferentes contando o menor número de edições de um único caractere necessárias para converter uma na outra. As edições permitidas são inserção, exclusão e substituição, cada uma com custo um. A calculadora recebe duas cadeias e devolve essa distância junto com uma porcentagem de similaridade, o que é útil para corretor ortográfico, correspondência aproximada e comparação de sequências como o DNA.
As três operações de edição
Toda transformação entre duas cadeias pode ser expressa como uma sequência de três movimentos básicos. Uma inserção adiciona um caractere, uma exclusão remove um e uma substituição troca um caractere por outro. A distância de Levenshtein procura a sequência mais econômica desses movimentos, em que cada um custa um. Como a substituição é um único passo, e não uma exclusão seguida de uma inserção, mudar uma letra conta sempre como uma edição, não duas.
Nomeada em homenagem a Vladimir Levenshtein, que a definiu em 1965, a medida generaliza a mais antiga Calculadora de Distância de Hamming: a distância de Hamming permite apenas substituições e somente para cadeias de igual comprimento, enquanto a de Levenshtein admite também inserções e exclusões, de modo que lida com cadeias de comprimentos diferentes.
A tabela de programação dinâmica
A distância é calculada preenchendo uma tabela com uma linha por caractere da primeira cadeia (mais uma linha vazia inicial) e uma coluna por caractere da segunda (mais uma coluna vazia inicial). A célula contém a distância de edição entre os primeiros caracteres de A e os primeiros caracteres de B.
A primeira linha e a primeira coluna contam as edições em relação à cadeia vazia, de modo que e . Qualquer outra célula é o mínimo de três candidatos:
D[i][j]=min⎩⎨⎧D[i−1][j]+1D[i][j−1]+1D[i−1][j−1]+c(exclusa˜o)(inserc¸a˜o)(substituic¸a˜o)em que o custo de substituição é 0 quando os caracteres coincidem e 1 quando diferem. A resposta fica na célula inferior direita. Preencher a tabela leva um tempo proporcional ao produto dos dois comprimentos, .
Exemplo resolvido
Tomemos o par clássico «kitten» e «sitting». Percorrer o caminho ótimo pela tabela resulta em três edições:
kittensittensittin→sitten→sittin→sitting(substituir k→s)(substituir e→i)(inserir g)Não existe nenhuma sequência mais curta, então a distância é 3. A cadeia mais longa tem 7 caracteres, de modo que a similaridade é , ou seja, cerca de 57%.
A similaridade e seus limites
A calculadora normaliza a distância bruta em uma pontuação de similaridade por meio de
Dividir pelo comprimento da cadeia mais longa mantém o resultado entre 0% para cadeias totalmente diferentes e 100% para idênticas; duas cadeias vazias são consideradas idênticas. Essa é uma das normalizações comuns — outras ferramentas dividem pela soma dos comprimentos ou usam medidas baseadas em razões —, portanto os números de similaridade de fontes diferentes não são diretamente comparáveis.
Onde é usada
Os corretores ortográficos ordenam as correções candidatas pela distância de edição em relação à palavra escrita errada. Sistemas de busca e de bancos de dados a usam para correspondência aproximada, tolerando erros de digitação ao consultar nomes ou endereços. Na bioinformática, a distância de edição é a base do alinhamento de sequências para comparar DNA, RNA e proteínas, em que inserções e exclusões correspondem a mutações. O modelo de custo de Levenshtein simples trata todas as edições igualmente; aplicações que precisam de penalidades diferentes para operações diferentes, ou que devem alinhar sequências muito longas de forma eficiente, o estendem com custos ponderados ou algoritmos de alinhamento especializados.
Perguntas frequentes (FAQ)
O que é a distância de Levenshtein?
A distância de Levenshtein, também chamada de distância de edição, é o número mínimo de edições de um único caractere — inserções, exclusões ou substituições — necessárias para transformar uma cadeia em outra. Foi introduzida em 1965 pelo matemático soviético Vladimir Levenshtein.
Por exemplo, a distância entre «kitten» e «sitting» é 3: substituir k→s, substituir e→i e inserir um g no final. Não existe nenhuma sequência de edições mais curta.
O valor é calculado com uma tabela de programação dinâmica cujas células contêm a distância de edição entre prefixos das duas cadeias. Preencher a tabela leva um tempo proporcional ao produto dos dois comprimentos.
Qual é a diferença em relação à distância de Hamming?
A distância de Hamming conta apenas substituições e é definida somente para cadeias de comprimento igual, pois compara os caracteres posição a posição. A distância de Levenshtein também permite inserções e exclusões, de modo que funciona com cadeias de comprimentos diferentes e capta deslocamentos de alinhamento.
Para duas cadeias de mesmo comprimento, a distância de Levenshtein é sempre menor ou igual à de Hamming, porque a substituição é uma de suas operações, mas ela pode encontrar um caminho mais econômico usando inserções e exclusões.
Como a porcentagem de similaridade é calculada?
A similaridade é expressa como 1 − distância / max(len_a, len_b), na forma de porcentagem. Dividir pelo comprimento da cadeia mais longa normaliza a pontuação para o intervalo de 0% (completamente diferentes) a 100% (idênticas). Quando ambas as cadeias estão vazias, a similaridade é definida como 100%.
Essa é uma das normalizações comuns; outras ferramentas dividem pela soma dos comprimentos ou usam medidas baseadas em razões, de modo que as pontuações de similaridade não são diretamente comparáveis entre definições diferentes.