伪代码中的回溯深度优先搜索算法

时间:2011-05-17 11:03:02

标签: depth-first-search backtracking

boolean backtrackDFS(v)  {
   If  (SolutionFound(v))  return true;
   Mark vertex v as reached.
   for (each unreached vertex u adjacenct from v)
        if (backtrakDFS(u)) return true;
   Unmark vertex v; 
   return false;
}

为什么需要Unmark vertex v? 为什么添加这样的线是安全的,因此v再次未被触及,是否会导致重新访问?

1 个答案:

答案 0 :(得分:2)

我不认为这是必要的。撤消你所做的事情通常是一种很好的做法,并在发现它们时保留原样。

例如,包含该行将允许您多次使用相同的功能进行搜索,而无需单独的操作来清除标记。