Douglas Peucker算法使用计数器

时间:2016-08-24 23:41:14

标签: java algorithm

使用计数器暂停执行以显示单独的处理步骤,是否可以逐步实现道格拉斯peucker line简化算法? 我不确定是否有可能。如果是这样,那么特定的数据结构 建议这样做。我只看到了递归解决方案,我不确定这是否可行?

1 个答案:

答案 0 :(得分:1)

是的,这当然是可能的。如果您最感兴趣的是查看算法完成后所采取的步骤,那么最简单的方法就是在算法的每一步保留一份点列表的副本。算法完成后,您可以打印出中间步骤列表。

例如,如果要将点存储在列表中,则可以在每次迭代时复制列表:

class DouglasPeucker {
    private List<Point[]> steps = new ArrayList<>();

    public Point[] compute(Point[] points) {
        steps.add(points.clone());
        // perform normal recursive steps
    }

    public void printSteps() {
        for (Point[] points: steps) {
            ...
        }
    }
}

请注意,这是数组的浅表副本 - 即未克隆点对象。如果点对象是不可变的(它们可能应该是),这将正常工作。

或者,如果您想在每个点停止并检查变量的状态,那么您应该在适当的位置使用带断点的交互式调试器。