为了开始追溯跟踪算法,可以为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皇后问题的步骤请求您帮助理解上述逻辑。
谢谢!
答案 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>