|
Info |
|
|
|
Esempi |
|
|
|
Linguaggio |
|
|
|
Librerie |
|
|
|
Formule |
|
|
|
|
|
|
|
|
|
Ultimi Inseriti |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Spesso capita di dover verificare se due testi sono uguali o molto simili, il caso classico è per gli indirizzi scritti in modo leggermente diverso da persone diverse. Nel tempo sono stati proposti diversi algoritmi per fare questa verifica uno fra questi è dovuto allo scienziato russo Vladimir Levenshtein, quella riporata qui sotto ne è una leggera variante chiamata distanza di Damerau–Levenshtein.
La funzione calcola la "distanza" fra due parole espressa nel numero minimo di operazioni necessario per passare da un all'altra, come: inserimento, cancellazione, sostituzione di una singola lettera oppure dello scambio di due lettere vicine.
Alcuni esempi aiuteranno a capire il valore assunto dalla funzione nei vari casi:
Testo1 | Testo2 | Valore | Modifica |
---|
Via Manzoni | Via Manzon | 1 | Cancellazione di una lettera | Via Manzoni | Via Manzone | 1 | Sostituzione di una lettera | Via Manzoni | Via A.Manzoni | 2 | Aggiunta di lettere (2) | Via Manzoni | Via Maznoni | 1 | Inversione di una coppia di lettere | |
Il codice delle funzione:
Function OSA_Distance( Testo1 As String, Testo2) As Integer
m = Len( Testo1)
n = Len( Testo2)
Dim Matrice() As Integer
ReDim Matrice(0 To m, 0 To n)
For i = 1 To m
Matrice(i, 0) = i
Next i
For j = 1 To n
Matrice(0, j) = j
Next j
For j = 1 To n
For i = 1 To m
If Mid( Testo1, i, 1) = Mid( Testo2, j, 1) Then
costo = 0
Else
costo = 1
End If
Matrice(i, j) = Minimo(Matrice(i - 1, j) + 1, _
Matrice(i, j - 1) + 1, _
Matrice(i - 1, j - 1) + costo)
If (i > 2 And j > 2) Then
If ( Mid( Testo1, i, 1) = Mid( Testo2, j - 1, 1) And Mid( Testo1, i - 1, 1) = Mid( Testo2, j, 1)) Then
Matrice(i, j) = Minimo(Matrice(i, j), _
Matrice(i - 2, j - 2) + 1)
End If
End If
Next i
Next j
OSA_Distance = Matrice(m, n)
End Function
Gli esempi contenuti nel sito sono per uso personale, non é consentito l'uso professionale, commerciale o la riproduzione senza autorizzazione.
|
|
|