2013-11-27 25 views
7

Nella distanza di levenshtein si pone la domanda, date queste due corde, qual è la loro distanza di levenshtein. Come andresti sul prendere una corda e una distanza di levenshtein e generare tutte le corde entro quella distanza di levenshtein. (Avrebbe anche preso un set di caratteri). Quindi se passo una stringa x e una distanza d. quindi mi darebbe tutte le stringhe entro quella distanza di modifica, inclusi d-1 e d-2 .... d-n; (n < d).Reverse Levenshtein distanza

funzionalità prevista:

>>> getWithinDistance('apple',2,{'a','b',' '}) 
['applea','appleb','appel','app le'...] 

Si prega di notare che il programma è in grado di produrre app le come lo spazio è incluso nel set di caratteri.

+1

ho provato ad aggiungere caratteri casuali a posizioni casuali, ma non serve .. –

+0

Questa domanda dovrebbe ottenere più voti, è un'interessante domanda non doppia. – PascalVKooten

risposta

6

C'è una struttura dati che chiama questo Levenshtein automaton. Lo si costruisce da un insieme di stringhe (che possono avere un solo membro) e una distanza fissa k, e quindi è possibile interrogarlo per tutte le stringhe con la distanza massima di k di qualsiasi stringa che memorizza. Un'implementazione Python è discussa here.

In alternativa, è possibile eseguire una ricerca con profondità limitata con il backtracking per tali stringhe.

+0

potrei ottenere qualche pseudo codice o qualche implementazione? –

+0

@AnshumanDwibhashi: pubblicato un collegamento a un post del blog che discute l'implementazione. –

+0

il sito sembra avere alcuni errori, quando provo il codice, dice che NFA non è riconosciuto –