プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

キネティックデータ構造


基本コンセプト

動的データ構造は、連続的に移動している幾何学的システムの属性を追跡するために実装されたデータ構造として定義されます。たとえば、動的凸包データ構造は、n個の移動点のグループの凸包を追跡します。

動的データ構造の開発は、ロボット工学、アニメーション、コンピューターグラフィックスでの衝突や可視性の検出など、連続運動する物理オブジェクトを含む計算幾何学の問題に触発されました。

概要

キネティックデータ構造は、時間の関数として呼び出される方法で変化する値のセットが存在するシステムに実装されます。したがって、システムにはいくつかの値があり、システム値vごとに、v =f(t)であることを示しています。キネティックデータ構造により、現在の仮想時間tでのシステムのクエリと、2つの追加操作が可能になります

  • Advance(t):時間tまでのシステムが進んでいます。
  • change(v、f(t)):現在の時点での値vからf(t)への軌道が変更されます。

追加の操作をサポートできます。たとえば、動的データ構造は、一連のポイントを使用して実装されることがよくあります。この場合、構造は通常、ポイントの挿入と削除を許可します。

従来のデータ構造との対比

動的データ構造により、そこに保存されている値を時間とともに連続的に変化させることができます。原則として、これは、一定の時間間隔でポイントの位置をサンプリングし、各ポイントを削除して「静的」(従来の)データ構造に再挿入することで概算できます。ただし、このようなアプローチは、実装される時間間隔に応じて、オーバーサンプリングまたはアンダーサンプリングの影響を受けやすく、計算リソースを浪費する可能性もあります。

証明書アプローチ

次の一般的なアプローチを実装して、動的データ構造を構築できます

  • 現在の時刻tにおけるシステムのデータ構造が保存されます。このデータ構造により、現在の仮想時間でのシステムへのクエリが可能になります。
  • 証明書を使用したデータ構造が拡張されます。証明書は、データ構造が正確である条件として扱われます。現在、証明書はすべて真であり、データ構造は、証明書の1つが真でなくなった場合にのみ完全または正確でなくなります。
  • 各証明書の失敗時間、つまりそれが真でなくなる時間が計算されます。
  • 優先キュー内の証明書は、失敗時刻に基づいて保存されます。
  • 時間tに進むには、優先キューからの障害時間が最小の証明書を確認します。時間tより前に証明書が失敗した場合は、証明書をキューから削除またはポップし、失敗時に完全または正確になるようにデータ構造を修正して、証明書を更新します。優先キューで失敗時間が最も短い証明書が時間tの後に失敗するまで、これを繰り返します。優先キュー内の最小の失敗時間が時間tの後に失敗した場合、データ構造が時間tでクエリに正しく応答できるように、すべての証明書が時間tでtrueとして宣言されます。

イベントの種類

証明書の失敗は「イベント」として示されます。動的データ構造によって維持されるプロパティがイベントの発生時に変更されない場合、イベントは内部として宣言されます。イベントの発生時にデータ構造によって維持されるプロパティが変更された場合、イベントは外部として宣言されます。

パフォーマンス

証明書アプローチを実装する場合、パフォーマンスには4つの指標があります。 nの多対数関数である場合、またはランダムに小さい€の場合はO(n€)である場合、数量は小さいと呼びます。ここで、nはオブジェクトの数として扱われます。


  1. データ構造における二分木表現

    ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには2つの異なる方法があります。これらは配列とリンクリストを使用しています。 このようなツリーが1つあるとします- 配列表現は、レベル順の方法を使用して要素をスキャンすることにより、ツリーデータを格納します。したがって、ノードをレベルごとに格納します。一部の要素が欠落している場合は、空白のままにします。上記のツリーの表現は以下のようになります- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 5

  2. データ構造の償却時間計算量

    償却分析 この分析は、時折の操作が非常に遅い場合に使用されますが、非常に頻繁に実行される操作のほとんどは高速です。データ構造では、ハッシュテーブル、互いに素なセットなどの償却分析が必要です。 ハッシュテーブルでは、ほとんどの場合、検索時間の複雑さはO(1)ですが、O(n)操作を実行することもあります。ほとんどの場合、ハッシュテーブルで要素を検索または挿入する場合、タスクは一定時間かかりますが、衝突が発生すると、衝突を解決するためにO(n)回の操作が必要になります。 集計方法 総コストを見つけるために集計方法が使用されます。大量のデータを追加する場合は、この式で償却原価を見つける必要があり