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

版权声明:本文为博主原创文章,未经博主允许可以转载,但要注明出处 https://blog.csdn.net/wang3312362136/article/details/83003126

问题

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

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

上界

C a , b C_{a,b} 表示 a , b a,b 为直径的圆。

对于每一个点 p i p_i ,如果 p a , p b , p c , p d p_a,p_b,p_c,p_d 能构成一个矩形,当且仅当 C p a , p c = C p b , p d C_{p_a,p_c}=C_{p_b,p_d}

d i d_i C i C_i 上相反的点对个数,就是说 d i = { ( p j , p k ) C i = C p j , p k } d_i=|\{(p_j,p_k)\mid C_i=C_{p_j,p_k}\}|

可以得出,矩形个数就是 i = 1 m d i × ( d i 1 ) 2 \sum_{i=1}^m \frac{d_i\times (d_i-1)}{2} i = 1 m d i = n × ( n 1 ) 2 \sum_{i=1}^m d_i=\frac{n\times (n-1)}{2}

我们假设 d 1 d 2 d n d_1\geq d_2\geq \cdots\geq d_n 。记 k k 满足 d k > 2 n , d k + 1 2 n d_k>2 \sqrt{n},d_{k+1}\leq 2\sqrt{n} ,由于两圆只可能交于两点,因此可以得到 k n k\leq \sqrt{n}

证明:如果 k > n k>\sqrt{n} ,那么可以发现点的个数 i = 1 k ( 2 d i 2 ( i 1 ) ) > 4 k n k ( k 1 ) > 4 n n + n > n \geq \sum_{i=1}^k (2d_i-2(i-1))>4k\sqrt{n}-k(k-1)>4n-n+\sqrt{n}>n ,因此 k k 必定 n \leq \sqrt{n}

那么矩形个数就是
i = 1 m d i × ( d i 1 ) 2 i = 1 m d i 2 = i = 1 k d i 2 + i = k + 1 m d i 2 i = 1 n d i 2 + i = 1 n ( 2 n ) 2 i = 1 n ( n 2 ) 2 + 4 n 2 = O ( n 2 n ) \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})
因此, n n 个点能够构成的矩形个数的上界是 O ( n 2 n ) O(n^2\sqrt{n})

下界

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

猜你喜欢

转载自blog.csdn.net/wang3312362136/article/details/83003126