コンピュータサイエンスにおいて、動的化とは静的データ構造を動的データ構造に変換するプロセスです。[ 1 ]静的データ構造は非常に優れた機能と高速なクエリを提供する可能性がありますが、急速に拡大/縮小できないため、入力データが変化する動的な問題の解決には適用できません。動的化技術は、動的なデータ構造を作成するための統一的な方法を提供します。
問題を定義する述語を探すセットの試合として。 問題集合が分解可能である場合サブセットに分解できるそして、ある操作が存在する。結果の統一により。
分解とは、コンピュータサイエンスにおいて、静的なデータ構造をサイズの異なる小さな単位に分割するために用いられる用語です。その基本原理は、任意の10進数を他の基数で表現できるという考え方に基づいています。このトピックの詳細については、「分解(コンピュータサイエンス)」を参照してください。この記事では、簡潔にするために2進数を使用しますが、他の基数(フィボナッチ数列など、他の可能性も含む)も利用できます。
バイナリシステムを使用する場合、要素は、サイズごとにサブセットに分割されます。
要素は -番目のビットバイナリで。これは、もしもっている番目のビットが 0 の場合、対応するセットには要素が含まれません。各サブセットは、元の静的データ構造と同じ特性を持ちます。新しい動的データ構造に対して実行される操作には、走査が含まれる場合があります。分解によって形成された集合。結果として、これは追加されます 静的なデータ構造操作とは対照的に、挿入/削除操作を追加できるようにします。
クルト・メルホルンは、この考え方に基づいて動的化されたデータ構造に対する操作の時間計算量に関するいくつかの等式を証明した。これらの等式の一部を以下に示す。
もし
それから
もし少なくとも多項式である場合、。
Dynamizationは、任意の静的コンテナ データ構造を、挿入とクエリを任意に混在させる
動的な
データ構造に変換するための汎用的な手法です
。