assign complete edge data if duplicate shortcut edge has lower weight

This commit is contained in:
Dennis Luxen 2014-03-03 14:08:34 +01:00
parent 117ebe1c32
commit 7b14de13ec

View File

@ -385,10 +385,14 @@ public:
_DynamicGraph::EdgeIterator currentEdgeID = _graph->FindEdge(edge.source, edge.target); _DynamicGraph::EdgeIterator currentEdgeID = _graph->FindEdge(edge.source, edge.target);
if(currentEdgeID < _graph->EndEdges(edge.source) ) { if(currentEdgeID < _graph->EndEdges(edge.source) ) {
_DynamicGraph::EdgeData & currentEdgeData = _graph->GetEdgeData(currentEdgeID); _DynamicGraph::EdgeData & currentEdgeData = _graph->GetEdgeData(currentEdgeID);
if( currentEdgeData.shortcut if( currentEdgeData.shortcut &&
&& edge.data.forward == currentEdgeData.forward edge.data.forward == currentEdgeData.forward &&
&& edge.data.backward == currentEdgeData.backward ) { edge.data.backward == currentEdgeData.backward &&
currentEdgeData.distance = std::min(currentEdgeData.distance, edge.data.distance); edge.data.distance < currentEdgeData.distance
) {
// found a duplicate edge with smaller weight, update it.
currentEdgeData = edge.data;
// currentEdgeData.distance = std::min(currentEdgeData.distance, edge.data.distance);
continue; continue;
} }
} }