IProgrammatori.it

Forum programmazione

Forum di supporto alla programmazione in generale e nei principali linguaggi.

Oggi è sab lug 31, 2010 6:53 pm

Tutti gli orari sono UTC + 2 ore




   [ 3 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: distanza di levensthein
MessaggioInviato: lun apr 27, 2009 6:16 pm 
Newbies
Iscritto il: lun apr 27, 2009 5:33 pm
Messaggi: 11

Qualcuno mi saprebbe dire perchè uno degli algoritmi più conosciuti di calcolo della distanza di levensthein tra due stringhe considera solo inserimenti in coda alla stringa di partenza.

Ad Esempio mi aspetterei che la distanza tra 'Giulo' e Giulio' sia 1 mentre invece l'algoritmo mi da come risultato 2.

Ringrazio in anticipo


   
 Oggetto del messaggio: Re: distanza di levensthein
MessaggioInviato: lun apr 27, 2009 9:42 pm 
Admin
Avatar utente
Iscritto il: mar giu 06, 2006 4:00 pm
Messaggi: 2299
Località: Italia

Hai implementato male l'algoritmo, in che linguaggio lo hai sviluppato?
Ho fatto in test in php passando le tue stringhe(Giulo,Giulio) e restituisce 1.
Se conosci PHP e vuoi fare altre prove non devi neanche reimplementarti la funzione visto che c'è già :P , levenshtein.

_________________
Big-Bug cerca collaboratori.
Cerca di scrivere con un italiano corretto.


   
 Oggetto del messaggio: Re: distanza di levensthein
MessaggioInviato: gio apr 30, 2009 1:55 pm 
Newbies
Iscritto il: lun apr 27, 2009 5:33 pm
Messaggi: 11

L' algoritmo l'ho sviluppato in Visual Basic.
Questa è una versione in pseudocodice , mi puoi dire quella che hai tu è la stessa di quella che ho io ?


L’algoritmo per calcolare la distanza di Levensthein `e descritto in figura 2.1.
Prende in input le due stringhe e costruisce una matrice d di (n+1)×(m+1)
interi, dove n `e la lunghezza della stringa s ed m `e la lunghezza della stringa
t, nella posizione d[n+1][m+1] sar`a presente a conclusione dell’algoritmo il
valore della distanza tra le due stringhe.


Levensthein-Distance(s,t)
1 for i à 1 to length(s) + 1
2 do d[i][1] Ã i
3 for j à 1 to length(t) + 1
4 do d[1][j] Ã j
5 for i à 2 to length(s) + 1
6 do for j à 2 to length(t) + 1
7 do if s[i] = t[j]
8 then cost à 0
9 else cost à 1
10 d[i][j] Ã min(d[i − 1][j] + 1, d[i][j − 1] + 1,
d[i − 1][j − 1] + cost)
11 return d[length(s) + 1][length(t) + 1]


   
Visualizza ultimi messaggi:  Ordina per  
   [ 3 messaggi ] 

Tutti gli orari sono UTC + 2 ore


 Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
 
cron