Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Levenshtein距离的Haskell程序_Haskell_Levenshtein Distance - Fatal编程技术网

Levenshtein距离的Haskell程序

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)

我需要一个Haskell中的程序来计算距离。

您需要计算Levenshtein距离(也称为编辑距离),该距离对于字符串
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。问个问题