(57)【要約】      （修正有）【課題】電子コンピュータ装置により、状態設定のプレフィックスツリーの表現を水平順序付けエッジシーケンス（ＬＯＥＳ）として符号化し、状態設定の表現をより積極的に圧縮する。【解決手段】水平順序付けエッジシーケンスが、各内ツリーノードを、ビットの組合せとして、左から右へ、且つ上から下の順番で符号化するステップと、電子コンピュータ装置により、プレフィックスツリー内に完全なサブツリーの存在を特定するステップと、前記電子コンピュータ装置により、前記符号化における符号点を用いて、前記サブツリーを示すステップと、を含む。【選択図】図４
2014006900.tif 000002
【特許請求の範囲】
【請求項１】
状態設定を符号化する方法であって、
電子コンピュータ装置により、状態設定のプレフィックスツリーの表現を水平順序付けエッジシーケンス（ＬＯＥＳ）として符号化するステップであって、前記水平順序付けエッジシーケンスが、各内ツリーノードを、ビットの組合せとして、左から右へ、且つ上から下の順番で符号化するステップと、
前記電子コンピュータ装置により、前記プレフィックスツリー内に完全なサブツリーの存在を特定するステップと、
前記電子コンピュータ装置により、前記符号化における符号点を用いて、前記サブツリーを示すステップと、を含む方法。
【請求項２】
前記符号点は「００」である、請求項１に記載の方法。
【請求項３】
前記完全なサブツリーを、そのルートノードを除いて、前記プレフィックスツリーから刈り取るステップをさらに含む請求項１に記載の方法。
【請求項４】
状態設定を符号化するよう設定されたシステムであって、
記憶装置及び電子プロセッサを有する電子コンピュータ装置であって、前記電子プロセッサが、
状態設定のプレフィックスツリーの表現を、水平順序付けエッジシーケンス（ＬＯＥＳ）として符号化し、前記水平順序付けエッジシーケンスが、各内ツリーノードを、ビットの組合せとして、左から右へ、且つ上から下への順番で符号化し、
プレフィックスツリー内の完全なサブツリーの存在を特定し、
符号化における符号点を用いて、前記サブツリーを示すよう設定された、電子コンピュータ装置を含むシステム。
【請求項５】
前記符号点は「００」である、請求項４に記載のシステム。
【請求項６】
前記電子コンピュータ装置は、前記完全なサブツリーを、そのルートノードを除いて、前記プレフィックスツリーから刈り取るよう動作する、請求項４に記載のシステム。
【請求項７】
状態設定を復号する方法であって、
電子コンピュータ装置により、状態設定の二値のプレフィックスツリーに関する水平順序付けエッジシーケンス（ＬＯＥＳ）符号を復号するステップと、
電子コンピュータ装置により、前記プレフィックスツリー内の完全なサブツリーを示す符号点の存在を特定するステップと、
電子コンピュータ装置により、前記プレフィックスツリーの前記サブツリーの存在を示す特定成功の結果を戻すステップと、を含む方法。
【請求項８】
前記符号点は「００」である、請求項７に記載の方法。
【請求項９】
状態設定を復号するよう設定されたシステムであって、
記憶装置及び電子プロセッサを有する電子コンピュータ装置であって、前記電子プロセッサが
状態設定を示すプレフィックスツリーに関する水平順序付けエッジシーケンス（ＬＯＥＳ）符号を復号し、
前記プレフィックスツリー内の完全なサブツリーを示す符号点の存在を特定し、
前記プレフィックスツリーの前記サブツリーの存在を示す特定成功の結果を戻すよう設定された、電子コンピュータ装置を含むシステム。
【請求項１０】
前記符号点は「００」である、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の記述された実施形態は、様々な技術分野及び産業目的において、幅広い用途で用いることが可能であることを理解されたい。例えば、本発明の記述された実施形態を適用して、ドメイン独立型プランニング内で、動的なプログラミング、及びその他の記録技術を利用することができる、或いは、その他のプランニング環境、ソフトウェアのモデル検査ルーチン（例えば、ソフトウェア符号をデバッグするためのモデル検査）、及び／又は（ノードネットワーク内の探索等の）探索ルーチンを改善することができる、且つ／又は実装することができるが、これらには限定はしない。
【背景技術】
【０００２】
パターンデータベース（Ｃｕｌｂｅｒｓｏｎ．Ｊ及びＳｃｈａｅｆｆｅｒ、ＪによるＰａｔｔｅｒｎ  ｄａｔａｂａｓｅｓ、Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  １４（３）：３１８〜３３４ページ（１９９８年））、や結合及び収縮抽象化（Ｄｒａｇｅｒ．Ｋ、Ｆｉｎｋｂｅｉｎｅｒ．Ｂ及びＰｏｄｅｌｓｋｉ．ＡによるＤｉｒｅｃｔｅｄ  ｍｏｄｅｌ  ｃｈｅｃｋｉｎｇ  ｗｉｔｈ  ｄｉｓｔａｎｃｅ−ｐｒｅｓｅｒｖｉｎｇ  ａｂｓｔｒａｃｔｉｏｎｓ、Ｍｏｄｅｌ  ｃｈｅｃｋｉｎｇ  ｓｏｆｔｗａｒｅ：第１３回国際ＳＰＩＮワークショップ、オーストリア、ウィーン、２００６年３月３０日〜４月１日の会議記録１９、Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ  Ｎｅｗ  Ｙｏｒｋ  Ｉｎｃ．（２００６年）、Ｈｅｌｍｅｒｔ．Ｍ、  Ｈａｓｌｕｍ．Ｐ、及びＨｏｆｆｍａｎｎ．ＪによるＦｌｅｘｉｂｌｅ  ａｂｓｔｒａｃｔｉｏｎ  ｈｅｕｒｉｓｔｉｃｓ  ｆｏｒ  ｏｐｔｉｍａｌ  ｓｅｑｕｅｎｔｉａｌ  ｐｌａｎｎｉｎｇ、Ｐｒｏｃ．ＩＣＡＰＳ、ｖｏｌｕｍｅ２００７、１７６〜１８３ページ（２００７年））等のメモリベースの発見的探索法をドメイン独立型プランニングに適用する際、簡潔な表現が重要課題である。これらの発見法の性能は通常、その基礎データのサイズ、及びその発見法にアクセス可能な効率性により向上するが、それによりその後、発見法が必要なメモリ容量に影響する。これらのアルゴリズムは、通常メモリの空き容量、問題解決に関する決定要因により制限されるため、Ａ＊等の重複検出を行う最良優先探索アルゴリズムを使用するとき、この問題は深刻になる。
【０００３】
ＩＤＡ＊（Ｋｏｒｆ．Ｒによる、Ｄｅｐｔｈ−ｆｉｒｓｔ  ｉｔｅｒａｔｉｖｅ−ｄｅｅｐｅｎｉｎｇ：Ａｎ  ｏｐｔｉｍａｌ  ａｄｍｉｓｓｉｂｌｅ  ｔｒｅｅ  ｓｅａｒｃｈ、Ａｒｔｉｆｉｃｉａｌ  ｉｎｔｅｌｌｉｇｅｎｃｅ（１９８５年））等の線形空間アルゴリズムは、Ａ＊よりもかなり少ないメモリを使用するが、上記の重複検出により、余分なノード拡張するという犠牲を払って最適な解決法を見つけている。スライドタイルパズル等の重複がほとんど行われないドメインでは、ＩＤＡ＊は、Ａ＊よりも非常に優れており、この時空間の変換が効果的であるが、多くのドメイン（例えば、マルチ配列アライメント）では、このアプローチは効果的ではない。したがって、Ｆａｓｔ  Ｄｏｗｎｗａｒｄ（Ｈｅｌｍｅｒｔ．Ｍによる、Ｔｈｅ  ｆａｓｔ  ｄｏｗｎｗａｒｄ  ｐｌａｎｎｉｎｇ  ｓｙｓｔｅｍ，  Ｊｏｕｒｎａｌ  ｏｆ  Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｒｅｓｅａｒｃｈ  ２６（２００６）：１９１〜２４６ページ（２００６年））、ＨＳＰ＿Ｆ及びＧａｍｅｒ等の現在最先端の発見的探索プランナーでは重複検出が行われている。
【０００４】
完全ハッシングが、事前に計算済みの解決法に下位問題を関連付けるために使用される一般的な技術である。但し、（単射）列挙関数では、ランダムアクセス構造内で記録をアドレス指定するために通常用いられる一意のＩＤを、それぞれの下部問題に割り当てる。しかし、ドメイン独立型プランニングでは、特に複雑な下位問題を処理するとき、ほぼ全射的でもある関数を見つけることは大抵の場合不可能である。これにより、データアレイ内が、すぐに未使用のスロットで一杯となり、簡単な下位問題に対する対処が後回しになる。
【０００５】
パターンデータベースを表現する別のアプローチでは、ＢＤＤ（Ｅｄｅｌｋａｍｐ．Ｓによる、Ｓｙｍｂｏｌｉｃ  ｐａｔｔｅｒｎ  ｄａｔａｂａｓｅｓ  ｉｎ  ｈｅｕｒｉｓｔｉｃ  ｓｅａｒｃｈ  ｐｌａｎｎｉｎｇ、６ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  ＡＩ  Ｐｌａｎｎｉｎｇ  ａｎｄ  Ｓｃｈｅｄｕｌｉｎｇ（ＡＩＰＳ−０２）の会議記録、２７４〜２８３ページ（２００２年））を使用する。（順序付及び縮小）ＢＤＤは、標準的なグラフベースの二値関数の表現であり、同類のサブグラフを結合させために、空間効率が非常に良い。状態設定を直接、二値関数にマッピングすることができ、このＢＤＤはプランニング及びモデル検査でうまく使用されてきた（Ｊｅｎｓｅｎ．Ｒ、Ｂｒｙａｎｔ．Ｒ、及びＶｅｌｏｓｏ．Ｍによる、ＳｅｔＡ＊：  Ａｎ  ｅｆｆｉｃｉｅｎｔ  ｂｄｄ−ｂａｓｅｄ  ｈｅｕｒｉｓｔｉｃ  ｓｅａｒｃｈ  ａｌｇｏｒｉｔｈｍ、ＳｅｔＡ＊：  Ａｎ  ｅｆｆｉｃｉｅｎｔ  ｂｄｄ−ｂａｓｅｄ  ｈｅｕｒｉｓｔｉｃ  ｓｅａｒｃｈ  ａｌｇｏｒｉｔｈｍ、（ＡＡＡＩ−０２）の会議記録、６６８６７３ページ（２００２年））。ドメイン独立型プランニングに関する問題の１つは、これらのアプローチの空間効率が、下層のドメインの構造に非常に幅広く依存することである。別の問題は、空間効率の良い方法で、データを個々の状態に関連付けるためには、ＢＤＤがよく適しているとは言えないことである。このことは、膨大な数のパターンを同じ値に関連付けることがよくあるために、パターンデータベースではそれほど問題ではない。それでもなお、これにより、より一般的なコンテックのメモ化に用いる際、ＢＤＤは課題が残る。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の記述された実施形態の一態様では、方法は、電子コンピュータ装置により、状態設定のプレフィックスツリーの表現を水平順序付けエッジシーケンス（ＬＯＥＳ）として符号化するステップであって、この水平順序付けエッジシーケンスが、各内ツリーノードを、ビットの組合せとして、左から右、上から下の順番で符号化するステップと、電子コンピュータ装置により、プレフィックスツリー内に完全なサブツリーの存在を特定するステップと、電子コンピュータ装置により、符号化における符号点を用いて、サブツリーを示すステップと、を含む。
【０００７】
本発明の記述された実施形態の別の態様では、この符号点は「００」である。
【０００８】
本発明の記述された実施形態の別の態様では、この方法は、完全なサブツリーを、そのルートノードを除いて、プレフィックスツリーから刈り取るステップをさらに含む。
【０００９】
本発明の記述された実施形態の別の態様では、このプレフィックスツリーはパターンデータベースに基づく。
【００１０】
本発明の記述された実施形態の別の態様では、システムは、記憶装置及び電子プロセッサを有する電子コンピュータ装置を含み、この電子プロセッサは、状態設定のプレフィックスツリーの表現を、水平順序付けエッジシーケンス（ＬＯＥＳ）として符号化し、この水平順序付けエッジシーケンスが、内ツリーを、ビットの組合せとして、ノード左から右へ、且つ上から下の順番で符号化し、プレフィックスツリー内の完全なサブツリーの存在を特定し、そのサブツリーを、符号化における符号点を用いて表示する設定される。
【００１１】
本発明の記述された実施形態の別の態様では、この符号点は「００」である。
【００１２】
本発明の記述された実施形態の別の態様では、完全なサブツリーを、電子コンピュータ装置は、そのルートノードを除いて、プレフィックスツリーから刈り取るよう動作する。
【００１３】
本発明の記述された実施形態の別の態様では、プレフィックスツリーはパターンデータベースに基づく。
【００１４】
本発明の記述された実施形態の別の態様では、方法は、電子コンピュータ装置により、状態設定の二値のプレフィックスツリーに関する水平順序付けエッジシーケンス（ＬＯＥＳ）の符号を復号するステップと、電子コンピュータ装置により、プレフィックスツリー内の完全なサブツリーを示す符号点の存在を特定するステップと、電子コンピュータ装置により、プレフィックスツリーのサブツリーの存在を示す特定成功の結果を戻すステップと、を含む。
【００１５】
本発明の記述された実施形態の別の態様では、この符号点は「００」である。
【００１６】
本発明の記述された実施形態の別の態様では、プレフィックスツリーはパターンデータベースに基づく。
【００１７】
本発明の記述された実施形態の別の態様では、この方法は、電子コンピュータ装置により、プレフィックスツリーのサブツリーを構築するステップをさらに含む。
【００１８】
本発明の記述された実施形態の別の態様では、前記構築するステップは、暗黙の又は明確のうちの１方で行われる。
【００１９】
本発明の記述された実施形態の別の態様では、状態設定を復号するよう設定されたシステムは、記憶装置及び電子プロセッサを有する電子コンピュータ装置を含み、この電子プロセッサは、状態設定を示すプレフィックスツリーに関する水平順序付けエッジシーケンス（ＬＯＥＳ）の符号を復号し、プレフィックスツリー内の完全なサブツリーを示す符号点の存在をと特定し、プレフィックスツリーのサブツリーの存在を示す特定成功の結果を戻すよう設定される。
【００２０】
本発明の記述された実施形態の別の態様では、この符号点は「００」である。
【００２１】
本発明の記述された実施形態の別の態様では、プレフィックスツリーはパターンデータベースに基づく。
【００２２】
本発明の記述された実施形態の別の態様では、この電子コンピュータ装置はサブツリーを構築するよう動作する。
【００２３】
本発明の記述された実施形態の別の態様では、前記構築するステップは、暗黙の又は明確のうちの１方で行われる。
【図面の簡単な説明】
【００２４】
【図１】図１は、問題構成、抽象化、及び作成されるパターンデータベースを示す説明図である。
【図２】図２は、プレフィックスツリーを示す説明図である。
【図３】図３は、図２のプレフィックスツリーの並び替えの様子を示す説明図である。
【図４】図４は、図３のプレフィックスツリーを符号化する水平順序付けエッジシーケンス（ＬＯＥＳ）を示す説明図である。
【図５】図５は、経路オフセット計算を示す説明図である。
【図６】図６は、指数マッピングを示す説明図である。
【図７】図７は、ＬＯＥＳ符号を組み立てるときの構築状態を示す説明図である。
【図８】図８は、図１のパターンデータベースに対する逆関係を示す説明図である。
【図９】図９は、本発明の記述された実施形態による圧縮ＬＯＥＳを示す説明図である。
【図１０Ａ】図１０Ａは、本発明の記述された実施形態を実行可能なシステムの説明図である。
【図１０Ｂ】図１０Ｂは、本発明の記述された実施形態による方法を示すフローチャートである。
【図１０Ｃ】図１０Ｃは、本発明の記述された実施形態による方法を示すフローチャートである。
【図１１】図１１は、実験データを示す説明図である。
【図１２】図１２は、実験データを示す説明図である。
【図１３】図１３は、実験データを示す説明図である。
【図１４】図１４は、実験データを示す説明図である。
【図１５】図１５は、実験データを示す説明図である。
【図１６】図１６は、実験データを示す説明図である。
【発明を実施するための形態】
【００２５】
簡潔で明瞭にするために、パターンデータベースと関連して本発明の記述された実施形態を説明するが、本明細書で示される発想は、むしろその他のメモ化技術に直接転移される。パターンデータベースの発見法の裏にある発想は、最初に（比較的）解決が簡単なオリジナル問題の抽象化を作成することである。好適な抽象化は、オリジナル問題の構成を、抽象化する相手にマッピングする関数として解釈可能（通常は、可逆的でない）でなければならない。抽象化の問題の構成はパターンと呼ぶ。全てのパターンに対する抽象化問題を解決し、最適な解決に関連したコストと共にそれらをデータベース内に格納する。図１には、問題の構成１０例が示される。非公式に、タイル４以外の全ての単位元を捨象して、抽象化１２を生成する。８パズルの各構成を、タイル４の位置が一致するパターンに関連付けることにより、これが多対１のマッピング関数として解釈され得る。図１の右に示されているのが、生成されたパターンデータベース１４である。
【００２６】
本発明の記述された実施形態により、水平順序付けエッジシーケンス（ＬＯＥＳ）の表現は、パターンデータベースに適用可能である。とはいえ、上記のパターンデータベース１４等のデータベース内の全てのパターン（即ち、抽象化状態）を、所与の発見法に関してｍビットで符号化することができると仮定する。ルートからリーフへの経路に各パターンをマッピングすることにより、このようなパターンの設定を、偽と真のラベルを有するエッジでラベル表示された深さｍの二値のツリーに、全単射的にマッピングすることができる。このルートからリーフへの経路には、パターンのビット文字列内のオフセットｄでのビット値と対応する、ツリーの深さｄでのエッジが含まれる。このように、全ての一意のパターンを、一意の経路に変換し、その後、ルートからリーフまでのエッジラベルのシーケンスに再構築することができる。以後本明細書では、これらのツリーを、二値プレフィックスツリー等のプレフィックスツリーと呼ぶ。図２には、３ビットシーケンス（ｓ０、ｓ１、ｓ２）に基づく、プレフィックスツリー２０の一例が示される。
【００２７】
パターンを符号化した後に並び替えを判定することが、重要な前処理ステップであり、これにより、このプレフィックスツリー２０を最小化して、ツリー２２に並び替える（図３を参照）。ビットの再順序付けを実現して、共通プレフィックス「０」を生成し、線２４、線２６、線２８で示す通り、より小さいプレフィックスツリーを作成する。念入りに（抽象化の）状態−空間をサンプリングし、これらのサンプル基づいて並び替え空間を通して欲張りエントロピー探索を行うことで通常は、ほとんど計算することなしに良好な結果を取得する。
【００２８】
ＬＯＥＳの符号化
ＬＯＥＳにより、（正確には）エッジにつき２ビットより小さくプレフィックスツリーを表現することができる。これをツリーの内ノードごとの、２ビットのエッジの組による記録の水平順序の連鎖と定義する（これらのビットは、そのノードでの偽エッジと真エッジの存在に対応する）。図４には、（図２及び図３の）例示の設定に対する水平順序付けエッジシーケンス（ＬＯＥＳ）が示され、この水平順序付けエッジシーケンスにより、例示の設定を、単一のバイト３０に符号化することができる。この符号化により、ｍビットで表現されたｎ個の状態設定に対して、２ｎビットから≒２ｎｍビットの間のビット文字列が生成され、通常平均的なケースではこの下限に近い。少なくとも１つの形態において、ＬＯＥＳの符号化技術では、各内ツリーノードを、ビットの組合せとして、左から右、上から下に符号化することを理解されたい。
【００２９】
ＬＯＥＳの検索
ＬＯＥＳ符号では、オフセットｏポイントでのノードの任意エッジの偽エッジ及び真エッジに関するビットの存在を、オフセット２ｒａｎｋ（ｏ）及びオフセット２ｒａｎｋ（ｏ）＋１で見出すことができる。但し、ｒａｎｋ（ｉ）とは、オフセットｉまでの（及び含む）シーケンス内の設定ビット数を算出する関数である。これが（リーフレベルを除く）水平順序付け符号の各先行エッジから続き、そのエッジの各目標ノードに関する先行エッジの組の記録となる。したがって、オフセットｏでの任意エッジに関する子供の記録は、そのシーケンス内のｒａｎｋ（ｏ）＋１番目の記録となる（したがって、ルートノードには入ってくるエッジがない）。この特性により、符号化された構造上での効率的な検索が可能となる。
【００３０】
Ｒａｎｋ
ＬＯＥＳを論理的に２１６ビットのブロックと、５１２ビットのサブブロックとに分ける２レベルの指数を用いることにより、ｒａｎｋを一定時間内で計算することができる。各ブロックに関して、この指数は８バイトの符号なし整数を保持し、そのシーケンスの始めからそのブロックの始めまでの設定ビット数を表示する。サブブロックレベル上では、２バイトの符号なし値には、対応ブロックの始めからサブブロックの始めまでの設定ビット数が格納される。全指数サイズはＬＯＥＳ符号のサイズの約３．３％である（式１を参照）。簡単なアドレス変換を用いて、５１２ビットの各サブブロック内での２つの表索引、及び母集団の直接カウントの合計に対する計算を少なくする。
【数１】
2014006900.tif 000003
【数２】
2014006900.tif 000004
【００３１】
メンバーテスト
ある状態のラベル−シーケンスの解釈により、経路オフセット関数（上記のアルゴリズム１等）は、そのルートからＬＯＥＳ内を検索する。ツリーのルートから任意のリーフまでの有効な経路がその状態により示された場合、この関数はその経路の最後のエッジに対応するビットのオフセットを戻す。さもなければ、関数は⊥と評価する。図５に一例を示す。この例では、状態４０（ｓ＝００１）がシーケンスの設定に含まれるかどうかの判定が行われる。各レベル４２、４４、４６での００１に関する経路オフセット計算により、対応エッジの存在するオフセットのビット数を算出し、不合格の結果が出るまでビット数をテストする。不合格の結果が出ず「合格」の結果が出るとテストは続行される。もし経路解釈がプレフィックスツリー内を通る有効な経路に対応し、経路−オフセットが≠⊥を戻す場合のみ、設定は状態を含む。
【数３】
2014006900.tif 000005
【００３２】
メンバー指数
メンバー設定テストを効率的に計算する以外に、この符号化では、設定内の状態ごとに連続ＩＤ
【数４】
2014006900.tif 000006
を関連付けることができる。この発想は、状態の経路オフセットのｒａｎｋを算出し、最後から層＋１の前の層の最後のオフセットのｒａｎｋを減算することにより、これを［０，ｎ］の間隔に正規化することである。アルゴリズム２では、擬似的な符号が与えられる。図６では、これを例示の設定に対して示す。図６には、例示の設定５０内のツリー２２の全ての状態に対する数マッピングが示される。要素の経路オフセットのｒａｎｋから、最後のから２番目のレベル内の最後のエッジの（オフセットの）ｒａｎｋ＋１を減算して、その指数を算出する。
【００３３】
ＬＯＥＳの構築
次に図７を参照して、辞書式に順序付けされた状態ｓ０、ｓ１、ｓ２のシーケンスからＬＯＥＳ符号５５を構築する方法説明する。ツリーの層ごとの空白のビットシーケンスから説明する。アルゴリズム３、及び図７には、新しい状態が加えられたときに、これらのシーケンスがどのように操作されるかが示される。最初の挿入では、全てのレベル上の対応する記録を単に付け加える。次の挿入では、挿入される状態ｓ’及び最初の異なるビットのオフセットに対する符号ｓと、設定ｄ内の最後の状態との間の共有プレフィックスの長さが算出される。レベルｄに関するシーケンスの最後のビットを真と設定し、次いでｓによる記録を全ての下位のレベルに付け加える。重複（即ち、ｓ＝ｓ’）は、単純に無視する。状態を挿入した後、それらのレベルを昇順に並べてシーケンスの連鎖、即ち符号５５を形成することにより、ＬＯＥＳ符号を構築する。
【数５】
2014006900.tif 000007
【００３４】
ＰＤＢ表現
ＬＯＥＳの基礎を説明してきたが、次にパターンデータベースの表現に注目する。説明を簡潔にするため、パターンの選択、ドメインの抽象化、及び回帰探査の詳細には触れないが、パターンデータベースは既に計算され、いくつかのパターン値の組の集合として存在すると仮定する。これらの技術は、当業者には明らかである。例示したこれらの種類の説明は、Ｈａｓｌｕｍ．ＰらによるＤｏｍａｉｎ−ｉｎｄｅｐｅｎｄｅｎｔ  ｃｏｎｓｔｒｕｃｔｉｏｎ  ｏｆ  ｐａｔｔｅｒｎ  ｄａｔａｂａｓｅ  ｈｅｕｒｉｓｔｉｃｓ  ｆｏｒ  ｃｏｓｔ−ｏｐｔｉｍａｌ  ｐｌａｎｎｉｎｇ、ｔｈｅ  Ｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅの会議記録１００７〜１０１２ページ（２００７年）、及びＨｅｌｍｅｒｔ，Ｍ、Ｈａｓｌｕｍ，Ｐ、及びＨｏｆｆｍａｎｎ，ＪによるＦｌｅｘｉｂｌｅ  ａｂｓｔｒａｃｔｉｏｎ  ｈｅｕｒｉｓｔｉｃｓ  ｆｏｒ  ｏｐｔｉｍａｌ  ｓｅｑｕｅｎｔｉａｌ  ｐｌａｎｎｉｎｇ、ＩＣＡＰＳ  ２００７の会議記録１７６〜１８３ページ（２００７年）に含まれる。
【００３５】
層の設定の組合せ
本発明の記述された実施形態による基本的表現は、全てのパターンをＬＯＥＳ符号に変換したものである。ＬＯＥＳでは、一意のＩＤを、範囲
【数６】
2014006900.tif 000008
内の全ての一意のパターンに関連付け、これをオフセットとして用いて、詰め込まれたビットの文字列に、関連する値を格納し、各記録は（ＰＤＢ内で）発生する値どうしを識別するために必要な最小量のビットから成る。次いで、発見法の計算では、アルゴリズム２を用いてパターンのＩＤを判定し、詰め込まれたビット文字列内でオフセットとして解釈することにより値を算出する。
【００３６】
逆関係
特に、単価の探索では、ＰＤＢ内のパターンの数は通常、個別の値の数よりはるかに多い。発見法の逆関数を格納することにより、この反復的なデータを個々のパターンに関連付けることを避けることができる。一般に、発見法は単射関数ではない、したがって、明確に定義される逆関数は存在しない。その代わり、逆関係（左全域的な関係、全ての入力値が複数の出力値に関連付けられる）を格納する（パターンデータベース１４の逆関係６０の例に関して、図８を参照）。次いで、この発見法の関数を連続するパターンのテストを通して、各パターン設定に対して計算し、ヒットすると、その設定に関連する値を戻す。但し、発見法の関数特性により、これらの設定は一対の選言肢である。さらに、発見法が全域関数（即ち、全てのパターン設定に対する結合が、全抽象化パターン空間を含む）の場合、最も大きい設定を取り除き、それに関連した値をデフォルトとして示し、残りの全ての設定に対するテストが不合格の場合このデフォルトを戻す。この発想は、各設定をＬＯＥＳ符号として示すことである。さらなる最適化は、メンバーテストの成功の見込み継時的に追跡し続け、これらの見込みを昇順に設定にクエリ処理することである。
【数７】
2014006900.tif 000009
【００３７】
圧縮ＬＯＥＳ
逆関の表現に関して、全ての情報を個々の状態に関連付ける必要はなく、親子関係を算出するだけでよい。プレフィックスツリー内を降りる間に完全なサブツリーのルートに出くわした場合、問題の要素が存在することが既に分かっている。これを利用するために、圧縮水平順序付けエッジシーケンス（ｃＬＯＥＳ）と呼ばれるＬＯＥＳの変形型を開発し、これにより、例えば、符号、又は符号点用いることにより、その構造から完全なサブツリーを取り除くことができる。この発想は簡単にすることであり、種々の符号又は符号点を、少なくとも１つの形態で使用することができるが、本発明の記述された実施形態では、残る符号点、つまり００（即ち、このノードでは別のエッジは存在しない）を用いて完全なサブツリーのルートを示す。但し、これにより、ＬＯＥＳのエッジ指数と子供の記録位置の不変関係は侵害されない。アルゴリズム５には、メンバーテストが最小となるような変更が示され、新しい記録に達するときはいつも、最初に完全なサブツリーを示すかどうかをテストし（即ち００と同等）、示す場合、現在のオフセットを戻す。示さない場合は、そのアルゴリズムは、上記の示すＬＯＥＳと類似の動作を行う。
【数８】
2014006900.tif 000010
【００３８】
次に、図９を参照して、本発明の記述された実施形態の用途を説明する。これに関して、シーケンス１０２の設定の二値プレフィックスツリーの表現１００を、ＬＯＥＳ符号１０４及び圧縮ＬＯＥＳ符号１０６と共に示す。特に、この実施形態では、プレフィックスツリー１００内で完全なサブツリー１０８を特定するため、そのサブツリー１０８に関する符号化内のルートノードは、例えば、１１０で示す通り「００」等の特別な符号点、又は特定する符号点、或いは符号を用いて表示される。特別な符号点、又は特定する符号点、或いは符号は様々な形態をとることができ、いくつかの形態は、用途及び状況に応じて、特定可能な形態、所定の形態、検知可能な形態、一意の形態、及び／又は任意の形態よいことを理解されたい。このように、符号を削減する。例えば、ＬＯＥＳ符号は１４ビットを含むが、圧縮ＬＯＥＳ符号は１０ビットしか含まない。これにより、（特に、規模が大きい場合）必要メモリ量を抑え、符号化した結果の処理効率が向上する。この符号化した結果は、特定な用途の要求に応じて、例えば、格納され、処理され、又は通信される。
【００３９】
本明細書に記載する構想は、符号化及び復号化を含む様々な関数を実行することができる、種々のコンピュータシステム上で実行可能であることを理解されたい。そのようなコンピュータシステム（又は電子コンピュータ装置）８００の一例を図１０Ａに示す。このコンピュータシステムは、モニタ８０２、キーボード８０４、コンピュータ部８０６、及びディスク８０８等の外部メモリを、その他の構成部品と共に含む。コンピュータ部８０６は、電子プロセッサ、グラフィック処理ユニット（ＧＰＵ）、又はその他のコンピュータコンポーネント８１０と、ＲＡＭ等の内部メモリ８１２とを含む。コンピュータ部８０６は、その他の構成部品を含むことができ、本明細書で示す以外の構成で設計され得ることを理解されたい。もちろん、これらの様々な実装形態には、多様で異なるハードウェア構成、及び／又はソフトウェアアプリケーション、及び技術が含まれ得ることを理解されたい。ソフトウェアのルーチン又は実行コード又は命令を実行して、本明細書で意図した方法を実現するよう意図してハードウェアを、いくつかの形態で、設定可能なことを理解されたい。シングルコアプロセッサ、又はマルチコアプロセッサを用いることができ、これらのプロセッサをネットワーク構成の中で分散させることができる。外部メモリ８０８は、コンピュータ部８０６の外側のため、外付けと見なし、内部記憶装置８１２と比較して、入力／出力動作がかなり遅くなる。また、ディスク８０８は、物理的にコンピュータ部８０６内に含まれてもよく、又は随意的なディスク８１４で示す通り、コンピュータ部８０６内に含まれなくてもよい。例えば、随意的なディスク８１４は、ネットワークドライブでよい。本明細書に記載の（又はその他の）これらの記憶装置は、コンピュータ部８０６、及びコンピュータコンポーネント８１０（例えば、マルチコアプロセッサ、又はマルチプロセッサの構成を含む）等のプロセッシングコンポーネント、及び／又はコンピュータコンポーネントと情報をやり取りして、本明細書に記載のコンピュータにより実行する方法を実行することができるよう設定される、又は動作するということを理解されたい。これに関して、メモリ又は記憶装置は、入力／出力の効率性を向上するよう設定することができ、及び／又は（捕捉用の外付け記憶ＲＡＭ装置等）と互いに補い合って、例えば、拡張性を向上させ、その他の長所を実現することができる。これに関して、これらの記憶装置は、一形態では、実行用マシン可読データ、及び／又はマシン可読命令を格納するための持続性コンピュータ可読媒体として機能する。また、メモリ又は記憶装置は、個体形態又は磁気ディスクの構成を含む様々な物理的形態とることが可能である。
【００４０】
次に、図１０Ｂ及び図１０Ｃを参照すると、上記に記載のシステム８００を含む種々のシステム上で本発明の記述された実施形態による方法を実行することができる。このような実装形態では、コンピュータ部８０６、ＣＰＵ、又はプロセッサ８１０等のプロセッサ又はコンピュータコンポーネントを含む、適切なハードウェアシステム上で好適なルーチンを実行することで、この方法を、一形態で、実行可能であることを理解されたい。図１０Ｂには、本発明の記述された実施形態による、符号化の方法の一例のフローチャートが示される。図示する通り、本明細書に記載する水平順序付けエッジシーケンス（ＬＯＥＳ）のルーチンを用いて、状態設定を表現するプレフィックスツリーを符号化する（ステップ１０５２）。符号化している間、プレフィックスツリー内の完全なサブツリーが特定する、又は検知する（ステップ１０５４）。次いで、これらのサブツリーを、作成される符号内で特別な符号点により表示する（「００」等）。つまり、「−００−」を符号内に挿入して、プレフィックスツリー内に完全なサブツリーが存在していることを示す。次いで、このサブツリーを符号から刈り取る（ステップ１０５８）。これにより、圧縮符号を作成することができる。少なくとも一形態では、この刈り取りのステップでは、完全なサブツリーを、そのルートノードを除いて、プレフィックスツリーから刈り取ることが含まれる。図１０Ｃには、本発明の記述された実施形態による、復号化の方法１０７０の一例を示すフローチャートが示される。図示する通り、ＬＯＥＳ符号を復号する（ステップ１０７２）。上記に示す特別な符号（例えば、「００」）を特定する、又は検知する（ステップ１０７４）。その結果、そのサブツリーのルートからスタートする可能な全ての経路は、オリジナルの非圧縮のプレフィックスツリー（ステップ１０７６）内に存在するため、特別な符号により符号化されたサブツリーに達したプレフィックスツリー内の全ての親子関係のクエリは、すぐに成功として戻される（即ち、問題のパターンは、その設定のメンバーである）。
【００４１】
符号化及び復号化の方法又は処理は、増分処理、及び／又は連続処理であることは、もちろん、言うまでもない。したがって、例えば、特別な符号「００」の検知により、全ての復号化処理が必ずしも終了しない。この確認及び検知は、全ての復号化処理の一部として行われる。
【００４２】
また、特別な符号を検知後の復号化の間、暗黙のうちに、又は明確にサブツリーを生成、又は構築することができることを理解されたい。つまり、一形態では、暗黙のうちにサブツリーが構築され、これにより、特別な符号（例えば、００）を検知することで得られた成功の結果により、符号内にサブツリーが存在するが（及び、処理中にサブツリーの各部分も存在する、又は「ヒット」される見なすべきである）、実際にはサブツリーは構築されていないことをシステムに通知される。別の形態では、サブツリーがノードごとに、各リーフノードに続く実際の経路と共に、明確に再構築される、又は生成される。
【００４３】
実験評価
図１０Ａのシステムの例に関連して述べた通り、様々な構成を実装可能であるが、ＰＤＤＬ入力ファイルを多値問題の記述に変換するプリプロセッサから成る、本発明の記述された実施形態の評価セットアップは、Ｆａｓｔ  Ｄｏｗｎｗａｒｄのプリプロセッサと類似している。その違いは、このプリプロセッサが、問題の変数を変換する、多くても１つの追加の制約条件を出力することである。それらの制約条件は、変数割り当てタプルのリストの形態でもたらされ、全ての有効な状態に対して、全てのリスト内の多くても１つのタプルが、真を保持するよう解釈される。オリジナル問題に関して、これらの制約条件は多値記述で符号化されるものに対して、なんの追加情報も加えない、つまり、演算子の設定を通して生成された初期状態の後続状態により、これらの制約条件は破られない。問題は、変数の部分集合に投影することによる抽象化により、これらの暗黙の制約条件が失われることである。
【００４４】
Ｎパズルに関するＦａｓｔ  Ｄｏｗｎｗａｒｄの（及びこの）プリプロセッサにより生成される多値符号を考察する。この多値符号は、その位置を表示するタイルごとに１つの変数を含む。空白のタイルと隣接する非空白との全ての実行可能な組合せに対して演算子が存在する。そのような演算子はそれぞれ、結果として切り替えられる位置を有する前提条件として、空白とタイルの特定な位置を有する。タイルは、初期状態で別々の位置からスタートするため、２つのタイルが同じ位置に入ることはできないという制約条件が、演算子の設定を通して暗黙のうちに維持される。単一の変数が投げ出されたとしても（これにより、全ての演算子の前提条件及び結果からその基準が取り除かれ）その制約条件は破られ、非全射抽象化が作成される（即ち、オリジナル問題にその相手方が存在しない実行可能なパターンが抽象化内に存在する）。
【００４５】
これにより２つの問題が発生する。そのうちの重要でない方は、パターンデータベースのサイズが急激に増加することである。深刻な方は、性能の著しく低下した発見法が作成されることである。例えば、１５パズルから７つの変数が投げ出された場合、作成されるデータベースは、２億７千万のパターンを含むが、タイルは互いに「通過」して移動することができるため、これら７つのタイルのマンハッタン距離以上の情報をデータベースは含まない。但し、このことは発見法の許容性に影響を及ぼさない。これらの抽象化空間内の「冗長な」制約条件を評価することで、追加の制約条件を維持することにより、この問題を緩和することができる。
【００４６】
変換処理は、１つ以上のＰＤＢに関する変数を選択する規則ベースのシステムにより続けられる。この時点では、これらの構成要素は両方とも実験的であり、これにより評価の範囲はいくぶん制限される。次いで、回帰探査を通してＰＤＢが構築され、次の５つの表現形態のうちの１つにより符号化される。
【００４７】
完全ハッシング（ＰＨ）
完全ハッシュ関数により、（抽象化問題の）可能性のある割り当てベクトルがそれぞれ、その辞書式のｒａｎｋにより与えられた一意のＩＤにマッピングされる。関連する値を保持する、詰め込まれた記録をアドレス指定するためにＩＤを用いる。
【００４８】
二分決定図（ＢＤＤ）
上記の通り、ＢＤＤとして表現された各設定の逆関係としてＰＤＢを格納する。共通の部分グラフを設定間で共有する。この評価に関するモデル検査グループからの高性能の実装形態であるバディパッケージを使用した。
【００４９】
ＬＯＥＳ
ＰＨと類似する。完全ハッシュ関数は全ての発生パターンのＬＯＥＳ設定、及びそのメンバー指数関数を通して実行される。逆関係のＬＯＥＳ（ＩＲ  ＬＯＥＳ）は、ＢＤＤと類似する。
【００５０】
各設定はＬＯＥＳとして表現される。全ての設定は同じ符号化の並び替えを用いる。
【００５１】
逆関係の圧縮ＬＯＥＳ（ＩＲ  ｃＬＯＥＳ）。
【００５２】
ＢＤＤと類似する。各設定は特定な符号化の並び替えを用いたｃＬＯＥＳとして表現される。
【００５３】
次いで、ＰＤＢをＡ＊探索で使用した。「Ｐｉｐｅｓｗｏｒｌｄ  Ｔａｎｋａｇｅ」、「Ｄｒｉｖｅｒｌｏｇ」及び「Ｇｒｉｐｐｅｒ」のインスタンスは、８ＧＢのメモリでＭａｃ  ＯＳ１０．６．７を実行する２．２ＧＨｚのＩｎｔｅｌ  Ｃｏｒｅプロセッサ上で動作させた。１５パズルのＳＴＲＩＰＳ（Ｓｔａｎｆｏｒｄ  Ｒｅｓｅａｒｃｈ  Ｉｎｓｔｉｔｕｔｅ  Ｐｒｏｂｌｅｍ  Ｓｏｌｖｅｒ）のインスタンスに関しては、４ＧＢのメモリで３．３ＧＨｚのＸｅｏｎプロセッサ上で動作させた。
【００５４】
Ｐｉｐｅｓｗｏｒｌｄ  Ｔａｎｋａｇｅ
ＩＰＣ４の「Ｐｉｐｅｓｗｏｒｌｄ  Ｔａｎｋａｇｅ」のドメインは、製品ごとのタンク容量の制約により貯蔵容量が制限された、地域間を結ぶパイプラインの線を通して石油を輸送する問題をモデル化する。プリプロセッサの状態により、全てのパイプに関して、供給源の地域に最も近い１つのバッチ、及び目的地の地域に最も近い１つのバッチだけが存在し得るという追加の制約条件が明確になった。分析要素により全てのインスタンスに関して単一のＰＤＢが生成された。ＰＤＢは比較的小さく、相当量のオリジナル問題の制約条件を保持する。これのより異なる表現（図１１を参照）に関するサイズが示され、ＢＤＤがＰＨより１桁から２桁の大きさ分優れており、ＬＯＥＳバージョンがこれよりもう１桁の大きさ分優れている。
【表１】
2014006900.tif 000011
【００５５】
時間次元上では（図１２を参照）、ＬＯＥＳだけがＰＨより僅かに劣って動作し、ＩＲの変形型は約２倍の長さをとる。ＢＤＤの性能は大幅に変動し、そうとうな桁の大きさ分ＰＨ及びＬＯＥＳ符号化より劣る。
【００５６】
Ｄｒｉｖｅｒｌｏｇ
「Ｄｒｉｖｅｒｌｏｇ」は、多値変数で符号化されたものに対する全ての明確な制約条件が前処理により取り除かれなかった例である。これにより、全ての可能性のある抽象化パターンを含む、非常に低い品質のＰＤＢが作成される。ＢＤＤ表現に非常に修正可能なドメインでもある。これにより、ＢＤＤの大きさが輝く空間比較（図１３を参照）内で（ＩＲ表現により細かく分けられることはほとんどない）数百万のパターンのインスタンスが示されるが、実際にはこれらのインスタンスは、より小さなインスタンス上よりも１桁少ない空間を使っている。注目すべきは、ＩＲ  ＬＯＥＳの変形型は、まだ２から３つの要因によりＰＨより何とか優れている。その詰め込まれた容量がＰＨとほぼ同じサイズのとき、ＬＯＥＳの性能は予想通り劣る（この違いは、ＰＨが、ＰＢＤ内のパターンの最大の同値の部分集合の格納を省き、そのデフォルトとして対応する値を表示することができるという事実に起因する）。表現の検索コストが「Ｐｉｐｅｓｗｏｒｌｄ  Ｔａｎｋａｇｅ」インスタンスと同様のとき、実行時間の比較（図１４を参照）も同様の結果を示す。
【００５７】
Ｇｒｉｐｐｅｒ
「Ｇｒｉｐｐｅｒ」のドメインは、ある部屋から別の部屋にボールを運ぶためにボールを拾ったり置いたりするための２つのグリッパーを使うことができる移動ロボットをモデル化する。このドメインでは、同時に両方のグリッパーで物体を掴まないという暗黙の制約条件がプリプロセッサにより拾われる。変数選択論理回路がグリッパーの状態、ロボットの位置、及び目標条件付きのボールに関する変数からなるＰＤＢを構築した。抽象化状態の空間が大きくなり過ぎたとき、ＰＤＢを分割する規則を設定した。作成された複数のＰＤＢは追加型でないため、それらの発見法の値の最大値をとることによりＰＤＢを組み合わせた。これをインスタンス６から始め、ＰＤＢの成長を緩和した（図１５を参照）。
【００５８】
「Ｇｒｉｐｐｅｒ」は、ＢＤＤが非常にうまく動作するドメインのうちの１つである。ＰＤＢが約１００万パターン、及び２６０万パターンのサイズのとき、ＢＤＤは、インスタンス５及びインスタンス８で、格納の効率性においてＩＲ  ｃＬＯＥＳより依然として優れている。ＰＨは、より大きなインスタンス上で約２桁大きい記憶容量を一環として必要とする。ルーチンの比較では（図１６を参照）面白い結果が示される。より小さなＰＤＢに関して、ＰＨはＬＯＥＳの各バージョンより約１．３倍（ＬＯＥＳ）から５倍（ＩＲ  ｃＬＯＥＳ）速い。パターンのデータベースが成長すると、おそらくキャッシュミス（ｃａｃｈｅ  ｍｉｓｓｅｓ）が増加するため、速いアドレス指定というメリットが大幅に収縮する。再度強調するが、ＢＤＤ内のより複雑な照合により、処理速度が数桁遅くなる。
【００５９】
１５パズル
１５パズルは古典的な組合せ探索ベンチマークである。ＰＤＢの発見法に関するトークン問題でもある。ここで、プリプロセッサが２枚のタイルが同じ位置に入ることはできないことを確保する制約条件を何とか抽出する。分析要素も空白及び選択タイルパターン空間サイズの限度まで取り除くことにより、複数の追加型ＰＤＢを何とか抽出する（このドメインでは６つ変数、したがって追加型の６−６−３ＰＤＢである）。但し、これらのＰＤＢは、一般にドメイン専用スライドタイルパズル解法で用いられる手作り、及び空白圧縮式追加型ＰＤＢよりも著しく弱い。この実験では、Ｋｏｒｆの１００個のランダムなインスタンス（Ｋｏｒｆ，Ｒ、Ｄｅｐｔｈ−ｆｉｒｓｔ  Ｉｔｅｒａｔｉｖｅ−Ｄｅｅｐｅｎｉｎｇ：Ａｎ  Ｏｐｔｉｏｎａｌ  Ａｄｍｉｓｓｉｂｌｅ  Ｓｅａｒｃｈ  Ｔｒｅｅ，Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  （１９８５年））上でプランナーを動作させたが、これはドメイン独立型プランナーにとっては困難なことである（例えば、１０Ｋのノードの抽象化サイズを有するＭ＆Ｓ発見法を用いた最先端のＦａｓｔ  Ｄｏｗｎｗａｒｄプランナーは、最も簡単な９６ＧＢのＲＡＭ内のインスタンスを解決することができない）。ＬＯＥＳ及びＢＤＤにより用いられる種類の冗長性削除技術では、解決が難しいとして知られる並び替えの問題もある。ハードな３０分のカットオフタイマーを用いて、全てのインスタンスを実行した。その結果を表２に示す。ここでは、ＰＨその非常に速いＰＤＢ検索のおかげで最もよく動作した。ＬＯＥＳの変形型がＰＤＢのサイズの相対的な減少を著しく示すが、絶対差は比較的小さい。分析要素がより大きなＰＤＢを可能とした場合（ＢＤＤベースの表現を損傷させた場合）、この結果は、おそらく変わるであろう。
【表２】
2014006900.tif 000012
【図１】
2014006900.tif 000013
【図２】
2014006900.tif 000014
【図３】
2014006900.tif 000015
【図４】
2014006900.tif 000016
【図５】
2014006900.tif 000017
【図６】
2014006900.tif 000018
【図７】
2014006900.tif 000019
【図８】
2014006900.tif 000020
【図９】
2014006900.tif 000021
【図１０Ａ】
2014006900.tif 000022
【図１０Ｂ】
2014006900.tif 000023
【図１０Ｃ】
2014006900.tif 000024
【図１１】
2014006900.tif 000025
【図１２】
2014006900.tif 000026
【図１３】
2014006900.tif 000027
【図１４】
2014006900.tif 000028
【図１５】
2014006900.tif 000029
【図１６】
2014006900.tif 000030