Я не нашел очень много ресурсов по этой теме, самые близкие из них , этот и , этот .
Моя проблема заключается в следующем: я хочу спроектировать посетителя Дейкстры, который в основном пропускает вычисление ослабленного края, когда получающееся расстояние больше определенного максимального значения max_d
.
Это эквивалентно идее, используемой в библиотеке NetworkX , через параметр cutoff
.
Насколько я смог, я понял, что мне нужно создать посетителя, который отменяет действие edge_relaxed
.
Это даст мне доступ к краю e
графика g
, поэтому стратегия будет заключаться в том, чтобы получить доступ к цели края через target(e, g)
.
Однако, во-первых, у меня возникают трудности с получением расстояния до этой целевой вершины.
И, во-вторых, как мне сделать алгоритм, а затем пропустить оставшуюся часть вычисления, включая фактическое ослабление края, обнаружение новой вершины, если она все еще была белой, и уменьшение ключа, если он был уже серым .
Единственные примеры, которые я смог найти, использовали систему try-catch, но я не хочу завершать алгоритм: я просто хочу продолжить внутренний цикл for.