Hi,
I am using Boost::Graph and DSP which comes with it to work out
shortest paths around my graph. The problem is there is a certain
exceptional situation when certain vertices can become unreachable
along certain paths. I.e. although there is a valid distance value for
edge B → C, the same edge can become invalid if B
is reached along a specific path. If this happens, I want DSP to reject
that edge. I attempted to create a list of visitors. EdgeRelaxed records how vertices in the DSP queue
were reached. EdgeExamined checks for the exceptional situation
and if it's detected, it temporarily changes the distance value of the
edge in question to infinity. EdgeNotRelaxed
then restores the distance value to it's original.
Unfortunately this approach doesn't seem to work, I think the reason
for this is because dijkstras_shortest_paths() function gets
information about distances from the weight_map which is passed to it.
Is there any way I can modify the values inside the weight_map in
between DSP stages to invalidate certain paths which will result in
them being rejected for relaxation? Or perhaps there is an easier and
tidier way of achieving the same result?
Thanks in advance,
Arty