【发布时间】:2013-06-01 20:51:42
【问题描述】:
我正在实施一种算法来查找一组房间中的最小跨度走廊。目前我已经弄清楚了算法,我只是想实现它。其中一部分涉及找到给定房间的所谓“特殊点”。矩形的“特殊点”是与另一个矩形的最远点的距离最小的点。例如:
房间 R1 的特殊点是 v6 或 v7,因为它们到 R1 以外的矩形中最远点的最小距离相同。同样,矩形 R8 的特殊点是 v13 或 v14,因为它们到矩形中除 R8 之外的最远点的最小距离相同。目前我有邻接列表中表示的点,列表中的每个相邻点。此外,我在邻接列表中的每个房间都将其每个边界点作为值。我也对它所属的每个房间都有每一分。
目前我正在通过查看到该点周围每个矩形中最远点的距离来计算特殊点。虽然速度很快,但在以下示例中显然失败了:
当我当前的实现将 V1 和 V2 识别为 R9 的特殊点时,显然 V2 是特殊点(因为从 V2 到 R3 中最远点的距离明显小于从 V1 到R2 中的最远点)。我可以通过计算到图中所有矩形的最远点的距离并选择最小值来实现它,但是我觉得有一种更有效的方法。我的想法是对房间进行排序并只检查一些房间,但是我仍然没有完整的算法。有什么想法吗?
提前致谢。
【问题讨论】:
-
我不明白你最初的例子; v6 -> v22 比 v7 -> v22 长,哪个(假设您的插图的几何形状适当地显示了距离)是另一个矩形中距离 R1 最远的点,不是吗?
-
@G.Bach 特殊点是“到另一个矩形最远点的距离最小的点”。因此,对于第一个示例,R1 中的特殊点可以是 V6 或 V7,因为两者到另一个矩形中最远点的最小距离相同。所以计算的距离是 V6->V11 和 V7->V10,它们是相同的。我希望澄清!
-
哦,您的意思是到与您当前所在的矩形相邻的矩形的最小最远距离?
-
@G.Bach 不一定是相邻的矩形。它可以是图表中的任何矩形。我的第二张照片显示了这种情况。
-
@Billiska 最小跨度走廊是从给定原点跨越图表中所有房间的最小走廊(到达图表中的所有房间)。问题本身是 NP Complete,所以我只是在做一个近似值。本文进一步描述了问题 www.cs.ucsb.edu/~teo/papers/CorrNPC.pdf。此外,作者的一篇论文是关于这个问题的(Gonzalez-Gutierrez)。请注意,这篇论文描述了它的两种变体,我正在研究的一种被他们描述为 MLC-R。基本上我的变体只有矩形作为房间。我希望这会有所帮助!