(57)【要約】【課題】探索時間を短縮すること。【解決手段】処理部１２は、入力データおよび出力データを取得し、記憶部１１に格納する。処理部１２は、複数のデータ変換方法を複数のグループに分類する。処理部１２は、複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて入力データから中間データを生成し、当該グループに応じた評価関数を用いて中間データを評価することで、当該グループ内でデータ変換方法の組み合わせを探索する。処理部１２は、複数のグループそれぞれの探索の結果に基づいて、入力データを出力データに変換することができるデータ変換方法の組み合わせを決定する。【選択図】図１
2019159362.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
入力データおよび出力データを取得し、
複数のデータ変換方法を複数のグループに分類し、
前記複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて前記入力データから中間データを生成し、当該グループに応じた評価関数を用いて前記中間データを評価することで、当該グループ内でデータ変換方法の組み合わせを探索し、
前記複数のグループそれぞれの前記探索の結果に基づいて、前記入力データを前記出力データに変換することができるデータ変換方法の組み合わせを決定する、
処理を実行させる探索プログラム。
【請求項２】
前記分類では、前記入力データと前記出力データとの間の距離を示す指標値を用いてグループ数を決定する、
請求項１記載の探索プログラム。
【請求項３】
前記コンピュータに更に、他の入力データから他の出力データへの変換に使用されたデータ変換方法の数と、前記他の入力データと前記他の出力データとの間の距離を示す他の指標値と、の間の関係を示す係数を算出する処理を実行させ、
前記分類では、前記指標値と前記係数とを用いて前記グループ数を決定する、
請求項２記載の探索プログラム。
【請求項４】
前記分類では、前記複数のデータ変換方法の間の類似度を示す類似度情報を参照して、決定した前記グループ数のグループを生成する、
請求項２記載の探索プログラム。
【請求項５】
前記複数のデータ変換方法それぞれに対して評価関数が対応付けられており、
前記分類では、評価関数の共通性に基づいて前記複数のデータ変換方法を分類する、
請求項１記載の探索プログラム。
【請求項６】
前記分類では、第１の評価関数が対応付けられた第１のデータ変換方法と第２の評価関数が対応付けられた第２のデータ変換方法とを同一グループに分類した場合、前記第１の評価関数と前記第２の評価関数とから当該同一グループに応じた評価関数を算出する、
請求項５記載の探索プログラム。
【請求項７】
前記コンピュータに更に、
前記複数のグループの何れの前記探索によっても前記入力データから前記出力データに到達しなかった場合、前記複数のグループそれぞれについて前記探索によって生成された中間データの中から代表中間データを抽出し、前記複数のグループそれぞれの評価関数とは異なる共通評価関数を用いて、前記複数のグループそれぞれの前記代表中間データを評価して１つのグループの代表中間データを選択し、
前記入力データに代えて前記選択した代表中間データを基点として、前記複数のグループそれぞれの前記探索を再度実行する、
処理を実行させる請求項１記載の探索プログラム。
【請求項８】
前記複数のグループそれぞれの前記代表中間データは、当該グループ内で生成された中間データのうち当該グループに応じた評価関数による評価が最も高い中間データである、
請求項７記載の探索プログラム。
【請求項９】
コンピュータが実行する探索方法であって、
入力データおよび出力データを取得し、
複数のデータ変換方法を複数のグループに分類し、
前記複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて前記入力データから中間データを生成し、当該グループに応じた評価関数を用いて前記中間データを評価することで、当該グループ内でデータ変換方法の組み合わせを探索し、
前記複数のグループそれぞれの前記探索の結果に基づいて、前記入力データを前記出力データに変換することができるデータ変換方法の組み合わせを決定する、
探索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は探索プログラムおよび探索方法に関する。
【背景技術】
【０００２】
現在、情報処理装置によりプログラムを自動生成するＰＢＥ（Programming By Example）と呼ばれる技術が考えられている。ＰＢＥでは、入出力の例などを情報処理装置に与えてプログラムを自動生成させる。
【０００３】
例えば、実行軌跡を入力としてプログラムを合成するプログラム合成装置の提案がある。提案のプログラム合成装置は、項書換え系に基づいて項書換えを行った実行軌跡である項書換え例を基に、一般化された項書換え系リストを生成し、項書換え系リストにより様々な項書換え系の実行過程を対象として、項書換え系のプログラムを作成可能にする。
【０００４】
なお、第１のコードに含まれる２以上の命令を組み合わせてＳＩＭＤ（Single Instruction Multiple Data）命令に変換することで、第２のコードを生成する情報処理装置の提案もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−１７１６４３号公報
【特許文献２】特開２０１３−２０６２９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置により入出力の例からプログラムを自動生成する場合、データ変換方法を予め複数用意し、入力データから出力データを作成可能なデータ変換方法の組み合わせを探索して、当該組み合わせに対応するプログラムを生成することが考えられる。
【０００７】
その際、入力データにデータ変換方法を順次適用して生成される中間データを所定の評価関数により評価することで、探索経路を絞り込み、探索を効率化することがある。具体的には、全データ変換方法を次の選択候補とし、各データ変換方法を入力データまたは現在の中間データに適用して生成される各中間データを評価関数により評価し、良評価の中間データに対応するデータ変換方法を選択して探索を進めることが考えられる。
【０００８】
しかし、この方法では、データ変換方法の数が増すほど、データ変換方法の組み合わせの数が増し、探索の処理コストが増す。データ変換方法の数によっては、評価関数を単に利用するだけでは探索を十分効率化できず、探索時間が長くなるという問題がある。
【０００９】
１つの側面では、本発明は、探索時間を短縮する探索プログラムおよび探索方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、コンピュータに実行させる探索プログラムが提供される。探索プログラムは、コンピュータに、入力データおよび出力データを取得し、複数のデータ変換方法を複数のグループに分類し、複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて入力データから中間データを生成し、当該グループに応じた評価関数を用いて中間データを評価することで、当該グループ内でデータ変換方法の組み合わせを探索し、複数のグループそれぞれの探索の結果に基づいて、入力データを出力データに変換することができるデータ変換方法の組み合わせを決定する、処理を実行させる。
【００１１】
また、１つの態様では、コンピュータが実行する探索方法が提供される。
【発明の効果】
【００１２】
１つの側面では、探索時間を短縮できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の探索装置の例を説明する図である。
【図２】第２の実施の形態の探索装置のハードウェア例を示すブロック図である。
【図３】プログラム生成の例を示す図である。
【図４】距離の例を示す図である。
【図５】探索装置の機能例を示すブロック図である。
【図６】探索装置による探索の例を示す図である。
【図７】パラメータの例を示す図である。
【図８】探索空間削減率のグラフを示す図である。
【図９】パラメータ情報の例を示す図である。
【図１０】グループ分けパターンテーブルの例を示す図である。
【図１１】プログラム生成の手順例を示すフローチャートである。
【図１２】グラフ探索の手順例を示すフローチャートである。
【図１３】グラフ探索の手順の具体例を示す図である。
【図１４】非類似度テーブルの例を示す図である。
【図１５】非類似度テーブルに基づくグルーピングの例を示す図である。
【図１６】加工前データおよび加工後データの例を示す図である。
【図１７】中間データの例（その１）を示す図である。
【図１８】ローカル評価値の計算例（その１）を示す図である。
【図１９】ローカル評価値の計算例（その２）を示す図である。
【図２０】中間データの例（その２）を示す図である。
【図２１】ローカル評価値の計算例（その３）を示す図である。
【図２２】ローカル評価値の計算例（その４）を示す図である。
【図２３】グローバル評価値の計算例を示す図である。
【図２４】探索の比較例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１５】
図１は、第１の実施の形態の探索装置の例を説明する図である。探索装置１０は、入力データおよび出力データの例を取得して、入力データから出力データに変換するためのプログラムを生成する。探索装置１０は、記憶部１１および処理部１２を有する。
【００１６】
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１２はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１７】
記憶部１１は、処理部１２の処理に用いられるデータを記憶する。例えば、記憶部１１は、データに対する複数のデータ変換方法をグループ化するための基準データを記憶する。また、記憶部１１は、処理部１２により取得された入力データおよび出力データを記憶する。更に、処理部１２によりデータ変換方法を用いて入力データから生成される中間データを記憶する。
【００１８】
処理部１２は、入力データＸおよび出力データＹの例を取得する。例えば、入力データＸおよび出力データＹは、文字列、数値、単位または時刻などの情報を含む。入力データＸは、関係データベース（ＲＤＢ：Relational DataBase）のテーブルの例でもよい。また、出力データＹは、変換後のテーブルの例でもよい。
【００１９】
処理部１２は、複数のデータ変換方法を複数のグループに分類する。ここで、データ変換方法の一例として、文字列変換、文字列抽出、数値変換、単位変換および時刻変換などがある。文字列変換は、例えば、ｎｕｌｌ置換や表記統一などである。文字列抽出は、例えば、カンマなどの区切り文字で区切られる単語を抽出する処理などである。数値変換は、例えば、数値を四則演算などの計算により変換する処理などである。時刻変換は、例えば、絶対時間を基準時刻に対する相対時間へ変換する処理などである。ただし、データ変換方法の例はこれらに限られない。例えば、データ変換方法は、ＲＤＢのテーブルにおけるスキーマ変換（列移動、列削除および列コピーなど）やテーブル結合（補助テーブルとの結合など）でもよい。
【００２０】
例えば、処理部１２は、記憶部１１に記憶された基準データに基づいて、上記に例示したデータ変換方法の各例を、複数のグループに分類できる。例えば、グループ数は予め記憶部１１に設定されてもよいし、処理部１２により所定の演算により決定されてもよい。ここで、例えば、探索空間の削減率は、入力データから出力データまでの距離（ホップ数）とデータ変換方法の数（既知）とグループ数との関数で表すことができる。このため、処理部１２は、入力データＸと出力データＹとの間の距離を示す指標値を推定し、当該指標値を用いて、グループ数を決定することが考えられる。例えば、処理部１２は、当該指標値を指定したときの探索空間の削減率を示す関数を用いて、探索空間の削減率が比較的小さくなるグループ数を選択することが考えられる。
【００２１】
また、基準データは、グループ数に対して、データ変換方法の組み合わせ毎に予め定められた分類先のグループを示す情報でもよい。この場合、各データ変換方法は、種類別に、分類先のグループが予め定められる。例えば、複数のデータ変換方法それぞれに対して後述する中間データの評価関数が対応付けられる。そして、評価関数に共通性のあるデータ変換方法同士が優先的に同じグループになるように、基準データに予め定められてもよい。この場合、処理部１２は、評価関数の共通性に基づいて複数のデータ変換方法を分類すると言える。
【００２２】
あるいは、基準データは、複数のデータ変換方法の間の類似度（または非類似度）を示す類似度情報でもよい。この場合、処理部１２は、利用するデータ変換方法の数に基づいてグループ数を決定する。そして、処理部１２は、類似度情報を参照して、決定したグループ数のグループを生成する。より具体的には、処理部１２は、類似度の高い（非類似度の低い）データ変換方法同士が優先的に同じグループに所属するように、各データ変換方法の分類先のグループを決定してもよい。
【００２３】
処理部１２は、複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて入力データから中間データを生成する。例えば、処理部１２は、複数のデータ変換方法を２つのグループに分類したとする。１つ目のグループのグループ名を「グループＡ」とする。２つ目のグループのグループ名を「グループＢ」とする。一例として、グループＡには、３つのデータ変換方法（第１，第２，第３のデータ変換方法）が属する。また、グループＢには、３つのデータ変換方法（第４，第５，第６のデータ変換方法）が属する。
【００２４】
処理部１２は、グループＡについて、グループＡに属するデータ変換方法を用いて入力データＸから中間データＡ１１，Ａ１２，Ａ１３を生成する。すなわち、処理部１２は、第１のデータ変換方法を用いて、入力データＸから中間データＡ１１を生成する。また、処理部１２は、第２のデータ変換方法を用いて、入力データＸから中間データＡ１２を生成する。更に、処理部１２は、第３のデータ変換方法を用いて、入力データＸから中間データＡ１３を生成する。
【００２５】
処理部１２は、当該グループに応じた評価関数を用いて中間データを評価することで、当該グループ内でデータ変換方法の組み合わせを探索する。評価関数は、入力データから該当の中間データを介して出力データに至る場合の評価値を与える。評価値は、例えば、距離、数値差、時間差およびステップ数などのコストを示す指標である。評価値が小さいほど、出力データを得るための処理コストが小さい（すなわち、評価が高い）と考えられる。
【００２６】
例えば、文字列変換や文字列抽出に対する評価関数の評価値として、編集距離（レーベンシュタイン距離）が考えられる。数値変換に対する評価関数の評価値として、数値差が考えられる。単位変換に対する評価関数の評価値として、変換前後の数値の商（例えば、変換後の値÷変換前の値）が考えられる。時刻変換に対する評価関数の評価値として、時間差（基準時刻との差など）が考えられる。スキーマ変換やテーブル変換に対する評価関数の評価値として、テーブル編集距離（列操作の所要ステップ数など）が考えられる。
【００２７】
ここで、処理部１２は、グループに属するデータ変換方法に応じて、グループ毎の評価関数を予め決定する。データ変換方法には評価関数が対応付けられている。記憶部１１は、データ変換方法と評価関数との対応を示す情報を記憶してもよい。あるグループに評価関数が共通するデータ変換方法のみが所属する場合、処理部１２は、当該共通する評価関数を当該グループに対応する評価関数と決定する。あるいは、第１の評価関数が対応付けられた第１のデータ変換方法と第２の評価関数が対応付けられた第２のデータ変換方法とを同一グループに分類した場合、処理部１２は、第１の評価関数と第２の評価関数とから当該同一グループに応じた評価関数を算出する。例えば、処理部１２は、第１の評価関数と第２の評価関数と（あるいは３以上の異なる評価関数に対して各評価関数）の線形結合（重み付き和）を、当該同一グループに対応する評価関数とすることが考えられる。こうして、処理部１２は、例えば、グループＡに対応する評価関数ｆＡおよびグループＢに対応する評価関数ｆＢを決定する。
【００２８】
処理部１２は、グループＡに応じた評価関数ｆＡを用いて中間データを評価する。例えば、グループＡに属するデータ変換方法は、文字列変換や文字列抽出であるとする。この場合、評価関数ｆＡは、該当の中間データの評価値として、編集距離を求める関数である。編集距離は、入力データＸと中間データとの第１の編集距離、および、当該中間データと出力データＹとの第２の編集距離の和である。
【００２９】
処理部１２は、入力データＸと中間データＡ１１との編集距離、および、中間データＡ１１と出力データＹとの編集距離を中間データＡ１１の評価値として求める。同様に、処理部１２は、中間データＡ１２の評価値、および、中間データＡ１３の評価値を求める。例えば、これらの評価値のうち、中間データＡ１３に対する評価値が最小であるとする。この場合、処理部１２は、入力データＸから中間データＡ１３を得るために用いた第３のデータ変換方法を選択する。
【００３０】
そして、処理部１２は、第１，第２，第３のデータ変換方法を中間データＡ１３に適用して、それぞれ中間データＡ１４，Ａ１５，Ａ１６を生成する。処理部１２は、入力データＸと中間データＡ１４との編集距離、および、中間データＡ１４と出力データＹとの編集距離の和を中間データＡ１４の評価値として求める。同様に、処理部１２は、中間データＡ１５の評価値、および、中間データＡ１６の評価値を求める。例えば、これらの評価値のうち、中間データＡ１４に対する評価値が最小であるとする。この場合、処理部１２は、中間データＡ１３から中間データＡ１４を得るために用いた第１のデータ変換方法を選択する。
【００３１】
このように、処理部１２は、グループＡに関して、データ変換方法を繰り返し選択することで、グループＡに関するデータ変換方法の組み合わせを探索する。選択の繰り返し数の上限は、記憶部１１に予め保存される。当該上限を超過しても出力データＹを得られない場合、処理部１２は、グループＡに関するデータ変換方法の組み合わせの探索を終了する。図１の例では、繰り返し数の上限は「２」である。処理部１２は、入力データＸを起点とした上記２回の探索で出力データＹを得られなかったので、中間データＡ１４を選択した後、グループＡに関するデータ変換方法の組み合わせの探索を終了する。
【００３２】
一方、処理部１２は、グループＢについても、入力データＸを起点としたデータ変換方法の組み合わせの探索を行う。まず、処理部１２は、グループＢについて、グループＢに属するデータ変換方法を用いて入力データＸから中間データＢ１１，Ｂ１２，Ｂ１３を生成する。
【００３３】
処理部１２は、グループＢに応じた評価関数ｆＢを用いて中間データを評価する。例えば、グループＢに属するデータ変換方法は、数値変換であるとする。この場合、評価関数ｆＢは、該当の中間データの評価値として、数値差を求める。数値差は、例えば、入力データＸに含まれる数値と中間データに含まれる数値との第１の差、および、中間データに含まれる数値と出力データＹに含まれる数値との第２の差の和（第１の差＋第２の差）である。
【００３４】
処理部１２は、評価関数ｆＢを用いて、中間データＢ１１，Ｂ１２，Ｂ１３の評価値を求める。例えば、これらの評価値のうち、中間データＢ１２に対する評価値が最小であるとする。この場合、処理部１２は、入力データＸから中間データＢ１２を得るために用いた第５のデータ変換方法を選択する。
【００３５】
更に、処理部１２は、第４，第５，第６のデータ変換方法を中間データＢ１２に適用して、それぞれ中間データＢ１４，Ｂ１５，Ｂ１６を生成する。中間データＢ１４，Ｂ１５，Ｂ１６の評価関数ｆＢによる評価値に応じて、中間データＢ１２から中間データＢ１６を得るために用いた第６のデータ変換方法を選択する。
【００３６】
そして、処理部１２は、入力データを起点とした上記２回の探索で出力データＹを得られなかったので、中間データＢ１６を選択した後、グループＢに関するデータ変換方法の組み合わせの探索を終了する。
【００３７】
処理部１２は、複数のグループそれぞれの探索の結果に基づいて、入力データを出力データに変換することができるデータ変換方法の組み合わせを決定する。
例えば、処理部１２は、グループＡ，Ｂそれぞれについて、探索を終了すると、グループＡに属する中間データＡ１１〜Ａ１６のうち、評価関数ｆＡによる評価値が最小である中間データＡ１４を選択する。同様に、処理部１２は、グループＢに属する中間データＢ１１〜Ｂ１６のうち、評価関数ｆＢによる評価値が最小である中間データＢ１６を選択する。
【００３８】
処理部１２は、選択された中間データＡ１４，Ｂ１６のうち、所定の評価値が小さい方を選択して、次段の探索の起点とする。所定の評価値は、例えば、グループＡ，Ｂの評価関数ｆＡ，ｆＢから計算される評価関数Ｆを用いて求められる。一例では、評価関数Ｆは、評価関数ｆＡ，ｆＢの線形結合（Ｆ＝ａ×ｆＡ＋ｂ×ｆＢ）（ａ，ｂは実数の定数で重みを示す）である。
【００３９】
例えば、中間データＡ１４，Ｂ１６のうち、評価関数Ｆによる評価値が小さい方は、中間データＢ１６である。この場合、処理部１２は、中間データＢ１６を、次段の探索の起点とする。処理部１２は、中間データＢ１６までの探索で、入力データＸに対する第５のデータ変換方法および第６のデータ変換方法の組み合わせを特定している。中間データＢ１６を基点（次段の探索の起点）とした探索では、既に特定済の組み合わせに続くデータ変換方法を探索することになる。
【００４０】
処理部１２は、中間データＢ１６を起点として、グループＡについての探索、および、グループＢについての探索を、入力データＸを起点とした探索と同様の手順で、繰り返し実行する。その過程で、中間データに何れかのデータ変換方法を適用した結果、出力データＹが得られた場合、当該データ変換方法が最終のデータ変換方法となる。最終のデータ変換方法が得られるまでに選択されたデータ変換方法の組み合わせが、入力データを出力データに変換することができるデータ変換方法の組み合わせである。
【００４１】
このように、探索装置１０によれば、入力データおよび出力データが取得され、複数のデータ変換方法が複数のグループに分類される。複数のグループそれぞれについて、当該グループに属するデータ変換方法を用いて入力データから中間データが作成され、当該グループに応じた評価関数を用いて中間データを評価することで、当該グループ内でデータ変換方法の組み合わせが探索される。そして、複数のグループそれぞれの探索の結果に基づいて、入力データを出力データに変換することができるデータ変換方法の組み合わせが決定される。
【００４２】
これにより、探索時間を短縮できる。すなわち、探索装置１０は、探索対象のデータ変換方法をグループに属するデータ変換方法に限定することで、全てのデータ変換方法を対象として探索を行うよりも、探索空間を減少させることができる。
【００４３】
また、全てのデータ変換方法を対象として探索を行う場合、全データ変換方法に対応した評価関数を定義することになるが、データ変換方法の種類が増すほどこのような評価関数を適切に定義することは難しくなる。一方、探索対象のデータ変換方法をグループに属するデータ変換方法に限定することで、評価関数に対応させるデータ変換方法の種類を減らせる。このため、評価関数が単純化して評価関数の精度が向上し、当該グループにおいて適切な経路を選択できる可能性が高まる。その結果、探索経路を縮小させ、探索時間を短縮できる。
【００４４】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の探索装置のハードウェア例を示すブロック図である。
【００４５】
ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００４６】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、探索装置１００は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００４７】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、探索装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４８】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、探索装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４９】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、探索装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００５０】
入力信号処理部１０５は、探索装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、探索装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００５１】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００５２】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００５３】
通信インタフェース１０７は、ネットワーク２０に接続され、ネットワーク２０を介して他のコンピュータと通信を行うインタフェースである。通信インタフェース１０７は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【００５４】
探索装置１００は、ＰＢＥの機能を提供する。ＰＢＥは、ユーザにプログラミングを課さずに、プログラムを生成可能にする技術である。探索装置１００は、ＰＢＥの機能により、ユーザが与えた、入力／出力条件を満たすプログラムを生成する。例えば、探索装置１００は、少数の目的の加工例を基に、データ整形を自動化するためのプログラムを生成する。次に、プログラム生成の１つの方法（探索装置１００に対する比較例）を説明する。
【００５５】
図３は、プログラム生成の例を示す図である。
加工例に対し、プログラムを生成する方法として、次の方法が考えられる。まず、加工例が、プログラム生成を行う装置（生成装置と呼ぶ）に入力される。加工例は、加工前データ３１および加工後データ３２を含む。
【００５６】
例えば、加工前データ３１は、ＲＤＢのテーブルであり、ＩＤ（IDentifier）、日時および乗車駅の列を含む。ここで、ＩＤは、ユーザの識別情報である。日時は、当該ユーザが電車に乗った日時（月日時分）である。乗車駅は、当該ユーザが電車に乗った駅である。乗車駅を未取得の場合、乗車駅の列には「００００」が設定される。
【００５７】
また、加工後データ３２は、ＲＤＢのテーブルであり、日付、駅名、性別および年齢の列を含む。ここで、日付は、乗車日（月日）である。駅名は、乗車駅である。性別は、ユーザの性別である。年齢は、ユーザの年齢である。
【００５８】
なお、加工前データ３１および加工後データ３２は、ＲＤＢ以外のデータでもよい（例えば、ＣＳＶ（Comma-Separated Values）やキーバリューなどの他の形式のデータでもよい）。
【００５９】
生成装置は、例えば、Ａ＊アルゴリズム（または、Ａ＊探索アルゴリズム）により、加工前データを加工後データに変換するためのデータ変換方法（単に、変換方法と言うことがある）の組み合わせを決定する。Ａ＊アルゴリズムは、グラフ探索を効率化するアルゴリズムの１つである。
【００６０】
具体的には、生成装置は、データをノード、データに対する変換方法をエッジとしたグラフを生成する。生成装置には、複数の変換方法が予め登録されている。生成装置は、起点となる加工前データ３１に、複数の変換方法それぞれを適用して、各変換方法に対応する中間データを生成する。このとき、変換方法の数がＴ（Ｔは２以上の整数）個であれば、Ｔ個の中間データが生成される。例えば、変換方法ａ，ｂ，ｃの３つの変換方法がある場合、加工前データに対して、変換方法ａを適用した中間データ、変換方法ｂを適用した中間データ、変換方法ｃを適用した中間データの３つの中間データが生成される。すなわち、加工前データ３１のノード（加工前ノード）と３つの中間データのノード（中間ノード）それぞれとを、各変換方法に対応するエッジで接続したグラフが生成される。
【００６１】
生成装置は、生成した各中間データそれぞれを所定の評価関数により評価することで、加工前データ３１に対して適用する変換方法を選択する。評価関数は、中間データに対する評価値を与える。評価値は、例えば、加工前データ３１から、該当の中間データを経由して、加工後データ３２に到達するまでに要する推定距離または推定コストである。変換方法ａ，ｂ，ｃそれぞれに対応する３つの中間データのうち、変換方法ｃに対応する中間データの評価値が最小であるとすると、生成装置は、変換方法ｃに対応する中間データ（ノード）を選択する。生成装置は、選択した中間データに対して、更に変換方法ａ，ｂ，ｃそれぞれを適用して、３つの中間データを生成し、当該３つの中間データを評価関数により評価し、今回生成した３つの中間データの中から中間データを選択する。
【００６２】
生成装置は、この手順を繰り返す。加工後データ３２が得られると、手順は終了となり、加工前ノードから加工後データ３２に対応するノード（加工後ノード）に到達するまでの経路を表すグラフ３３が得られる。すると、生成装置は、グラフ３３において、加工前ノードから加工後ノードに辿り着いた経路に属するエッジの組み合わせに対応する変換方法の組み合わせを取得する。生成装置は、当該変換方法の組み合わせに対応するプログラム３４を生成する。
【００６３】
例えば、プログラム３４は、「補助データ結合」、「ｎｕｌｌ置換」、「列分割」、「列削除」および「列移動」の変換方法を含む。補助データ結合は、加工前データ３１と、ＩＤ、ユーザの性別および年齢の関連を示す補助データとの結合である。ｎｕｌｌ置換は、加工前データ３１の「００００」をｎｕｌｌに置換する処理である。列分割は、加工前データ３１の日時の列の日付（月日）および時間（時分）への分割である。列削除は、ＩＤおよび時間の列の削除である。列移動は、加工後データ３２の列の並びとなるよう列を移動する処理である。
【００６４】
生成装置は、その後、加工前データ３５が入力されると、プログラム３４を用いて、加工前データ３５から加工後データ３６を生成する。
ここで、ノード間の距離について説明する。
【００６５】
図４は、距離の例を示す図である。
開始ノード４１は、加工前データ３１に対応するノードである。ノード４２は、中間データに対応するノード（中間ノード）である。ここで、ノード４２または中間データの識別子をｉとする。識別子がｉのノード（中間データ）を、ノードｉ（中間データｉ）と言うことがある。終了ノード４３は、加工後データ３２に対応するノードである。
【００６６】
このとき、ノードｉ（すなわち、中間データｉ）に対する評価関数は「ｋ（ｉ）＋ｈ（ｉ）」と表される。ｋ（ｉ）は、開始ノードからノードｎまでの推定最短距離である。ｈ（ｉ）は、ノードｉから終了ノードまでの推定距離である。例えば、ｋ（ｉ）＋ｈ（ｉ）が最小になるノードを選択することで、探索を効率化し得る。
【００６７】
しかし、図３で例示した探索方法では、使用する変換方法の数Ｔが増すほど、変換方法の組み合わせの数が増し、探索の処理コストが増す。具体的には、探索空間は、Ｔのべき（累乗）で増大する。また、探索空間が大きいと、評価関数の値に従って探索しても、膨大な手戻り処理が発生する可能性もある。このため、探索時間が長引く可能性がある。そこで、探索装置１００は、探索時間を短縮する機能を提供する。
【００６８】
図５は、探索装置の機能例を示すブロック図である。
探索装置１００は、パラメータ記憶部１２０、グルーピング定義記憶部１３０、データ記憶部１４０、プログラム記憶部１５０、ＵＩ（User Interface）部１６０および制御部１７０を有する。パラメータ記憶部１２０、グルーピング定義記憶部１３０、データ記憶部１４０およびプログラム記憶部１５０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域を用いて実装される。ＵＩ部１６０および制御部１７０は、例えば、プログラムを用いて実装される。
【００６９】
パラメータ記憶部１２０は、探索処理における所定のパラメータを記憶する。パラメータは、過去の探索処理の結果に基づいて計算される値αである。パラメータαは、変換方法のグループ数を求める際に用いられる。
【００７０】
グルーピング定義記憶部１３０は、複数の変換方法をグルーピングするための基準となるグループ分けパターンテーブルを記憶する。グループ分けパターンテーブルは、変換方法のグループ分けのパターンを示す情報である。
【００７１】
データ記憶部１４０は、ユーザにより入力されたデータの加工例を記憶する。加工例は、加工前データと加工後データとを含む。加工前データは、入力データの例である。加工後データは、出力データの例である。データ記憶部１４０は、制御部１７０により加工前データに基づいて生成される中間データを記憶する。
【００７２】
プログラム記憶部１５０は、制御部１７０により生成された変換プログラムを記憶する。プログラム記憶部１５０に記憶された変換プログラムは、他の加工前データに対して、当該他の加工前データを変換し、他の加工後データを生成するために用いられる。
【００７３】
ＵＩ部１６０は、ユーザによる加工前データおよび加工後データの入力を受け付け、データ記憶部１４０に格納する。例えば、ＵＩ部１６０は、入力デバイス１１２を用いてユーザにより入力された加工前データおよび加工後データの入力を受け付けてもよい。また、ＵＩ部１６０は、ネットワーク２０を介して、他のコンピュータにより送信された加工前データおよび加工後データを受信してもよい。
【００７４】
ＵＩ部１６０は、加工前データおよび変換プログラムの指定の入力を受け付け、指定された変換プログラムの探索装置１００による実行開始／終了や、変換プログラムにより加工前データから生成された加工後データのディスプレイ１１１による表示を行う。
【００７５】
制御部１７０は、探索装置１００におけるＰＢＥを制御する。制御部１７０は、パラメータ算出部１７１、グルーピング処理部１７２、探索処理部１７３およびプログラム生成部１７４を有する。
【００７６】
パラメータ算出部１７１は、パラメータ記憶部１２０に記憶されたパラメータαの実績値の履歴から、αの代表値を取得し、グルーピング処理部１７２に通知する。代表値としては、例えば、直近のＭ（Ｍは２以上の整数）件のパラメータαの平均値や中間値などが考えられる。
【００７７】
グルーピング処理部１７２は、パラメータ算出部１７１により通知されたパラメータαに基づいて、変換方法のグループ数を計算し、複数の変換方法を複数のグループに分類する。
【００７８】
探索処理部１７３は、グルーピング処理部１７２により分類された複数のグループそれぞれについて、当該グループに属する変換方法を用い加工前データから中間データを生成する。探索処理部１７３は、当該グループの分類結果を用いて、加工前データを加工後データに変換できる変換方法の組み合わせを特定する。
【００７９】
プログラム生成部１７４は、探索処理部１７３による変換方法の組み合わせの特定結果に基づいて、加工前データを加工後データに変換できる変換プログラムを生成する。プログラム生成部１７４は、生成したプログラムをプログラム記憶部１５０に格納する。
【００８０】
図６は、探索装置による探索の例を示す図である。
グルーピング処理部１７２は、例えば、複数の変換方法を、グループＧ１，Ｇ２，Ｇ３の３つに分類したとする。探索処理部１７３は、Ａ＊アルゴリズムによるグラフの経路探索をグループ毎に行う。このとき、探索処理部１７３は、評価関数として、グループ毎のローカル評価関数を用いる。ローカル評価関数ｆ１は、グループＧ１に対する評価関数である。ローカル評価関数ｆ２は、グループＧ２に対する評価関数である。ローカル評価関数ｆ３は、グループＧ３に対する評価関数である。
【００８１】
ここで、加工前データに対応するノードを加工前ノード、加工後データに対応するノードを加工後ノード、中間データに対応するノードを中間ノードとそれぞれ呼ぶことにする。
【００８２】
例えば、探索処理部１７３は、加工前ノードを起点として、グループＧ１に属する変換方法により、ローカル評価関数ｆ１を用いて、経路の探索を行う。経路に含まれるエッジの組み合わせは、変換方法の組み合わせに対応する。また、探索処理部１７３は、加工前ノードを起点として、グループＧ２に属する変換方法により、ローカル評価関数ｆ２を用いて、経路の探索を行う。更に、探索処理部１７３は、加工前ノードを起点として、グループＧ３に属する変換方法により、ローカル評価関数ｆ３を用いて、経路の探索を行う。
【００８３】
グループ毎に所定回数の探索を行った結果、何れのグループでも加工後データが出現しなかった場合、探索処理部１７３は、グループ毎の今回の探索で生成された中間ノードのうちローカル評価値が最小の中間ノードを、最終ノードとしてグループ毎に取得する。探索処理部１７３は、グループ毎の最終ノードを、グローバル評価関数Ｆにより評価する。グローバル評価関数Ｆは、加工前ノードから、該当の中間ノードを経由して加工後ノードに至るまでの推定距離を評価値として与える関数である。グローバル評価関数Ｆは、複数の変換方法の全てに対応する評価関数である点が、ローカル評価関数ｆ１，ｆ２，ｆ３と異なる。例えば、ノードｉに対するグローバル評価関数Ｆ（ｉ）は、グループの識別番号をｎ（ｎは０以上の整数）として、式（１）で表される。
【００８４】
【数１】
2019159362.tif 000003
【００８５】
ここで、ｊは、グループの識別番号の最大値である（グループ数はｊ＋１）。ｆｎは、ローカル評価関数である。λｎは、グループ毎のローカル評価値の重みである。すなわち、グローバル評価関数Ｆは、グループ毎の評価値の重み付き和として表すことができる（各ローカル評価関数の重みは予め設定される）。例えば、探索処理部１７３は、グループ毎の最終ノードのうち、グローバル評価値Ｆが最小の最終ノードｉｇを選択し、当該最終ノードｉｇを次段の探索の起点のノードとする。
【００８６】
探索処理部１７３は、上記の手順を繰り返し実行し、加工後データが得られると、探索を終了する。
ここで、探索処理部１７３の探索に用いられるグループの数は、パラメータ算出部１７１およびグルーピング処理部１７２により予め決定される。
【００８７】
図７は、パラメータの例を示す図である。
グラフ５０は、加工前データから加工後データまで到達したときの探索装置１００による探索経路を例示している。
【００８８】
パラメータ算出部１７１は、探索空間削減率Ｒ（ｇ）を最小にするグループ数ｇｏｐｔを求め、当該グループ数ｇｏｐｔにより変換方法をグループ分けする。探索空間削減率Ｒ（ｇ）は、式（２）で表される。
【００８９】
【数２】
2019159362.tif 000004
【００９０】
ここで、ｇはグループ数である。ｔは変換方法の数である。ｄは加工前ノードから加工後ノードまでのホップ数である。
図８は、探索空間削減率のグラフを示す図である。
【００９１】
一例として、ｔ＝１００、ｄ＝２０のときの探索空間削減率Ｒ（ｇ）のグラフ６０を示す。グルーピング処理部１７２は、例えば、ニュートン法によりＲ（ｇ）の極小値を算出し、そのときのｇ＝ｇｏｐｔを算出して、グループ数とする。あるいは、グルーピング処理部１７２は、１＜ｇ＜ｔを満たす全てのｇに関して、Ｒ（ｇ）を算出し、算出したＲ（ｇ）のうちの最小値を与えるｇを、ｇｏｐｔとしてもよい。
【００９２】
図８の例では、ｇｏｐｔ＝５である。Ｒ（ｇ）を最小にするグループ数ｇｏｐｔを選択することで、以下に示す探索処理において探索空間を大幅に削減することができる。
なお、ｔは予め用意された変換方法の数なので既知の値である。ホップ数ｄは今回の探索では未知なので、推定値を用いる。具体的には、ホップ数ｄの推定値ｄｅｓｔは、加工前ノードと加工後ノードとの間の推定距離に比例すると考えられる。このため、グルーピング処理部１７２は、以下の式（３）によりｄｅｓｔを求める。
【００９３】
【数３】
2019159362.tif 000005
【００９４】
ここで、ｉ０は、加工前ノードを示す。前述のように、パラメータαは、直近のＭ件の探索におけるホップ数ｄの実績値ｄｒｅａｌに対する代表値（例えば、平均値や中間値など）である。探索処理部１７３は、今回の探索の結果、実績値ｄｒｅａｌを得ると、α＝ｄｒｅａｌ／ｈ（ｉ０）（今回のαの値）を、パラメータ記憶部１２０に格納する。
【００９５】
図９は、パラメータ情報の例を示す図である。
パラメータ情報１２１は、直近のＭ件の探索における加工前ノードから加工後ノードに至るホップ数の実績値ｄｒｅａｌに対して計算されたパラメータαの値（α＝α１，α２，α３，・・・，αＭ）である。αの値は、新たな加工例に対して探索が行われると、当該探索結果に基づいて計算され、パラメータ情報１２１に追加される。新たにαの値が追加されると、パラメータ情報１２１から最古のαの値が削除されてもよい。
【００９６】
図１０は、グループ分けパターンテーブルの例を示す図である。グループ分けパターンテーブル１３１は、グループ数ｇｏｐｔに対する各変換方法のグループ分けのパターンを示す。グループ分けパターンテーブル１３１は、変換方法、ｇｏｐｔ＝１、ｇｏｐｔ＝２、ｇｏｐｔ＝３、ｇｏｐｔ＝４、・・・の列を含む。
【００９７】
変換方法の列には、変換方法の識別名が登録される。ｇｏｐｔ＝１の列には、グループ数を１とするときに、各変換方法が属するグループのグループ番号が登録される。ｇｏｐｔ＝２の列には、グループ数を２とするときに、各変換方法が属するグループのグループ番号が登録される。ｇｏｐｔ＝３以降の列についても同様である。
【００９８】
例えば、グループ分けパターンテーブル１３１には、変換方法が「文字列変換」、ｇｏｐｔ＝１の場合にグループ番号「１」、ｇｏｐｔ＝２の場合にグループ番号「１」、・・・というレコードが登録されている。このレコードは、グループ数「１」の場合、変換方法「文字列変換」がグループ番号「１」のグループに所属することを示す。また、グループ数「２」の場合、変換方法「文字列変換」がグループ番号「１」のグループに所属することを示す。
【００９９】
また、グループ分けパターンテーブル１３１には、変換方法が「スキーマ変換」、ｇｏｐｔ＝１の場合にグループ番号「１」、ｇｏｐｔ＝２の場合にグループ番号「２」、・・・というレコードが登録されている。このレコードは、グループ数「１」の場合、変換方法「スキーマ変換」がグループ番号「１」のグループに所属することを示す。また、グループ数「２」の場合、変換方法「スキーマ変換」がグループ番号「２」のグループに所属することを示す。
【０１００】
このように、グループ分けパターンテーブル１３１には、各変換方法に対し、グループ数ｇｏｐｔに応じたグループ番号が登録される。グループ分けパターンテーブル１３１には、評価関数が共通する変換方法を同じグループに優先的に分類するように予めグループ分けパターンが登録される。すなわち、グループに対応するローカル評価関数を単純化することで、当該ローカル評価関数による評価の精度を向上し、探索時間を短縮できる。
【０１０１】
ただし、グループ分けパターンテーブル１３１によるグループ分けでは、評価関数が相違する第１のデータ変換方法と第２のデータ変換方法とが同じグループに属することもある。この場合、探索処理部１７３は、第１のデータ変換方法に対応する第１の評価関数と、第２のデータ変換方法に対応する第２の評価関数とに基づいて当該グループに対応するローカル評価関数が算出される。例えば、第１の評価関数と第２の評価関数との重み付き和を、当該グループのローカル評価関数とする。３以上の評価関数に対しても同様に、重み付き和によってローカル評価関数が算出される。
【０１０２】
次に、探索装置１００の処理手順について説明する。
図１１は、プログラム生成の手順例を示すフローチャートである。
（Ｓ１０）ＵＩ部１６０は、ユーザによる加工例の入力を受け付ける。加工例は、加工前データおよび加工後データを含む。
【０１０３】
（Ｓ１１）パラメータ算出部１７１は、パラメータ記憶部１２０に記憶されたパラメータ情報１２１を参照して、過去のα値の代表値を算出する。
（Ｓ１２）パラメータ算出部１７１は、式（３）により、ｄ推定値（ｄｅｓｔ）を算出する。
【０１０４】
（Ｓ１３）グルーピング処理部１７２は、ｇ最適値（ｇｏｐｔ）を算出する。具体的には、グルーピング処理部１７２は、式（２）に、ｔおよびｄ＝ｄｅｓｔを代入して、Ｒ（ｇ）を求め、Ｒ（ｇ）が最小値をとるときのｇ＝ｇｏｐｔを求める。
【０１０５】
（Ｓ１４）グルーピング処理部１７２は、ｇｏｐｔを基に変換方法をグルーピングする。グルーピング処理部１７２は、グルーピング定義記憶部１３０に記憶されたグループ分けパターンテーブル１３１を参照して、ｇｏｐｔの値に応じた各変換方法の分類先のグループを特定し、各変換方法を特定したグループに分類する。
【０１０６】
（Ｓ１５）探索処理部１７３は、グラフ探索を行う。グラフ探索の詳細は後述される。
（Ｓ１６）探索処理部１７３は、ステップＳ１５の結果から、ｄ実績値（ｄｒｅａｌ）を算出する。具体的には、探索処理部１７３は、加工前ノードから加工後ノードまでのホップ数（エッジ数）をカウントし、ｄｒｅａｌとする。
【０１０７】
（Ｓ１７）探索処理部１７３は、α＝ｄｒｅａｌ／ｈ（ｉ０）をパラメータ情報１２１に保存する。このとき、探索処理部１７３は、パラメータ情報１２１から最古のα値を削除してよい。
【０１０８】
（Ｓ１８）プログラム生成部１７４は、ステップＳ１５のグラフ探索の結果に基づいて、加工前データを加工後データに変換するプログラムを生成する。
（Ｓ１９）プログラム生成部１７４は、生成したプログラムを出力する。プログラム生成部１７４は、生成したプログラムをプログラム記憶部１５０に格納する。プログラム記憶部１５０に記憶されたプログラムは、他の加工前データの変換に用いることができる。そして、プログラム生成が終了する。
【０１０９】
ステップＳ１１〜Ｓ１３で示されるように、グルーピング処理部１７２は、加工前データ（入力データ）と加工後データ（出力データ）との間の距離を示す指標値（ｄｅｓｔ）を用いてグループ数ｇｏｐｔを決定する。具体的には、パラメータ算出部１７１は、他の加工前データ（他の入力データ）から他の加工後データ（他の出力データ）への変換に使用されたデータ変換方法の数と、他の加工前データと他の加工後データとの間の距離を示す他の指標値（過去の実績値）と、の間の関係を示す係数αを算出する。グルーピング処理部１７２は、加工前データと加工後データとの間の距離を示す指標値と当該係数とを用いてグループ数ｇｏｐｔを決定する。グループ数ｇｏｐｔは、関数Ｒ（ｇ）を最小にするグループ数として求められる。
【０１１０】
図１２は、グラフ探索の手順例を示すフローチャートである。グラフ探索は、ステップＳ１５で実行される。
（Ｓ２０）探索処理部１７３は、探索ホップ数Ｈを０に設定する。
【０１１１】
（Ｓ２１）探索処理部１７３は、グループローカルの１ホップの探索をグループ毎に実行する。探索処理部１７３は、Ｈに１を加算する。グループローカルの探索に用いられる変換方法は、該当のグループに属する変換方法である。該当のグループに属さない変換方法は、グループローカルの探索では用いられない。あるグループにｎ（ｎは２以上の整数）個の変換方法が属する場合、現ノードに対応するデータに各変換方法を適用したｎ個の中間データが、当該グループにおいて生成される。また、探索処理部１７３は、ｎ個の中間データを当該グループのローカル評価関数を用いて評価し、評価に応じた変換方法を選択する。
【０１１２】
なお、ステップＳ１４におけるグルーピングの結果、評価関数の異なる変換方法が同一グループに分類されることもある。この場合、探索処理部１７３は、各変換方法の評価関数の重み付き和を当該グループのローカル評価関数とする（重みは予め設定される）。
【０１１３】
（Ｓ２２）探索処理部１７３は、グループローカルの起点ノードからのホップ数Ｈを記録する。
（Ｓ２３）探索処理部１７３は、変換方法により、加工後データが出現したか否かを判定する。加工後データが出現した場合、グラフ探索が終了する。加工後ノードが出現しない場合、ステップＳ２４に処理が進む。
【０１１４】
（Ｓ２４）探索処理部１７３は、ホップ数Ｈが閾値Ｈｍａｘであるか否か（Ｈ＞Ｈｍａｘであるか否か）を判定する。Ｈ＞Ｈｍａｘの場合、ステップＳ２５に処理が進む。Ｈ≦Ｈｍａｘの場合、ステップＳ２１に処理が進む。
【０１１５】
（Ｓ２５）探索処理部１７３は、ローカル評価値ｆ（ｉｌ）が最小の中間ノードｉｌを、グループの最終ノードとして、グループ毎に選択する。
（Ｓ２６）探索処理部１７３は、各グループのノードｉｌの中から、グローバル評価値Ｆ（ｉｇ）が最小のノードｉｇを選択し、ノードｉｇを次段の探索の起点ノードとする。そして、ステップＳ２０に処理が進む。
【０１１６】
このように、探索処理部１７３は、グループ単位に、当該グループに属する変換方法を用いて中間データを生成し、当該グループに応じたローカル評価関数を用いて、中間データを評価することで、変換処理の組み合わせを探索する。
【０１１７】
このとき、探索処理部１７３は、複数のグループの何れの探索によっても加工前データ（入力データ）から加工後データ（出力データ）に到達しない場合もある。この場合、探索処理部１７３は、複数のグループそれぞれについて探索によって生成された中間データの中から代表中間データを抽出する。そして、探索処理部１７３は、複数のグループそれぞれの評価関数（ローカル評価関数）とは異なる共通評価関数（グローバル評価関数）を用いて、複数のグループそれぞれの代表中間データを評価して、１つのグループの代表中間データを選択する。探索処理部１７３は、加工前データに代えて、選択した代表中間データを基点（すなわち、次段の探索の起点）として、複数のグループそれぞれの探索を再度実行する。
【０１１８】
ここで、複数のグループそれぞれの代表中間データは、グループ内で生成された中間データのうち当該グループに応じたローカル評価関数による評価が最も高い中間データである。本例の場合、「評価が最も高い」とは、距離を示す評価値が最小であることに相当する。こうして、グローバル評価関数による評価対象を絞り込むことができ、グローバル評価関数による評価を効率的に実行できる。
【０１１９】
図１３は、グラフ探索の手順の具体例を示す図である。
図１３の例では、図１２のステップＳ２０〜Ｓ２６の１サイクルの手順を示す。ここで、各変換方法は、Ｎ個のグループＧ１，Ｇ２，・・・，ＧＮに分類されている。
【０１２０】
探索処理部１７３は、グループローカルの探索を各グループで実行する（ステップＳＴ１）。グループ毎の探索は、加工後データが出現するか、または、ホップ数Ｈ＞閾値Ｈｍａｘになるまで繰り返し実行され、加工後データが出現しないまま、Ｈ＞Ｈｍａｘになると終了される。
【０１２１】
グループＧ１，Ｇ２，・・・，ＧＮのそれぞれで、加工後データが出現しないまま、Ｈ＞Ｈｍａｘになったとする。すると、探索処理部１７３は、グループの最終ノードとして、ローカル評価値ｆ（ｉｌ）が最小の中間ノードｉｌをグループ毎に選択する（ステップＳＴ２）。図１３では、グループＧ１，Ｇ２，・・・，ＧＮのそれぞれの中間ノードのうち、最終ノードとして選択された中間ノードを網掛けで示している。各グループにおいて最終ノードが選択されるので、Ｎ個の最終ノードが存在することになる。
【０１２２】
探索処理部１７３は、最終ノードｉｌの中からグローバル評価値Ｆ（ｉｇ）が最小のノードｉｇを選択し、次段の探索の起点ノードとする（ステップＳＴ３）。
探索処理部１７３は、ステップＳＴ１の探索において加工後データが出現するまで、ステップＳＴ１〜ＳＴ３を繰り返し行い、加工後データに一致するノードがステップＳＴ１で出現したら探索を終了する（ステップＳＴ４）。
【０１２３】
このように、探索装置１００は、複数の変数処理を複数のグループに分類して、グループ毎に探索を行う。こうして、あるグループにおける探索対象の変換方法を当該グループに属する変換方法に限定することで、全てのデータ変換方法を対象として探索を行うよりも、探索空間を減少させることができる。これにより、探索時間を短縮することができる。特に、式（２）により、探索空間削減率が最小になるグループ数を選択することで、探索空間を大幅に減少させることができる。
【０１２４】
また、全ての変換方法を対象として探索を行う場合、全変換方法に対応した評価関数を定義することになるが、変換方法の種類が増すほど、評価関数を適切に定義することは難しくなる。一方、探索対象の変換方法をグループに属する変換方法に限定することで、評価関数に対応させる変換方法の種類を減らせる。このため、評価関数が単純化して評価関数の精度が向上し、当該グループにおいて適切な経路を選択できる可能性が高まる。その結果、探索経路を縮小させ、探索時間を短縮することができる。
【０１２５】
なお、上記の説明では、図１０のグループ分けパターンテーブル１３１に基づいて、グループ数ｇｏｐｔに応じたグループ分けを行うものとしたが、他の方法も考えられる。例えば、グルーピング処理部１７２は、２つの変換方法の非類似度（または類似度）に基づいて、グループ分けを行ってもよい。その場合、次のような非類似度テーブルを用いることが考えられる。
【０１２６】
図１４は、非類似度テーブルの例を示す図である。
非類似度テーブル１３２は、グルーピング定義記憶部１３０に予め格納される。非類似度テーブル１３２には、２つの変換方法の組毎に、当該２つの変換方法の非類似度が登録される。非類似度の値が大きいほど非類似である度合いが高い。すなわち、非類似度の値が小さいほど類似である度合いが高い。
【０１２７】
例えば、文字列抽出および文字列変換の組に対する非類似度は「１０」であり、相対的に非類似度は低い。すなわち、文字列抽出および文字列変換の組は、両者が比較的類似する組み合わせであると言える。一方、文字列変換およびテーブル結合の組に対する非類似度は「１５０」であり、相対的に非類似度は高い。すなわち、文字列変換およびテーブル結合の組は、両者が比較的類似していない組み合わせであると言える。
【０１２８】
前述のように、非類似度の値が小さいほど類似である度合いが高いので、非類似度テーブル１３２は、変換方法の間の類似度を表す情報であるとも言える。
図１５は、非類似度テーブルに基づくグルーピングの例を示す図である。
【０１２９】
グルーピング処理部１７２は、非類似度テーブル１３２に基づいて、階層的クラスタリングを実行することで、求めたグループ数ｇｏｐｔで分割される変換方法のグループを求める。グルーピング処理部１７２は、グルーピング定義記憶部１３０に基づいて、類似する変換方法から順にグルーピングして、グループ数ｇｏｐｔのグループに分類する。このような階層的クラスタリングの方法として、例えば、ウォード法（Ward method）を用いることができる。例えば、グループ数ｇｏｐｔ＝３の場合、グルーピング処理部１７２は、文字列変換、文字列抽出、数値変換および単位変換をクラスタＣ１に、時刻変換をクラスタＣ２に、スキーマ変換およびテーブル結合をクラスタＣ３に、それぞれ分類する。クラスタＣ１，Ｃ２，Ｃ３それぞれは１つのグループに対応する。
【０１３０】
このように、図１１のステップＳ１４では、グルーピング処理部１７２は、複数の変換方法に含まれる変換方法と他の変換方法との類似度（または非類似度）に基づいて、複数のデータ変換方法を分類してもよい。
【０１３１】
次に、ローカル評価関数によるローカル評価値や、グローバル評価関数によるグローバル評価値の計算例を説明する。
図１６は、加工前データおよび加工後データの例を示す図である。
【０１３２】
図１６（Ａ）は、加工前データ１４１を示す。加工前データ１４１は、ＲＤＢのテーブルであり、Ｉｔｅｍ、ＰｒｉｃｅおよびＱｕａｎｔｉｔｙの列を含む。Ｉｔｅｍは、品目の名称である。Ｐｒｉｃｅは、品目の単価である。Ｑｕａｎｔｉｔｙは、品目の数量である。
【０１３３】
例えば、加工前データ１４１は、Ｉｔｅｍ「ａｐｐｌｅ（Ｃｈｉｎａ）」、Ｐｒｉｃｅ「１００」、Ｑｕａｎｔｉｔｙ「５０」を示すレコードを含む。また、加工前データ１４１は、Ｉｔｅｍ「ｏｒａｎｇｅ  Ｂｒａｚｉｌ」、Ｐｒｉｃｅ「２００」、Ｑｕａｎｔｉｔｙ「１００」を示すレコードを含む。
【０１３４】
図１６（Ｂ）は、加工後データ１４２を示す。加工後データ１４２は、ＲＤＢのテーブルであり、Ｉｔｅｍ、ＲｅｇｉｏｎおよびＳａｌｅ（ｉｎｃｌ．ｔａｘ）の列を含む（「ｉｎｃｌ．」は、includingの略）。Ｉｔｅｍは、品目の名称である。Ｒｅｇｉｏｎは、品目の産地である。Ｓａｌｅ（ｉｎｃｌ．ｔａｘ）は、品目の数量分の価格（消費税込みの価格）である。
【０１３５】
例えば、加工後データ１４２は、Ｉｔｅｍ「ａｐｐｌｅ」、Ｒｅｇｉｏｎ「Ｃｈｉｎａ」、Ｓａｌｅ（ｉｎｃｌ．ｔａｘ）「５４００」を示すレコードを含む。また、加工後データ１４２は、Ｉｔｅｍ「ｏｒａｎｇｅ」、Ｒｅｇｉｏｎ「Ｂｒａｚｉｌ」、Ｓａｌｅ（ｉｎｃｌ．ｔａｘ）「２１６００」を示すレコードを含む。
【０１３６】
ここで、以下の説明では異なる２つのグループＧ１，Ｇ２に分類される複数の変換方法を考える。
グループＧ１に分類される変換方法の一例として、以下の文字列抽出を考える。
【０１３７】
第１には、Ｐ（Ｐは整数）番目の区切り文字（スペース、タブまたはカンマなど）で区切られる単語を抽出する方法である。例えば、Ｐ＝１（区切り文字で区切られる最初の単語を抽出）のとき、探索処理部１７３は、データ「ｍａｄｅ  ｉｎ  Ｊａｐａｎ」から「ｉｎ」を抽出し、新たな列に追加する。
【０１３８】
第２には、Ｐ番目の非アルファベットで始まる単語を抽出する方法である。例えば、Ｐ＝１（非アルファベットで始まる最初の単語を抽出）のとき、探索処理部１７３は、データ「Ｓｕｇａｒ（１００ｇ）」から「（１００ｇ）」を抽出し、新たな列に追加する。
【０１３９】
グループＧ２に分類される変換方法の一例として、和による数値変換、および、積による数値変換を考える。例えば、和による数値変換では、数値「１００」と数値「２００」とがある場合に、その和「３００」を計算し、新たな列に追加する。例えば、積による数値変換では、数値「１００」と数値「２００」とがある場合に、その積「２００００」を計算し、新たな列に追加する。
【０１４０】
ただし、文字列抽出として、Ｐ番目の数値列を抽出する方法や、Ｐ番目の大文字のアルファベットで始まる単語を抽出する方法なども考えられる。前者では。例えば、Ｐ＝１（最初の数値列を抽出）のとき、データ「Ｓｕｇａｒ（１００ｇ）」から「１００」を抽出し、新たな列に追加する。後者では、例えば、Ｐ＝１（大文字のアルファベットで始まる最初の単語を抽出）のとき、データ「ｍａｄｅ  ｉｎ  Ｊａｐａｎ」から「Ｊａｐａｎ」を抽出し、新たな列に追加する。また、数値変換として、差や商などによる数値変換も考えられる。
【０１４１】
次に、グループＧ１，Ｇ２それぞれの中間データの例およびローカル評価値の計算例を説明する。なお、テーブルに含まれる各行について、上側から下側へ向かって、順に、１，２，・・・番目の行とする。また、テーブルに含まれる各列について、左端の列から右へ向かって、順に、１，２，・・・番目の列とする。更に、Ｈｍａｘ＝１とする。まず、グループＧ１の探索で生成される中間データを説明する。
【０１４２】
図１７は、中間データの例（その１）を示す図である。
図１７（Ａ）は、中間データＡ１を示す。中間データＡ１は、加工前データ１４１の１番目の列に関して、区切り文字で区切られる最初の単語を抽出して生成される。ここで、「最初」は、該当列に設定されている文字列を左端から順に１文字ずつ走査していったときの最初であることを示す。
【０１４３】
１行目のレコードでは、１番目の列に設定された文字列「ａｐｐｌｅ（Ｃｈｉｎａ）」は区切り文字を含まない。このため、探索処理部１７３は、当該レコードに関して単語を抽出しない。
【０１４４】
２行目のレコードでは、１番目の列に設定された文字列「ｏｒａｎｇｅ  Ｂｒａｚｉｌ」は区切り文字“  ”（スペース）を含む。このため、探索処理部１７３は、当該区切り文字で区切られる最初の単語“Ｂｒａｚｉｌ”を抽出する。
【０１４５】
探索処理部１７３は、加工前データ１４１の複製に新たな列を追加し、抽出した単語を設定する。例えば、探索処理部１７３は、「ａｐｐｌｅ（Ｃｈｉｎａ）」に対して単語を抽出しなかったので、１行目のレコードについて、新たな列には何も設定しない。また、探索処理部１７３は、「ｏｒａｎｇｅ  Ｂｒａｚｉｌ」に対して単語「Ｂｒａｚｉｌ」を抽出したので、２行目のレコードについて、新たな列に「Ｂｒａｚｉｌ」を設定する。こうして、探索処理部１７３は、加工前データ１４１から中間データＡ１を生成する。探索処理部１７３は、中間データＡ１をデータ記憶部１４０に格納する。
【０１４６】
図１７（Ｂ）は、中間データＡ２を示す。中間データＡ２は、加工前データ１４１の０番目の列に関して、非アルファベットで始まる最初の単語を抽出して生成される。
１行目のレコードでは、１番目の列に設定された文字列「ａｐｐｌｅ（Ｃｈｉｎａ）」の非アルファベットで始まる最初の単語は、「（Ｃｈｉｎａ）」である。このため、探索処理部１７３は、「（Ｃｈｉｎａ）」を抽出する。
【０１４７】
２行目のレコードでは、１番目の列に設定された文字列「ｏｒａｎｇｅ  Ｂｒａｚｉｌ」の非アルファベットで始まる最初の単語は、「Ｂｒａｚｉｌ」である。このため、探索処理部１７３は、「Ｂｒａｚｉｌ」を抽出する。
【０１４８】
探索処理部１７３は、加工前データ１４１の複製に新たな列を追加し、抽出した単語を設定する。例えば、探索処理部１７３は、１行目のレコードについて、新たな列に単語「（Ｃｈｉｎａ）」を設定する。また、探索処理部１７３は、２行目のレコードについて、新たな列に単語「Ｂｒａｚｉｌ」を設定する。こうして、探索処理部１７３は、加工前データ１４１から中間データＡ２を生成する。探索処理部１７３は、中間データＡ２をデータ記憶部１４０に格納する。
【０１４９】
ここで、探索処理部１７３は、グループＧ１に対するローカル評価関数ｆ１を用いて、中間データ毎のローカル評価値を計算する。ここでは、簡単のために、加工前データ１４１の直後の中間データＡ１，Ａ２に対するローカル評価値の計算方法を例示する。この場合、文字列抽出を１回行っただけなので、加工前データ１４１から中間データＡ１，Ａ２それぞれに対する編集距離を無視してよい（ただし、加工前データ１４１から中間データＡ１，Ａ２それぞれに対する編集距離を考慮してもよい）。
【０１５０】
まず、探索処理部１７３は、中間データのセルを１つ選択する。セルは、レコードにおける１つのデータ項目（中間データＡ１の例では、「ａｐｐｌｅ（Ｃｈｉｎａ）」、「１００」、「５０」など）である。
【０１５１】
探索処理部１７３は、加工後データの同じ行の全セルとのＬ１＝編集距離／ｍａｘ（中間データの文字列長，加工後データの文字列長）を計算する。ここで、ｍａｘ演算は、括弧内の数値のうち、最大の値を選択する演算である。探索処理部１７３は、当該Ｌ１の最小値を、当該セルの距離評価値とする。
【０１５２】
探索処理部１７３は、セル毎に距離評価値を計算し、該当の中間データの全セルの距離評価値の平均を計算する。すなわち、探索処理部１７３は、全セルの距離評価値の和をセル数で割る。
【０１５３】
次に、中間データＡ１に対するローカル評価値ｆ１１の計算例を説明する。
図１８は、ローカル評価値の計算例（その１）を示す図である。
探索処理部１７３は、中間データＡ１の１行目の１つ目のセル（文字列「ａｐｐｌｅ（Ｃｈｉｎａ）」が設定されたセル）を選択する。探索処理部１７３は、当該文字列と加工後データ１４２の同じ行の「ａｐｐｌｅ」との編集距離を、両者の差分である文字列部分「（Ｃｈｉｎａ）」の文字数“７”として求める。また、ｍａｘ（中間データの文字列長，加工後データの文字列長）＝ｍａｘ（１２，５）＝１２である。したがって、中間データＡ１の１つ目のセルについて、Ｌ１＝７／１２である。
【０１５４】
同様に、中間データＡ１の１行目の１つ目のセルおよび加工後データ１４２の２つ目のセル（「Ｃｈｉｎａ」が設定されたセル）について、Ｌ１＝７／１２である。中間データＡ１の１つ目のセルおよび加工後データ１４２の３つ目のセル（「５４００」が設定されたセル）について、Ｌ１＝１２／１２である。したがって、中間データＡ１の１つ目のセルについての距離評価値は、｛７／１２、７／１２、１２／１２｝のうちの最小値である７／１２である。
【０１５５】
探索処理部１７３は、１つ目のセルと同様にして、中間データＡ１の１行目の２つ目以降のセルについても距離評価値を計算する。２つ目のセル（設定なしのセル）の距離評価値は４／４である。３つ目のセル（数値「１００」が設定された１行目のセル）の距離評価値は２／４である。４つ目のセル（数値「５０」が設定されたセル）の距離評価値は２／４である。
【０１５６】
次に、探索処理部１７３は、中間データＡ１の２行目の各セルについても距離評価値を計算する。２行目の１つ目のセル（文字列「ｏｒａｎｇｅ  Ｂｒａｚｉｌ」が設定されたセル）の距離評価値は７／１３である。２行目の２つ目のセル（文字列「Ｂｒａｚｉｌ」が設置されたセル）の距離評価値は０である。２行目の３つ目のセル（数値「２００」が設定されたセル）の距離評価値は２／５である。２行目の４つ目のセル（数値「１００」が設定された２行目のセル）の距離評価値は２／５である。
【０１５７】
この場合、中間データＡ１の全セルの距離評価値の和は、７／１２＋７／１３＋４／４＋０＋２／４＋２／５＋２／４＋２／５＝約３．９２である。したがって、中間データＡ１のローカル評価値ｆ１１は、約３．９２／８＝約０．４９である。
【０１５８】
次に、中間データＡ２に対するローカル評価値ｆ１２の計算例を説明する。
図１９は、ローカル評価値の計算例（その２）を示す図である。
探索処理部１７３は、中間データＡ２についても、図１８で説明した手順により、各セルの距離評価値を計算する。中間データＡ２の１行目のセルについて、各セルの距離評価値は次の通りである。１つ目のセルの距離評価値は７／１２である。２つ目のセルの距離評価値は２／７である。３つ目のセルの距離評価値は２／４である。４つ目のセルの距離評価値は２／４である。
【０１５９】
中間データＡ２の２行目のセルについて、各セルの距離評価値は次の通りである。１つ目のセルの距離評価値は７／１３である。２つ目のセルの距離評価値は０である。３つ目のセルの距離評価値は２／５である。４つ目のセルの距離評価値は２／５である。
【０１６０】
この場合、中間データＡ２の全セルの距離評価値の和は、７／１２＋７／１３＋２／７＋０＋２／４＋２／５＋２／４＋２／５＝約３．２１である。したがって、中間データＡ２のローカル評価値ｆ１２は、約３．２１／８＝約０．４０である。
【０１６１】
次に、グループＧ２の探索で生成される中間データを説明する。
図２０は、中間データの例（その２）を示す図である。
図２０（Ａ）は、中間データＢ１を示す。中間データＢ１は、加工前データ１４１の２，３番目の列に対して、積を計算することで生成される。
【０１６２】
１行目について、探索処理部１７３は、数値「１００」と数値「５０」との積「５０００」を計算する。２行目について、探索処理部１７３は、数値「２００」と数値「１００」との積「２００００」を計算する。
【０１６３】
探索処理部１７３は、計算された数値「５０００」（１行目）および数値「２００００」（２行目）を、新たな列に設定する。こうして、探索処理部１７３は、加工前データ１４１から中間データＢ１を生成する。探索処理部１７３は、中間データＢ１をデータ記憶部１４０に格納する。
【０１６４】
図２０（Ｂ）は、中間データＢ２を示す。中間データＢ２は、加工前データ１４１の２，３番目の列に対して、和を計算することで生成される。
１行目について、探索処理部１７３は、数値「１００」と数値「５０」との和「１５０」を計算する。２行目について、探索処理部１７３は、数値「２００」と数値「１００」との和「３００」を計算する。
【０１６５】
探索処理部１７３は、計算された数値「１５０」（１行目）および数値「３００」（２行目）を、新たな列に設定する。こうして、探索処理部１７３は、加工前データ１４１から中間データＢ２を生成する。探索処理部１７３は、中間データＢ２をデータ記憶部１４０に格納する。
【０１６６】
ここで、探索処理部１７３は、グループＧ２に対するローカル評価関数ｆ２を用いて、中間データ毎のローカル評価値を計算する。ここでは、簡単のために、加工前データ１４１の直後の中間データＢ１，Ｂ２に対するローカル評価値の計算方法を例示する。この場合、数値変換を１回行っただけなので、加工前データ１４１から中間データＢ１，Ｂ２それぞれに対する数値差を無視してよい（ただし、加工前データ１４１から中間データＢ１，Ｂ２それぞれに対する数値差を考慮してもよい）。
【０１６７】
ここで、数値変換における数値差の計算については、数値セル（数値が設定されたセル）のみを対象とする。まず、探索処理部１７３は、中間データの数値セルの中からセルを１つ選択する。
【０１６８】
探索処理部１７３は、加工後データの同じ行の全数値セルとの間でＬ２＝ａｂｓ（数値差）／ｍａｘ（ａｂｓ（中間データの数値），ａｂｓ（加工後データの数値））を計算する。ａｂｓ演算は、括弧内の数値の絶対値を取る演算である。探索処理部１７３は、当該Ｌ１の最小値を、当該セルの距離評価値とする。
【０１６９】
探索処理部１７３は、セル毎に距離評価値を計算し、該当の中間データの全セルの距離評価値の平均を計算する。すなわち、探索処理部１７３は、全セルの距離評価値の和をセル数で割る。
【０１７０】
次に、中間データＢ１に対するローカル評価値ｆ２１の計算例を説明する。
図２１は、ローカル評価値の計算例（その３）を示す図である。
探索処理部１７３は、中間データＢ１の１行目の１つ目の数値セル（数値「１００」が設定された１行目のセル）を選択する。探索処理部１７３は、当該数値と加工後データ１４２の同じ行の数値セルの数値「５４００」との数値差５４００−１００＝５３００を求める。また、ｍａｘ（ａｂｓ（中間データの数値），ａｂｓ（加工後データの数値））＝ｍａｘ（１００，５４００）＝５４００である。したがって、中間データＢ１の１つ目の数値セルについて、Ｌ２＝５３００／５４００である。加工後データ１４２の１行には、数値セルが１つなので、当該Ｌ２の値はそのまま距離評価値となる。よって、探索処理部１７３は、中間データＢ１の１行目の１つ目の数値セルの距離評価値を「５３００／５４００」とする。
【０１７１】
探索処理部１７３は、１つ目の数値セルと同様にして、中間データＢ１の１行目の２つ目以降の数値セルについても距離評価値を計算する。２つ目の数値セル（数値「５０」が設定されたセル）の距離評価値は５３５０／５４００である。３つ目の数値セル（数値「５０００」が設定されたセル）の距離評価値は４００／５４００である。
【０１７２】
次に、探索処理部１７３は、中間データＢ１の２行目の各数値セルについても距離評価値を計算する。２行目の１つ目の数値セル（数値「２００」が設定されたセル）の距離評価値は、２１４００／２１６００である。２行目の２つ目の数値セル（数値「１００」が設定された２行目のセル）の距離評価値は２１５００／２１６００である。２行目の３つ目の数値セル（数値「２００００」が設定されたセル）の距離評価値は１６００／２１６００である。
【０１７３】
この場合、中間データＢ１の全数値セルの距離評価値の和は、５３００／５４００＋２１４００／２１６００＋５３５０／５４００＋２１５００／２１６００＋４００／５４００＋１６００／２１６００＝約４．１１である。したがって、中間データＢ１のローカル評価値ｆ２１は、約４．１１／６＝約０．６８５である。
【０１７４】
次に、中間データＢ２に対するローカル評価値ｆ２２の計算例を説明する。
図２２は、ローカル評価値の計算例（その４）を示す図である。
探索処理部１７３は、中間データＢ２についても、図２１で説明した手順により、各セルの距離評価値を計算する。中間データＢ２の１行目の数値セルについて、各数値セルの距離評価値は次の通りである。１つ目の数値セルの距離評価値は５３００／５４００である。２つ目の数値セルの距離評価値は５３５０／５４００である。３つ目の数値セルの距離評価値は５２５０／５４００である。
【０１７５】
中間データＢ２の２行目の数値セルについて、各数値セルの距離評価値は次の通りである。１つ目の数値セルの距離評価値は２１４００／２１６００である。２つ目の数値セルの距離評価値は２１５００／２１６００である。３つ目の数値セルの距離評価値は２１３００／２１６００である。
【０１７６】
この場合、中間データＢ２の全数値セルの距離評価値の和は、５３００／５４００＋２１４００／２１６００＋５３５０／５４００＋２１５００／２１６００＋５２５０／５４００＋２１３００／２１６００＝約５．９２である。したがって、中間データＢ２のローカル評価値ｆ２２は、約５．９２／６＝約０．９８６である。
【０１７７】
前述のように、Ｈｍａｘ＝１である。この場合、１ホップの探索が終了すると、グループＧ１，Ｇ２それぞれにおける最終ノードを決定し、最終ノードのグローバル評価値に基づいて、最終ノードの中から次の起点のノードを選択する。
【０１７８】
図２３は、グローバル評価値の計算例を示す図である。
グループＧ１では、中間データＡ１に対するローカル評価値ｆ１１は０．４９である。また、中間データＡ２に対するローカル評価値ｆ１２は０．４０である。ローカル評価値ｆ１２＜ローカル評価値ｆ１１なので、探索処理部１７３は、グループＧ１の最終ノードを中間データＡ２に対応する中間ノードとする。
【０１７９】
グループＧ２では、中間データＢ１に対するローカル評価値ｆ２１は０．６８５である。また、中間データＢ２に対するローカル評価値ｆ２２は０．９８６である。ローカル評価値ｆ２１＜ローカル評価値ｆ２２なので、探索処理部１７３は、グループＧ２の最終ノードを中間データＢ１に対応する中間ノードとする。
【０１８０】
探索処理部１７３は、グループＧ１の最終ノード（中間データＡ２に相当）を、グローバル評価関数Ｆによって評価する。前述のように、グローバル評価関数Ｆは、全ローカル評価関数の線形結合であり、式（１）によって表される。グループＧ１，Ｇ２の例の場合、ローカル評価関数ｆ１，ｆ２の線形結合となる。ここで、一例として、ローカル評価関数ｆ１の重みをλ１＝０．７とし、ローカル評価関数ｆ２の重みをλ２＝０．３とする。
【０１８１】
すると、中間データＡ２のグローバル評価値Ｆ１は、次の式（４）で表される。
グローバル評価値Ｆ１＝０．７×ローカル評価値ｆ１２＋０．３×ローカル評価値ｆ２（中間データＡ２〜加工後データ１４２）・・・（４）
ここで、ローカル評価値ｆ２（中間データＡ２〜加工後データ１４２）は、（５３００／５４００＋５３５０／５４００＋２１４００／２１６００＋２１５００／２１６００）／４＝１．９９である。
【０１８２】
よって、探索処理部１７３は、この値を式（４）に代入して、グローバル評価値Ｆ１を、０．７×０．４０＋０．３×１．９９＝０．８７７と計算する。
また、中間データＢ１のグローバル評価値Ｆ２は、次の式（５）で表される。
【０１８３】
グローバル評価値Ｆ２＝０．７×ローカル評価値ｆ１（中間データＢ１〜加工後データ１４２）＋０．３×ローカル評価値ｆ２１・・・（５）
ここで、ローカル評価値ｆ１（中間データＢ１〜加工後データ１４２）は、（７／１２＋３／４＋２／４＋１／４＋７／１３＋２／５＋２／５＋２／５）／８＝０．４１５である。
【０１８４】
よって、探索処理部１７３は、この値を式（５）に代入して、グローバル評価値Ｆ２を、０．７×０．４１５＋０．３×０．６８５＝０．４９６と計算する。
そして、グローバル評価値Ｆ２＜グローバル評価値Ｆ１なので、探索処理部１７３は、中間データＡ２，Ｂ１のうち、中間データＢ１に対応する中間ノードを、次段の探索の起点のノードと決定する。
【０１８５】
このように、探索装置１００は、グループ単位での探索では、ローカル評価関数を使用し、次の起点のノードの選択にはグローバル評価関数を使用するというように、ローカル評価関数とグローバル評価関数とを使い分ける。これにより、グループ単位での探索の効率化を図るとともに、グループ単位で行われた複数の探索結果の中から、その後の探索コストが比較的小さいと推定されるノードを起点のノードとして適切に選択できる。
【０１８６】
図２４は、探索の比較例を示す図である。
グラフ７０は、Ａ＊アルゴリズムを利用して、変換方法のグルーピングを行わずに探索を行う場合の探索経路の例を示す。この場合、使用する変換方法の数Ｔが増すほど、変換方法の組み合わせの数が増し、探索の処理コストが増す。具体的には、探索空間は、Ｔのべき（累乗）で増大する。探索空間が大きいと、評価関数の値に従って探索しても、膨大な手戻り処理が発生する可能性もある。このように、探索空間が増大すると、探索処理に時間がかかる。
【０１８７】
そこで、探索装置１００は、探索対象の変換方法を、グループに属する変換方法に限定することで、全ての変換方法を対象として探索を行うよりも、探索空間を減少させることができる。
【０１８８】
すなわち、探索装置１００は、グループに属する特定の種類の変換方法に限定して連続的に使用して中間データを生成し、当該中間データにより変換方法の組み合わせを探索することで、種類の異なる変換方法を交互に試すような探索経路の枝刈りを行う。これにより、探索空間を効率的に削減し、探索時間を短縮できる。
【０１８９】
また、全ての変換方法を対象として探索を行う場合、全ての変換方法に対応した評価関数を定義することになるが、変換方法の種類が増すほどこのような評価関数を適切に定義することは難しくなる。一方、探索対象の変換方法をグループに属する変換方法に限定することで、評価関数に対応させる変換方法の種類を減らせる。このため、評価関数が単純化して評価関数の精度が向上し、当該グループにおいて適切な経路を選択できる可能性が高まる。その結果、探索経路を縮小させ、探索時間を短縮できる。
【０１９０】
なお、第１の実施の形態の情報処理は、処理部１２にプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１１３に記録できる。
【０１９１】
例えば、プログラムを記録した記録媒体１１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１９２】
１０  探索装置
１１  記憶部
１２  処理部
【図１】
2019159362.tif 000006
【図２】
2019159362.tif 000007
【図３】
2019159362.tif 000008
【図４】
2019159362.tif 000009
【図５】
2019159362.tif 000010
【図６】
2019159362.tif 000011
【図７】
2019159362.tif 000012
【図８】
2019159362.tif 000013
【図９】
2019159362.tif 000014
【図１０】
2019159362.tif 000015
【図１１】
2019159362.tif 000016
【図１２】
2019159362.tif 000017
【図１３】
2019159362.tif 000018
【図１４】
2019159362.tif 000019
【図１５】
2019159362.tif 000020
【図１６】
2019159362.tif 000021
【図１７】
2019159362.tif 000022
【図１８】
2019159362.tif 000023
【図１９】
2019159362.tif 000024
【図２０】
2019159362.tif 000025
【図２１】
2019159362.tif 000026
【図２２】
2019159362.tif 000027
【図２３】
2019159362.tif 000028
【図２４】
2019159362.tif 000029