Заставьте BGL Dijkstra_shortest_paths соблюдать порог для расстояния - PullRequest
0 голосов
/ 29 августа 2018

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

Моя проблема заключается в следующем: я хочу спроектировать посетителя Дейкстры, который в основном пропускает вычисление ослабленного края, когда получающееся расстояние больше определенного максимального значения max_d.

Это эквивалентно идее, используемой в библиотеке NetworkX , через параметр cutoff.

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

Это даст мне доступ к краю e графика g, поэтому стратегия будет заключаться в том, чтобы получить доступ к цели края через target(e, g).

Однако, во-первых, у меня возникают трудности с получением расстояния до этой целевой вершины.

И, во-вторых, как мне сделать алгоритм, а затем пропустить оставшуюся часть вычисления, включая фактическое ослабление края, обнаружение новой вершины, если она все еще была белой, и уменьшение ключа, если он был уже серым .

Единственные примеры, которые я смог найти, использовали систему try-catch, но я не хочу завершать алгоритм: я просто хочу продолжить внутренний цикл for.

...