凸包

数学における凸包（とつほう、英: convex hull）または凸包絡（とつほうらく、英: convex envelope）は、与えられた集合を含む最小の凸集合である。例えば X がユークリッド平面内の有界な点集合のとき、その凸包は直観的には X を輪ゴムで囲んだときに輪ゴムが作る図形として視認することができる。 精確に言えば、X の凸包は X を含む全ての凸集合の交わり、あるいは同じことだが X に属する点の凸結合全体の成す集合として定義される。後者の定式化であれば、凸包をユークリッド空間だけでなく任意の実線型空間や、より一般に有向マトロイド（英語版）に対して考えることができる。 平面上あるいは低次元ユークリッド空間内の有限点集合に対してその凸包を計算するアルゴリズム問題は、計算幾何学の基本的問題の一つである。 与えられた点集合が凸集合であるとは、その集合に属する点の任意の対を結ぶ線分がその集合に含まれることを言うのであった。与えられた集合 X に対して、その凸包は以下の同値な条件： X を含む（唯一の）最小の凸集合、 X を含む凸集合全ての交わり、 X に属する点から得られる凸結合全体の成す集合、 X に属する点を頂点とする単体全ての合併 の何れか一つ（従って全て）を満たす集合として定義される。 一つ目の定式化については、任意の X に対して実際に X を含む最小の凸集合が存在して一つに定まることはそのままでは明らかなことでない。しかし二つ目の定式化では、X を含む全ての凸集合の交わりは明確に定まり（特に全体集合は凸であるから、これは空積にはならない）、かつこの交わりは（交わりの定義によって）X を含む任意の凸集合 Y に含まれるから、この交わりが X を含む唯一最小なる凸集合に他ならないことがわかる。 また、X を含む各凸集合は（それが凸であるという仮定によって）X に属する点の凸結合をすべて含むから、従ってこのような凸結合全体の成す集合は X を含む凸集合全ての交わりに含まれる。逆に、そのような凸結合全体の成す集合はそれ自身 X を含む凸集合ゆえ X を含む凸集合全ての交わりを含むから、これら二つの定式化が同じ集合を与えていることが知れる。 実は、凸包に関するカラテオドリの定理によれば、X が N-次元線型空間の部分集合であるとき、凸包を求めるには上記定義において高々 N + 1 個の点の凸結合を考えれば十分である。従って特に、平面上の三点以上を含む集合の凸包は X に属する点の任意の三つ組から得られる三角形全てに亙る合併に一致し、同様により一般の N-次元空間における凸包は X に属する高々 N + 1 点を頂点として定まる単体全てに亙る合併に一致する。 X の凸包が閉集合となるとき（よくあるのが例えば X が有限集合やもっと一般にコンパクト集合のとき）、それは X を含む閉半空間全ての交わりと一致する。このとき、超平面分離定理は、凸包に属さない各点が半空間によって凸包と分離されることを保証する。しかし、このようなやり方で表すことのできない凸集合および凸包が存在する。例えばその一つは、その境界に一点しか含まない開半平面によって与えられる。 より抽象的に言えば、凸包をとる作用素 Conv() は閉包作用素を特徴づける三性質： 凸包作用素は「拡大性質」を持つ。即ち、任意の集合 X に対してその凸包は X を含む: X ⊆ Conv ⁡ ( X ) . {\displaystyle X\subseteq \operatorname {Conv} (X).} 凸包作用素は「単調性」を持つ。即ち、二つの集合 X, Y が X ⊆ Y を満たすならば、X の凸包は Y の凸包に含まれる: X ⊆ Y ⟹ Conv ⁡ ( X ) ⊆ Conv ⁡ ( Y ) . {\displaystyle X\subseteq Y\implies \operatorname {Conv} (X)\subseteq \operatorname {Conv} (Y).} 凸包作用素は「冪等性」を持つ。即ち、任意の X に対して X の凸包の凸包は X の凸包に等しい: Conv ⁡ ( Conv ⁡ ( X ) ) = Conv ⁡ ( X ) . {\displaystyle \operatorname {Conv} (\operatorname {Conv} (X))=\operatorname {Conv} (X).} を満たす。 有限な点集合の凸包は、それに属する点から得られる凸結合全体の成す集合である。凸結合における S の各点 xi に掛かる重みあるいは係数 αi は、全て正かつそれらの総和が 1 となるものであり、これらの重みは点の間の重み付き平均の計算に用いられる。このような係数の組を選ぶごとに凸包に属する点が一つ定まり、係数として可能な全ての組を考えることによって凸包の全体が得られる。式にすれば、凸包は { ∑ i = 1 | S | α i x i | ( ∀ i : α i ≥ 0 ) ∧ ∑ i = 1 | S | α i = 1 } {\displaystyle \left\{\sum _{i=1}^{|S|}\alpha _{i}x_{i}{\mathrel {\;{\Bigg |}\;}}(\forall i:\alpha _{i}\geq 0)\wedge \sum _{i=1}^{|S|}\alpha _{i}=1\right\}} で与えられる集合ということになる。Rn 内の有限点集合 S の凸包は、平面の場合は凸多角形、三次元空間の場合は凸多面体、より一般の次元では凸超多面体（英語版）または凸多胞体）と呼ばれる。S の点 xi でそれ以外の点の凸包に属さないもの ( x i ∉ Conv ⁡ ( S ∖ { x i } {\displaystyle x_{i}\notin \operatorname {Conv} (S\setminus \{x_{i}\}} ) を Conv(S) の頂点と呼ぶ。実は Rn の任意の凸多面体は、その頂点集合の凸包になっている。 S の点が全て一つの直線上に載っているならば、S の凸包はもっとも外側にある二点を結ぶ線分になる。また、集合 S が平面上の（つまり二次元の）空でない有限部分集合のとき、S 全体をゴムバンドでぐるりと囲んでから、これを放して縮まる状況を想像すると、ゴムバンドがピンと張った状況で S の凸包を見取ることができる。 二次元において、凸包は最左点と最右点の間を引き延ばしてできる「上包」(upper hull) と「下包」(lower hull) と呼ばれる二つの多角形の鎖に分けることがある。より一般に言えば、任意次元で一般の位置にある点の集合に対して、凸包の各刻面（英語版）は（凸包とその直上の点を分離することで）上方または下方に向き付けられる。上方を向く刻面全ての合併が上包と呼ばれる位相的円板を成すのである。同様に下包は下方向き刻面全体の合併を言う 計算幾何学において、点やその他の幾何学的対象のなす有限集合の凸包を計算するアルゴリズムが数多く知られている。ギフト包装法などがある。 「凸包の計算」というのは、曖昧さ無く効果的に求める凸図形を表すデータを構築することを意味する。凸包アルゴリズムの計算量は通例、入力点の数 n と凸包に属する点（出力点）の数 h とに関して評価される。 二次元及び三次元の点集合に対して、計算量 O(n log h) で凸包を計算できる出力依存アルゴリズムが知られている。三次元より高次の d-次元では、凸包の計算時間は最悪の場合で O ( n ⌊ d / 2 ⌋ ) {\displaystyle O(n^{\lfloor d/2\rfloor })} となる。 凸包を取る操作は集合のミンコフスキー和に関してよく振る舞う。 ミンコフスキー和 実線型空間において、二つの空でない集合 S1, S2 のミンコフスキー和 S1 + S2 は、加えられる各集合の元ごとの和の集合 S 1 + S 2 = { x 1 + x 2 : x 1 ∈ S 1 ∧ x 2 ∈ S 2 } {\displaystyle S_{1}+S_{2}=\{x_{1}+x_{2}:x_{1}\in S_{1}\land x_{2}\in S_{2}\}} として定義される。より一般に、空でない部分集合の有限族 Si (i = 1, 2, …, n) のミンコフスキー和は、同様に元ごとの和をとって ∑ i = 1 n S i := { ∑ i = 1 n x i : x i ∈ S i } {\displaystyle \sum _{i=1}^{n}S_{i}:=\left\{\sum _{i=1}^{n}x_{i}:x_{i}\in S_{i}\right\}} で与えられる。ミンコフスキー和に関して、零ベクトルのみからなる自明空間 {0} は単位元、空集合 ∅ は吸収元を成す。 実線型空間の任意の二つの部分集合 S1, S2 に対して、それらのミンコフスキー和の凸包はそれぞれの凸包のミンコフスキー和に等しい。即ち Conv ⁡ ( S 1 + S 2 ) = Conv ⁡ ( S 1 ) + Conv ⁡ ( S 2 ) {\displaystyle \operatorname {Conv} (S_{1}+S_{2})=\operatorname {Conv} (S_{1})+\operatorname {Conv} (S_{2})} が成り立つ。この結果は部分集合の有限族に対しても一般化できて、 Conv ( ∑ i = 1 n S i ) = ∑ i = 1 n Conv ⁡ ( S i ) {\displaystyle \operatorname {Conv} \!{\big (}\sum _{i=1}^{n}S_{i}{\bigr )}=\sum _{i=1}^{n}\operatorname {Conv} (S_{i})} が成り立つ。言葉を替えれば、ミンコフスキー和作用素と凸包作用素は可換なのである。 これらの結果は「ミンコフスキー和」が集合論的な和（合併）との違いを示すものになっている。実際、二つの凸集合の合併は必ずしも凸でなく、包含関係 Conv(S) ∪ Conv(T) ⊆ Conv(S ∪ T) は一般には真の包含になる。凸部分集合全体の成す集合を（完備な）束とするのに凸包作用素は重要で、通例この束における結び演算（英語版） (join) ∨ は二つの凸集合の合併の凸包 Conv ⁡ ( S ) ∨ Conv ⁡ ( T ) := Conv ⁡ ( S ∪ T ) = Conv ⁡ ( Conv ⁡ ( S ) ∪ Conv ⁡ ( T ) ) {\displaystyle \operatorname {Conv} (S)\vee \operatorname {Conv} (T):=\operatorname {Conv} (S\cup T)=\operatorname {Conv} (\operatorname {Conv} (S)\cup \operatorname {Conv} (T))} によって与えられる。 点集合のドロネイ三角形分割とその双対であるヴォロノイ図は数学的に凸包と関係がある。Rn におけるドロネイ三角形分割は、Rn+1 における凸包の射影と見做すことができる。 位相的には、開集合の凸包は常にそれ自身開であり、コンパクト集合の凸包は常にそれ自身コンパクトとなるが、閉集合の凸包で閉とならないものが存在する。例えば、閉集合 { ( x , y ) ∣ y ≥ 1 1 + x 2 } {\displaystyle \left\{(x,y)\mid y\geq {\frac {1}{1+x^{2}}}\right\}} の凸包は開上半平面になる。 凸包を求める問題の実用的な応用としては、パターン認識・画像処理・統計学・地理情報システム・抽象解釈による静的コード解析などがある。あるいはまた、点集合の幅や径を計算する回転キャリパー法のような、ほかの計算幾何学的アルゴリズムの構成部材としても重要な役割を提供する。