JP4503647B2 - メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー - Google Patents

メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー Download PDF

Info

Publication number
JP4503647B2
JP4503647B2 JP2007504999A JP2007504999A JP4503647B2 JP 4503647 B2 JP4503647 B2 JP 4503647B2 JP 2007504999 A JP2007504999 A JP 2007504999A JP 2007504999 A JP2007504999 A JP 2007504999A JP 4503647 B2 JP4503647 B2 JP 4503647B2
Authority
JP
Japan
Prior art keywords
value
hook
node
branch
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007504999A
Other languages
English (en)
Other versions
JP2007531114A (ja
Inventor
スミタ ラオ,
Original Assignee
キョウセラ ワイヤレス コープ.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by キョウセラ ワイヤレス コープ. filed Critical キョウセラ ワイヤレス コープ.
Publication of JP2007531114A publication Critical patent/JP2007531114A/ja
Application granted granted Critical
Publication of JP4503647B2 publication Critical patent/JP4503647B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の分野は、自動化された分類と選択のプロセスである。より詳しくは、本発明はバイナリサーチツリー生成し、使用するプロセスに関する。
バイナリサーチは、組織された配置における項目(item)を位置付ける技術である。通常、配置における項目は、項目の値に従って、たとえば、シーケンシャルリストにより組織される。バイナリサーチでは、サーチ制約、即ちキーは、配置における項目の1個の値と比較される。より大きな値が要求された場合、サーチは、より大きな値を有する配置の部分において継続し得るし、より小さい値が希望された場合、サーチは、より小さい値を有する配置の部分において継続し得る。このように、各比較は、希望値が見つかるまで、潜在的(potential)整合の数を減少する。
バイナリサーチツリーは、項目を組織するに特に有用な配置である。ツリーを生成する時に、各項目の値は、バイナリサーチツリー上で「ノード」となる。「ノード」は、ツリー上での決定点で、項目の1個の値でのセットである。ノードは、2個までの枝を有し得、1個の枝はノード値より小さい値を受け取り、もう1個の枝はノード値より大きい値を受け取る。枝に追加された最初の値は、その枝のノードとなる。値が追加されると、枝は、ノードと枝を追加することにより成長し、それによりサブツリーとなる。慣習により、1個か2個の枝を有するノードは「親」ノードと呼ばれ、各枝に追加された値は、「子」ノードと呼ばれ得る。枝を有しないノードは、リーフ(葉)と呼ばれ、ある特定のサブツリーの端末ノードを表す。
バイナリサーチツリーは、まずルート値を選択することにより配置される。ルート値は、期待値の範囲のできるだけ中央位が良い。ルート値は、ツリー上の最初のノードとなり、またサーチのための最初の比較値を表す。値がツリーに追加されると、ルート値より大きい値は、ルート値の1個の枝から延長したサブツリー上のノードとなり、ルート値より小さい値は、ルート値の第2の枝から延長したサブツリー上のノードとなる。同様に、各ノード(リーフノードを除く)は、1個の「より大きい」パスおよび1個の「より小さい」パスを表す決定点を可能にする。
一旦ツリーが配置されると、サーチルーチンは、各ノードにおける簡単な比較を行うことにより希望値を効率よく位置付ける。ツリーが典型的に配置されると、各比較は、残りの項目の約半分を考慮から除外する。サーチルーチンが希望値を位置付けた後、その値はもはや使用不能となり、ツリーから削除される。従って、ツリーは、ノードの削除を反映するため再配置される。同様に、ツリーは、新値が使用可能項目のセットに追加されると再配置される。
バイナリサーチツリーの有用性及び利点は、ツリーにおけるエレメント数が増加するに従い増加する。通常、バランスのとれたツリーでは、比較の通常の数は(「m」)は、「n」が配置されるエレメント数のとき、等式「logbase2(n)」に比例する。この関係は次の等式によって、さらに特に述べることができる。「k」が比例定数のとき、
m=klogbase_2(n)
「k」は定数なので、その値は、ノード数が増加した時に、サーチ時間の比例増に影響しない。従って、説明と単純化の目的のため、その値「k」は「1」と仮定することができる。ある特定のエレメントを位置付ける効率性は、エレメントの合計数に従い対数的に増加する。例として、256(log=8)を有するバランスのとれたサーチツリーを取り上げる。典型的なサーチは、約8個の比較を含み、各比較はツリーの高さの1個のレベルを表す。エレメント数が1024(log=10)に増加した場合、比較数が約10に増加するに過ぎない。示されるように、比較数およびエレメントの対数は、エレメントが256から1024に因数4だけ増加した場合、2だけ増加するに過ぎない。サーチ時間は比較数に直接関係しているので、サーチ時間は「logn」にも比例する。上記の例証において、「n」は、単純化のため整数log値を有するよう選択され、別の場合「n」が提供され得る。
バイナリサーチツリーは、各値がユニークであれば、値を効率的に配置することができる。しかし、既知のバイナリツリーは、複製値(duplicate value)を説明するのに全く非効率である。ツリーの各ノードは、「より大きい」または「より小さい」比較を収容するためにのみ構成されるので、複製値を説明するために、より複雑なプロセスが使用される。たとえば、既知のバイナリサーチツリーは、複製値のサーチツリーとは別のサーチルーチンを指示するポインターを提供し得る。
多くの普通のアプリケーションは、規定通り複製値を生成し、このためバイナリサーチツリー配置の使用で、通常得にはならない。バイナリサーチツリーが使用された場合、ツリー配置は不要な経費または非効率を発生させる。たとえば、メモリマネージャーは通常、使用可能なメモリブロックを希望の最小サイズで位置付けするためにサーチルーチンを実行する。さらに特に、メモリサーチルーチンは、メモリ割り当て要求を収容する最小利用可能メモリを見つけるよう試みる。一例では、各メモリブロックは256バイト長として定義される。このように2kbの使用可能ブロックは8ブロックの値を有し、25kbの使用可能ブロックは100ブロックの値を有する。メモリマネジャーが1.9kbの割り当て要求を受けた場合、メモリマネジャーは、できるだけ8の値を有するメモリブロックを、8が使用不可の場合、8より大きい最小数を有するメモリブロックを見つける。
しかし典型的な実行において、値8のいくつかのブロックが使用可能であることは可能性が高い。サーチ配置およびルーチンは、そのような重複に対して説明しなければならないし、バイナリサーチツリーが使用された場合、複製値を処理するために、追加のプロセッサおよびメモリリソースを提供する。メモリが解放され、使用可能なメモリプールに戻された場合、解放されたブロックのサイズがプールに既にあるサイズと重複することも可能性が高い。実際には、ある特定のサイズのいくつかのブロックや複製値を有するいくつかのサイズがある。このように、バイナリサーチツリーを更新するために使用されるプロセスも複製値を説明しなければならない。そのような実在の重複のため、バイナリサーチツリーは、メモリマネージャーアプリケーションに使用された場合、通常、不要なレベルの経費と非効率を追加する。
(要約)
要約すると、本発明は、複製値の場合でも項目用のセットの値を効率的に組織するためのバイナリサーチツリーを提供する。バイナリサーチツリーを生成するときに、値のセットにおける各項目の値が決定される。ある特定の値がユニークでセットにおいて1回だけ見つかる場合、そのユニーク値は、バイナリサーチツリーでノードとして使用される。値が複製であり(duplicative)、セットにおいて2回以上見つかる場合、その複製値は、バイナアリサーチツリーにおいてフックとして使用される。フックエレメントは、複製値と等しい値を有する項目を識別するために使用されるリストブランチを有する。ノードツリーは、複製値と等しいベースノードを有するノードツリーと共に、フックの第2の枝から延長され得る。ベースノードは、複製値より小さい値を保持するための第1の枝および複製値より大きい値を保持するための第2の枝を有する。
好ましい例では、改良バイナリサーチツリーは、使用可能なメモリブロックを組織し、選択するために使用される。メモリマネージャーは、各ブロックが各サイズおよび関係メモリアドレスを有する、使用可能なメモリブロックのセットを有する。ユニークサイズの各ブロックは、バイナリサーチツリーではノードとして配置され、より小さいサイズを保持するための第1の枝およびより大きいサイズを保持するための第2の枝を有する。サイズが複製である(duplicated)場合は、そのサイズは、バイナリサーチツリーにおけるフック配置として使用される。一例では、フックは、そのサイズに関係したメモリアドレスをマイナス数の中に入れることにより示され、一方全てのノードは、プラスのメモリアドレスと関係する。フックは、サイズで複製値または範囲と等しい複数メモリブロックをリストする枝を有する。またフックは、複製値と等しいベースノードを有するノードツリーと共に、ノードツリーを有する第2の枝を有する。このように、フックのリストブランチは、複製値と値において等しいサイズを識別し、一方、ノードツリーは複製値と値において等しくないサイズを識別し得る。
好都合にも、この方法は、多くの複製値を有する項目のセットの場合でさえ、効率的な分類と選択を可能にする。そのような効率的なプロセスは、メモリや処理能力が制限される装置に特に有用である。プロセスは高効率なので、メモリは、最小のプロセッサ経費で都合よく割り当て得る。
(詳細な説明)
ここで図1を参照すると、電子装置10が示される。装置10は、本発明に従う改良バイナリサーチツリープロセス(2進法検索樹形図工程)を動作する。改良バイナリサーチツリープロセスは、装置10上で動作するように図示されているが、他の目的のために他の装置上で有利に使用される場合があることを理解されたい。改良バイナリサーチツリープロセスによって、装置10は、項目の1セットが複製の数値を持つ場合でさえ項目の1セットを高効率のプロセスで、組織することが可能となる。改良バイナリサーチツリープロセスは、バイナリサーチツリーエンジン19を使用して実行し得る。バイナリサーチツリーエンジン19は個別のプロセッサ装置でも良い。またはメインプロセッサ16上で動作するプロセスとして提供され得る。バイナリサーチツリーエンジン及びプロセッサ16は、マイクロプロセッサ、プログラマブルロジックデバイス、ゲートアレイ、ディスクリートロジック、またはその他の周知のロジックデバイスとして実行可能である。メインプロセッサ16は、アプリケーション14の選択と実行を含む装置10の主要機能動作および制御を提供する。またプロセッサ16は、キーボード、ディスプレイ、スピーカー、その他のI/O装置などの入出力装置28を制御する。またこのプロセッサはトランシーバー装置30を有し得る。トランシーバー装置30は、装置10にワイヤレス通信機能を持たせることに有用である。このようにして装置10は、モバイルワイヤレスフォンまたはワイヤレス機器として動作できる。装置10は、動作にその他の装置26を必要とすることが理解されよう。たとえば、装置10は再充電可能なバッテリーシステムなどの電源を必要とする。
またプロセッサ16は、ランダムアクセスメモリ21と接続され通信を行う。メモリー21は、アプリケーションの動作、システム機能動作、ファイルの保存、およびその他の装置機能の動作を可能にするためのメモリスペースを提供する。プロセッサ16は、通常、メモリー21を管理し割り当てるメモリーマネージャー18を有する。メモリマネージャー18はプロセサ16から分離されるか、プロセッサ16上で動作するアプリケーションとなることができる。一例をあげると、メモリマネージャー18は、使用可能なメモリスペースを追跡し、組織するヒープマネージャーである。メモリマネージャー18などのメモリマネージャーは、使用しているかまたは使用可能なメモリを追跡する場合、またアプリケーションやプロセスがもはやメモリスペースを必要としない場合、メモリスペースを再請求する場合に有用である。またメモリマネージャー18は、メモリの選択されたブロックをあるアプリケーションに割り当て、メモリの保護されたエリアを提供し、より高度なメモリ機能を可能にする。たとえば使用可能なメモリが分割され過ぎた場合、メモリマネージャーはメモリスペースを再統合するために使用される。
メモリ管理は、メモリスペースが制限される装置において特に重要である。そのような装置では、一回に制限された数のアプリケーションしかメモリから動作できなく、アプリケーションとプロセッサは使用可能なメモリスペースを求めて競合する。メモリスペースが制限されているため、メモリマネジャーが使用可能なメモリを効率的に割り当て、使用することが重要である。たとえば、ある特定のアプリケーションは、プロセッサとメモリマネージャーが25KBのファイルを収納するに十分なメモリブロックを割り当てることを要求し得る。メモリマネージャーは25KBの要求を収納できる使用可能ないくつかのブロックを持ち得る。効率を最大にするために、メモリマネージャーは、メモリ要求を満す最小の使用可能なメモリブロックを捜し出そうとする。このようにメモリはより効率的に使用される。
バイナリサーチツリーエンジン19は、メモリマネージャー18によってサーチのために使用可能なメモリサイズを高効率配置に組織するために使用される。ツリーを生成し、更新するために、メモリマネージャー18は使用可能なブロック23の1セットに関する情報を提供する。この情報は、たとえば使用可能なメモリの各ブロックのサイズとスタートアドレスを含み得る。メモリブロックに関するその他の情報が提供され得ると理解されたい。バイナリサーチツリーエンジン19は、組織されたバイナリサーチツリー25を生成するために、改良バイナリサーチツリープロセスを使用可能なブロック23のセットに適用する。その後メモリマネージャー18は、ある特定メモリ割り当て要求を満す最小の使用可能メモリブロックを効率的に識別するために、バイナリサーチツリー25を使用可能となる。割り当てとサーチプロセスは高効率な方法によって行われるため、プロセッサ16は、望まない不要なメモリ管理費用を発生させることなく、メモリリソースを要求し割当てることができる。改良バイナリサーチツリーは、ヒープメモリマネージャー関して検討されるが、改良バイナリサーチツリーはその他のアプリケーションや環境において有用であり得ることは理解されたい。
ここで図2を参照すると、改良バイナリサーチツリープロセスが示される。改良プロセスは項目51の1セットを有し、その各項目は関連値を有する。示されているように、項目51のセットは未組織の方法で提供される。項目51の初期セットは、5品目を有し、各項目は固有の値を有することが示されている。項目51のセットにおける各項目は固有のものであるので、バイナリサーチツリー55は、固有の値を持った各ノード(節点)と共に生成される。たとえばノード56は、「A」値に設定でき、ノード59に達する支線60およびノード57に達する支線58を有する。一般論としてバイナリサーチツリー55の組織は、子ノード「B」は親ノード「A」より小さい値を有し、子ノード「C」は親ノード「A」より大きい値を有することを示す。ノード59は、項目「B」を含み、ノード61に達する支線62およびノード64に達する支線63を有する。上記と同様な方法により、リーフノード「D」は、その親ノード「B」より小さい値を有し、リーフノード「E」はその親ノード「B」より大きい値を有する。いったんバイナリサーチツリー55が生成されると、サーチユーティリティは、ある必要のため最適な値を効率的に捜し得る。このように、プロセス50は、項目のセットのすべての項目が固有の値を持つ時にバイナリサーチツリー55の生成を示す。
しかし、多くのアプリケーションは、複製または反復値を有する項目のセットを組織することを要求する。ある値は、特定の数字入力、英数字文字であり、または特定の範囲を表し得ると理解されたい。たとえば、組織する目的で、100という値は95という値また110という値と同等と考えられる。このようにサーチプロセスの粒状性(granularity)は減少され得る。またある値は、他の情報たとえばアドレス位置またはフラグ設定と関係し得ると理解されたい。このその他の情報は、バイナリサーチツリーの構造内に保存されるか、または外部情報へのポインターまたはその他のインジケーターを提供し得る。
プロセス52は、項目51のセットに加算される複製値66を示す。このように、項目のセットに2個の「B」項目があり、そのため品目のセットは固有の値をもはや有しない。新しい値66が項目のセットに追加された場合、プロセス52は、まずどの項目が複製値を有するか識別し、その後その複製値から延長したサブツリーを識別する。プロセス52に示されるように、「B」項目は複製となっている。それでプロセス52は、「B」値を含むバイナリーサーチツリー55のノード59を識別する。プロセス52は、ノード59から延長した全サブツリーを識別する。
その後、プロセス54は、新セット値53を配置するために、更新されたバイナリサーチツリー70を生成する。更新されたバイナリサーチツリー70は、複製値を表す「フック」69を含む。「フック」という言葉はソフトウェア技術での意味を持ち得るが、ここでの「フック」はバイナリサーチツリーにおける比較構造を識別するために使用される。さらに特に、フックエレメント69はノードエレメントと同様な構造を有しているが、特性は異なる。たとえばフックは2個の支線を有し得るが、一方の支線は複製値のリストを含む構造であり、他方の支線はサブツリーを含む構造となり得る。フックはノードと同じ全体構造を使用するので、フックは効率的に実行され得る。このようにフック69は、バイナリサーチツリー用の新タイプのエレメントであり、等値または複製値の存在を示すのに使用される。
図2に示すように、フック69は、複製値と関係するサブツリー67の受け取り用の支線1個を有する。たとえばサブツリー67は、その前のバイナリサーチツリー55からのサブツリー65である。もちろん、フックがリーフノードを置き換えた場合、サブツリーは追加されない。しかし、追加のツリー構造が必要になった場合、後に支線が生成される。フック69も複製値の実例識別用の別の支線を有する。プロセス54に示されるとおり、この支線は、一つの複製「B」値が使用可能または割り当て可能であることを示す。このように、この支線は、項目リスト53からの各複製値をリストにする働きを行う。
フックを使用することにより、バイナリサーチツリーは複製値を効率的に収納し得る。フックエレメントの追加は、たとえばサーチプロセスへの比較またはレベルの追加によってサーチ時間が確実に増加となるが、サーチ時間への全体の影響は比較的少ない。以前検討したとおり、サーチ時間はツリーのエレメント数のlogに関係する。このようにツリーに一個のフックを追加することは、サーチ時間のlog(n)からlog(n+1)への増加となる。多くのフックを有する大ツリーでもサーチ時間の増加は許容でき、いくつかのフックが多くの複製を有した場合、ある特定のフックにリストされた複製はサーチツリーと同レベルにあると考えられるので、サーチ時間への影響は更に小さくなる。「フック」は、バイナリサーチツリーの効率をメモリ管理などの多くの新しいアプリケーションに拡張し可能にする。
下記の表1は、複製値が改良バイナリサーチツリー上でどのように表示されるかを示す。1個のみの値の事例が存在する場合、その値はツリー上でノードとして表示される。もし2個の等値が存在する場合、一方はフックのリストブランチ上で表示され、他方はフックのサブツリーブランチ上に表示される。追加の複製はリストブランチに追加される。
Figure 0004503647
記載されたように、ノードとフックは各々、項目を配置し選択するのに有用な値またはサイズに関する情報を保持する。ノードとフックの構造は似ており、その構造がノードとフックが項目に関する追加情報に関係するようにし得る。たとえば構造は、項目の位置またはその他の属性を識別し得る。この追加情報は、構造自体内に保持するか、または構造が外部情報を識別するポインターかフラグを提供し得る。一例をあげると、構造が値を保持し、その値が位置する場所を識別するデータも有する。そのようなバイナリサーチツリーを設置した場合、ノードは、位置データのフラグを「0」に設定することにより識別され、フックは、位置データのフラグを「1」に設定することにより識別される。このようにサーチルーチンは、エレメントがノードエレメントかフックエレメントかを識別するために、単純にフラグを識別する。ある特定の効率的な実行において、フラグは位置データの最も重要なビットであり、情報の符号を表す。位置データは、しばしばプラス情報であるので、マイナス数の存在は好都合にもその情報がフック構造を示すものとして識別する。
あるいは、フックは、たとえばフックの値をマイナス数に設定することにより、またはその値のビット表示において別のフラグを立てることにより識別し得る。このように、サーチルーチンは、フックとノードを簡単にかつ効率的に区別し得る。値がプラスかまたはフラグビットが設定されていない場合は、サーチルーチンは値をノードと識別し、「より大きい」および「より小さい」の比較を適用する。値がマイナスかまたはフラグビットが設定されている場合は、サーチルーチンは値をフックとして識別し、一つの支線に対し値のリストを捜し、第2の支線から延長したサブツリーを捜す。フックは、アプリケーションの特定の要求に従って、代替の方法によって識別され得ることを理解されたい。
ここで図3Aを参照すると、改良バイナリーサーチツリーのより具体的な事例が示される。バイナリサーチツリー80は数値のセットを組織することが示される。各値もまた、サーチプロセスにおいて有用な追加の情報またはデータと関係し得る。たとえば値は、値が見つかれ得る場所を識別する位置データに関係し得る。バイナリサーチツリー80において複製値はないので、バイナリサーチツリー80上で各値は、ノードとして固有に識別し得る。各ノードは、2個の支線、一方はノードより小さい値を受け取る枝、他方はノードより大きい値を受け取る枝、を支持する能力がある。たとえばノード86は750の値を有する。右の支線はより大きな900の値を有し、左の支線は600のより小さいノード87を有する。同様に、ノード87は、700の値を有するノード89を有する右の支線および350の値を有するノード88を有する左の支線を有する600の値を有する。慣習に従い、親ノード87は、子ノード88および89を含むサブツリー90を備える。
図3Aに示されるように、第2の値「600」は値のセットに追加される。このようにバイナリサーチツリーは複製即ち第2の値600を収納しなければならない。複製600を収納するため、フック91が、更新されたバイナリサーチツリー82に追加される。慣習に従い、フックは楕円形で示され、ノードは長方形で示される。フック91は、複製値の等値と共に追加される。フック91は2個のブランチを有し、1個は使用可能な複製値のリスト97を保持するのに使用される。バイナリサーチツリー82では、一方の複製値600はリーフノード93として示される。フック91のもう一方の支線は、親ノード94から延長したサブツリー92を受け取る。ノード94もその複製値に設定される。このようにサブツリー92はサブツリー90と同様である。
一例をあげると、各ノードとフックは、値およびその値と場所を関係づける追加のデータポイントを有する。位置データポイントはメモリアドレスまたは他の位置インジケータであり得る。一般論として、そのような位置データは、プラス(非マイナス)情報として位置検索の目的のみに有用である。従って、位置データ用の符号(sign)ビットは、ノードエレメントをフックエレメントから識別するフラグとして使用され得る。更に、アドレス情報は一般的に固有の値を選択する際に必要なので、識別目的にアドレスを使用することは特に効率的である。図3Bは、サーチプロセスがバイナリサーチツリーのエレメントがフックかノードかを決定し得る方法についてのフローチャート100を示す。フローチャート100は、サーチプロセスがブロック105においてバイナリサーチツリー(BST)の新エレメントに移動することを示す。ブロック106に示すように、サーチプロセスは、新エレメントに関係するアドレスデータポイントを検索する。アドレスデータポイントはエレメントのデータ構造内に保持され得るか、またはアドレスが見つけ得る他の場所に向かい得る。新エレメントの本値も検索され得るか、またはプロセス中に後で検索され得る。
その後、プロセス100は、位置データポイントがプラス数かマイナス数かを決定する。このように符号ビット(通常、最上位ビット)は、フックとノードの識別を支援するフラグとして使用される。さらに特に、アドレスがプラスの場合、ブロック108に示されるとおり新エレメントはノードとして識別され、アドレスがマイナスの場合、ブロック109に示されるとおり新エレメントはフックとして識別される。エレメントがノードの場合、一方の支線は本値より小さい値を保持するのに使用され(ブロック111)、他方の支線は本値より大きい値を保持するのに使用され得る(ブロック113)。以前の説明のとおり、ノードは、サーチツリーが設置される方法に従って、支線無し、支線1本、支線2本を持ち得る。新エレメントがフックの場合、一方の支線は本値に等しい値のリストを保持するのに使用され(ブロック115)、他方の支線はサブルート値としての本値を持つサブツリーを保持するのに使用され得る(ブロック117)。
再び図3Aを参照すると、バイナリサーチツリー82は、サブツリー92が親ノード600、ノード95を有する左支線、ノード96を有する右の支線を含むことを示す。使用において、サーチプロセスはフック91に出会うと推定され、サーチプロセスが値「600」を使用することを望んだ場合、複製値93が割り当てプロセスによって使用のため割り当てられると推定される。しかし、サーチプロセスが「600」値の使用を望まなかった場合、そのプロセスはサブツリー92を継続する。このように、バイナリサーチツリー82は、項目が複製値を持っている場合でも値項目の高効率的な配置を提供する。
バイナリーサーチツリー84は、「600」で項目のセットに追加されるさらに多くの値を示す。600の値が追加されるごとに、その複製項目は、フック91に関係するリスト99に追加される。たとえば、リーフノード98は、項目のセットに追加された次の複製600を表す。600の値が割り当てられまた使用されると、複製ノードはリスト99から削除される。最後に、最後のリーフノードがリスト99から削除されると、フック91はノードツリー92に置き換えられる。
複製「2000」もサーチツリー84に追加されている。従って、前のサーチツリー82からの複製「2000」は、「2000」フック101に置き換えられている。「20000」の一方の事例はフックのリストブランチ上にリーフノード102として現れ、他方の「2000」は、フックのサブツリーブランチ上のノード103として現れる。追加の枝は、必要に応じ新値追加によってノード103から延長され得る。たとえば「2025」が追加された場合、ノード103からの枝として「2025」のノードが追加される。
ここで図4を参照すると、バイナリサーチツリープロセス110のフローチャートが示される。プロセス110において、ブロック112に示されるように値項目のセットが提供される。プロセスは、ブロック114に示されるように、項目のセットから項目の一つを選択し、項目の値を識別する。プロセスは、ブロック116に示されるとおり、選択された値がユニークか、バイナリサーチツリーに既に存在する値の複製かを決定する。値がバイナリサーチツリーにとってユニークである場合、ブロック119に示されるとおり、ノードが選択された値でサーチツリーに追加される。ブロック121に示されるとおり、ノードは、選択された値より大きい値を受け取る枝を持ち得る。またブロック123に示されるとおり、ノードは、選択された値より小さい値を受け取る枝を持ち得る。ブロック116において、選択された値がバイナリサーチツリーに既に存在することまたは項目のセットの値の複製であることが判明した場合、ブロック126に示されるとおり、フックが、選択された数値でバイナリサーチツリーに追加される。前述のとおり、フックはバイナリサーチツリー用の新型のエレメントで、複製値または反復値の存在を示す。一例をあげるとフックは、マイナスのアドレス数とフック値を関係させることによりノードと識別される。このように、サーチ演算はアドレス位置の符号をテストし、マイナスの場合はエレメントをフックとして識別し得る。一旦フックが一定の値で追加されると、複製値がそのフックのリストブランチに追加される。このように、ブロック128に示されるとおり、フックの一方の枝が複製値にて項目をリストにする。フックの他方の枝は、ブロック131に示されるとおり複製値と同じ値の親ノード付きのサブツリーを受け取るために使用される。プロセス110を使用して、複製または反復値が存在していても高効率なバイナリサーチツリーが生成され得る。
ここで図5を参照すると、バイナリサーチツリー140を生成するプロセスが示される。プロセス140は、さらに特に、使用可能なメモリブロックのセットを組織するためのバイナリサーチツリーに焦点をあてる。このように、ブロック141に示されるとおり、使用可能なメモリブロックのセットが備えてある。使用可能なメモリブロックのセットは、ブロックサイズ、スタートアドレス、ストップアドレスによって識別され得る。使用可能なメモリブロックを識別するために、その他の情報が含まれ得ることは理解されたい。またメモリブロックは、特定の数値よりはむしろ範囲を使用して識別され得ることも理解されたい。たとえば、1000の使用可能なメモリサイズは、1000の数値より大きいおよび小さいあるバイト数を含み得る。メモリブロック識別の粒度(granularity)を減少させるため、メモリ使用の効率性をいくらか減じ得るが、メモリブロックの割り当てを単純化することは可能であり得る。当分野の技術が、粒度と効率のトレードオフを識別し、適合させ得ることは理解されたい。
その後プロセス140は、ブロック143に示されるとおり、使用可能メモリブロックのセットからメモリブロックの一つを選択し、そのサイズを識別する。ブロック145では、プロセスはメモリサイズがユニークかまたはバイナリサーチツリーの他の値の複製かを決定する。メモリブロックがユニークの場合、ブロック155に示されるとおり、ノードがバイナリサーチツリーに識別されたサイズで追加される。ブロック158に示されるとおり、枝が、ノ−ドサイズより大きいサイズを受け取るためにそのノードに追加され、ブロック160に示されるとおり、枝が、選択されたサイズより小さいメモリブロックためのノードに追加される。ブロック162に示されるとおり、バイナリサーチツリーのノードとしてメモリマネジャーは、ノードと関係するメモリブロックを割り当てることができる。
メモリサイズが、ブロック145で複製と決定された場合は、フックはその複製サイズ147で追加される。さらに特に、フックは、バイナリサーチツリーにおいてその複製値でノードを置き換えるために使用される。フックは特別な種類のエレメントで、等値、複製値、または反復値の存在を示すために使用される。このようにフックは割り当て可能な項目ではなく、情報提供および組織系統のフローを容易にするために使用される。一旦フックが一定の値で追加されると、複製値がそのフックのリストブランチに追加される。従って、ブロック149に示されるとおり、フックの一方の枝は、すべての複製値をリストするために使用される。フックの他方の枝は、複製値とは等しくない値を保持するために使用される。さらに特に、この枝は、複製値と等値のノードから延長したサブツリーを受け取る。フック自体は割り当てや使用が不可であるが、メモリマネージャーは、フックのリストブランチ上のメモリブロックのリストにおいて識別できる項目を割り当てることができる。
ここで図6を参照すると、バイナリサーチツリー170を生成するプロセスが示される。プロセス170において、ブロック171に示されるとおり、使用可能なメモリブロックのセットが提供される。メモリブロックは、バイナリサーチツリーにおいてブロック173に示されるサイズに従って組織される。ブロック175に示されるとおり、メモリマネージャーは、新らしい使用可能なメモリブロックを特定のサイズで提供する。メモリブロックのサイズは、メモリサーチツリーに既に設置されている項目と比較される。ブロック177に示されるとおり、新値は、バイナリサーチツリー上に既に存在しているフックと比較される。新サイズがフックとして既に表わされている場合は、ブロック191に示されるとおり、新サイズはリーフノードとしてそのフックのリストに追加される。従ってこのリストは、その特定のサイズで使用可能な複製エレメントを表す。新サイズが、現在あるフックとして存在しない場合は、新サイズはバイナリサーチツリーの現在あるノードと比較される。新サイズがユニーク、従って複製ではない場合は、ブロック193に示されるとおり、バイナリサーチツリーは、新サイズで新ノードと共に更新される。しかし新サイズがノードの複製の場合、ブロック182に示されるとおり、その複製値用のサブツリーがあれば、識別される。ブロック184に示されるとおり、フックは複製値で前のノードを置き換え、ブロック186に示されるとおり、その複製値用のサブツリーはフックの一方の枝に移動する。その後、複製値は、フックの他方の枝へ追加され、使用可能な複製項目のリストを保持するのに使用される。
ブロック184において、フックは、フックのデータにフラグを設定することによって識別され得る。たとえば、フックはメモリブロック用のサイズ値を有し、またそのメモリブロック用の関係したスターティングメモリアドレスも有する。プロセス170は、メモリアドレスをマイナス数として保存させ、それにより、後からのサーチプロセスに対しフックエレメントの存在を示す。
ここで図7を参照すると、メモリブロック200を使用した方法が示される。ブロック201に示されるとおり、方法200では、使用可能なメモリブロックのセットが提供される。ブロック203に示されるとおり、メモリブロックは、サイズに従ってバイナリサーチツリーの中に組織される。バイナリサーチツリーは、ノードとフックによって構築され、それにより複製または反復値を効率的に組織することができる。ブロック205では、メモリマネージャーは、選択されたサイズで使用可能なメモリブロックを要求する。一例をあげると、バイナリサーチツリーは、メモリマネージャーの要求に対応するため最小の使用可能なメモリブロックを見つけるために使用される。このように、メモリマネージャーは、必要とされるアプリケーション用の最小サイズのメモリブロックを割り当て得る。
最小サイズのメモリブロックを見つける時、サーチルーチンは、通常、バイナリサーチツリーの多くのノードおよびフックエレメントにおいて比較を行う。各エレメントでは、サーチルーチンはエレメントがノードかフックかを識別し、値比較を行い、より良い値を見つけるためにバイナリツリー内をトラバースし続け得る。ブロック206に示されるとおり、サーチルーチンのエレメントと関係するアドレスデータを検索し得る。プロセス200はアドレスデータを使用するが、他のデータやフラグが使用され得ることを理解されたい。アドレスデータは、エレメントがフックかノードかを識別するために、サーチルーチンによって使用される。たとえば、アドレスがマイナス数の場合エレメントはフックであり、アドレスがプラス数の場合エレメントはノードである。このように、アドレスは、ノードとフックを区別するために使用され、また選択されたメモリブロックを割り当てる時にもメモリマネージャーを支援する。
ブロック208に示されるとおり、最小サイズがバイナリサーチツリーのノードに示される場合、ブロック217に示されるとおり、メモリマネージャーはその最小サイズを割り当てることができ、バイナリサーチツリーはそのサイズのノードを削除するために更新される。しかし、ブロック208に示されるとおり、最小サイズがフックに示される場合、リストのリーフノードの1個が削除され、メモリマネジャーに割り当てられる。ブロック210に示されるとおり、割り当てられたメモリブロックがフックリスト上の最終リーフノードである場合、ブロック212に示されるとおり、フックのもう一方の枝のサブツリーが識別される。ブロック215に示されるとおり、その後フックは削除され、ノードツリーに置き換えられる。このように、バイナリサーチツリーは、値が再びユニーク値となることを示す。
フックは代替の方法によって識別し得ることを理解されたい。一例をあげると、フックはその数字符号によって識別される。さらに特に、フック値はマイナス数として識別され、一方、ノード値はプラス数として識別され得る。このように、フックまたはノードの絶対値は項目の値を表し、符号はエレメントが、フックかノードかを表す。
本発明の特定の好ましい、また代替の実施形態が開示されたが、上記に記載された技術について、多くの多様な修正や拡張が、本発明の教示を使用して実施され得ることを理解されたい。そのような修正や拡張はすべて、添付の特許請求の範囲の真の精神と範囲内に入ると意図される。
図1は、本発明に従う、バイナリサーチツリーを使用したシステムのブロック図である。 図2は、本発明に従う、バイナリサーチツリーを生成するプロセスのブロック図である。 図3Aは、本発明に従う、バイナリサーチツリーを使用して組織された値のブロック図である。 図3Bは、本発明に従う、バイナリサーチツリーを使用したサーチルーチンのブロック図である。 図4は、本発明に従う、バイナリサーチツリーを生成するプロセスのフローチャ−トである。 図5は、本発明に従う、バイナリサーチツリーを生成するプロセスのフローチャ−トである。 図6は、本発明に従う、使用可能なメモリブロックのためのバイナリサーチツリーを生成するプロセスのフローチャ−トである。 図7は、本発明に従う、使用可能なメモリブロックを選択するためのバイナリサーチツリーを使用するプロセスのフローチャ−トである。

Claims (17)

  1. メモリを管理する方法であって、
    使用可能な複数のメモリブロックを提供することであって、各メモリブロックは、サイズを有している、ことと、
    複数のエレメントら構成されるツリーを提供することであって、各エレメントは、0個から2個までの枝と、値と、インジケータとを有しており、該インジケータは、エレメントがさらにフックエレメントであるか否かを指示することが可能であり、各フックエレメントは、リンクされたリストへの第1の枝と、サブツリーへの第2の枝とを備えており、該リンクされたリストにおける各エレメントは、該フックエレメントの値と同じ値を有しており、該サブツリーのルートは、該フックエレメントの値と同じ値を有するエレメントであり、該使用可能な複数のメモリブロックの各々は、関連するエレメントの値に等しい関連するメモリブロックのサイズを有する1つのエレメントに関連している、ことと、
    要求のサイズから構成されるメモリの割り当てを要求することと、
    該割り当ての要求を満たす使用可能なメモリブロックのうちの1個を探索することであって、該探索するプロセスは、
    該要求のサイズを第1のエレメントの第1の値と比較することと、
    該第1のエレメントがフックエレメントであることを該インジケータが指示するか否かと、該第1の値が該要求のサイズに等しいか否かとを決定することと、
    該インジケータがフックエレメントを指示し、該第1の値と該要求のサイズとが等しい場合に、該フックエレメントの第1の枝にトラバースすることと、
    該インジケータがフックエレメントを指示し、該第1の値と該要求のサイズとが等しくない場合に、該フックエレメントの第2の枝にトラバースすることと、
    該インジケータがフックエレメントを指示せず、該要求のサイズが該第1の値よりも大きい場合に、該第1の値よりも大きな値有するエレメントから構成される枝にトラバースすることと、
    該インジケータがフックエレメントを指示せず、該要求のサイズが該第1の値よりも小さい場合に、該第1の値よりも小さな値有するエレメントから構成される枝にトラバースすることと、
    フックエレメントではなく、該要求の値と同じ値を有するエレメントが要求のエレメントに到達するまで、決定することとその後にトラバースすることとを継続し、その結果、
    該要求のエレメントを該ツリーから除外することと、
    該除外されたエレメントに関連するメモリブロックを、該メモリの要求に対して使用可能なようにすることと
    をさらに包含する、ことと
    を包含する、方法。
  2. 各エレメントにアドレスを提供することと、
    該アドレスとして負の数を提供することによって、エレメントがフックエレメントであることを指示することと
    をさらに包含する、請求項1に記載の方法。
  3. 前記関連するエレメントの値に等しいことは、該関連するエレメントの絶対値に等しいことをさらに包含し、前記インジケータは、該値が負である場合に、該エレメントがフックエレメントであることを指示する、請求項1に記載の方法。
  4. 実行可能な命令に応答するプロセッサによってアクセス可能なコンピュータメモリに存在するバイナリサーチツリーを更新する方法であって、
    複数のノードら構成されるバイナリサーチツリーを提供することであって、各ノードは、2個までの枝と、値と、インジケータとを有しており、該インジケータは、ノードがさらにフックノードであるか否かを指示することが可能であり、フックノードは、リンクされたリストへの第1の枝と、該フックノードと同じ値を有するノードへの第2の枝とを備えており、該リンクされたリストにおける各ノードは、該フックノードの値と同じ値を有している、ことと、
    該バイナリサーチツリーに追加されるべき新値を受信することと、
    該新値が該複数のノードのうちの1個の値の複製であることを決定することと、
    サブツリーを識別することであって、該サブツリーの最上位ノードは、該複製値を有するノードである、ことと、
    結合ポイントを識別することであって、該結合ポイントは、該複製値を有するノードの上位側に現在結合されている枝が存在する場合に、該複製値を有するノードの上位側に枝が結合されている場所である、ことと、
    該サブツリーの最上位ノードの上にフックノードを挿入することであって、該フックノードは該複製値を指示している、ことと、
    該フックノードの該第2の枝から該サブツリーを延長することと、
    該フックノードの該第1の枝からリンクされたリストを延長することであって、該リンクされたリストは、該複製値のうちの1個を識別する、ことと、
    結合ポイントが存在する場合に、該フックノードの上位側に該結合ポイントを結合することと
    を包含する、方法。
  5. 前記ノードを前記フックノードに置き換えることは、値の符号を変更することを含む、請求項4に記載の方法。
  6. 前記インジケータは、メモリアドレスである、請求項4に記載の方法。
  7. 前記インジケータは、前記メモリアドレスが負である場合に、前記ノードがフックノードであることを指示する、請求項6に記載の方法。
  8. 値のセットに追加されるべき第2の新値を受信することと、
    該第2の新値が前記フックノードの値の複製であることを決定することと、
    該フックノードから枝分れしているリンクされたリストに新ノードを追加することと
    をさらに包含する、請求項4に記載の方法。
  9. RAMメモリと、
    入出力サブシステムと、
    プロセッサと、
    メモリ管理プロセスを実行するバイナリサーチツリーエンジンと
    を備えるハンドヘルドポータブル装置であって、該メモリ管理プロセスは、
    要求のサイズから構成されるメモリの割り当て要求を受信することと、
    該割り当て要求を満たす使用可能なメモリブロックを探索することと
    をさらに包含し、該探索するプロセスは、
    バイナリツリーをトラバースすることであって、該ツリーは、複数のエレメントら構成され、各エレメントは、0個から2個までの枝と、値と、インジケータとを有しており、該インジケータは、該エレメントがさらにフックエレメントであるか否かを指示することが可能であり、フックエレメントは、リンクされたリストへの第1の枝と、サブツリーへの第2の枝とを備えており、該サブツリーのルートは、該フックエレメントの値と同じ値を有するエレメントであり、使用可能な複数のメモリブロックの各々は、関連するエレメントの値に等しい関連するメモリブロックのサイズを有する1つのエレメントに関連している、ことと、
    該要求のサイズを第1のエレメントの第1の値と比較することと、
    該第1のエレメントがフックエレメントであることを該インジケータが指示するか否かと、該第1の値が該要求のサイズに等しいか否かとを決定することと、
    該インジケータがフックエレメントを指示し、該第1の値と該要求のサイズとが等しい場合に、該要求のサイズと同じ値を有するエレメントのリンクされたリストにトラバースすることと、
    該インジケータがフックエレメントを指示し、該第1の値と該要求のサイズとが等しくない場合に、該フックエレメントの第2の枝における該要求のサイズと同じ値を有するエレメントにトラバースすることと、
    該インジケータがフックエレメントを指示せず、該要求のサイズが該第1の値よりも大きい場合に、該第1の値よりも大きな値有するエレメントから構成される枝にトラバースすることと、
    該インジケータがフックエレメントを指示せず、該要求のサイズが該第1の値よりも小さい場合に、該第1の値よりも小さな値有するエレメントから構成される枝にトラバースすることと、
    フックエレメントではなく、該要求の値と同じ値を有するエレメントが要求のエレメントに到達するまで、決定することとその後にトラバースすることとを継続し、その結果、
    該要求のエレメントを該ツリーから除外することと、
    該除外されたエレメントに関連するメモリブロックを、該メモリの要求に対して使用可能なようにすることと
    をさらに包含する、装置。
  10. トランシーバーとアンテナとをさらに備える、請求項9に記載の装置。
  11. バイナリサーチツリーにおける探索の方法であって、該バイナリサーチツリーは、実行可能な命令に応答するプロセッサによって読み取り可能なコンピュータメモリに存在し、該プロセッサは、該方法を実行し、
    該方法は、
    バイナリサーチツリーにおいて新エレメントに移動することであって、該エレメントは、値を有している、ことと、
    該新エレメントに関連するデータフラグを検索することと、
    該データフラグが設定されているか否かを決定することと、
    該決定するステップに応答して、該新エレメントがフックエレメントであることを識別することであって、該フックエレメントは、リンクされたリストへの第1の枝と、サブツリーへの第2の枝との2本の枝を備え、該リンクされたリストにおける各エレメントは、該フックエレメントの値と同じ値を有し、該サブツリーのルートは、該フックエレメントの値と同じ値を有するエレメントである、ことと、
    該値との値の比較を実行することと
    を包含する、方法。
  12. 前記プロセッサによって実行される前記方法は、
    前記比較の実行に応答して、前記リンクされたリストから1個のメンバーを割り当てること
    さらに包含する、請求項11に記載の方法。
  13. 前記プロセッサによって実行される前記方法は、
    前記比較の実行に応答して、該サブツリーの上のエレメントに移動すること
    さらに包含する、請求項11に記載の方法。
  14. 前記データフラグは、メモリアドレスである、請求項11に記載の方法。
  15. 前記データフラグは、メモリアドレス用の符号ビットである、請求項11に記載の方法。
  16. 前記データフラグは、前記値用の符号ビットである、請求項11に記載の方法。
  17. プロセッサによって読取り可能なコンピュータメモリに存在し、該プロセッサによって実行される命令によって命令されるようにトラバースすることが可能なバイナリサーチツリーであって、
    第1の値と2個の枝とを有するノードエレメントであって、
    該第1の値よりも大きい値のみを有する第1の枝と、
    該第1の値よりも小さい値のみを有する第2の枝と
    を備える、ノードエレメントと、
    第2の値と2個の枝とを有するフックエレメントであって、
    リンクされたリストから構成され、該第2の値と等しい値のみを有する、第1の枝と、
    サブツリーから構成される第2の枝であって、該サブツリーのルートは、該第2の値に等しい値から構成されるエレメントである、第2の枝
    を備える、フックエレメントと
    を備える、バイナリサーチツリー。
JP2007504999A 2004-03-26 2005-03-11 メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー Expired - Fee Related JP4503647B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/810,753 US7225186B2 (en) 2004-03-26 2004-03-26 Binary search tree system and method
PCT/US2005/008300 WO2005101248A1 (en) 2004-03-26 2005-03-11 Binary search tree with hooked duplicates for memory allocation

Publications (2)

Publication Number Publication Date
JP2007531114A JP2007531114A (ja) 2007-11-01
JP4503647B2 true JP4503647B2 (ja) 2010-07-14

Family

ID=34962463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007504999A Expired - Fee Related JP4503647B2 (ja) 2004-03-26 2005-03-11 メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー

Country Status (3)

Country Link
US (1) US7225186B2 (ja)
JP (1) JP4503647B2 (ja)
WO (1) WO2005101248A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US8176051B2 (en) * 2004-05-27 2012-05-08 International Business Machines Corporation Search via fast case insensitive ASCII tree
US9646107B2 (en) 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction
US7620632B2 (en) 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US20060101192A1 (en) * 2004-11-09 2006-05-11 Zilavy Daniel V Systems and methods of nonvolatile memory management
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US20080162432A1 (en) * 2006-12-29 2008-07-03 Wen-Shan Wang Search table for unary k-th order exp-golomb decoder
US9367553B2 (en) * 2006-12-30 2016-06-14 Sap Se Computer file system traversal
US8806324B2 (en) * 2007-08-03 2014-08-12 Sap Ag Annotation data filtering of computer files
US8341183B2 (en) * 2008-10-10 2012-12-25 International Business Machines Corporation Representing the allocation of integers
CN102012870B (zh) * 2010-11-18 2012-05-23 清华大学 内存分配方法
US9436780B2 (en) * 2012-07-10 2016-09-06 Seiko Epson Corporation Constructing incremental tree model for vein image recognition and authentication
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US11494119B2 (en) 2020-09-10 2022-11-08 Micron Technology, Inc. Memory searching component

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058460A (en) 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
GB9717718D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Memory management with compaction of data blocks
US6178414B1 (en) * 1997-12-16 2001-01-23 Nortel Networks Limited Method and apparatus for updating and searching an ordered list of values stored within a memory resource
US6826561B2 (en) * 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US6917954B2 (en) * 2001-05-30 2005-07-12 Mosaid Technologies, Inc. Load balancing in IP address lookup
WO2003081461A1 (en) 2002-03-26 2003-10-02 Wiral Ltd. Search means containing fixed-length addresses generated by a hash function
US7076511B1 (en) * 2002-05-07 2006-07-11 Oracle International Corporation Simplified deallocation of memory for programming objects

Also Published As

Publication number Publication date
US7225186B2 (en) 2007-05-29
JP2007531114A (ja) 2007-11-01
US20050216445A1 (en) 2005-09-29
WO2005101248A1 (en) 2005-10-27

Similar Documents

Publication Publication Date Title
JP4503647B2 (ja) メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー
US11468027B2 (en) Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor
KR100791325B1 (ko) 비휘발성 메모리를 관리하는 장치 및 방법
US7117294B1 (en) Method and system for archiving and compacting data in a data storage array
US10332075B2 (en) Nearest known person directory function
US20150006495A1 (en) Methods and apparatuses to optimize updates in a file system based on birth time
JP2018518733A (ja) ファイル操作方法及び装置
CN102915382A (zh) 一种基于索引的数据库的数据查询方法和装置
CN106682215B (zh) 一种数据处理方法和管理节点
JP2006107434A (ja) インデックス付与強制クエリ
US11308066B1 (en) Optimized database partitioning
CN114138193B (zh) 一种分区命名空间固态硬盘的数据写入方法、装置及设备
CN101826107A (zh) 哈希数据处理方法和装置
CN104035925A (zh) 数据存储方法、装置和存储系统
CN114090695A (zh) 分布式数据库的查询优化的方法和装置
CN106844319A (zh) 报表生成方法及装置
CN111177019B (zh) 一种内存分配管理方法、装置、设备及存储介质
WO2024078122A1 (zh) 数据库表扫描的方法、装置以及设备
KR102354343B1 (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
CN112835638A (zh) 一种基于嵌入式应用程序的配置信息管理方法及装置
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
KR20220099745A (ko) 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치
CN114564208A (zh) 安卓应用程序的反编译方法、电子设备和介质
KR102214697B1 (ko) 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램
JP2020135530A (ja) データ管理装置、データ検索方法及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100412

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100421

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees