数论和计算几何.ppt

* 凸包 点集Q的凸包是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。 一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题。 * 求解凸包的算法有好几种,这里介绍一种最好理解的方法,其他方法各位同学感兴趣的话可以上网搜索资料(Graham算法、快速凸包算法等),这里就不介绍了。 这里介绍的算法名字叫做卷包裹算法。 * 该算法可以这样理解:在空地上树立着一堆木桩,在一个最外侧的木桩绑上一根很长绳子,然后顺时针或者逆时针绕一圈。当再一次回到这个起点木桩时,可以保证绳子正好卡主了所有外围的木桩,并得到一个凸包。 * 首先需要找到一个在凸包上的点,这里我们可以找最左边的点,如果有多个点满足条件,可以在这些满足条件的点中选一个最下面的点。找到后加入凸包。 然后以这个点为准点,用向量的叉积找出除这个点以外最外侧的点。并把这个点加入凸包。(如果有多个点满足条件,如果需要保留凸包上的点,则在这些满足条件的点中选一个最近的。若不保留,则选择一个最远的)。 然后用这个新找到的点,在进行以上步骤。 算法的终止条件就是找到的最外侧点为最开始的起点。 该算法的时间复杂度为O(NM)。N为点集中点的总数,M为在凸包中的点的数目。 * 例题 题目输入一组凸包上的点,这些点只会在凸包顶点或者凸包边上,问能否添加一些点,构造出一个更大的新凸包,使得新凸包包含原凸包上的所有的点。 * 首

文档评论(0)

1亿VIP精品文档

相关文档