【发布时间】:2013-11-13 06:04:27
【问题描述】:
我们可以在 O(nlgn) 时间内解决 2D 中的线段相交问题。在这个问题中,我们得到一组线段,我们必须看看是否有交点。现在她是 CLRS 的问题。
问题。 Charon 教授有一组 n 根棍子,在某些情况下这些棍子相互叠放 配置。每个棒由它的端点指定,每个端点是一个有序的三元组,给出它的 (x, y, z) 坐标。没有一根棍子是垂直的。他希望一次拿起所有的棍子,条件是他只能在上面没有其他棍子的情况下拿起一根棍子。 一种。给出一个程序,它需要两根棍子 a 和 b 并报告 a 是否在上面,下面, 或与 b 无关。 湾。描述一个有效的算法来确定是否有可能捡起所有的木棍,如果可以,提供一个合法的捡拾木棍的顺序。
我发现它是 3D 线段交叉点的扩展。在 2D 中,扫描线在“y”中移动,数组根据“x”坐标进行排序。我认为在 3D 中,扫描线应该在“z”维度上移动,但我现在不确定如何排序,因为我必须同时处理“x”和“y”。
如果我们以某种方式弄清楚,我猜,如果有一个交叉点,那么对于 (b) 部分,不可能挑出所有的棍子。
我的方向正确吗??
【问题讨论】:
标签: algorithm computational-geometry intersection