这个问题可能没有具体说明,但我认为这非常重要。当您想要解决优化问题并且您对dynamic programming
方法不是很熟悉时,这是您想到的第一个想法。
我可以举一些简单的例子:
这些问题都有成熟的方法。但问题不是很清楚:
edit distance
(我的意思不是编辑操作中最短的一个)common subsequence
matrix chain multiplication
我不知道用蛮力方法解决这些问题。我的问题是:
是否有一种系统的通用方法可以用蛮力算法列出所有可能性?
答案 0 :(得分:2)
Backtracking 是查找问题所有解决方案的最常用方法之一。每个维基百科,
回溯是一种通用算法,用于查找某些计算问题的所有(或某些)解决方案,逐步构建解决方案的候选者,并在确定c不可能时,放弃每个部分候选c(“回溯”)完成了有效的解决方案。
使用回溯的经典教科书示例是八个皇后拼图,它要求在标准棋盘上安排八个国际象棋皇后,以免任何其他女王进攻。
你提到的两个问题,
•列出两个序列的所有常见子序列
•列出括号矩阵链乘法的所有可能性
可以使用回溯轻松处理。我不确定编辑距离问题。