闵可夫斯基和(内含证明)

闵可夫斯基和

定义

两个点集的闵可夫斯基和 \(A+B\) 定义为 \(\{a+b|a\in A,b\in B\}\)

性质

  1. 交换律:显然,易证。
  2. 对于两个凸包 \(A,B\),则 \(A+B\) 为凸包。

性质二证明

引理 1:对于一个凸图形,图形内任意两点之间的连线都在图形内部,反之亦然(即为充要条件)。

引理 2:(等和线)对于两个平面向量 \(\vec A, \vec B\) 和一个实数 \(t\),总有 \(t\vec A + (1-t)\vec B\) 的终点在直线 \(AB\) 上。明显的,若 \(t \in[0,1]\),其会在线段 \(AB\) 上。

由于 \(A,B\) 均为凸包,则有

​对于任意 \(\vec a,\vec b\in A,\;\vec c,\vec d\in B,\; t\in [0,1]\)\(t\vec a+(1-t)\vec b\in A,\; t\vec c+(1-t)\vec d\in B\)

因此, \(t\vec a+(1-t)\vec b + t\vec c+(1-t)\vec d \in A+B\)

因式分解,得 \(t(\vec a + \vec c)+(1-t)(\vec b + \vec d)\in A+B\)

显然,\(\vec a + \vec c\) 可以表示 \(A+B\) 中任意一点(从定义出发),同理 \(\vec b + \vec d\)。所以 \(A+B\) 为凸图形,即凸包。

求法

易证(即不想证) \(A+B\) 的所有端点都是由 \(A\) 的端点和 \(B\) 的端点运算构成的,于是我们得到了一个 \(\mathcal O(|A||B|)\) 的算法。

又(不)易证 \(A+B\) 的所有边都是由 \(A,B\) 中某一凸包端点和另一凸包的一条边构成,于是所有的边都可以由 \(A,B\) 中的边平移得到,又由于其凸性,可以直接按斜率排序(即极坐标排序),可以得到一个 \(\mathcal O((|A|+|B|)\log(|A|+|B|))\) 的算法,用归并排序,可以优化到 \(\mathcal O(|A|+|B|)\)

对于如上不易证内容的证明:

  1. 若是存在 \(\vec a\in A,\vec b\in B\) 使得 \(\vec a\) 不在 \(A\) 的边上或 \(\vec b\) 不在 \(B\) 的边上(后假设不在 \(A\) 的边上),且 \(\vec a+\vec b\)\(A+B\) 的边上,则不可能对于任意方向的单位向量 \(\vec e\),存在 \(\zeta > 0\) 满足 \(\vec a + \vec b + \zeta \vec e\) 都在 \(A+B\) 中。但很明显是存在 \(\zeta > 0\) 满足 \(\vec a + \zeta \vec e \in A+B\),即存在 \(\zeta > 0\) 满足 \(\vec a + \vec b + \zeta \vec e\) 都在 \(A+B\) 中,矛盾。所以至少是由 \(A,B\) 的边所构成。
  2. 对于 \(A,B\) 的两条边,他们所构成的图形是平行四边形,而可能对 \(A+B\) 的边有影响的只有平行四边形的边。至此,证毕。
posted @ 2024-01-01 21:53  cqbzljh  阅读(325)  评论(1)    收藏  举报