从一个整数列表到另一个整数列表的最小转换数

时间:2019-05-22 14:33:15

标签: python dynamic-programming

给出序列P和T的列表。我正在尝试编写算法 (函数minNumOfTransformations(P,T)),该函数返回从P到T所需的最小移动或变换次数。这些变换包括替换,插入或删除。例如。从[0,1,2,3,5]达到[0,2,4,5]至少需要2次转换;我将1加4替换为3。我正在尝试通过在python上进行动态编程来做到这一点。

def minNumOfTransformations(P, T):


# If first list is empty, the only option is to 
# insert all the elements
if m==0: 
     return n 

# If second list is empty, the only option is to 
# remove all the characters of the first list 
if n==0: 
    return m 

# approach here is to solve simpler sub problems but this is where I get stuck 
if P[m-1]==T[n-1]: 
    return minNumofTransformations(P[m-1], T[n-1]) 

1 个答案:

答案 0 :(得分:1)

阻止您在Google上找到合适答案的原因可能是您不知道所寻找的称为Levenshtein距离,并且是衡量序列之间差异的标准指标。

存在专门为此目的而构建的Python package,并用C语言实现,因此它可能比您写的任何东西都要快。

如果您真的想用Python自己做,这会有所帮助:
https://rosettacode.org/wiki/Levenshtein_distance#Python