Change the representation of the time-to-segment map #3173
Merged
+215
−100
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because we can have segments containing a single point, we cannot easily record an entry for each segment in the time-to-segment map. That would require a
multimap
and it wouldn't be useful anyway because these 1-point segments are not involved in evaluation, forgetting, etc.Instead we change the time-to-segment map to contain, for coincident left endpoints, an entry for the last segment at that endpoint. That segment may have 1 point if it is at the end of the trajectory, but it will typically contain multiple points and be useful for evaluation, forgetting, etc.
Since we are giving up on the 1:1 correspondence between segments and the time-to-segment map, we also stop recording empty segments in that map: they required the management of sentinels and were generally not helping.
#3136