这是一个有趣的练习:
令P是简单但不一定是凸的多边形,q是不一定在P中的任意点。 设计一种有效的算法,以查找与q的最大边数相交的,源自q的线段。 换句话说,如果站在q点,您应该朝哪个方向瞄准枪支,这样子弹才能穿过最多的墙壁? 通过P顶点的子弹仅能赢得一堵墙的功劳。 O(n log n)算法是可能的。n是顶点或边的数量,因为它是多边形,所以边的数量大致等于顶点的数量。
令P是简单但不一定是凸的多边形,q是不一定在P中的任意点。
设计一种有效的算法,以查找与q的最大边数相交的,源自q的线段。
换句话说,如果站在q点,您应该朝哪个方向瞄准枪支,这样子弹才能穿过最多的墙壁?
通过P顶点的子弹仅能赢得一堵墙的功劳。
O(n log n)算法是可能的。n是顶点或边的数量,因为它是多边形,所以边的数量大致等于顶点的数量。
这是我的想法:
首先将q与P中的所有顶点连接(假设有N个顶点)。将有N条线或N-1对线。
最终射击线必须在这两对之间。因此,我们必须找到包含最大数量边的线对。
我不认为此解决方案是O(n log n)。
有任何想法吗?
好吧,首先将点坐标转换为以P为中心的极坐标系。
O(nlog(n))
现在,您能告诉我为什么要问这种问题吗?