JPH04217062A - 拘束条件満足型問題解決効率改善方法及び装置 - Google Patents
拘束条件満足型問題解決効率改善方法及び装置Info
- Publication number
- JPH04217062A JPH04217062A JP3012821A JP1282191A JPH04217062A JP H04217062 A JPH04217062 A JP H04217062A JP 3012821 A JP3012821 A JP 3012821A JP 1282191 A JP1282191 A JP 1282191A JP H04217062 A JPH04217062 A JP H04217062A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- attribute
- history table
- value
- node
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012545 processing Methods 0.000 claims abstract description 11
- 230000027455 binding Effects 0.000 claims description 32
- 238000009739 binding Methods 0.000 claims description 32
- 230000006872 improvement Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
- G06F8/3135—Unification or backtracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は一般に拘束条件満足型問
題として知られる種類の問題に対する解決を最適化する
ための、ディジタルコンピュータで行われる方法に関す
る。特に、本発明は、(a)バックトラック検索中に生
じる障害パスに関する情報を記録するテーブルを発生し
維持する方法、及び(b)より頻繁に生じる障害パスを
特定の拘束条件満足型問題の将来のインスタンスの解決
中に回避しうるようにそのテーブルを使用する方法、に
関する。
題として知られる種類の問題に対する解決を最適化する
ための、ディジタルコンピュータで行われる方法に関す
る。特に、本発明は、(a)バックトラック検索中に生
じる障害パスに関する情報を記録するテーブルを発生し
維持する方法、及び(b)より頻繁に生じる障害パスを
特定の拘束条件満足型問題の将来のインスタンスの解決
中に回避しうるようにそのテーブルを使用する方法、に
関する。
【0002】
【従来の技術】論理プログラミング及び個別最適化のア
プリケーションはしばしば拘束条件満足型問題としてま
とめられている。拘束条件満足型問題は一般に任意の拘
束条件群を満足することを必要とする。検索手順がその
問題についてのすべての拘束条件を同時に満足させるす
べての問題解決を列挙するために用いられる。
プリケーションはしばしば拘束条件満足型問題としてま
とめられている。拘束条件満足型問題は一般に任意の拘
束条件群を満足することを必要とする。検索手順がその
問題についてのすべての拘束条件を同時に満足させるす
べての問題解決を列挙するために用いられる。
【0003】バックトラックを伴う縦型検索は一つの問
題に対するすべての解決法を列挙するための検索戦略と
して知られている。
題に対するすべての解決法を列挙するための検索戦略と
して知られている。
【0004】縦型検索はトップダウン、レフト・ライト
検索戦略を用いて行えるものである。一例として、IB
M Technical Disclosure Bu
lletin の第30巻第1号、1987年6月、ペ
ージ146〜148にバックトラック検索技術が示され
ている。この文献は一つの検索についての拡張シーケン
スを決定するためのルールを示しており、拡張シーケン
スはアブストラクト オブジェクトが一つの検索ツリ
ー内で検査されるシーケンスと定義される。
検索戦略を用いて行えるものである。一例として、IB
M Technical Disclosure Bu
lletin の第30巻第1号、1987年6月、ペ
ージ146〜148にバックトラック検索技術が示され
ている。この文献は一つの検索についての拡張シーケン
スを決定するためのルールを示しており、拡張シーケン
スはアブストラクト オブジェクトが一つの検索ツリ
ー内で検査されるシーケンスと定義される。
【0005】
【課題を解決するための手段】問題インスタンスのシー
ケンスが解決されるときには異なる問題インスタンス用
の検索ツリーはかなりのオーバラップをもつ傾向のある
ことがわかった。しかしながら、一般に用いられるバッ
クトラック検索の様式では一つの問題の一つのインスタ
ンスを解決する際に得られる経験がその問題の他のイン
スタンスの解決についての処理の軽減のためには用いら
れない。かくして従来の技術ではシステマチックな学習
が生じない。バックトラック検索効率を改善するための
試みは一般に一つの問題の夫々のインスタンスをその問
題の前のインスタンスとは無関係に解決することに向け
られている。しかしながらこれらの技術は問題インスタ
ンスの一つのシーケンスについての平均効率を最適にす
ることについては考慮していない。
ケンスが解決されるときには異なる問題インスタンス用
の検索ツリーはかなりのオーバラップをもつ傾向のある
ことがわかった。しかしながら、一般に用いられるバッ
クトラック検索の様式では一つの問題の一つのインスタ
ンスを解決する際に得られる経験がその問題の他のイン
スタンスの解決についての処理の軽減のためには用いら
れない。かくして従来の技術ではシステマチックな学習
が生じない。バックトラック検索効率を改善するための
試みは一般に一つの問題の夫々のインスタンスをその問
題の前のインスタンスとは無関係に解決することに向け
られている。しかしながらこれらの技術は問題インスタ
ンスの一つのシーケンスについての平均効率を最適にす
ることについては考慮していない。
【0006】米国特許第4752890号明細書ではプ
ログラム実行中のパフォーマンスパラメータのシステマ
チックな学習がアダプテイブ検索技術をつくるために用
いられてそのシステムの将来の使用におけるパフォーマ
ンスを改善している。この特許明細書はさらに、平均検
索実行コストを最小にするように種々の検索代替パスの
再配列を行う最良の方法を決定するためにそれら代替パ
スのパフォーマンスヒストリをモニタすることに立脚す
るアダプティブ検索技術を開示している。この特許の問
題とする問題群は、すべての解決法が見出されている拘
束条件満足型問題ではなく唯一の解決法が見出された形
式の問題である。
ログラム実行中のパフォーマンスパラメータのシステマ
チックな学習がアダプテイブ検索技術をつくるために用
いられてそのシステムの将来の使用におけるパフォーマ
ンスを改善している。この特許明細書はさらに、平均検
索実行コストを最小にするように種々の検索代替パスの
再配列を行う最良の方法を決定するためにそれら代替パ
スのパフォーマンスヒストリをモニタすることに立脚す
るアダプティブ検索技術を開示している。この特許の問
題とする問題群は、すべての解決法が見出されている拘
束条件満足型問題ではなく唯一の解決法が見出された形
式の問題である。
【0007】従って、本発明の目的は拘束条件満足型問
題のインスタンスを解決するために用いられるシステム
のパフォーマンスを向上させる方法を提供することであ
る。
題のインスタンスを解決するために用いられるシステム
のパフォーマンスを向上させる方法を提供することであ
る。
【0008】本発明の他の目的は次の検索中に検査のた
めの検索関連情報を記録するための障害ヒストリテーブ
ルを用いる、バックトラック検索技術を最適化する方法
を提供することである。
めの検索関連情報を記録するための障害ヒストリテーブ
ルを用いる、バックトラック検索技術を最適化する方法
を提供することである。
【0009】
【課題を解決するための手段及び作用】上記の問題は本
発明によれば、ディジタルコンピュータで行われる拘束
条件満足型の問題の解決効率を改善する装置及び方法に
より解決されそして他の利点が得られる。この方法は、
バインディングセット属性、ポテンシャルセービング属
性及びアキュムレーテッドセービング属性を含む、夫々
複数の属性フィールドを有する複数のエントリに割当て
られる記憶手段を有するデータ構造をつくるステップを
含んでいる。この方法はさらにツリー構造のバックトラ
ック検索中に識別された障害パスの発生に応じてデータ
構造にエントリをそう入するステップを含む。この方法
はまたこのツリー構造の、くり返し的に障害として識別
されるパスを回避するためにバックトラック検索中にデ
ータ構造のエントリを検査するステップを含む。この検
査ステップは検索ツリーの一つのノードからの順方向の
動きの前に生じる。検索技術は検索ツリーのルートノー
ドから現ノードへの一つのパスに対応する現在のバイン
ディングセットの値が障害ヒストリテーブル内の一つの
エントリのバインディングセット属性内にすでにあるか
どうかを決定する。もしあれば、識別されたエントリに
ついてのアキュムレーテッドセービング属性と関連した
値がそのエントリのポテンシャルセービング属性の値だ
け増加される。この検索は次に現ノードの親ノードにバ
ックトラックして前に識別された障害パスを回避する。 もし整合するエントリがないならば、検索は順方向に継
続する。
発明によれば、ディジタルコンピュータで行われる拘束
条件満足型の問題の解決効率を改善する装置及び方法に
より解決されそして他の利点が得られる。この方法は、
バインディングセット属性、ポテンシャルセービング属
性及びアキュムレーテッドセービング属性を含む、夫々
複数の属性フィールドを有する複数のエントリに割当て
られる記憶手段を有するデータ構造をつくるステップを
含んでいる。この方法はさらにツリー構造のバックトラ
ック検索中に識別された障害パスの発生に応じてデータ
構造にエントリをそう入するステップを含む。この方法
はまたこのツリー構造の、くり返し的に障害として識別
されるパスを回避するためにバックトラック検索中にデ
ータ構造のエントリを検査するステップを含む。この検
査ステップは検索ツリーの一つのノードからの順方向の
動きの前に生じる。検索技術は検索ツリーのルートノー
ドから現ノードへの一つのパスに対応する現在のバイン
ディングセットの値が障害ヒストリテーブル内の一つの
エントリのバインディングセット属性内にすでにあるか
どうかを決定する。もしあれば、識別されたエントリに
ついてのアキュムレーテッドセービング属性と関連した
値がそのエントリのポテンシャルセービング属性の値だ
け増加される。この検索は次に現ノードの親ノードにバ
ックトラックして前に識別された障害パスを回避する。 もし整合するエントリがないならば、検索は順方向に継
続する。
【0010】
【実施例】本発明を用いるアプリケーションはディジタ
ルデータプロセッサにより次の一般式を有する拘束条件
満足型問題解をしばしば解決する。
ルデータプロセッサにより次の一般式を有する拘束条件
満足型問題解をしばしば解決する。
【0011】
G(S)=P1 (S1 )&P2 (S2 )&
…PM (SM )但し、G(S)は解決されるべき問
題であり、S={X1 ,X2,…XN }はN個のア
ーギュメント変数群である。1≦i≦Mとすると、Pi
(Si )はアーギュメントSi を有するi番目の
副問題である。但し、Si はSの部分集合である。問
題Gに対する解は、(a)各副問題Pi が解決し、そ
して(b)2個以上の副問題に共通の各アーギュメント
が一定の値に一致して結合される、ようにアーギュメン
トP1 ,P2 ,…PM の夫々に対する定数のバイ
ンディングである。これらバインディングが異なる、す
なわち少くとも1つのアーギュメントがこれら2つのバ
インディングの2つの異なる値に結合されるなら、2つ
の解は異なる。
…PM (SM )但し、G(S)は解決されるべき問
題であり、S={X1 ,X2,…XN }はN個のア
ーギュメント変数群である。1≦i≦Mとすると、Pi
(Si )はアーギュメントSi を有するi番目の
副問題である。但し、Si はSの部分集合である。問
題Gに対する解は、(a)各副問題Pi が解決し、そ
して(b)2個以上の副問題に共通の各アーギュメント
が一定の値に一致して結合される、ようにアーギュメン
トP1 ,P2 ,…PM の夫々に対する定数のバイ
ンディングである。これらバインディングが異なる、す
なわち少くとも1つのアーギュメントがこれら2つのバ
インディングの2つの異なる値に結合されるなら、2つ
の解は異なる。
【0012】例えば、拘束条件満足型の問題の一つのイ
ンスタンスにおいて、一つにはSのサブセットのバイン
ディングが与えられ、検索プロシーデュアがSの残りの
部分についてのすべての一致バインディングを列挙する
ことを要求される。図1に示される形式の検索ツリーが
この検索手順に用いられる。検索ツリー10はルートノ
ード12を有する。ツリー10に沿ったリーフノードへ
の動きを順方向検索、ルートノード12への動きをバッ
クトラックと呼ぶ。1個以上の子を有するツリーの一つ
のノードは「親ノード」と呼ばれ、これら子の夫々は「
子ノード」と呼ばれる。例えば図1のノードVj はノ
ードVi の親ノードであり、ノードVi はノードV
k の親ノードである。
ンスタンスにおいて、一つにはSのサブセットのバイン
ディングが与えられ、検索プロシーデュアがSの残りの
部分についてのすべての一致バインディングを列挙する
ことを要求される。図1に示される形式の検索ツリーが
この検索手順に用いられる。検索ツリー10はルートノ
ード12を有する。ツリー10に沿ったリーフノードへ
の動きを順方向検索、ルートノード12への動きをバッ
クトラックと呼ぶ。1個以上の子を有するツリーの一つ
のノードは「親ノード」と呼ばれ、これら子の夫々は「
子ノード」と呼ばれる。例えば図1のノードVj はノ
ードVi の親ノードであり、ノードVi はノードV
k の親ノードである。
【0013】本発明の一つの観点は拘束条件満足問題を
解くために用いられるディジタルデータプロセッサのメ
モリ内にデータ構造を作り維持することに関する。この
データ構造はここでは障害ヒストリテーブル20と呼ぶ
。障害ヒストリテーブル20のフォーマットを図2に示
す。障害ヒストリテーブル20はバックトラック検索中
に生じた障害パスに関する有限の量の情報をレコードす
るために用いられる。本発明の他の観点は、しばしば出
会う障害パスを拘束条件満足問題の将来のインスタンス
の解決中に回避するようにこのテーブル20を用いる方
法に関する。
解くために用いられるディジタルデータプロセッサのメ
モリ内にデータ構造を作り維持することに関する。この
データ構造はここでは障害ヒストリテーブル20と呼ぶ
。障害ヒストリテーブル20のフォーマットを図2に示
す。障害ヒストリテーブル20はバックトラック検索中
に生じた障害パスに関する有限の量の情報をレコードす
るために用いられる。本発明の他の観点は、しばしば出
会う障害パスを拘束条件満足問題の将来のインスタンス
の解決中に回避するようにこのテーブル20を用いる方
法に関する。
【0014】図3は本発明の実施に適したデータ処理シ
ステム14の一実施例のブロック図である。システム1
4はメモリ18に双方向的に接続されたデータ処理ユニ
ット(DPU)16を含む。メモリ18は障害ヒストリ
テーブル(FHT)20として上述したデータ構造を記
憶する。またメモリ18は検索ツリー10を表わすデー
タのような他のデータを記憶しそして本発明の方法の実
行のためのインストラクションを含む、バックトラック
ツリー検索プロシーデュアを実行するための動作可能な
DPUインストラクションを記憶する。DPU16は時
間ソース(TIME16a)へのアクセスを有しそして
それを、後述するようにバックトラック検索を実行する
間に読取る。本発明はこのような実施例に限られるもの
ではなく、分布プロセッサそしてまたは分布メモリ型ア
ーキテクチュアを含む多くの異なったデータ処理環境に
使用できるものである。
ステム14の一実施例のブロック図である。システム1
4はメモリ18に双方向的に接続されたデータ処理ユニ
ット(DPU)16を含む。メモリ18は障害ヒストリ
テーブル(FHT)20として上述したデータ構造を記
憶する。またメモリ18は検索ツリー10を表わすデー
タのような他のデータを記憶しそして本発明の方法の実
行のためのインストラクションを含む、バックトラック
ツリー検索プロシーデュアを実行するための動作可能な
DPUインストラクションを記憶する。DPU16は時
間ソース(TIME16a)へのアクセスを有しそして
それを、後述するようにバックトラック検索を実行する
間に読取る。本発明はこのような実施例に限られるもの
ではなく、分布プロセッサそしてまたは分布メモリ型ア
ーキテクチュアを含む多くの異なったデータ処理環境に
使用できるものである。
【0015】本発明の方法は障害ヒストリテーブル20
であるデータ構造内にエントリを作りそう入する。テー
ブル20のエントリ1〜nの夫々はバインディングセッ
ト属性、ポテンシャルセービング属性、アキュムレーテ
ッドセービング属性を含む少くとも3個の属性またはコ
ンポーネントを有する。まず障害ヒストリテーブル20
のすべてのエントリが0にセットされる。図4及び5に
示すように次の方法がテーブル20へのエントリのそう
入に用いられる。
であるデータ構造内にエントリを作りそう入する。テー
ブル20のエントリ1〜nの夫々はバインディングセッ
ト属性、ポテンシャルセービング属性、アキュムレーテ
ッドセービング属性を含む少くとも3個の属性またはコ
ンポーネントを有する。まず障害ヒストリテーブル20
のすべてのエントリが0にセットされる。図4及び5に
示すように次の方法がテーブル20へのエントリのそう
入に用いられる。
【0016】後述するNクイーン問題(N−Queen
s Problem)のような特定の拘束条件満足型問
題の一つのインスタンスがシステム14に与えられてそ
れにより解決すべきものとする。図1のバックトラック
検索ツリー10の一つのノード、例えばVj からの第
1の順方向の動きの前にこのシステムはTIME16a
から得られる現在のシステムクロック時間をスタックロ
ケーションのようなメモリ18のロケーションにレコー
ドする(ブロック30)。このレコードされた時間をノ
ードVj について(タイムフォーワード(Vj )と
呼ぶ。夫々のバックトラック動作(ブロック32)の後
に次のアクションが行われる。
s Problem)のような特定の拘束条件満足型問
題の一つのインスタンスがシステム14に与えられてそ
れにより解決すべきものとする。図1のバックトラック
検索ツリー10の一つのノード、例えばVj からの第
1の順方向の動きの前にこのシステムはTIME16a
から得られる現在のシステムクロック時間をスタックロ
ケーションのようなメモリ18のロケーションにレコー
ドする(ブロック30)。このレコードされた時間をノ
ードVj について(タイムフォーワード(Vj )と
呼ぶ。夫々のバックトラック動作(ブロック32)の後
に次のアクションが行われる。
【0017】検索がノードVk からノードVi へと
バックトラックするものとする。ノードVi から出る
他の代替パスがあるかどうかを決定するためのチエック
がなされる(ブロック34)。もしあれば、その代替パ
スを順方向にたどる(ブロック36)。もしなければ次
のステップが行われる。ノードVi にルートを有する
サブツリーが少くとも一つの解を含んでいれば(ブロッ
ク38)、この方法はその検索ツリー内のノードVi
の親ノードへとバックトラックする(ブロック40)。 前述のように図1のノードVi の親ノードはVj で
ある。
バックトラックするものとする。ノードVi から出る
他の代替パスがあるかどうかを決定するためのチエック
がなされる(ブロック34)。もしあれば、その代替パ
スを順方向にたどる(ブロック36)。もしなければ次
のステップが行われる。ノードVi にルートを有する
サブツリーが少くとも一つの解を含んでいれば(ブロッ
ク38)、この方法はその検索ツリー内のノードVi
の親ノードへとバックトラックする(ブロック40)。 前述のように図1のノードVi の親ノードはVj で
ある。
【0018】しかしながら問題は、このノードVi に
ルートをもつサブツリーが解を含まない場合である。本
発明の方法は将来の処理を容易にするためにこの場合を
エクスプロイトする。
ルートをもつサブツリーが解を含まない場合である。本
発明の方法は将来の処理を容易にするためにこの場合を
エクスプロイトする。
【0019】詳細には、もしノードVi をルートとす
るサブツリーが解を含まない場合には、現在のクロック
時間(タイムフォワード(Vi ))がレコードされ(
ブロック42)そして障害ヒストリテーブル20の新し
いエントリが、バックトラックを強行するいずれかの検
索状態をレコードするためにつくられる(ブロック44
)。 ブロック44は図5に示す付加システム44a,44b
,44c及び44dを含む。さらに、初期テストが、後
述するようにテーブル20が一杯であるかどうかを決定
するためになされる(図7)。
るサブツリーが解を含まない場合には、現在のクロック
時間(タイムフォワード(Vi ))がレコードされ(
ブロック42)そして障害ヒストリテーブル20の新し
いエントリが、バックトラックを強行するいずれかの検
索状態をレコードするためにつくられる(ブロック44
)。 ブロック44は図5に示す付加システム44a,44b
,44c及び44dを含む。さらに、初期テストが、後
述するようにテーブル20が一杯であるかどうかを決定
するためになされる(図7)。
【0020】図5に続き、バインディングセット属性に
ついてテーブル20に検索ツリー10のルートノード1
2からノードVi へのパスに含まれる変数の現在のバ
インディングの値をレコードする。また、ポテンシャル
セービング属性に(タイムバックワード(Vi )−(
タイムフォーワード(Vi ))の値が割当てられる。 アキュムレーデッドセービング属性には0値が割当てら
れる。 新しいエントリがつくられた後に、今そう入されたエン
トリよりも制限の厳しいバインディングセットを有する
現存するエントリをこのテーブルから除去する。これに
関し、バインディングセットSx は、変数及びそれら
に関連した結合された他のSy 内の値がそれら変数及
びそれらに関連するSx 内の値のサブセットであれば
他のバインディングセットSy より制限的と考える。
ついてテーブル20に検索ツリー10のルートノード1
2からノードVi へのパスに含まれる変数の現在のバ
インディングの値をレコードする。また、ポテンシャル
セービング属性に(タイムバックワード(Vi )−(
タイムフォーワード(Vi ))の値が割当てられる。 アキュムレーデッドセービング属性には0値が割当てら
れる。 新しいエントリがつくられた後に、今そう入されたエン
トリよりも制限の厳しいバインディングセットを有する
現存するエントリをこのテーブルから除去する。これに
関し、バインディングセットSx は、変数及びそれら
に関連した結合された他のSy 内の値がそれら変数及
びそれらに関連するSx 内の値のサブセットであれば
他のバインディングセットSy より制限的と考える。
【0021】拘束条件満足問題の以降のインスタンスが
解決されるとき障害ヒストリテーブル20に含まれる情
報が次のように用いられ、維持される。
解決されるとき障害ヒストリテーブル20に含まれる情
報が次のように用いられ、維持される。
【0022】図6はテーブル20を用いるための更新法
をブロック図として示すものである。一つのノード、例
えばノードVi からの夫々の順方向の動きの前にこの
検索法は、ルートノード12からノードVi へのパス
に対応する現在のバインディングセットの値が障害ヒス
トリテーブル20内の一つのエントリのバインディング
セット属性内にすでにあるかどうかを決定する(ブロッ
ク50)。もしすでにあれば、このエントリについての
アキュムレーテッドセービング属性の値をこのエントリ
のポテンシャルセービング属性の値だけ増加する(ブロ
ック52)。検索は次にバックトラック検索ツリーのノ
ードVi の親ノードにバックトラックして、本発明に
より前に識別された障害パスを回避する。障害ヒストリ
テーブル20内に整合するエントリがブロック50にお
いて見出されない場合には検索は前述のように順方向に
続けられる(ブロック56)。
をブロック図として示すものである。一つのノード、例
えばノードVi からの夫々の順方向の動きの前にこの
検索法は、ルートノード12からノードVi へのパス
に対応する現在のバインディングセットの値が障害ヒス
トリテーブル20内の一つのエントリのバインディング
セット属性内にすでにあるかどうかを決定する(ブロッ
ク50)。もしすでにあれば、このエントリについての
アキュムレーテッドセービング属性の値をこのエントリ
のポテンシャルセービング属性の値だけ増加する(ブロ
ック52)。検索は次にバックトラック検索ツリーのノ
ードVi の親ノードにバックトラックして、本発明に
より前に識別された障害パスを回避する。障害ヒストリ
テーブル20内に整合するエントリがブロック50にお
いて見出されない場合には検索は前述のように順方向に
続けられる(ブロック56)。
【0023】図7は障害ヒストリテーブル20について
のオーバフロー処理方を示す。障害ヒストリテーブル2
0がそれへの新エントリのそう入を試みる間に満杯であ
ると決定される(ブロック60)と、この検索方法は次
のステップを実行する。アキュムレーテッドセービング
属性について最小値を有するエントリを識別するための
検索がテーブル20に行われる(ブロック62)。いく
つかのキャンディデートがあればポテンシャルセービン
グ属性について最小値を有するキャンディデートエント
リの一つが選ばれる(ブロック64)。識別されたテー
ブル20のエントリのポテンシャルセービング属性の値
がそう入されるべきエントリのポテンシャルセービング
属性値と比較される(ブロック66)。後者の方が大き
ければテーブル20内でそれを前者と入れ替える(ブロ
ック68)。前者が大きければ新しいエントリはテーブ
ル20にそう入されない。
のオーバフロー処理方を示す。障害ヒストリテーブル2
0がそれへの新エントリのそう入を試みる間に満杯であ
ると決定される(ブロック60)と、この検索方法は次
のステップを実行する。アキュムレーテッドセービング
属性について最小値を有するエントリを識別するための
検索がテーブル20に行われる(ブロック62)。いく
つかのキャンディデートがあればポテンシャルセービン
グ属性について最小値を有するキャンディデートエント
リの一つが選ばれる(ブロック64)。識別されたテー
ブル20のエントリのポテンシャルセービング属性の値
がそう入されるべきエントリのポテンシャルセービング
属性値と比較される(ブロック66)。後者の方が大き
ければテーブル20内でそれを前者と入れ替える(ブロ
ック68)。前者が大きければ新しいエントリはテーブ
ル20にそう入されない。
【0024】これに関し、テーブル20についての可能
なエントリの最大数は一般にアプリケーションによるも
のであり、データ処理システム内での検索ツリーの高さ
ないしはメモリ容量により決まる。一つの考えられる値
は、(x)を検索ツリーの高さとし、(c)を定数とす
ると、c(x)である。
なエントリの最大数は一般にアプリケーションによるも
のであり、データ処理システム内での検索ツリーの高さ
ないしはメモリ容量により決まる。一つの考えられる値
は、(x)を検索ツリーの高さとし、(c)を定数とす
ると、c(x)である。
【0025】本発明の障害ヒストリテーブルに障害を記
録することにより得られるパフォーマンスの改善の程度
を次に述べる。プロトタイプの拘束条件満足問題、すな
わちNクイーン問題に対するすべての解を発生するため
の時間を測定した。要約すると、Nクイーン問題はクイ
ーンが他のクイーンをテークしないようにN×Nチエッ
カーボード上にN個のクイーンを配置することに関する
。N=6とすると、すべての解を発生するための時間は
173ミリ秒となった。2個の長さを越えない障害パス
が障害ヒストリテーブルに記録された、障害ヒストリテ
ーブル内のこの情報により、すべての解を発生するため
の時間は62ミリ秒となり、2.79:1に改善された
。N=8についてはすべての解を発生するための時間は
6.488秒であった。3の長さを越えない障害パスが
障害ヒストリテーブルに記録された。障害ヒストリテー
ブルのこの情報により、全解を発生するための時間は3
.59秒となり、80%の改善が得られた。上記の改善
度は障害ヒストリテーブルを用いるのに必要なランタイ
ムオーバーヘッドを考慮している。実際にはパフォーマ
ンス改善の度合は問題の使用を特徴づける統計により決
まる。
録することにより得られるパフォーマンスの改善の程度
を次に述べる。プロトタイプの拘束条件満足問題、すな
わちNクイーン問題に対するすべての解を発生するため
の時間を測定した。要約すると、Nクイーン問題はクイ
ーンが他のクイーンをテークしないようにN×Nチエッ
カーボード上にN個のクイーンを配置することに関する
。N=6とすると、すべての解を発生するための時間は
173ミリ秒となった。2個の長さを越えない障害パス
が障害ヒストリテーブルに記録された、障害ヒストリテ
ーブル内のこの情報により、すべての解を発生するため
の時間は62ミリ秒となり、2.79:1に改善された
。N=8についてはすべての解を発生するための時間は
6.488秒であった。3の長さを越えない障害パスが
障害ヒストリテーブルに記録された。障害ヒストリテー
ブルのこの情報により、全解を発生するための時間は3
.59秒となり、80%の改善が得られた。上記の改善
度は障害ヒストリテーブルを用いるのに必要なランタイ
ムオーバーヘッドを考慮している。実際にはパフォーマ
ンス改善の度合は問題の使用を特徴づける統計により決
まる。
【0026】本発明はさらに上記の障害ヒストリテーブ
ルのいくつかの変更例を与えるものである。特にそう入
法並びに交換法は次に述べるように変更しうる。
ルのいくつかの変更例を与えるものである。特にそう入
法並びに交換法は次に述べるように変更しうる。
【0027】まず、図4及び5に示すようにそう入法の
いくつかの変更例を述べる。一つの変更例は、検索ツリ
ーのルートノード12から現ノードへのパスの長さが特
定の定数より小さいときにのみ障害ヒストリテーブルに
エントリのそう入を行うものである。この点に関し、パ
スの長さを検索ツリー10のルートノード12から現ノ
ードへの多数のパス「エッジ」と考える。他の変更例は
一つのノードについて決定されたポテンシャルセービン
グの値が所定のしきい値より大であるときにのみテーブ
ルにエントリをそう入するものである。
いくつかの変更例を述べる。一つの変更例は、検索ツリ
ーのルートノード12から現ノードへのパスの長さが特
定の定数より小さいときにのみ障害ヒストリテーブルに
エントリのそう入を行うものである。この点に関し、パ
スの長さを検索ツリー10のルートノード12から現ノ
ードへの多数のパス「エッジ」と考える。他の変更例は
一つのノードについて決定されたポテンシャルセービン
グの値が所定のしきい値より大であるときにのみテーブ
ルにエントリをそう入するものである。
【0028】次に、図7の交換法の変形を述べる。一つ
の変形は最も小さいポテンシャルセービング属性値を有
するエントリをテーブル20から除くものである。いく
つかのキャンディデートがあれば最小のアキュムレーデ
ッドセービング属性値をもつエントリが除去される。他
の変形はポテンシャルセービング及びアキュムレーデッ
ドセービング属性の和が最小となるテーブル内のエント
リを決定することである。この和がそう入を考えるキャ
ンディデートエントリのポテンシャルセービングより小
さければ、そのエントリが前者のエントリに入れ替わる
。
の変形は最も小さいポテンシャルセービング属性値を有
するエントリをテーブル20から除くものである。いく
つかのキャンディデートがあれば最小のアキュムレーデ
ッドセービング属性値をもつエントリが除去される。他
の変形はポテンシャルセービング及びアキュムレーデッ
ドセービング属性の和が最小となるテーブル内のエント
リを決定することである。この和がそう入を考えるキャ
ンディデートエントリのポテンシャルセービングより小
さければ、そのエントリが前者のエントリに入れ替わる
。
【図1】典型的バックトラック検索ツリーを示す図。
【図2】障害ヒストリテーブルであるデータ構造のフォ
ーマットを示す図。
ーマットを示す図。
【図3】本発明を実施するのに適したデータ処理システ
ムの一実施例のブロック図。
ムの一実施例のブロック図。
【図4】障害ヒストリテーブルにエントリをつくる方法
を示すフローチャート。
を示すフローチャート。
【図5】図4のブロック44の、特に障害ヒストリテー
ブル内に新しいエントリをつくるのに関連したステップ
の詳細図。
ブル内に新しいエントリをつくるのに関連したステップ
の詳細図。
【図6】障害ヒストリテーブル内のエントリを更新する
方法を示すフローチャート。
方法を示すフローチャート。
【図7】障害ヒストリテーブルのオーバフロー条件に応
じる方法を示すフローチャート。
じる方法を示すフローチャート。
10 検索ツリー
12 ルートノード
14 データ処理システム
16 データ処理ユニット(DPU)18 メモリ
Claims (20)
- 【請求項1】ディジタルデータプロセッサ手段により実
行されるバックトラックツリー検索技術により行われる
拘束条件満足型問題解決効率改善方法であって、前記デ
ィジタルデータプロセッサ手段のメモリ手段内に、夫々
複数の属性フィールドからなる複数のエントリを記憶す
るためのデータ構造をつくるステップと、検索ツリーの
バックトラック検索中に識別される障害パスの発生に応
じて上記データ構造にエントリをそう入するステップと
、障害パスとして識別された検索ツリーのパスを回避す
るためにバックトラック検索中上記データ構造のエント
リを検査するステップとを有する拘束条件満足型問題解
決効率改善方法。 - 【請求項2】前記データ構造をつくるステップは障害ヒ
ストリテーブルをつくるステップを含み、夫々のエント
リはバインディングセット属性、ポテンシャルセービン
グ属性及びアキュムレーテッドセービング属性を表わす
データを記憶するための少くとも3個の属性フィールド
を有する請求項1に記載の方法。 - 【請求項3】前記検索ツリー構造の現ノードからの順方
向の動きを行う前に第1現時点値を記録するステップを
含んでいる請求項2に記載の方法。 - 【請求項4】障害パスの識別による検索ツリーの現ノー
ドへのバックトラックの発生に応じて、現ノードからの
代替順方向パスがあるかどうかを決定するステップと、
現ノードからの代替順方向パスがないとき、現ノードを
ルートとするサブツリーが少くとも1つの解決を含むか
どうかを決定するステップと、このサブツリーが少くと
も1つの解決を含まないとき、次の現時間値を記録する
ステップと、現ノードへのバックトラックを強行させる
状態に関連したデータを記録するために障害ヒストリテ
ーブルにエントリをそう入するステップとを含んでいる
請求項3に記載の方法。 - 【請求項5】前記エントリのそう入ステップは、前記関
連するバインディングセット属性についてルートノード
から現ノードへのパスに関連した変数のバインディング
の現在値を記録するステップと、前記関連したポテンシ
ャルセービング属性に、第1現時間値と次の現時間値の
差の値を割当てるステップと、前記関連するアキュムレ
ーテッドセービング属性に0値を割当てるステップとを
含んでいる請求項4に記載の方法。 - 【請求項6】障害ヒストリテーブルへの他のエントリが
前記障害ヒストリテーブルに最後にそう入されたエント
リのバインディングセットよりも制限の大きいバインデ
ィングセットを有するかどうかを決定するステップと今
そう入されたバインディングセットより制限の大きいバ
インディングセットを有するエントリを障害ヒストリテ
ーブルから除去するステップと、をさらに含んでいる請
求項5記載の方法。 - 【請求項7】障害ヒストリテーブルのエントリが最後に
障害ヒストリテーブルにそう入されたエントリのバイン
ディングセットより制限の大きいバインディングセット
を有するかどうかを決定するステップは、変数及び他の
バインディングセットSy内のそれらに関連する結合値
が変数及び第1バインディングセットSx内のそれらに
関連する値のサブセットであるときSxがSyより制限
が大きいとする目安を用いて行われる請求項6に記載の
方法。 - 【請求項8】前記エントリのそう入ステップはその第1
ステップとして新しくそう入されたエントリにより障害
ヒストリテーブルがオーバフローするかどうかを決定す
るステップを含んでいる請求項2に記載の方法。 - 【請求項9】新しくそう入されたエントリにより障害ヒ
ストリテーブルがオーバフローする場合に、最小のアキ
ュムレーテッドセービング属性値を有する障害ヒストリ
テーブル内のエントリを識別するステップと、識別され
たエントリのポテンシャルセービング属性の値を障害ヒ
ストリテーブルにそう入されるべきエントリのポテンシ
ャルセービング属性値と比較するステップと、障害ヒス
トリテーブル内の識別されたエントリを、そう入される
べきエントリのポテンシャルセービング属性値が識別さ
れたエントリのポテンシャルセービング属性値より大き
いときにのみ、そう入されるべきエントリで置き換える
ステップとをさらに含んでいる請求項8に記載の方法。 - 【請求項10】前記最小のアキュムレーテッドセービン
グ属性値を有する障害ヒストリテーブル内のエントリを
識別するステップが複数のエントリを識別した場合に、
最小のポテンシャルセービング属性値を有するものをキ
ャンディデートエントリとして選択するステップを含ん
でいる請求項9に記載の方法。 - 【請求項11】前記検査するステップは、検索ツリーの
現ノードから順方向の動きを行う前に、検索ツリーのル
ートノードから現ノードへのパスに対応する現バインデ
ィングセットの値が障害ヒストリテーブル内の一つのエ
ントリのバインディングセット属性内にすでにあるかど
うかを決定するステップと、もしすでにあれば、そのエ
ントリについてのアキュムレーテッドセービング属性値
をそのエントリのポテンシャルセービング属性値だけ増
加させるステップと、現ノードを親ノードへバックトラ
ックするステップとを含んでいる請求項2に記載の方法
。 - 【請求項12】前記そう入するステップは検索ツリーの
ルートノードから現ノードへのパスの長さが特定の定数
より小さいときにのみ行われる請求項2に記載の方法。 - 【請求項13】前記そう入するステップは一つのノード
のポテンシャルセービング属性値が所定のしきい値より
大のときのみ行われる請求項2に記載の方法。 - 【請求項14】新しくそう入されたエントリにより障害
ヒストリテーブルがオーバフローする場合に、最小のポ
テンシャルセービング属性値を有するエントリを障害ヒ
ストリテーブルから除去するステップを含んでいる請求
項8に記載の方法。 - 【請求項15】複数のキャンディデートエントリがある
場合に最小のアキュムレーテッドセービング属性値を有
するキャンディデートエントリを除去するステップを含
んでいる請求項14に記載の方法。 - 【請求項16】そう入されるべきエントリのそう入によ
り障害ヒストリテーブルがオーバフローするとき、ポテ
ンシャルセービング属性とアキュムレーテッドセービン
グ属性の和が障害ヒストリテーブル内の他のエントリの
それより小さいエントリを障害ヒストリテーブル内に識
別するステップと、そう入されるべきエントリのポテン
シャルセービング属性よりその和が小さいとき、そう入
されるべきエントリで、障害ヒストリテーブル内で識別
されたエントリを置き換えるステップとをさらに含んで
いる請求項8に記載の方法。 - 【請求項17】すべての障害ヒストリテーブル属性を0
値に割当てる初期ステップを含んでいる請求項2に記載
の方法。 - 【請求項18】バックトラックツリー検索技術による拘
束条件満足問題のインスタンスを解決するための装置で
あって、夫々検索ツリーのノードに関連したバインディ
ングセット属性、ポテンシャルセービング属性及びアキ
ュムレーテッドセービング属性を表わすデータを記憶す
る少くとも3個の属性フィールドからなる複数のエント
リを有するデータ構造をメモリ手段内に記憶するために
このメモリ手段に接続されたデータ処理手段を備え、こ
のデータ処理手段は、第1バックトラック検索手順中に
識別される障害パスの発生に応じてデータ構造にエント
リをそう入する手段を含む第1バックトラックツリー検
索手順を実行するための手段と、前に障害パスとして識
別された検索ツリーのパスを迂回するために次のバック
トラックツリー検索手順中にデータ構造のエントリを検
査する手段とを含んでいる、拘束条件満足型問題解決効
率改善装置。 - 【請求項19】検索ツリーの現ノードからの順方向の動
きを実行する前に現時間値を記録するための手段を含ん
でいる請求項18に記載の装置。 - 【請求項20】障害パスの識別による検索ツリーの現ノ
ードへのバックトラックの発生に応じて、現ノードから
の代替順方向パスがあるかどうかを決定し、代替順方向
パスがないとき現ノードにルートをもつサブツリーが少
くとも1つの解を含むかどうかを決定し、サブツリーが
少くとも1つの解を含まないとき次の現時間値を記録し
、現ノードへのバックトラックを強制される状態に関連
したデータを記録するためデータ構造にエントリをそう
入するための手段と、関連するバインディングセット属
性についてルートノードから現ノードへのパスに関連し
た変数のバインディングの現在値を記録するための手段
を含むエントリそう入のための手段と、関連するポテン
シャルセービング属性に第1現時間値と次の現時間値と
の差の値を割当てるための手段と、関連するアキュムレ
ーテッドセービング属性に0値を割当てるための手段と
、を含んでいる請求項19に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US48510190A | 1990-02-26 | 1990-02-26 | |
US485101 | 1990-02-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04217062A true JPH04217062A (ja) | 1992-08-07 |
Family
ID=23926909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3012821A Pending JPH04217062A (ja) | 1990-02-26 | 1991-01-09 | 拘束条件満足型問題解決効率改善方法及び装置 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0444487A3 (ja) |
JP (1) | JPH04217062A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369732A (en) * | 1993-03-29 | 1994-11-29 | Trilogy Development Group | Method and apparatus for goal processing memory management |
FR2798472B1 (fr) * | 1999-09-15 | 2001-12-14 | Centre Nat Etd Spatiales | Procede de localisation d'elements defectueux dans un circuit integre |
-
1991
- 1991-01-09 JP JP3012821A patent/JPH04217062A/ja active Pending
- 1991-02-16 EP EP19910102209 patent/EP0444487A3/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP0444487A3 (en) | 1992-11-19 |
EP0444487A2 (en) | 1991-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5691925A (en) | Deriving tractable sub-system for model of larger system | |
JP3323180B2 (ja) | 決定木変更方法およびデータマイニング装置 | |
US5815655A (en) | Device for generating error path list and method of extracting the worst paths | |
CA2434081C (en) | Data structures utilizing objects and pointers in the form of a tree structure | |
US7937622B2 (en) | Method and system for autonomic target testing | |
US6157922A (en) | Method and apparatus for transparent backtracking | |
US20110106776A1 (en) | Incremental implementation of undo/redo support in legacy applications | |
CN109740122A (zh) | 思维导图用例文件的转换方法及装置 | |
CN108319711A (zh) | 数据库的事务一致性测试方法、装置、存储介质及设备 | |
US6134513A (en) | Method and apparatus for simulating large, hierarchical microelectronic resistor circuits | |
US7996200B2 (en) | Transaction-based system and method for abstraction of hardware designs | |
US5249261A (en) | Failure history table for optimizing backtrack searches | |
CN113326026B (zh) | 一种微服务业务流程接口的生成方法与终端 | |
CN109189343B (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
US8478575B1 (en) | Automatic anomaly detection for HW debug | |
JPH04217062A (ja) | 拘束条件満足型問題解決効率改善方法及び装置 | |
US8589435B2 (en) | Method, system and program for simplifying data flow in a statement with sequenced subexpressions | |
CN112579456B (zh) | 一种Web自动化测试方法及装置 | |
US6662171B1 (en) | Automated diagnostic metric loop | |
US20040073892A1 (en) | Event-driven observability enhanced coverage analysis | |
JP2913969B2 (ja) | 事例検索システムおよびその検索方法 | |
CN113254269A (zh) | 一种存储系统异常事件修复的方法、系统、设备和介质 | |
JP2005234945A (ja) | 同時実行制御方法及び装置 | |
US8255856B1 (en) | DC path checking in a hierarchical circuit design | |
CN111160583A (zh) | 一种数据处理方法及装置 |