对半平面交s&i算法的理解

当时学这个算法的时候仅仅是粗略的理解了一下,好多细节其实根本就没有懂。借着bzoj_1007把这个梗补上。

先上图

首先,我们姑且把算法的过程按照有向直线的倾角分成四个阶段。

第一阶段也就是(-PI,-PI/2) 这一阶段搞定以后焦点一定是从右向左(最先加的点最靠右,最后加的点最靠左,栈顶的元素最靠左)

第二阶段也就是(-pi/2,0) 这一阶段搞定以后焦点一定是从左到右

注意:两个阶段的交界处位置(第一阶段和第二阶段的交界处位置),我们可以发现点越靠左越容易被删除!!所以直接从栈中弹

第三阶段也就是(0,PI/2),这一阶段搞定以后可以发现焦点一定是从左到右

注意:两个阶段的交界处位置(2,3的交界处位置),我们可以发现越靠右越容易被删除!!所以直接从栈中弹不会出现任何问题

我上面这句话是有问题的。。事实上从栈中弹会出问题。为什么?

如果这个时候点集中只有第二阶段的点,当然不会出现问题,问题是,现在点集中还有第一阶段的点,如果第一阶段最右边的点(因为第一阶段是从右到左,所以这个点一定是第一个点,即栈底)比第二阶段最后一个点还要靠右,这个店岂不是更容易被删除?所以只考虑栈顶肯定不行的呀。所以就是双端队列(还是双端栈?大雾)的样子。

第四阶段也就是(PI/2,PI),这一阶段搞定以后可以发现焦点一定是从左到右。

注意:两个阶段的交接位置(3,4),我们可以发现越靠右越容易被删除。所以,我们直接从栈中弹不会出现问题(的吧。。)

同理我们还要考虑最开始从右到左那块的栈底元素。

那么我们用不用考虑第二阶段最后的那附近元素呢?

答案是不用。

从第二阶段转化为第三阶段的时候,这些比第三阶段焦点还靠右的早就被砍回家吃饭了。哪有心情管它们。。咳咳。。扯远了。。不过好像这时候栈底也不用考虑?好像同样被砍到回家吃饭。

那么我们回过头来看第一阶段加的点。

第一阶段貌似如果删除的话,好像是删掉靠左的点更方便一点。

然后就用第一阶段还活着的直线把第四阶段末尾的那些很不友好的直线删掉。

然后就爽了

然后木有然后了

(哎?不对,好像考虑栈底元素不只是交界处的事?算了这不影响代码结果。话说我今天怎么想起来画图看这个来着QAQ)

(我果然是太弱了 QAQ)

如果作为神犇的你发现了文章中很多很多很多的问题,或者有什么意见或改进方法。。来打我呀~\(≧▽≦)/~(逃

转载于:https://www.cnblogs.com/tsingyawn/p/4571983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
kriging(克里金插值)是一种基于统计方法的空间数据插值技术。它通过利用已知数据点之间的空间相关性,预测未知位置处的数值。克里金插值的基本原理是根据已知点与未知点的距离和方向,通过对半方差函数进行拟合,推断未知点的数值。克里金插值方法不仅可以得到表面上每个点的估计值,还可以估计估计值的误差。 遗传算法是一种模拟自然遗传过程的优化算法。它通过模拟自然选择、叉和变异等过程,以求解问题的最优解。遗传算法的基本原理是通过产生初始种群,并利用适应度函数评估每个个体的适应度。然后,通过选择、叉和变异等操作,生成新的个体,逐代进化,直至找到最优解。 克里金插值和遗传算法都是在不同领域应用的有效工具。克里金插值主要应用于地质学、地球物理学、气象学等领域,用于估计地球表面上任意位置的数值。而遗传算法适用于复杂优化问题,如路径规划、资源分配、机器学习等领域。 克里金插值和遗传算法不仅可以独立使用,也可以结合使用。例如,利用克里金插值预测未知数据点,然后将预测结果作为遗传算法的初始种群,通过遗传算法进一步优化求解问题的最优解。 总之,克里金插值和遗传算法是不同领域中的两种有效工具,它们在空间数据插值和优化问题求解方面有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值