Skip to main content
QUICK REVIEW

[論文レビュー] A Generic Lazy Evaluation Scheme for Exact Geometric Computations

Sylvain Pion, Andreas Fabri|ArXiv.org|Aug 15, 2006
Logic, programming, and type systems被引用数 16
ひとこと要約

この論文では、必要となるまで高コストな多倍長演算を延期する一般化されたC++フレームワークを提示する。区間演算フィルタリングと参照カウント付き有向無閉路グラフを用いる。CGALの幾何キーネルにおける基本的な遅延評価と比較して、メモリ使用量が最大10倍改善され、性能が2–3倍向上する一方で、すべての入力に対して数値的安定性を保証する。

ABSTRACT

We present a generic C++ design to perform efficient and exact geometric computations using lazy evaluations. Exact geometric computations are critical for the robustness of geometric algorithms. Their efficiency is also critical for most applications, hence the need for delaying the exact computations at run time until they are actually needed. Our approach is generic and extensible in the sense that it is possible to make it a library which users can extend to their own geometric objects or primitives. It involves techniques such as generic functor adaptors, dynamic polymorphism, reference counting for the management of directed acyclic graphs and exception handling for detecting cases where exact computations are needed. It also relies on multiple precision arithmetic as well as interval arithmetic. We apply our approach to the whole geometric kernel of CGAL.

研究の動機と目的

  • 浮動小数点の不正確さによって引き起こされる幾何アルゴリズムにおける数値的安定性の問題を解決すること。
  • 実行時の必要性まで正確な計算を延期する、一般化可能で拡張可能なC++フレームワークを設計すること。
  • 算術演算にとどまらず、幾何的オブジェクトレベルでの遅延評価を統合することで、効率性と保守性を向上させること。
  • ユーザーがカスタムの幾何的プリミティブやオブジェクトをコアコンponentを変更せずに拡張できるようにすること。
  • フィルタリング技術を用いて高い性能を達成しつつ、すべての入力に対して正しさを保証すること。

提案手法

  • 幾何の述語と構成をカプセル化するために、汎用のファンクタアダプタを使用する。
  • 動的多態性と参照カウントを用いて、中間式の有向無閉路グラフを管理する。
  • 区間演算を高速なフィルタとして用い、大多数のケースで正確な計算を回避する。
  • 区間演算が符号を解消できない場合、GMPを介して正確な多倍長演算をトリガーする。
  • テンプレートによるパrameter化により、CGALのキーネルとの統合と、ユーザー定義型への拡張性を実現する。
  • 例外処理により、正確な評価が必要なケースを検出することで、正しさを保証する。

実験結果

リサーチクエスチョン

  • RQ1実行時に正確な幾何計算を延期できる、一般化可能で拡張可能なC++フレームワークを設計することは可能か?
  • RQ2算術演算にとどまらず、幾何的オブジェクトレベルでの遅延評価を統合することで、性能と保守性を向上させることは可能か?
  • RQ3コアコンponentを変更せずに、ユーザーが新しい幾何的プリミティブやオブジェクトをフレームワークに拡張することは可能か?
  • RQ4区間演算フィルタリングと多倍長正確計算を組み合わせた場合、どのようなメモリと性能のトレードオフが生じるか?
  • RQ5フィルタリングと正確計算を1つの組み合わせ可能なシステムとして統合した、再利用可能で一般化されたフレームワークを設計することは可能か?

主な発見

  • 提案された Lazy_kernel<SC<Gmpq>> は、g++ 3.4 で4.1秒、g++ 4.1 で2.8秒の実行時間を達成し、基本的な遅延評価方式(9.4秒と7.4秒)を2–3倍速く動作させる。
  • メモリ使用量は501 MBから64 MBにまで低下し、基本的な遅延評価アプローチと比較して10倍の改善が得られた。
  • 倍精度計算(0.72秒)と比較すると4倍遅いが、すべての入力に対して正しさを保証する。
  • 3次元やそれ以上の次元の複雑なプリミティブでは、フィルタリングの失敗頻度が高くなるため、性能向上はさらに顕著になると予想される。
  • 組み合わせ的出力が多大な実世界のアプリケーションでは、幾何的プリミティブの相対的コストが低下するため、相対的な性能ペナルティが小さくなる。
  • フレームワークは拡張性を備えている:ユーザーは同じ汎用インターフェースを用いて、新しい幾何的オブジェクトやプリミティブを定義できる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。