Time complexity 如何使用深度优先搜索(DFS)和x2B分析编辑距离的时间复杂度和空间复杂度;备忘录方法?
众所周知,编辑距离问题可以使用迭代DP方法来解决。然而,如果我们使用递归深度优先搜索(DFS)+备忘录方法来解决这个问题,那么如何计算时间复杂度呢?为什么? 代码如下所示Time complexity 如何使用深度优先搜索(DFS)和x2B分析编辑距离的时间复杂度和空间复杂度;备忘录方法?,time-complexity,depth-first-search,space-complexity,edit-distance,Time Complexity,Depth First Search,Space Complexity,Edit Distance,众所周知,编辑距离问题可以使用迭代DP方法来解决。然而,如果我们使用递归深度优先搜索(DFS)+备忘录方法来解决这个问题,那么如何计算时间复杂度呢?为什么? 代码如下所示 class Solution: def minDistance(self, word1, word2): return self.dfs(word1, 0, word2, 0, {}) def dfs(self, word1, p1, word2, p2, memo): ### p1, p2
class Solution:
def minDistance(self, word1, word2):
return self.dfs(word1, 0, word2, 0, {})
def dfs(self, word1, p1, word2, p2, memo): ### p1, p2 refer to the current position in word1, word2 respectively
if p1 == len(word1):
return len(word2[p2:]) ### termination of the recursion
if p2 == len(word2):
return len(word1[p1:]) ### termination of the recursion
if (p1, p2) in memo: ### the key of the memo is the two positions, value is the mini edit distance for word1[p1:] and word2[p2:]
return memo[(p1, p2)]
if word1[p1] == word2[p2]: ### Case1: word1[p1] equals to word2[p2]
temp = self.dfs(word1, p1+1, word2, p2+1, memo)
else: ### Case2: word1[p1] not equals to word2[p2].
temp = min(self.dfs(word1, p1, word2, p2+1, memo), self.dfs(word1, p1+1, word2, p2, memo), self.dfs(word1, p1+1, word2, p2+1, memo)) + 1
memo[(p1, p2)] = temp
return temp
问题是关于深度优先搜索吗?如果是,请编辑标记:“DFS是Microsoft提供的分布式文件系统。注意:有关深度优先搜索的问题,请使用深度优先搜索标记。不要与[depth first search]混淆。”谢谢,c0der!我会相应地修改它