📜  美术馆问题

📅  最后修改于: 2021-05-06 21:49:22             🧑  作者: Mango

问题描述

艺廊问题以几何学形式表示为需要放置在n顶点简单多边形中以使内部的所有点都可见的最少数量的防护物。简单多边形是一个连通的封闭区域,其边界由有限数量的线段定义。这是一个相关的家庭 能见度 计算几何中的问题。定义可见性,使得如果两个点uv相连的线段位于多边形内,则它们是相互可见的。在这里,我们讨论了几种变体。下文讨论的变体中使用的常用术语:

  • 一个简单的(不一定是凸的)多边形P来描述美术馆。
  • 一组用于描述防护的点S ,其中每个防护由P中的一个点表示
  • 当且仅当A∈SB∈P和线段AB包含在P中时,点A∈S才能保护另一个点B∈P的规则
  • 关于多边形P中的所有点是否都由S保护的问题。

画廊问题的许多变体被归类为NP难题。在这里,我们将重点介绍那些允许多项式解的方法:

  • 方案1:确定集合S的最小大小的上限。
  • 变体2:确定是否在多边形P临界点C另一点 这样,如果防护罩位于位置C ,则防护罩无法保护点D。
  • 方案3:确定是否可以仅使用一个防护装置来保护多边形P。
  • 变形4:如果只能将保护放置在多边形P的顶点上并且仅需要保护顶点,则确定集合S的最小大小。

请注意,还有更多的变体,并且为此编写了至少一本书。

解决方案

  1. 变体1的解决方案是V´aclav Chv´atal的Art Gallery定理的理论工作。他指出[N / 3]个警戒线总是足够的,有时对于保护具有n个顶点的简单多边形有时是必要的。
  2. 方案2的解决方案涉及测试多边形P是否为凹形(因此具有临界点)。我们可以使用isConvex函数的取反。
  3. 如果以前没有看到解决方案,则变体3的解决方案可能会很困难。我们可以使用cutPolygon函数。我们切多边形PP中的边缘逆时针的方式形成的所有线路,并在任何时候都保持左侧。如果最后还有一个非空多边形,则可以在该非空多边形中放置一个保护层,以保护整个多边形P。
  4. 方案4的解决方案涉及计算多边形P的“可见性图”的最小顶点覆盖。通常,这是另一个NP难题