Stop Boost :: Devin_first_Search по определенной глубине, если выполнены определенные критерии
-
11-10-2019 - |
Вопрос
я использую БЛИНА Чтобы хранить мой даг. Вершины имеют штаты. Учитывая изменение состояния в одной из вершин, я хочу обновить зависимые вершины. Это я могу сделать, используя Boost :: Devin_first_search и пользовательский посетитель.
Теперь логика в том, что я не хочу обновлять поисковую вершину и ее зависимость, если вершина находится в определенном состоянии. По сути, я хочу контролировать внедрение вершин в DFS или BFS. Как лучше всего достичь этого в BGL.
Спасибо.
Решение
Похоже, что Boost :: Dyze_First_Search не поддерживает это, но базовый Boost :: Dynem_first_visit делает через 2 -ю перегрузку, позволяющую для «функции терминатора» (TerminatorFunc).
Таким образом, вы можете скопировать реализацию BOOST :: DUBINE_FIRST_SEARCH и заменить Detail :: nontruth2 () Параметр, переданный в Boost :: Dynem_first_visit с вашей собственной (нетривиальной) функцией терминатора.
Другие советы
Отсутствие прекращения в глубине первого поиска-самая глупая в библиотеке графиков, которую я когда-либо видел.
Может быть, это может быть выходом: Dynem_first_search на Filtreed_graph. Вы можете каким-то образом отметить остановку-вертекс и в функции фильтров Filtered_graph просто скрыть края инцидента