关于一个平面内矩形个数的问题

问题

一个平面内的nnn个点,以这nnn个点为顶点,最多能构成多少个矩形?点的排列是自己决定的。

先说结论:构成矩形的个数,上界是O(n2n)O(n^2\sqrt{n})O(n2n),下界是Ω(n2)\Omega(n^2)Ω(n2)

上界

Ca,bC_{a,b}Ca,b表示a,ba,ba,b为直径的圆。

对于每一个点pip_ipi,如果pa,pb,pc,pdp_a,p_b,p_c,p_dpa,pb,pc,pd能构成一个矩形,当且仅当Cpa,pc=Cpb,pdC_{p_a,p_c}=C_{p_b,p_d}Cpa,pc=Cpb,pd

did_idiCiC_iCi上相反的点对个数,就是说di=∣{(pj,pk)∣Ci=Cpj,pk}∣d_i=|\{(p_j,p_k)\mid C_i=C_{p_j,p_k}\}|di={(pj,pk)Ci=Cpj,pk}

可以得出,矩形个数就是∑i=1mdi×(di−1)2\sum_{i=1}^m \frac{d_i\times (d_i-1)}{2}i=1m2di×(di1)∑i=1mdi=n×(n−1)2\sum_{i=1}^m d_i=\frac{n\times (n-1)}{2}i=1mdi=2n×(n1)

我们假设d1≥d2≥⋯≥dnd_1\geq d_2\geq \cdots\geq d_nd1d2dn。记kkk满足dk>2n,dk+1≤2nd_k>2 \sqrt{n},d_{k+1}\leq 2\sqrt{n}dk>2n,dk+12n,由于两圆只可能交于两点,因此可以得到k≤nk\leq \sqrt{n}kn

证明:如果k>nk>\sqrt{n}k>n,那么可以发现点的个数≥∑i=1k(2di−2(i−1))>4kn−k(k−1)>4n−n+n>n\geq \sum_{i=1}^k (2d_i-2(i-1))>4k\sqrt{n}-k(k-1)>4n-n+\sqrt{n}>ni=1k(2di2(i1))>4knk(k1)>4nn+n>n,因此kkk必定≤n\leq \sqrt{n}n

那么矩形个数就是
∑i=1mdi×(di−1)2≤∑i=1mdi2=∑i=1kdi2+∑i=k+1mdi2≤∑i=1ndi2+∑i=1n(2n)2≤∑i=1n(n2)2+4n2=O(n2n) \sum_{i=1}^m \frac{d_i\times (d_i-1)}{2}\leq \sum_{i=1}^m d_i^2 = \sum_{i=1}^k d_i^2+\sum_{i=k+1}^m d_i^2 \leq \sum_{i=1}^{\sqrt{n}} d_i^2+\sum_{i=1}^n (2\sqrt{n})^2\leq \sum_{i=1}^{\sqrt{n}} (\frac{n}{2})^2 + 4n^2 = O(n^2\sqrt{n}) i=1m2di×(di1)i=1mdi2=i=1kdi2+i=k+1mdi2i=1ndi2+i=1n(2n)2i=1n(2n)2+4n2=O(n2n)
因此,nnn个点能够构成的矩形个数的上界是O(n2n)O(n^2\sqrt{n})O(n2n)

下界

构造一个网格,边长为n\sqrt{n}n,每选择两个点,必定能构成一个边平行于坐标轴的矩形,这样的矩形个数显然是Ω(n2)\Omega(n^2)Ω(n2)。显然还有可能其他的矩形,这里不做考虑。

转载于:https://www.cnblogs.com/Canopus-wym/p/10376139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值