【发布时间】:2016-05-08 15:47:43
【问题描述】:
我想使用 STL 元素实现基于此描述的 Bentley-Ottmann 线段交叉算法。 Bentley-Ottmann Wikipedia
我正在苦苦挣扎的是优先队列的实现。描述要求我删除任何交叉点:
如果 p 是线段 s 的左端点,则将 s 插入 T 中。找到 T 中紧接在 s 下方和上方的线段 r 和 t(如果它们存在),并且如果它们的交叉形成了潜在的未来事件事件队列,删除它。如果 s 与 r 或 t 交叉,则将这些交叉点作为潜在的未来事件添加到事件队列中。
似乎不可能使用 STL 优先级队列作为事件队列,因为它的搜索复杂性是线性的,我需要找到并删除 s 和 的任何交叉点>t。我应该改用一套吗?或者是否可以使用优先队列?
【问题讨论】: