Algoritmo de comparação de strings

5 respostas
H

Galera,o problema e o seguinte:
tenho um banco de dados com varias palavras

Gostaria de desenvolver um programa q dada uma palavra compare esta com o banco e retorne:

  1. a palavra se ela existir no banco
  2. palavras aproximadas se a palavra nao existir no banco

Gostaria de ideias pois o que eu desenvolvi ate agora naum eh muito bom…

[]´s.

5 Respostas

_fs

Qual o nível de “aproximação” que você está buscando?

banan -> banana
ou
bavava -> banana

?

H

A principio,as palavras nem precisam começar com a mesma letra…
No seu caso, eu preciso achar nos dois casos.

louds

faz pesquisa indexadas por soundex, ou qualquer algorítmo de semelhançaa fonética

Bani

No livro Projeto de Algoritmos do Nivio Ziviani tem um algorítmo chamado Shift-And-Aproximado que eu acho muito interessante. Você escolhe o número de diferenças aceitáveis, entre inclusão, remoção ou alteração de caracteres, e manda rodar.
O código dele é bem pequeno e simples de implementar, mas a idéia é bem legal pois ele na verdade cria umas máscaras de bits e fica fazendo um monte de operação bitwise para simular um autônomo de comparação.
E o custo dele é muito bom por se aproveitar do paralelismo de bits. No caso médio ele é linear, de ordem O(kn) onde k é o número de diferenças aceitáveis e n o tamanho do texto.

bandrade

Esse algoritimo do shift é muito útil… procura sobre ele q vc resolve seu problema… + jah vou te adiantando… se vc colocar uma tolerância maior do que 1, vc consegue palavras q não tem nada a ver com o digitado… + beleza…

Criado 24 de maio de 2005
Ultima resposta 24 de mai. de 2005
Respostas 5
Participantes 5