关于具有最小Steiner点数的两个简单多边形的凸分解

时间:2015-12-28 16:14:03

标签: algorithm graph tree dynamic-programming

在我讨论问题之前,这里有一些可能有用的定义:

  • 多边形P的对角线是连接P的两个顶点并严格保持在P内的段。
  • Steiner点:添加到顶点集的额外点,该点不是原始集的一部分,例如多边形中的顶点7,如图1所示。
  • 链接路径是完全位于多边形内部的折线。链接路径可以是多边形的对角线或线段的集合。例如,图1中红色虚线所示的线段并不完全位于多边形内部(与其他边相交),我们使用此算法添加一个Steiner点7,这样我们就有了一个2连接路径连接顶点2和5。

enter image description here

我们有两个没有孔的简单多边形,相应的顶点标记为1,2,...,n 我们先来看看简化问题。如图2所示,我们有两个多边形P和Q.我想从凹多边形P开始,并且仅使用对角线将P分解为一组凸子多边形,而不将任何Steiner点引入多边形P.同时时间,我们还在多边形Q中使用相同的顶点对找到另一个多边形Q中的链接路径。

例如,我们使用P中的对角线连接顶点2和5来分割P,如图3所示。我们找到连接多边形Q中的顶点2和5的链接路径,它引入了Steiner点7(在这里,让我们假设我们总能找到多边形Q中的链接路径,其中需要最少数量的Steiner点) 我们希望使用P的对角线分割多边形P,同时将最小数量的Steiner点引入多边形Q.我们迭代地分解P和Q,直到所有子多边形对包含凸多边形。例如,在图3中,子多边形对P_ {2345}和Q_ {2345}已经包含凸多边形P_ {2345},我们不再需要对它们进行分解。然后,我们需要考虑子多边形对P_ {1256}和Q_ {1256},因为它们中的任何一个都是凸的。

enter image description here

下面是使用一个Steiner点7对多边形P和Q进行分割的一个示例,如图4所示。(我们在对角线上添加一个对应点7,以P为线性比率连接P中的顶点2和5。 ratio由多边形Q中的线段(2,7)的长度计算,该长度超过连接Q中的顶点2和5的链路路径的总长度。)

如图5所示,这里有一些关于凸分解多边形P和Q的更多情况。

更普遍的问题:
(1)在开始时,我们可以从多边形P或Q开始 (2)在分区过程中,我们也可以从其他相应的子多边形开始 例如,在开始时,我们从多边形P开始,使用连接P中的顶点2和4的对角线来分解P.然后,对于子多边形对P_ {12456}和Q_ {12456},我们可以从Q_ {12456开始而不是P_ {12456}用于分解。比如说,我们选择连接图6所示Q中的顶点4和6的对角线 我意识到如果我想找到最佳解决方案,就会有指数组合。我的问题是,有没有算法可以加快速度?

0 个答案:

没有答案