【发布时间】:2011-03-07 18:59:29
【问题描述】:
给定一个凸多边形作为 n 个顶点的逆时针列表,给出 O(lgn) 算法来确定给定点是否在多边形内。假设基本操作需要 O(1)。
我认为一个方向是:如果一个点在一个凸多边形内,那么这些点与所有顶点或边缘之间的特殊关系是什么?另外,我猜这里的诀窍是使算法 lgn 的凸多边形。
【问题讨论】:
-
这里有一个提示,如果它在外部,则从该点向多边形绘制一条无限线,如果在内部,则在任何方向上绘制一条无限线,这条线有多少个交叉点?我相信这会回答你的问题。
-
@Jesus Ramos:该算法适用于任何多边形(不仅仅是凸多边形),它是
O(n)。在这种情况下,重点是通过使用多边形是凸的事实来提出O(lg n)算法。 -
@Jesus,我错过了什么吗? AFAIK,你的建议是
O(n),而不是O(log(n))。 -
@Bart Andrey 的回答是我得到的提示,我通常不喜欢透露这类问题的答案,我喜欢让人们思考一下。