如何在不改变算法代码的情况下可视化算法?

aer*_*rod 6 java visualization

我想想象两种不同的算法,它们决定了Java中一个平面中圆圈集合是否重叠:

  • 一种O(n²)算法,用于检查每个圆的组合
  • 使用扫描线的O(nlogn)算法

有没有办法让一个vizualization类的对象"监听"算法类的一个对象,例如它可以看到算法何时在一对圆圈之间执行重叠检查并知道何时更新可视化?

另一个例子:我可以保持活动圆列表(与扫描线相交的那些)作为扫描线算法的变量,让另一个类(可视化类)获得该变量.但是,该类如何知道列表何时更新并且必须更新可视化?

这只是我想到的策略.也许有更好的方法......

Kri*_*izz 0

  1. 拥有代表圆(以及此问题/算法中存在的任何其他对象)并包含每个操作的方法的类。
  2. 将算法实现为对 (1) 中的对象的操作 - 作为对方法的调用。
  3. 创建一个可视化类,该类检查 1 中的对象并可视化它们在每个Update()方法上的状态。
  4. 创建 (1) 中所有类的子类,除了它们的原始行为之外,还调用Visualization.Update()每个操作。

用 (4) 个类而不是 (1) 个类构建“你的世界”以实现可视化。