Skip to content

仿射集合和凸集 ​

直线与线段 ​

设 x1≠x2 为 Rn 空间中的两个点,那么

y=θx1+(1−θ)x2,θ∈R

组成一条穿越 x1 和 x2 的直线;

y=θx1+(1−θ)x2,θ∈[0,1]

构成了 x1 和 x2 之间的(闭)线段。

还有如下一种表示形式,它类似于直线的参数方程:

y=x2+θ(x1−x2)

仿射集合 ​

如果通过集合 C⊆Rn 中任意两个不同点的直线仍然在集合 C 中,那么称集合 C 是仿射的,即

∀x1,x2∈C,θx1+(1−θ)x2∈C(θ∈R)

这个概念可以推广至多个点的情况:如果 θ1+⋯+θk=1,那么称 θ1x1+⋯+θkxk 为 x1,⋯,xk 的仿射组合。如果一个集合中的任意两点的仿射组合仍在该集合中,那么称该集合为仿射集合。

设 V 是一个子空间(即关于加法和数乘运算是封闭的),则仿射集合 C 可以表示为

C=V+x0={v+x0∣v∈V}

与仿射集合 C 相关联的子空间 V 与 x0 的选取无关,所以 x0 可以是 C 中的任意一点。

我们称由集合 C⊆Rn 中的点的所有仿射组合组成的集合为 C 的仿射包,即

affC={θ1x1+⋯+θkxk∣x1,⋯,xk∈C,θ1+⋯+θk=1}

仿射包是包含 C 的最小的仿射集合。

仿射维数与相对内部 ​

集合 C 的仿射维数 为其仿射包的维数。例如,R2 上的单位圆环 {x∈R2∣x12+x22=1} 的仿射包是全空间 R2,故其仿射维数为 2。

考虑 R3 中处于 (x1,x2) 平面的一个正方形,定义

C={x∈R3∣−1⩽x1⩽1,−1⩽x2⩽1,x3=0}

其仿射包为 x1,x2 平面,即 affC={x∈R3∣x3=0}。C 的仿射维数小于 3,其相对内部为

relintC={x∈R3∣−1<x1<1,−1<x2<1,x3=0}

C 在 R3 中的边界是其自身,而相对边界是其边框,即

clC∖relintC={x∈R3∣max{|x1|,|x2|}=1,x3=0}

凸集 ​

若对 ∀x1,x2∈C 和对 ∀θ∈[0,1],都有

θx1+(1−θ)x2∈C

则称集合 C 为凸集。

INFO

仿射集合是凸集

由于仿射集包含穿过集合中任意不同两点的整条直线,任意不同两点间的线段自然也在集合中,因而仿射集是凸集。

TikZ 代码
tex
\begin{tikzpicture}[line cap=round,line join=round,scale=0.9]
  % convex hexagon
  \draw[fill=gray!20]
    (0.95,0) -- (0.47,0.82) -- (-0.47,0.82) -- (-0.95,0) -- (-0.47,-0.82) -- (0.47,-0.82) -- cycle;
  % nonconvex kidney-like set with a chord escaping the set
  \begin{scope}[shift={(3.4,0)},scale=1.05]
    \draw[fill=gray!20] plot[smooth cycle,tension=1]
      coordinates {(0,1.05) (1.35,0.95) (1.55,-0.15) (1.05,-1.0) (0.62,-0.28)
                   (0.18,-0.1) (-0.15,-0.95) (-1.1,-0.5) (-1.15,0.6)};
    \fill (0.15,0.1) circle (1.3pt);
    \fill (1.45,0.55) circle (1.3pt);
    \draw (0.15,0.1) -- (1.45,0.55);
  \end{scope}
  % square with parts of its boundary missing (not convex)
  \begin{scope}[shift={(6.6,0)}]
    \draw[fill=gray!20] (-0.95,-0.95) rectangle (0.95,0.95);
    \draw[line width=3pt,white] (-0.95,0.55) -- (-0.95,0.1);
    \draw[line width=3pt,white] (0.35,0.95) -- (0.8,0.95);
    \draw[line width=3pt,white] (0.95,-0.15) -- (0.95,0.3);
    \draw[line width=3pt,white] (-0.5,-0.95) -- (-0.05,-0.95);
  \end{scope}
\end{tikzpicture}

如图所示,左边的正六边形是凸集;中间的图形不是凸集,因为任意两点之间的连线不一定都被集合包含;右边的正方形也不是凸集,因为它仅包含部分边界。

我们称 θ1x1+⋯+θkxk 为点 x1,⋯,xk 的一个凸组合,其中 θ1+⋯+θk=1 并且 θi⩾0,i=1,⋯,k。可以将点的凸组合理解为他们的混合或加权平均,θi 代表混合时 xi 所占的份数。

我们称集合 C 中所有点的凸组合的集合为其凸包,即

convC={θ1x1+⋯+θkxk∣xi∈C,θi⩾0,i=1,⋯,k,θ1+⋯+θk=1}

TikZ 代码
tex
\begin{tikzpicture}[line cap=round,line join=round,scale=0.9]
  % left: convex hull of finitely many points
  \begin{scope}
    \draw[fill=gray!20] (0.15,0.1) -- (0.6,1.35) -- (2.3,1.5) -- (2.45,0.6) -- (1.55,-0.05) -- cycle;
    \foreach \p in {(0.15,0.1),(0.6,1.35),(2.3,1.5),(2.45,0.6),(1.55,-0.05)}
      \fill \p circle (1.4pt);
    \foreach \p in {(0.75,0.75),(1.15,0.5),(1.5,0.95),(1.9,1.1),(0.9,1.1),(1.3,0.15),(1.75,0.45),(2.0,0.75)}
      \fill \p circle (1.2pt);
  \end{scope}
  % right: convex hull of a nonconvex set fills in its concavities
  \begin{scope}[shift={(5.2,0)},scale=1.05]
    \draw[fill=gray!20] plot[smooth cycle,tension=0.75]
      coordinates {(0.0,0.65) (0.7,1.4) (1.65,1.4) (2.2,0.9) (2.05,0.35)
                   (1.2,0.05) (0.35,0.1)};
    \draw plot[smooth cycle,tension=0.5]
      coordinates {(0.25,0.62) (0.75,1.22) (1.6,1.28) (2.02,0.85) (1.75,0.55)
                   (1.3,0.75) (1.05,0.35) (0.78,0.27) (0.45,0.32)};
  \end{scope}
\end{tikzpicture}

如图所示,左边的一系列散点的凸包是外层散点连线所构成的多边形;右边的图形的凸包是用与图形相切的部分代替凹陷的部分重新构成的封闭图形。凸包是包含 C 的最小凸集:任何包含 C 的凸集合都包含 C 中点的所有凸组合,因而包含 convC。

凸组合的概念可以扩展到无穷级数、积分以及大多数形式的概率分布。例如:

∑i=1∞θi=1⇒∑i=1∞θixi∈C∫Cp(x)dx=1⇒∫Cp(x)xdx∈C

锥 ​

如果对 ∀x∈C 和 ∀θ⩾0 都有 θx∈C,那么我们称集合 C 是锥或者非负齐次。若集合 C 是锥并且是凸的,则称 C 为凸锥,即对 ∀x1,x2∈C 和 ∀θ1,θ2⩾0,都有

θ1x1+θ2x2∈C

半径为 ∞ 的扇形和母线长为 ∞ 的圆锥面是典型的凸锥,如图所示:

TikZ 代码
tex
\begin{tikzpicture}[line cap=round,line join=round,scale=0.9]
  \coordinate (O) at (0,0);
  \coordinate (A) at (63:5.2);
  \coordinate (B) at (17:5.2);
  \fill[gray!20] (O) -- (A) -- (B) -- cycle;
  \draw (O) -- (A);
  \draw (O) -- (B);
  \fill (O) circle (1.4pt) node[below left] {$0$};
  \fill (63:2.0) circle (1.4pt) node[left] {$x_1$};
  \fill (17:3.4) circle (1.4pt) node[below right] {$x_2$};
\end{tikzpicture}

例如,半空间 {x∣a⊤x⩽0} 是一个凸锥;范数球 {x∣∥x∥⩽1} 不是锥(它不关于数乘封闭)。

和凸组合和凸包类似,可以定义锥组合和锥包。集合 C 的锥包是 C 中元素的所有锥组合的集合,即

coneC={θ1x1+⋯+θkxk∣xi∈C,θi⩾0,i=1,⋯,k}

锥包是包含 C 的最小凸锥,如图所示:

TikZ 代码
tex
\begin{tikzpicture}[line cap=round,line join=round,scale=0.85]
  % left: conic hull of finitely many points
  \begin{scope}
    \coordinate (O) at (4.6,-2.6);
    \coordinate (A) at (-0.87,0.31);
    \coordinate (B) at (6.31,3.36);
    \fill[gray!20] (O) -- (A) -- (B) -- cycle;
    \draw (O) -- (A);
    \draw (O) -- (B);
    \fill (O) circle (1.4pt) node[below] {$0$};
    \fill (-0.55,0.12) circle (1.3pt);
    \fill (6.15,3.28) circle (1.3pt);
    \foreach \p in {(1.5,1.0),(2.0,1.1),(2.6,0.9),(1.5,0.5),(2.2,0.55),(2.9,1.5),(1.0,0.3),(2.4,1.2)}
      \fill \p circle (1.2pt);
  \end{scope}
  % right: conic hull of a nonconvex set
  \begin{scope}[shift={(8.6,0)}]
    \coordinate (O) at (4.6,-2.6);
    \coordinate (A) at (-0.87,0.31);
    \coordinate (B) at (6.31,3.36);
    \fill[gray!20] (O) -- (A) -- (B) -- cycle;
    \draw (O) -- (A);
    \draw (O) -- (B);
    \fill (O) circle (1.4pt) node[below] {$0$};
    \draw plot[smooth cycle,tension=1]
      coordinates {(1.0,0.9) (1.7,1.75) (2.8,1.8) (3.4,1.2) (3.0,0.75)
                   (2.4,0.95) (2.0,0.5) (1.4,0.45)};
  \end{scope}
\end{tikzpicture}

小结 ​

仿射集凸集锥凸锥
θx1+(1−θ)x2∈Cθx1+(1−θ)x2∈Cθx∈Cθ1x1+θ2x2∈C
θ∈Rθ∈[0,1]θ⩾0θ1,θ2⩾0
仿射组合凸组合锥组合
θ1x1+⋯+θkxkθ1x1+⋯+θkxkθ1x1+⋯+θkxk
θ1+⋯+θk=1θ1+⋯+θk=1
θi⩾0,i=1,⋯,kθi⩾0,i=1,⋯,k
仿射包凸包锥包
θ1+⋯+θk=1θ1+⋯+θk=1
θi⩾0,i=1,⋯,kθi⩾0,i=1,⋯,k