An Efficient Combinatorial Algorithm for Optimal Compression of a Polyline with Segments and Arcs

An Efficient Combinatorial Algorithm for Optimal Compression of a   Polyline with Segments and Arcs
Notice: This research summary and analysis were automatically generated using AI technology. For absolute accuracy, please refer to the [Original Paper Viewer] below or the Original ArXiv Source.

The task of finding the optimal compression of a polyline with straight-line segments and arcs is performed in many applications, such as polyline compression, noise filtering, and feature recognition. Optimal compression algorithms find the best solution using the dynamic programming approach, which requires a significant amount of arc fitting. This paper describes an improvement to the dynamic programming approach by reducing the amount of arc fitting necessary to find the optimal solution. Instead of processing from the second to the last vertices in the dynamic programming approach, the algorithm proceeds forward and skips as many steps as possible without affecting the inference in any way. Such a modification extends the practical application of the algorithm to polylines having arcs with a large number of vertices.


💡 Research Summary

The paper addresses the problem of optimally compressing a polyline by representing it with a minimal number of straight‑line segments and circular arcs while staying within a prescribed tolerance. Traditional solutions rely on dynamic programming (DP) that evaluates every possible start‑end vertex pair, fitting a segment or an arc for each pair. Because fitting an arc to n points costs O(n log n), the overall worst‑case complexity of the DP approach becomes O(N³ log N), which is prohibitive for polylines that contain long arcs with many vertices.

To overcome this bottleneck, the author proposes a “maximum‑jump” algorithm that still follows the DP paradigm but dramatically reduces the number of arc‑fitting operations. The key idea is to pre‑compute four auxiliary arrays:

  • FW_SEG and FW_ARC – for each vertex i, the farthest vertex that can be reached by a segment or an arc, respectively, while respecting the tolerance.
  • BW_SEG and BW_ARC – for each vertex i, the nearest preceding vertex from which a segment or an arc can be drawn to i within the tolerance.

In addition, the algorithm maintains LAST, which records, for a given penalty value, the greatest index that can be reached without exceeding that penalty, and the classic DP tables PENALTY, SOLVED, and ERROR.

The algorithm proceeds in two intertwined phases:

  1. Forward Jump (TryNextPenalty) – Starting from the current best solution with penalty = processed, the algorithm computes the next penalty (processed + 1) and determines the farthest reachable vertex k by consulting FW_SEG and FW_ARC. The value k is the maximum of the two candidate jumps (i = FW_SEG

Comments & Academic Discussion

Loading comments...

Leave a Comment