Как остановить поиск в ширину с помощью библиотеки графов ускорения при использовании пользовательского посетителя? - PullRequest
8 голосов
/ 01 октября 2009

Скажем, я нашел узел, который соответствует моим критериям, и мне нужно остановить поиск.

1 Ответ

9 голосов
/ 01 октября 2009

Решение состоит в том, чтобы сгенерировать исключение вашего известного типа - затем перехватить его на вызывающей стороне. Из FAQ :

Как выполнить ранний выход из алгоритма, такого как BFS?

Создайте посетителя, который выдает исключение, когда вы хотите отключить поиск, затем поместите ваш вызов в breadth_first_search внутри соответствующего блока try / catch. Многим программистам это кажется неправильным использованием исключений, однако, было принято решение, что исключения должны иметь предпочтительный способ досрочного выхода. Смотрите дополнительные обсуждения электронной почты для более подробной информации.

...