「《計算幾何学》」の版間の差分

提供: ORWiki
ナビゲーションに移動 検索に移動
1行目: 1行目:
【けいさんきかがく (computational geometry) 】
+
'''【けいさんきかがく (computational geometry) 】'''
  
 
 [[計算幾何学]] (computational geometry) とは, 幾何的問題を効率よく解くための基本アルゴリズムの蓄積と体系化をめざす学問分野である. 計算幾何学という名称が初めて使われたのは Shamos の学位論文 [1] だと言われている. 1970年代の中頃に生まれたこの分野は, その後急速に発展し, 1980年代の中頃には相次いで標準的な教科書が出版された [2, 3, 4].  
 
 [[計算幾何学]] (computational geometry) とは, 幾何的問題を効率よく解くための基本アルゴリズムの蓄積と体系化をめざす学問分野である. 計算幾何学という名称が初めて使われたのは Shamos の学位論文 [1] だと言われている. 1970年代の中頃に生まれたこの分野は, その後急速に発展し, 1980年代の中頃には相次いで標準的な教科書が出版された [2, 3, 4].  
5行目: 5行目:
 
 計算幾何学で扱う問題は多岐に渡るが, 以下に示すのはその中でも最も基本的なものである.  
 
 計算幾何学で扱う問題は多岐に渡るが, 以下に示すのはその中でも最も基本的なものである.  
  
 平面上に有限個の点が指定されたとき, どの点に最も近いかによって平面をそれぞれの点の勢力圏に分割した図形を[[ボロノイ図]]  (Voronoi diagram) といい, 最初に与えた点を生成元という. ボロノイ図は自然界のパターンの解析, 地理的最適化など多くの応用に使われている. $<math>n</math>$個の生成元のボロノイ図は $<math>{\rm O}(n\log n)</math>$ の計算量で作ることができ, これが最適であることもわかっている. ボロノイ図は, 空間の次元や距離を変えることによって多くの種類のものが定義できる. 上に述べたのはその中の最も基本的なもので, [[点ボロノイ図]] (Voronoi diagram for points) とよばれている.  
+
 平面上に有限個の点が指定されたとき, どの点に最も近いかによって平面をそれぞれの点の勢力圏に分割した図形を[[ボロノイ図]]  (Voronoi diagram) といい, 最初に与えた点を生成元という. ボロノイ図は自然界のパターンの解析, 地理的最適化など多くの応用に使われている. <math>n\, </math>個の生成元のボロノイ図は <math>{\rm O}(n\log n)\, </math> の計算量で作ることができ, これが最適であることもわかっている. ボロノイ図は, 空間の次元や距離を変えることによって多くの種類のものが定義できる. 上に述べたのはその中の最も基本的なもので, [[点ボロノイ図]] (Voronoi diagram for points) とよばれている.  
  
 空間の点の集合 $<math>X</math>$ は, 「<math>$X</math>$内の任意の 2 点を結ぶ線分が <math>$X</math>$ に含まれる」という性質を満たすとき凸集合とよばれる. 与えられた点の集合 $<math>S</math>$ に対して, $<math>S</math>$ を含む最小の凸集合を $<math>S</math>$ の[[凸包]] (convex hull) という. $<math>d</math>$次元空間における $<math>n</math>$ 個の点の集合 $<math>S</math>$ に対する凸包は, $<math>d=2</math>$のとき $<math>{\rm O}(n\log n)</math>$ の計算量で, $<math>d \geq 3</math>$ のとき $<math>{\rm O}(n^{\lfloor d/2\rfloor})</math>$の計算量で求めることができる. ただし $<math>\lfloor x \rfloor</math>$ $<math>x</math>$ 以下の最大の整数を表す. また, これより小さい計算量では求められないこともわかっている.  
+
 空間の点の集合 <math>X\, </math> は, 「<math>X\, </math>内の任意の 2 点を結ぶ線分が <math>X\, </math> に含まれる」という性質を満たすとき凸集合とよばれる. 与えられた点の集合 <math>S\, </math> に対して, <math>S\, </math> を含む最小の凸集合を <math>S\, </math> の[[凸包]] (convex hull) という. <math>d\, </math>次元空間における <math>n\, </math> 個の点の集合 <math>S\, </math> に対する凸包は, <math>d=2\, </math>のとき <math>{\rm O}(n\log n)\, </math> の計算量で, <math>d \geq 3\, </math> のとき <math>{\rm O}(n^{\lfloor d/2\rfloor})\, </math>の計算量で求めることができる. ただし <math>\lfloor x \rfloor\, </math> は <math>x\, </math> 以下の最大の整数を表す. また, これより小さい計算量では求められないこともわかっている.  
  
 $<math>S</math>$ を平面上に指定された $<math>n$</math> 個の点の集合とする. $<math>S</math>$ の凸包の内部を, $<math>S</math>$に属すすべての点を頂点に使って三角形に分割した図形を, $<math>S</math>$ を張る[[三角形分割]] (triangulation) という. <math>$S</math>$ を張る三角形分割は一般に何通りもある. その中で, 点ボロノイ図の双対図形として得られる三角形分割 ([[ドロネー図]]), 辺長の和が最小の三角形分割 ([[重み最小三角形分割]]) などが, 比較的ふっくらとした三角形を多く含む分割であるためによく調べられている. 前者は $<math>{\rm O}(n\log n)</math>$ の計算量で構成できるが, 後者を構成する問題はNP困難か否かもわかっていない. 一方, 三角形の質は問わないで, どのような三角形を使ってもよいからともかく <math>$S</math>$ を張る三角形分割を作りたいという場合でも$<math>{\rm O}(n\log n)</math>$ より小さい計算量では作れないことがわかっている. その意味でもドロネー図は重要な三角形分割である.  
+
 <math>S\, </math> を平面上に指定された <math>n\, </math> 個の点の集合とする. <math>S\, </math> の凸包の内部を, <math>S\, </math>に属すすべての点を頂点に使って三角形に分割した図形を, <math>S\, </math> を張る[[三角形分割]] (triangulation) という. <math>S\, </math> を張る三角形分割は一般に何通りもある. その中で, 点ボロノイ図の双対図形として得られる三角形分割 ([[ドロネー図]]), 辺長の和が最小の三角形分割 ([[重み最小三角形分割]]) などが, 比較的ふっくらとした三角形を多く含む分割であるためによく調べられている. 前者は <math>{\rm O}(n\log n)\, </math> の計算量で構成できるが, 後者を構成する問題はNP困難か否かもわかっていない. 一方, 三角形の質は問わないで, どのような三角形を使ってもよいからともかく <math>S\, </math> を張る三角形分割を作りたいという場合でも<math>{\rm O}(n\log n)\, </math> より小さい計算量では作れないことがわかっている. その意味でもドロネー図は重要な三角形分割である.  
  
 $<math>d</math>$ 次元空間に $<math>n</math>$ 個の超平面が与えられたとき, それらの超平面が互いに交差して空間を分割する構造は[[アレンジメント]]  (arrangement) とよばれる. $<math>d=2</math>$の場合は平面内の直線のアレンジメントであり, 平面を凸多角形に分割した構造である. $<math>d=3</math>$ の場合は 3 次元空間内の平面のアレンジメントであり, 空間は凸多面体に分割される.  
+
 <math>d\, </math> 次元空間に <math>n\, </math> 個の超平面が与えられたとき, それらの超平面が互いに交差して空間を分割する構造は[[アレンジメント]]  (arrangement) とよばれる. <math>d=2\, </math>の場合は平面内の直線のアレンジメントであり, 平面を凸多角形に分割した構造である. <math>d=3\, </math> の場合は 3 次元空間内の平面のアレンジメントであり, 空間は凸多面体に分割される.  
  
 $<math>(x,y,z)</math>$座標系をもつ3次元空間において, <math>$z</math>$軸に平行ではない$<math>n$</math>枚の平面が作るアレンジメントを $<math>A_n</math>$ とする. <math>$A_n</math>$ は空間をいくつかの凸多面体に分割するが, その境界となっているおのおのの凸多角形は, <math>$z</math>$軸に平行な直線によって貫かれる順序によって, $<math>z$</math>座標の大きい方から1層目, 2層目, 等と層に分類することができる. これらの階層は2次元ボロノイ図と密接な関係がある [4].  
+
 <math>(x,y,z)\, </math>座標系をもつ3次元空間において, <math>z\, </math>軸に平行ではない<math>n\, </math>枚の平面が作るアレンジメントを <math>A_n\, </math> とする. <math>A_n\, </math> は空間をいくつかの凸多面体に分割するが, その境界となっているおのおのの凸多角形は, <math>z\, </math>軸に平行な直線によって貫かれる順序によって, <math>z\, </math>座標の大きい方から1層目, 2層目, 等と層に分類することができる. これらの階層は2次元ボロノイ図と密接な関係がある [4].  
  
 計算幾何学では, 各種幾何問題に対してそれを解く個別のアルゴリズムを追求するだけでなく, 異なる幾何構造の間の関係を調べ, それをアルゴリズムの開発に利用する努力もなされている. 異なる幾何構造をつなぐための代表的道具の一つは[[双対変換]] (dual transformation) である. 最も素朴な双対変換は平面上の直線 $<math>y=ax+b</math>$ を点 <math>$(a,-b)$</math> へ変換させるものである. この変換によって点は直線へ変換され, もとの平面での直線と点との接続関係は双対変換を施したあとも保たれる. このことを利用すると, たとえば平面上に指定された$<math>n</math>$ 本の線分のすべてを通過する1本の直線を求める問題 (串刺し問題) は, $<math>n$</math> 個のくさび形領域の共通部分を求める問題に帰着される. このように変換によって問題を扱いやすい別の問題へ帰着させる技術も計算幾何学では多数蓄積されている.  
+
 計算幾何学では, 各種幾何問題に対してそれを解く個別のアルゴリズムを追求するだけでなく, 異なる幾何構造の間の関係を調べ, それをアルゴリズムの開発に利用する努力もなされている. 異なる幾何構造をつなぐための代表的道具の一つは[[双対変換]] (dual transformation) である. 最も素朴な双対変換は平面上の直線 <math>y=ax+b\, </math> を点 <math>(a,-b)\, </math> へ変換させるものである. この変換によって点は直線へ変換され, もとの平面での直線と点との接続関係は双対変換を施したあとも保たれる. このことを利用すると, たとえば平面上に指定された<math>n\, </math> 本の線分のすべてを通過する1本の直線を求める問題 (串刺し問題) は, <math>n\, </math> 個のくさび形領域の共通部分を求める問題に帰着される. このように変換によって問題を扱いやすい別の問題へ帰着させる技術も計算幾何学では多数蓄積されている.  
  
  

2007年7月6日 (金) 23:03時点における版

【けいさんきかがく (computational geometry) 】

 計算幾何学 (computational geometry) とは, 幾何的問題を効率よく解くための基本アルゴリズムの蓄積と体系化をめざす学問分野である. 計算幾何学という名称が初めて使われたのは Shamos の学位論文 [1] だと言われている. 1970年代の中頃に生まれたこの分野は, その後急速に発展し, 1980年代の中頃には相次いで標準的な教科書が出版された [2, 3, 4].

 計算幾何学で扱う問題は多岐に渡るが, 以下に示すのはその中でも最も基本的なものである.

 平面上に有限個の点が指定されたとき, どの点に最も近いかによって平面をそれぞれの点の勢力圏に分割した図形をボロノイ図 (Voronoi diagram) といい, 最初に与えた点を生成元という. ボロノイ図は自然界のパターンの解析, 地理的最適化など多くの応用に使われている. 個の生成元のボロノイ図は 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {\rm O}(n\log n)\, } の計算量で作ることができ, これが最適であることもわかっている. ボロノイ図は, 空間の次元や距離を変えることによって多くの種類のものが定義できる. 上に述べたのはその中の最も基本的なもので, 点ボロノイ図 (Voronoi diagram for points) とよばれている.

 空間の点の集合 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle X\, } は, 「内の任意の 2 点を結ぶ線分が 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle X\, } に含まれる」という性質を満たすとき凸集合とよばれる. 与えられた点の集合 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } に対して, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } を含む最小の凸集合を 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, }凸包 (convex hull) という. 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle d\, } 次元空間における 個の点の集合 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } に対する凸包は, のとき 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {\rm O}(n\log n)\, } の計算量で, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle d \geq 3\, } のとき 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {\rm O}(n^{\lfloor d/2\rfloor})\, } の計算量で求めることができる. ただし 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle x\, } 以下の最大の整数を表す. また, これより小さい計算量では求められないこともわかっている.

 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } を平面上に指定された 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle n\, } 個の点の集合とする. 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } の凸包の内部を, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } に属すすべての点を頂点に使って三角形に分割した図形を, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } を張る三角形分割 (triangulation) という. 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } を張る三角形分割は一般に何通りもある. その中で, 点ボロノイ図の双対図形として得られる三角形分割 (ドロネー図), 辺長の和が最小の三角形分割 (重み最小三角形分割) などが, 比較的ふっくらとした三角形を多く含む分割であるためによく調べられている. 前者は の計算量で構成できるが, 後者を構成する問題はNP困難か否かもわかっていない. 一方, 三角形の質は問わないで, どのような三角形を使ってもよいからともかく 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle S\, } を張る三角形分割を作りたいという場合でも構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle {\rm O}(n\log n)\, } より小さい計算量では作れないことがわかっている. その意味でもドロネー図は重要な三角形分割である.

 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle d\, } 次元空間に 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle n\, } 個の超平面が与えられたとき, それらの超平面が互いに交差して空間を分割する構造はアレンジメント (arrangement) とよばれる. 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle d=2\, } の場合は平面内の直線のアレンジメントであり, 平面を凸多角形に分割した構造である. 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle d=3\, } の場合は 3 次元空間内の平面のアレンジメントであり, 空間は凸多面体に分割される.

 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle (x,y,z)\, } 座標系をもつ3次元空間において, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle z\, } 軸に平行ではない構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle n\, } 枚の平面が作るアレンジメントを 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle A_n\, } とする. は空間をいくつかの凸多面体に分割するが, その境界となっているおのおのの凸多角形は, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle z\, } 軸に平行な直線によって貫かれる順序によって, 座標の大きい方から1層目, 2層目, 等と層に分類することができる. これらの階層は2次元ボロノイ図と密接な関係がある [4].

 計算幾何学では, 各種幾何問題に対してそれを解く個別のアルゴリズムを追求するだけでなく, 異なる幾何構造の間の関係を調べ, それをアルゴリズムの開発に利用する努力もなされている. 異なる幾何構造をつなぐための代表的道具の一つは双対変換 (dual transformation) である. 最も素朴な双対変換は平面上の直線 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle y=ax+b\, } を点 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle (a,-b)\, } へ変換させるものである. この変換によって点は直線へ変換され, もとの平面での直線と点との接続関係は双対変換を施したあとも保たれる. このことを利用すると, たとえば平面上に指定された構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle n\, } 本の線分のすべてを通過する1本の直線を求める問題 (串刺し問題) は, 構文解析に失敗 (MathML、ただし動作しない場合はSVGかPNGで代替(最新ブラウザーや補助ツールに推奨): サーバー「https://en.wikipedia.org/api/rest_v1/」から無効な応答 ("Math extension cannot connect to Restbase."):): {\displaystyle n\, } 個のくさび形領域の共通部分を求める問題に帰着される. このように変換によって問題を扱いやすい別の問題へ帰着させる技術も計算幾何学では多数蓄積されている.



参考文献

[1] M. I. Shamos, Computational Geometry, Ph.D. Thesis, Department of Computer Science, Yale University, New Haven, 1978.

[2] F. P. Preparata and M. I. Shamos, Computational Geometry -An Introduction, Springer-Verlag, New York, 1985.

[3] 伊理正夫監修, 腰塚武志編集, 『計算幾何学と地理情報処理』, 共立出版, 1986. (第2版, 1993).

[4] H. Edelsbrunner, Algorithms in Combinatorial Geometry, Springer-Verlag, Berlin, 1987.