Time complexity 如何使用深度优先搜索(DFS)和x2B分析编辑距离的时间复杂度和空间复杂度;备忘录方法?

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

众所周知,编辑距离问题可以使用迭代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 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!我会相应地修改它