Delaunay三角形分割(Delaunay triangulation)とは、平面の有限個の点の集まりを頂点としてその凸包を三角形に分けたもののうち、どの三角形の外接円の内部にもほかの点がないもののことである。点 $(x,y)$ を放物面の点 $(x,y,x^2+y^2)$ に持ち上げると「外接円の内部」は「平面の下」に変わり、隣り合う 2 つの三角形でこの条件が破れている辺を取り替える操作をくり返すと、有限回で Delaunay 三角形分割に達する。点が一直線上になければいつも存在し、どの 4 点も同じ円の上になければただ 1 つで、そのとき三角形の最小の角を最大にする三角形分割になる。Voronoi 図と双対の関係にあり、計算幾何学や網目の生成の基本の道具である。
平面にばらばらに置いた有限個の点を頂点として、点の集まりの凸包を三角形に分けたい。分け方はたくさんあるが、細長い三角形はできるだけ避けたい。どの三角形の外接円の内部にもほかの点がない、という条件で選んだ分け方を Delaunay 三角形分割(Delaunay triangulation)という。三角形の外心 の節「大学数学で見る:Voronoi 図と Delaunay 三角形分割」で見たように、この条件は Voronoi 図の頂点と結びついている。
この記事では、Delaunay 三角形分割がいつでも存在し、任意の三角形分割から「辺の取り替え」をくり返すと有限回で得られること、どの 4 点も同じ円の上になければただ 1 つであること(thm-dlt-main)を証明する。鍵は、点 $(x,y)$ を放物面の上の点 $(x,y,x^2+y^2)$ に持ち上げると、「外接円の内部にある」が「平面より下にある」に変わることである(lem-dlt-lift)。さらに、三角形の最小の角を最大にする Delaunay 三角形分割があり、どの 4 点も同じ円の上になければただ 1 つの Delaunay 三角形分割が最小の角を最大にすることを証明する(thm-dlt-angle)。
以下、$S\subset\mathbb{R}^2$ は有限集合で、1 本の直線の上には含まれないとする(とくに $S$ は 3 点以上を含む)。$\operatorname{conv}S$ は $S$ の 凸包 で、凸多角形である。一直線上にない 3 点 $a,b,c$ の凸包を 三角形 $abc$ といい(閉集合とする)、$a,b,c$ をその頂点、線分 $ab,bc,ca$ をその辺という。
三角形の有限集合 $T$ が $S$ の 三角形分割 であるとは、次の 3 条件を満たすことをいう。
1 と 2 から、$S$ のどの点もある三角形の頂点になる。三角形の辺のうち $\operatorname{conv}S$ の境界に含まれないものを 内部の辺 という。内部の辺 $ab$ は、ちょうど 2 つの三角形 $abc,abd$ の辺で、$c$ と $d$ は直線 $ab$ の反対側にある(lem-dlt-edge)。
$S$ の三角形分割 $T$ が Delaunay 三角形分割 であるとは、どの $t\in T$ についても、$t$ の外接円の内部(中心からの距離が半径より小さい点の全体)に $S$ の点がないことをいう。内部の辺 $ab$(三角形 $abc,abd$ の辺)について、$d$ が三角形 $abc$ の外接円の内部にないとき、辺 $ab$ は 局所 Delaunay であるという。
局所 Delaunay の条件は、$c$ と $d$ について対称である(lem-dlt-flip の 4)。Delaunay 三角形分割の内部の辺はどれも局所 Delaunay である。逆も成り立つことを prop-dlt-convex で示す。
$T$ を $S$ の三角形分割、$ab$ を三角形 $abc\in T$ の辺とする。$ab$ が $\operatorname{conv}S$ の境界に含まれるなら、$ab$ を辺にもつ $T$ の三角形は $abc$ だけである。含まれないなら、$abc$ のほかにちょうど 1 つの $abd\in T$ があり、$d$ は直線 $ab$ について $c$ の反対側にある。
要点:辺の中点 $p$ のまわりの小さな半円板が、どの三角形に覆われるかを見る。
$p$ を $ab$ の中点とする。$ab$ を辺にもつ三角形は、$p$ の近くで、第 3 の頂点の側の半円板($p$ を中心とする十分小さい半径の円板と、直線 $ab$ で区切られた閉半平面の共通部分)を含む。同じ側に第 3 の頂点をもつ 2 つの三角形は、この半円板を共有して内部が交わるので、条件 3 に反する。よって $ab$ を辺にもつ三角形は、直線 $ab$ の各側に高々 1 つである。
$ab$ が境界に含まれるなら、直線 $ab$ は $\operatorname{conv}S$ の支持直線で、$\operatorname{conv}S$ は $c$ の側にあるので、反対側に第 3 の頂点をもつ三角形はない。
$ab$ が境界に含まれないとする。$p$ が境界の点なら、$p$ を通る支持直線 $L$ があり、$\operatorname{conv}S$ は $L$ の片側にある。線分 $ab\subset\operatorname{conv}S$ はその内部の点 $p$ で $L$ に触れるので $ab\subset L$ となり、$ab$ が境界に含まれて矛盾する。よって $p$ は $\operatorname{conv}S$ の内部の点で、$p$ を中心とする小さい円板 $B$ は $\operatorname{conv}S$ に含まれ、$p$ を含まない三角形(有限個の閉集合)と交わらない。$B$ のうち直線 $ab$ について $c$ の反対側の開いた部分は、$p$ を含む三角形で覆われるが、$abc$ には含まれない。覆う三角形は有限個の閉集合なので、その部分の点で $p$ に近づく点列を無限に多く含む三角形 $t'\ne abc$ があり、$t'$ は $p$ を含む。$t'\cap abc$ は $ab$ の内部の点 $p$ を含むので、条件 3 により共通の辺で、$p$ を含む $abc$ の辺は $ab$ だけだから、$t'=abd$ の形である。$t'$ は $B$ の反対側の部分の点を含むので、$d$ は $c$ の反対側にある。$\square$
$q(x):=\lvert x\rvert^2$($x\in\mathbb{R}^2$)とおく。一直線上にない 3 点 $a,b,c$ について、$\ell_{abc}$ を、$a,b,c$ で $q$ と同じ値をとるただ 1 つのアフィン関数($k_0+\langle k,x\rangle$ の形の関数。$k_0\in\mathbb{R}$、$k\in\mathbb{R}^2$)とする。グラフで言えば、放物面 $z=q(x)$ の上の 3 点を通る平面である。
三角形 $abc$ の外接円の中心を $o$、半径を $r$ とすると、すべての $x\in\mathbb{R}^2$ について
$$
q(x)-\ell_{abc}(x)=\lvert x-o\rvert^2-r^2
$$
である。したがって、点 $x$ が外接円の内部・円周上・外部にあることは、それぞれ $q(x)<\ell_{abc}(x)$、$=$、$>$ と同値である。
$\lvert x-o\rvert^2-r^2=q(x)-2\langle o,x\rangle+\lvert o\rvert^2-r^2$ なので、$m(x):=2\langle o,x\rangle-\lvert o\rvert^2+r^2$ とおくと $\lvert x-o\rvert^2-r^2=q(x)-m(x)$ である。$m$ はアフィン関数で、$x=a,b,c$ では左辺が $0$ なので $m=q$ である。一直線上にない 3 点での値はアフィン関数を決めるので $m=\ell_{abc}$ である。$\square$
三角形分割 $T$ について、各三角形 $t\in T$ の上で $\ell_t$ に等しい関数を $f_T\colon\operatorname{conv}S\to\mathbb{R}$ とする。2 つの三角形の共通部分(頂点か辺)では両者の値が一致するので、$f_T$ は矛盾なく定まる連続関数であり、$S$ の点では $f_T=q$ である。$f_T$ のグラフは、持ち上げた点を頂点とする三角形をつないだ曲面である。
$S$ の三角形分割 $T$ について、次の 3 条件は同値である。
(1 ⇒ 2)。1 を仮定し、$t\in T$ を 1 つとる。lem-dlt-lift により、すべての $s\in S$ で $\ell_t(s)\le q(s)$ である。任意の $y\in\operatorname{conv}S$ は、ある $t'\in T$ の頂点 $w_1,w_2,w_3$ の凸結合 $y=\sum_j\mu_jw_j$ で、
$$
f_T(y)=\sum_j\mu_jq(w_j)\ge\sum_j\mu_j\ell_t(w_j)=\ell_t(y)
$$
である。よって $f_T\ge\ell_t$ がすべての $t$ で成り立ち、$t$ の上では等号なので $f_T=\max_{t\in T}\ell_t$ である。アフィン関数の最大は凸関数である。
(2 ⇒ 1)。$t\in T$ の内部の点 $x_0$ と $y\in\operatorname{conv}S$ をとり、$\varphi(s):=f_T(x_0+s(y-x_0))$($0\le s\le1$)とおく。$\varphi$ は凸で、小さい $\varepsilon>0$ について $[0,\varepsilon]$ ではアフィン関数 $\psi(s):=\ell_t(x_0+s(y-x_0))$ に等しい。凸関数の傾きの単調性(凸関数 の命題「凸関数の傾きの単調性」)から、$s>\varepsilon$ なら $\frac{\varphi(s)-\varphi(0)}{s}\ge\frac{\varphi(\varepsilon)-\varphi(0)}{\varepsilon}$ で、右辺は $\psi$ の傾きなので $\varphi(s)\ge\psi(s)$ である。$s=1$ として $f_T(y)\ge\ell_t(y)$ を得る。$y\in S$ とすると $q(y)\ge\ell_t(y)$ で、lem-dlt-lift により $y$ は $t$ の外接円の内部にない。
(1 ⇒ 3) は定義から明らかである。
(3 ⇒ 2)。要点:局所 Delaunay は、辺をはさむ 2 つの三角形の上で $f_T$ が 2 枚の平面の最大になっている(辺で下に凸に折れている)ことを言う。各辺で凸なら、線分に沿って傾きが増えるので全体で凸になる。
段 1(辺の近く)。内部の辺 $ab$(三角形 $abc,abd$)で、$g:=\ell_{abd}-\ell_{abc}$ はアフィン関数で、直線 $ab$ の上で $0$、$d$ で $q(d)-\ell_{abc}(d)\ge0$ である。よって $g$ は $d$ の側で $0$ 以上、$c$ の側で $0$ 以下であり、$abc\cup abd$ の上で $f_T=\max(\ell_{abc},\ell_{abd})$ である。
段 2(よい線分)。$\operatorname{conv}S$ の内部の 2 点 $x,y$ を結ぶ線分が $S$ の点を通らず、どの辺とも高々 1 点で交わるとする。線分は $\operatorname{conv}S$ の内部にあるので、辺と交わる点はどれも内部の辺の内部の点で、交わる点は有限個である。$\varphi(s):=f_T(x+s(y-x))$ は、交わる点の間ではアフィンで、交わる点の近くでは段 1 により 2 つのアフィン関数の最大なので傾きが増える。傾きが左から右へ増える連続な折れ線関数なので、$\varphi$ は凸である。
段 3(一般の線分)。$S$ の点 $v$ を通る線分の端点の組 $(x,y)$ の全体と、ある辺の直線の上に $x,y$ がともにある組の全体は、どれも $\mathbb{R}^2\times\mathbb{R}^2$ の内点をもたない閉集合で、有限個である。よって段 2 の組は $(\operatorname{conv}S)^2$ の中で稠密であり、凸性の不等式 $f_T((1-s)x+sy)\le(1-s)f_T(x)+sf_T(y)$ は $f_T$ の連続性によって極限でも成り立つ。$\square$
(1 ⇒ 2) の証明から、Delaunay 三角形分割では、持ち上げた点はすべて各三角形の平面の上か上方にある。このことから、Delaunay 三角形分割は、持ち上げた点の凸包の下側の面を真下に射影したものとしても得られる(For17 §27.1「Relation to convexity」。この記事ではこの形では証明しない)。
内部の辺 $ab$(三角形 $abc,abd$)が局所 Delaunay でないとき、2 つの三角形 $abc,abd$ を $acd,bcd$ に取り替えることを、辺 $ab$ の フリップ という。
$T$ を $S$ の三角形分割とし、内部の辺 $ab$(三角形 $abc,abd$)で、$d$ が三角形 $abc$ の外接円の内部にあるとする。
(1) から $Q=\operatorname{conv}\{a,b,c,d\}$ で、上の分解から $acd\cup bcd=Q$、$acd\cap bcd=cd$ である。$Q\cap S=\{a,b,c,d\}$($abc$ と $abd$ について条件 1)で、$b\notin acd$、$a\notin bcd$($m$ が $ab$ の内部の点なので、$a,b$ は直線 $cd$ の反対側にある)から、新しい三角形も条件 1 を満たす。ほかの $t''\in T$ について、$t''\cap abc$、$t''\cap abd$ は空か頂点か辺で、lem-dlt-edge により辺 $ab$ ではないから、$t''\cap Q$ は $Q$ の境界に含まれる凸集合であり、したがって $Q$ の 1 辺($ac,cb,bd,da$ のどれか)に含まれる。たとえば $ac$ に含まれるなら $t''\cap Q=t''\cap abc$ は空・$\{a\}$・$\{c\}$・$ac$ のどれかで、$t''\cap acd$ はそれと同じ、$t''\cap bcd\subset ac\cap bcd=\{c\}$ である。ほかの辺でも同じなので条件 3 が成り立つ。条件 2 は $Q$ が変わらないので成り立つ。$\square$
$S$ の三角形分割はある。
要点:$\operatorname{conv}S$ の角の点から扇形に分け、残りの点を 1 つずつ加えて三角形を分割する。
$\operatorname{conv}S$ は凸多角形で、その角の点 $p_0,\dots,p_{k-1}$(反時計回り、$k\ge3$)は $S$ の点である。三角形 $p_0p_jp_{j+1}$($1\le j\le k-2$)は、角の点の集合の三角形分割である($p_0$ から出る半直線 $p_0p_1,\dots,p_0p_{k-1}$ はこの順に並び、隣り合う 2 本ではさまれた部分が 1 つの三角形になる)。
角の点を含み $S$ に含まれる集合 $S'$ の三角形分割 $T$($\operatorname{conv}S'=\operatorname{conv}S$)と、$x\in S\setminus S'$ が与えられたとする。$x$ を含む三角形 $abc\in T$ をとる。$x$ が $abc$ の内部にあれば、$abc$ を $xab,xbc,xca$ に分ける。$x$ が辺 $ab$ の内部にあれば、$abc$ を $xbc,xca$ に分け、$ab$ が内部の辺なら(lem-dlt-edge)もう一方の $abd$ も $xbd,xda$ に分ける($x$ は $S'$ の点でないので頂点ではない)。分けた三角形は元の三角形の和集合をちょうど覆い、ほかの三角形との共通部分は変わらないので、$S'\cup\{x\}$ の三角形分割を得る。これを $S\setminus S'$ の点がなくなるまでくり返す。$\square$
$S\subset\mathbb{R}^2$ を、1 本の直線の上に含まれない有限集合とする。
$S=\{A(0,0),B(4,0),C(5,3),D(0,3)\}$ とする(三角形の外心 の例「4 つの母点で空の円を調べる」と同じ点)。対角線 $AC$ で分けた三角形分割 $\{ABC,ACD\}$ では、$D$ が三角形 $ABC$ の外接円(中心 $(2,\frac73)$、半径の 2 乗 $\frac{85}9$)の内部にある($D$ までの距離の 2 乗は $\frac{40}9$)。辺 $AC$ をフリップすると $\{ABD,BCD\}$ になり、これが Delaunay 三角形分割である。
対角線の交点は $m=(\frac{20}9,\frac{12}9)$ で、$m=\frac59A+\frac49C=\frac59B+\frac49D$ である。持ち上げた関数の値は
$$
f_{\{ABC,ACD\}}(m)=\tfrac59q(A)+\tfrac49q(C)=\tfrac{136}9,\qquad f_{\{ABD,BCD\}}(m)=\tfrac59q(B)+\tfrac49q(D)=\tfrac{116}9
$$
で、フリップで下がっている(lem-dlt-flip の 3)。最小の角は、$\{ABC,ACD\}$ では $\angle BAC=\angle ACD=\arctan\frac35\approx30.96^\circ$、$\{ABD,BCD\}$ では $\angle ABD=\angle BDC=\arctan\frac34\approx36.87^\circ$ で、フリップで大きくなっている(thm-dlt-angle)。
三角形分割 $T$ に現れる三角形の内角のうち最小のものを $\alpha(T)$ と書く。Delaunay 三角形分割が $\alpha$ を最大にすることは、Lawson による古典的な結果として知られている(For17 §27.4「Roundness」)。この節ではそれを証明する。
円 $\Gamma$ の上の相異なる 2 点 $X,Y$ と、$\Gamma$ の上の点 $Q\ne X,Y$、$\Gamma$ の内部の点 $P$ があり、$P$ と $Q$ は直線 $XY$ の同じ側にあるとする。このとき $\angle XPY>\angle XQY$ である。
半直線 $XP$ が $\Gamma$ と再び交わる点を $P'$ とすると、$P$ は円の内部の点なので線分 $XP'$ の内部にあり、$P'$ は $P$ と同じく直線 $XY$ の $Q$ の側にある。$Y$ は直線 $XP'$ の上にない(直線と円の交点は $X,P'$ だけで、$Y=P'$ なら $P$ が線分 $XY$ の上に来る)。円周角の定理 の系「同じ弧に対する円周角」により $\angle XP'Y=\angle XQY$ で、三角形 $PP'Y$ の外角について $\angle XPY=\angle PP'Y+\angle PYP'>\angle PP'Y=\angle XP'Y$ である。$\square$
lem-dlt-flip の状況で、新しい三角形 $acd,bcd$ の 6 つの内角の最小は、古い三角形 $abc,abd$ の 6 つの内角の最小より大きい。
要点:新しい 6 つの角のどれも、古い角のどれかより大きいことを、lem-dlt-inside と角の分割で示す。
$m$ は線分 $ab$ と $cd$ の両方の内部の点なので、四角形の各辺の直線(たとえば $ad$)について、残りの 2 頂点($b,c$)は $m$ と同じ側にある。lem-dlt-flip の 4 から $c$ は $abd$ の外接円の内部にあり、仮定から $d$ は $abc$ の外接円の内部にある。
はじめの 4 つは lem-dlt-inside による。新しい 6 つの角はどれも古い角のどれかより大きいので、新しい角の最小は古い角の最小より大きい。$\square$
$S\subset\mathbb{R}^2$ を、1 本の直線の上に含まれない有限集合とする。
1 回のフリップで変わるのは $abc,abd$ の 6 つの角だけで、lem-dlt-flip-angle によりその最小は大きくなる。三角形分割全体の最小の角は「変わらない角の最小」と「その 6 つの最小」の小さい方なので、フリップで $\alpha$ は減らない。thm-dlt-main の 1 により、任意の $T$ からフリップをくり返すと Delaunay 三角形分割 $D_T$ に着き、$\alpha(D_T)\ge\alpha(T)$ である。
三角形分割は有限個なので、$\alpha$ を最大にする $T^\ast$ がある。$D:=D_{T^\ast}$ とすると、$\alpha(D)\ge\alpha(T^\ast)\ge\alpha(T)$ がすべての $T$ で成り立ち、1 を得る。2 の仮定のもとでは thm-dlt-main の 2 により Delaunay 三角形分割は 1 つしかないので、それが 1 の $D$ である。$\square$
$S=\{O(0,0),P(0,1),Q(1,2),U(6,0)\}$ とする(4 点は凸四角形 $OUQP$ の頂点で、1 つの円の上にない)。対角線 $OQ$ で分けた $\{OPQ,OUQ\}$ が Delaunay 三角形分割である($U$ は三角形 $OPQ$ の外接円の外部にある)。三角形 $OPQ$ の $P$ での角は、$\overrightarrow{PO}=(0,-1)$ と $\overrightarrow{PQ}=(1,1)$ のなす角で $135^\circ$ である。もう一方の対角線 $PU$ で分けた $\{OUP,PUQ\}$ では、最大の角は $\angle UOP=90^\circ$ と三角形 $PUQ$ の $Q$ での角(約 $113.2^\circ$)で、$135^\circ$ より小さい。Delaunay 三角形分割は最小の角を最大にするが、最大の角を最小にするとは限らない。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| どの 4 点も 1 つの円の上にない | 正方形の 4 頂点 | Delaunay 三角形分割の一意性(thm-dlt-main の 2) |
| $S$ が 1 本の直線の上に含まれない | 一直線上の 3 点 $(0,0),(1,0),(2,0)$ | 三角形分割の存在(三角形が作れない) |
| $d$ が三角形 $abc$ の外接円の内部にある(lem-dlt-flip-angle) | ex-dlt-four の $\{ABD,BCD\}$ で辺 $BD$ を取り替える | 取り替えで最小の角が大きくなること($36.87^\circ$ から $30.96^\circ$ に下がる) |
$\lvert S\rvert=n$ とし、$S$ のうち $\operatorname{conv}S$ の境界にある点の個数を $h$ とする。$S$ のどの三角形分割も、三角形をちょうど $2n-h-2$ 個、辺をちょうど $3n-h-3$ 本もつ。
要点:すべての三角形の内角の和を、三角形ごとと頂点ごとの 2 通りに数える。
三角形の個数を $F$ とすると、内角の和は $\pi F$ である。頂点ごとに数えると、$\operatorname{conv}S$ の内部の点のまわりでは角が全周を覆って $2\pi$、境界の点で凸多角形の角の点でないものでは $\pi$、角の点では多角形の内角になる。角の点が $k$ 個なら多角形の内角の和は $(k-2)\pi$ なので、$\pi F=2\pi(n-h)+\pi(h-k)+(k-2)\pi$、すなわち $F=2n-h-2$ である。境界は $S$ の境界の点で $h$ 本の辺に分かれ(条件 1 により境界の点はどれも頂点)、それらの辺は 1 つの三角形にだけ属し、内部の辺は 2 つの三角形に属する(lem-dlt-edge)。よって辺の本数 $E$ は $3F=2E-h$ を満たし、$E=3n-h-3$ である。$\square$
とくに Delaunay 三角形分割の三角形は $2n-5$ 個以下($h\ge3$)である。
$S$ の点を母点とする Voronoi 図(三角形の外心 の定義「点の集まりの Voronoi 領域」、Voronoi図)を考える。三角形の外心 の命題「空の円の性質」により、三角形 $abc$ が空の円をもつことは、その外心が $a,b,c$ の 3 つの Voronoi 領域すべてに属することと同値である。4 点が 1 つの円の上にないときは、3 つ以上の領域に属する点(Voronoi 図の頂点)はちょうど 3 つの領域に属し、thm-dlt-main の 2 から、Voronoi 図の頂点と Delaunay 三角形の外心は 1 対 1 に対応する(異なる 2 つの空の円が同じ中心をもてば、半径も等しくなり、4 点以上が同じ円の上に来る)。
Delaunay 三角形分割は、細長い三角形を避けたい場面(地形の標高データから曲面を作る、有限要素法の網目を作る)で使われる。$n$ 点の Delaunay 三角形分割は $O(n\log n)$ 時間で計算でき、Euclid 距離の最小全域木の辺はすべて Delaunay 三角形分割の辺である(For17 表 27.2.1、§27.4「Subgraph relationships」。この記事では証明しない)。3 次元以上でも、外接球の内部に点がない単体で凸包を分けたものを Delaunay 分割といい、lem-dlt-lift と同じ持ち上げが使える(For17 §27.1、四面体の外接球と内接球)。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する