理解用于反向跟踪算法的伪代码

时间:2012-05-04 08:16:56

标签: algorithm backtracking

为了开始追溯跟踪算法,可以为i = 0调用以下伪代码; X [1..0]代表空元组。

ALGORITHM Backtrack(X[1..i])
   //Gives a template of a generic backtracking algorithm
   //Input: X[1..i] specifies first i promising components of a solution.
   //Output: Alll the tuples representing the problem's solutions
   If X[1..i] is a solution write X[1..i]
   else
     for each element x belongs to Si+1 consistent with X[1..i] and constraints do
        X[i+1] <- x
        Backtrack(X[1..i+1])

我很难理解上面的逻辑。我已经尝试以4步问题来解决但不是。请通过4皇后问题的步骤请求您帮助理解上述逻辑。

谢谢!

1 个答案:

答案 0 :(得分:1)

请看这个PDF文件,第25页。它有一个步骤描述,包含有关回溯的4个皇后解决方案的图像。

http://ce.sharif.edu/courses/90-91/2/ce417-1/resources/root/Lectures/Chapter-6.pdf

简而言之:

该算法试图为数组X的每个元素找到一个与所有约束一致的赋值。

要使用回溯来执行此操作,我们使用递归函数。在每个步骤中,我们检查当前变量的所有可用值(域集S i + 1 ),如果它与约束一致,我们递归地转到下一个变量,直到我们达到解决方案。 / p>