глубина поиска первого алгоритма поиска в псевдокоде - PullRequest
1 голос
/ 17 мая 2011
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 Ответ

2 голосов
/ 17 мая 2011

Я не думаю, что это необходимо.Обычно хорошей практикой является отменять то, что вы делаете, и оставлять вещи такими, какие они были, когда вы их нашли.

Например, включение этой строки позволит вам выполнять поиск с использованием одной и той же функции более одного раза без отдельной операцииочистить отметки.

...