Boost Graph Lib добавляет вершину дерева во время алгоритма - PullRequest
0 голосов
/ 31 января 2019

Я хотел бы создать алгоритм с Boost Graph Library, который расширяет ветку на древовидном графе "на лету" во время работы алгоритма.В зависимости от некоторых условий алгоритм будет исследовать филиалы с меньшими затратами.Эти затраты также должны быть созданы, пока дерево расширяется.Причина, по которой я хочу избежать создания дерева перед запуском алгоритма, состоит в том, чтобы избежать ненужных вершин.К каждой вершине прикреплены данные, требующие этапа интенсивного прогнозирования, который занимает много времени.

Во всех примерах и в документации буста показан заданный граф, а затем просто применяется алгоритм, но ни один из нихрасширяет график во время работы алгоритма.

Я нашел похожий вопрос здесь и ответ:

Добавление вершин и ребер опасно делатьвнутри алгоритма посетителя.Это потому, что это делает недействительными итераторы, которые использует алгоритм.Кроме того, алгоритм создает отображение из вершин в цвета (чтобы отметить, какие вершины были обработаны), и добавление вершин испортит это отображение.Можете ли вы просто записать, что вы хотите добавить вершины и сделать это после BFS?

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

Кто-то пытался добавить вершины в алгоритм раньше или есть лучший способ добиться такого поведения?Может быть, BGL не подходит для этого?

...