cunzai_zsy0531

关注我

计算几何学习笔记

Post time: 2022-02-06 11:59:16

基础内容 链接

update:

最小圆覆盖

震惊我一年的随机增量法……

定理 1:如果第 \(i\) 个点不在前 \(i-1\) 个点的最小圆覆盖 \(C\) 中,那么这个点一定在前 \(i\) 个点的最小圆覆盖上。

根据这个定理我们有了这样一个做法:

圆 C;
for(i=1 to n)
{
	if(P[i] 不在 C 内)
	{
		C = {P[i], 0};
		for(j=1 to i-1)
		{
        	if(P[j] 不在 C 内)
			{
				C = {0.5*(P[i]+P[j]), 0.5*dist(P[i], P[j])};
				for(k=1 to j-1)
				{
					if(P[k] 不在 C 内)
					{
						C = 外接圆(P[i], P[j], P[k]);
					}
				}
			}
		}
	}
}

求外接圆可以直接求两边中垂线的交点。

考虑一下这个做法的复杂度:

由于最终只有 \(3\) 个点确定一个圆,因此每个点确定这个圆的概率只有 \(\frac{3}{n}\),所以每一层循环在第 \(i\) 个位置调用下一层的概率最多 \(\frac{3}{i}\),可得

\[\begin{aligned} T_1(n)&=O(n)+\sum_{i=1}^n\frac{3}{i}T_2(i)\\ T_2(n)&=O(n)+\sum_{i=1}^n\frac{3}{i}T_3(i)\\ T_3(n)&=O(n) \end{aligned} \]

可以解得 \(T_1(n)=T_2(n)=T_3(n)=O(n)\)

posted @ 2022-05-03 17:23  cunzai_zsy0531  阅读(34)  评论(0编辑  收藏  举报