Levenshtein距离的Haskell程序
我需要一个Haskell中的程序来计算距离。您需要计算Levenshtein距离(也称为编辑距离),该距离对于字符串Levenshtein距离的Haskell程序,haskell,levenshtein-distance,Haskell,Levenshtein Distance,我需要一个Haskell中的程序来计算距离。您需要计算Levenshtein距离(也称为编辑距离),该距离对于字符串a和b:(取自): 由于lev(i,j)的值仅取决于先前的值,因此我们可以利用Haskell的懒散性初始化一个数组,其中位置(i,j)处元素的值是同一数组先前值的函数!请参阅以查看如何执行此操作的示例 下面是lev的基本实现: import Data.Array lev :: String -> String -> Int lev x y = c ! (m, n)
a
和b
:(取自):
由于lev(i,j)的值仅取决于先前的值,因此我们可以利用Haskell的懒散性初始化一个数组,其中位置(i,j)处元素的值是同一数组先前值的函数!请参阅以查看如何执行此操作的示例
下面是lev
的基本实现:
import Data.Array
lev :: String -> String -> Int
lev x y = c ! (m, n)
where
c = listArray ((0, 0), (m, n)) [compute i j | i <- [0 .. m], j <- [0 .. n]]
compute 0 j = j
compute i 0 = i
compute i j
| x !! (i - 1) == y !! (j - 1) = c ! (i - 1, j - 1)
| otherwise = 1 + (minimum $ map (c !) [(i , j - 1),
(i - 1, j),
(i - 1, j - 1)])
m = length x
n = length y
导入数据。数组
lev::String->String->Int
lev x y=c!(m,n)
哪里
c=列表数组((0,0),(m,n))Pedro Rodrigues先生,谢谢。你需要的是LevsHeTin距离而不是LCS。我总是把他们两个混为一谈,我的坏消息。我已经编辑了我的答案。谢谢你,我很感激你的帮助。@ USER 3041551。如果我的回答有帮助,你可以考虑把它标记为正确的。这不是EV。问个问题