PDA

View Full Version : Levenshtein distance



reza_azizi2010
چهارشنبه 16 تیر 1389, 17:57 عصر
سلام
كسي الگوريتم Levenshtein distance رو به زبان وي بي داره؟

ACorvinus
چهارشنبه 16 تیر 1389, 23:27 عصر
سلام.

امیدوارم به دردتون بخوره.


Sub Main()
Console.Clear()

Dim S() As Char = "Saturday".ToCharArray
Dim T() As Char = "Sunday".ToCharArray
Dim D(S.Length, T.Length) As Integer
LevenshteinDistance(S, T, D)
For I As Integer = 0 To T.Length
For J As Integer = 0 To S.Length
Console.Write(D(J, I).ToString + Space(3))
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub

Function LevenshteinDistance(ByVal S() As Char, ByVal T() As Char, ByRef D(,) As Integer) As Integer
Try
Dim M As Integer = S.Length
Dim N As Integer = T.Length

For I As Integer = 0 To M
D(I, 0) = I
Next
For J As Integer = 0 To N
D(0, J) = J
Next

For J As Integer = 1 To N
For I As Integer = 1 To M
If S(I - 1) = T(J - 1) Then
D(I, J) = D(I - 1, J - 1)
Else
Dim Minimum As Integer = D(I - 1, J) + 1
If Minimum > (D(I, J - 1) + 1) Then
Minimum = D(I, J - 1) + 1
End If
If Minimum > (D(I - 1, J - 1) + 1) Then
Minimum = D(I - 1, J - 1) + 1
End If
D(I, J) = Minimum
End If
Next
Next
Catch ex As Exception
Throw ex
End Try
End Function

reza_azizi2010
پنج شنبه 17 تیر 1389, 12:03 عصر
اين كد فقط جدول تبديل كاراكتر رو محاسبه ميكنه ولي ترتيب عمليات تبديل رشته هارو نمايش نميده
من ميخوام با توجه به هزينه اي كه محاسبه ميشه، گام به گام دو رشته به هم تبديل و هر بار نمايش داده بشه