闵可夫斯基和

闵可夫斯基和。[正在施工]

一般人都是由这样一个例题引入学习的,那我们也用这个例题引入,记录。

last update: 2021-12-11 16:35


给定两个凸多边形点集,多次询问向量 \(q\),问在点集 \(B\) 每个点都移动 \(q\),两个点集还能有交吗?

对于别的题解,他们大都在花大量笔墨写闵可夫斯基和是什么东西,我觉得这是愚蠢的。

因为我并不能从这个题直观看出来他在求什么的“和”。

考虑这个题,判断两个凸多边形相交情况是较难的,所以我们打算预处理出来可以使这两个多边形有交的向量集合 \(Q\)

有交的基本情况一定是多边形 \(\mathcal{A,B}\),的某个顶点接触到了另一个的顶点(边相交可以沿边平移)。

所以我们把两个顶点间的向量求出来。如图:

img1

这样我们列出这些向量:

img1

接下来只能感性理解了,对于几个向量,在里面的“影响力”肯定没有在外面的大。

img1

或者这么说明两个向量之间的向量一定合法,有交(毕竟原先的多边形也是凸的,不太可能首末状态有交,中间无交),所以最终的答案一定是一个凸包。


那么问题转换为我们要求这个向量集合组成的凸包 : \(S=\{q_a-q_b\mid q_a\in A,q_b\in B\}\)

此时闵可夫斯基和这个概念便可以解释上述问题。

闵可夫斯基和能计算 \(S=\{q_a+q_b\mid q_a\in A,q_b\in B\}\)

所以对于此题,把 \(B\) 取反,计算闵可夫斯基和即可。


求闵可夫斯基和的方法就是把“边向量”极角排序,然后顺次相连。

证明不是很会,以后再更。

每一个新凸包点都是原先两个凸包的点的和。

注意这些向量加法是原先向量平面上的“点”,而不是边向量,边向量只不过是用来求闵可夫斯基和的。


前面没啥问题把。。。。后面:

假了,寄了

Max卷积如果不是有更好的凸的性质,几乎不可能很快的做出,包括使用闵可夫斯基和。

抱歉可能假了。


其实并没有完全假,

主要就是考虑凸的性质更加厉害。


闵可夫斯基和
https://proton-z.github.io/2022/08/30/Minkowski-addition-simple-thoughts/
作者
Imitators
发布于
2022年8月30日
许可协议