(57)【要約】      （修正有）【課題】特定の処理を繰り返し実行する場合において、記憶領域の使用量を抑制する。【解決手段】各工程において特定の処理が実行される複数の工程のうち第１の工程において、第１の工程における処理対象のサイズである問題サイズＮｉが、第１の工程の前の工程の状態に基づき規定される上限サイズＭｉと一致するか判定し、判定結果を記憶領域に保存し、第１の工程の次の工程である第２の工程において、記憶領域に保存された判定結果を用いて問題サイズを特定し、特定した問題サイズに基づき第２の工程の特定の処理を実行する処理を含む。【選択図】図７
2018132899.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、
判定結果を記憶領域に保存し、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する、
処理を実行させる格納プログラム。
【請求項２】
前記第１の工程において、前記上限サイズを所定の数で割った場合の剰余の情報を前記記憶領域に保存する
処理を前記コンピュータにさらに実行させ、
前記第２の工程の前記特定の処理を実行する処理において、
前記判定結果が、前記問題サイズが前記上限サイズと一致することを示している場合、前記記憶領域に保存した前記剰余の情報を用いて前記問題サイズを特定する、
請求項１記載の格納プログラム。
【請求項３】
前記問題サイズが前記上限サイズと一致しない場合、前記第１の工程において、前記問題サイズと前記上限サイズとの差に相当する領域に、前記問題サイズの情報を格納する、
処理を前記コンピュータにさらに実行させ、
前記第２の工程の前記特定の処理を実行する処理において、
前記判定結果が、前記問題サイズが前記上限サイズと一致しないことを示している場合、前記問題サイズを前記記憶領域から読み出す、
請求項１又は２記載の格納プログラム。
【請求項４】
前記第２の工程の前記特定の処理を実行する処理において、
前記第２の工程における処理対象のサイズの上限サイズに前記所定の数を乗じた値と前記剰余の情報とを用いて、前記問題サイズを特定する、
請求項２記載の格納プログラム。
【請求項５】
コンピュータが、
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、
判定結果を記憶領域に保存し、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する、
処理を実行する格納方法。
【請求項６】
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、判定結果を記憶領域に保存する保存処理部と、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する実行部と、
を有する格納装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの格納技術に関する。
【背景技術】
【０００２】
或る問題を解くためにその問題の一部に相当する小問題の結果を利用する際に、再帰処理が用いられる。図１は再帰処理について説明する図である。図１において、矩形の図形は問題を表す。ステップｉ（ｉは０以上の整数）において問題を解く際に、ステップ（ｉ＋１）の処理が再帰的に呼び出される。そして、ステップ（ｉ＋１）の問題を解いた後、ステップ（ｉ＋１）の結果を利用してステップｉの問題を解くことができる。
【０００３】
例えば接尾辞配列を生成する場合等に実行される再帰処理においては、或るステップの問題を解く際に前のステップの問題のサイズの情報が使用される。そのため、各ステップの問題インスタンスを格納する記憶領域とは別に、各ステップの問題サイズの情報を格納する記憶領域が用意される。
【０００４】
このように、或る種の再帰処理を実行する場合には記憶領域が別途必要になるが、特に使用できる記憶領域が限られたシステム（例えば組み込みシステム等）の場合、記憶領域の占有が再帰処理以外の処理の性能に影響を及ぼすことがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１−１４２９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、１つの側面では、特定の処理を繰り返し実行する場合において、記憶領域の使用量を抑制することである。
【課題を解決するための手段】
【０００７】
一態様に係る格納方法は、各工程において特定の処理が実行される複数の工程のうち第１の工程において、第１の工程における処理対象のサイズである問題サイズが、第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、判定結果を記憶領域に保存し、第１の工程の次の工程である第２の工程において、記憶領域に保存された判定結果を用いて問題サイズを特定し、特定した問題サイズに基づき第２の工程の特定の処理を実行する処理を含む。
【発明の効果】
【０００８】
１つの側面では、特定の処理を繰り返し実行する場合において、記憶領域の使用量を抑制できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、再帰処理について説明するための図である。
【図２】図２は、接尾辞配列の生成において実行される再帰処理について説明するための図である。
【図３】図３は、接尾辞配列の生成において実行される再帰処理について説明するための図である。
【図４】図４は、問題サイズの情報を保存する方法として考えられる第１の方法を説明するための図である。
【図５】図５は、問題サイズの情報を保存する方法として考えられる第２の方法を説明するための図である。
【図６】図６は、情報処理装置の機能ブロック図である。
【図７】図７は、問題サイズの情報を復元するために使用する情報を保存する処理の処理フローを示す図である。
【図８】図８は、問題サイズの情報を復元する処理の処理フローを示す図である。
【図９】図９は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１０】図１０は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１１】図１１は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１２】図１２は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１３】図１３は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１４】図１４は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１５】図１５は、作業領域及び管理領域の遷移について具体的に説明するための図である。
【図１６】図１６は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
接尾辞配列とは、文字列の全ての接尾辞を辞書順に並べ替えることで得られる配列である。以下では、接尾辞配列の生成において実行される再帰処理を例として本実施の形態を説明する。まず、図２及び図３を用いて、接尾辞配列の生成において実行される再帰処理を簡単に説明する。図２及び図３において、矩形の図形は各ステップにおける処理対象のデータのサイズ（すなわち、問題インスタンスのサイズ。以下では問題サイズと呼ぶ。）を表す。Ｎiはステップｉの問題サイズを表す。
【００１１】
接尾辞配列の生成においては、各ステップにおいて、対象の接尾辞の半分以下の接尾辞（すなわち１／ｃ（ｃは１＜ｃ≦Ｎを満たす整数）の接尾辞。Ｎは初期的な問題サイズを表す。）が再帰的に並べ替えられる。従って、ステップ（ｉ＋１）の接尾辞はステップｉの接尾辞の半分以下の接尾辞に相当し、ステップ（ｉ＋２）の接尾辞はステップ（ｉ＋１）の接尾辞の半分以下の接尾辞に相当する。以下では、特にｃの値を指定しない限りｃ＝２とする。
【００１２】
各ステップにおいては、次のステップにおいて並び替えられた接尾辞を利用して対象の接尾辞が並び替えられる。具体的には、ステップ（ｉ＋１）においてはステップ（ｉ＋２）において並び替えられた接尾辞を利用して対象の接尾辞が並び替えられ、ステップｉにおいてはステップ（ｉ＋１）において並び替えられた接尾辞を利用して対象の接尾辞が並び替えられる。ここで、各ステップにおいては、前のステップの問題サイズ（例えば接尾辞の数）が並び替えに使用される。具体的には、ステップ（ｉ＋２）においてはステップ（ｉ＋１）の問題サイズが並び替えに使用され、ステップ（ｉ＋１）においてはステップｉの問題サイズが並び替えに使用される。
【００１３】
図４を用いて、問題サイズの情報を保存する方法として考えられる第１の方法を説明する。第１の方法では、作業領域とは別に外部領域（例えばスタック領域）が用意され、外部領域に問題サイズが保存される。この場合、データの取得に要する時間はＯ記法でＯ（１）（回）であり、領域はＯ記法でＯ（ｌｏｇＮ）＋ｌｏｇＮ2（ビット）である。ｈはステップ数を表す。以下では、対数の底が省略されている場合は底が２であるとする。
【００１４】
第１の方法によれば、高速に処理することが可能であるものの、使用される領域のサイズが大きくなる。
【００１５】
図５を用いて、問題サイズの情報を保存する方法として考えられる第２の方法を説明する。第２の方法では、未使用であることを表す情報を使用されない作業領域に書き込み、使用される作業領域の先頭から線形探索を行うことで、Ｎiが計算される。図５にはステップｉの作業領域が示されており、Ｍi（＝ｆｌｏｏｒ（Ｍi-1／ｃ））は、問題サイズの上限である。ｆｌｏｏｒは切り捨ての関数である。ハッチングが付された部分は使用されない作業領域を表す。この場合、データの取得に要する時間はＯ記法でＯ（Ｎ）（回）であり、領域はＯ記法でＯ（ｌｏｇＮ）（ビット）である。
【００１６】
第２の方法によれば、使用される領域のサイズを小さくすることができるものの、処理が低速になる。
【００１７】
以上のように、上で説明した２つの方法には、処理が低速になるか又は使用される領域のサイズが大きくなるという問題がある。そこで、本実施の形態においては以下で説明するような方法によって、再帰処理の性能を維持しつつ使用される記憶領域のサイズを小さくする。
【００１８】
図６に、本実施の形態の情報処理装置１の機能ブロック図を示す。情報処理装置１は、格納処理部１０１と、復元処理部１０３と、問題処理部１０５と、入力データ格納部１１０と、作業データ格納部１１１と、管理データ格納部１１３と、出力データ格納部１１４とを含む。
【００１９】
格納処理部１０１、復元処理部１０３及び問題処理部１０５は、図１６に示したメモリ２５０１にロードされたプログラムがＣＰＵ（Central Processing Unit）２５０３に実行されることによって実現される。作業データ格納部１１１及び管理データ格納部１１３は、例えば、図１６に示したメモリ２５０１に設けられる。入力データ格納部１１０及び出力データ格納部１１４は、例えば、図１６に示したメモリ２５０１又はＨＤＤ（Hard Disk Drive）２５０５に設けられる。
【００２０】
格納処理部１０１は、入力データ格納部１１０に格納されたデータに基づき、問題サイズの情報を復元するために使用する情報を生成し、管理データ格納部１１３に格納する。復元処理部１０３は、格納処理部１０１によって管理データ格納部１１３に格納された情報を用いて、問題サイズの情報を復元する。問題処理部１０５は、復元処理部１０３によって復元された問題サイズの情報を用いて、接尾辞配列の生成処理（本処理は再帰処理を含む）を実行し、実行結果を出力データ格納部１１４に格納する。
【００２１】
次に、図７を用いて、問題サイズの情報を復元するために使用する情報を保存する処理について説明する。本処理は各ステップについて実行されるが、説明を簡単にするためステップｉについて実行される場合について説明する。
【００２２】
まず、格納処理部１０１は、Ｌi＝Ｍi ｍｏｄ ｃに従ってＬiを算出する（図７：ステップＳ１）。格納処理部１０１は、算出したＬiを管理データ格納部１１３に保存する。
【００２３】
なお、ｃは入力データ格納部１１０に格納されているものとする。ＭiはＭi＝ｆｌｏｏｒ（Ｍi-1／ｃ）に従って算出され、Ｍ0＝Ｎ0＝Ｎであるとする。Ｍ0、Ｎ0及びＮは、入力データ格納部１１０に格納されている。なお、Ｍiはステップｉにおいて使用可能な連続領域の最大サイズ（すなわち、問題サイズの上限）である。
【００２４】
格納処理部１０１は、Ｎi＝Ｍiが成立するか判定する（ステップＳ３）。Ｎi＝Ｍiが成立する場合（ステップＳ３：Ｙｅｓルート）、格納処理部１０１は、Ｐiに１を設定する（ステップＳ５）。そして、格納処理部１０１は、Ｐi（すなわち１）を管理データ格納部１１３に保存する。
【００２５】
一方、Ｎi＝Ｍiが成立しない場合（ステップＳ３：Ｎｏルート）、格納処理部１０１は、Ｐiに０を設定する（ステップＳ７）。そして、格納処理部１０１は、Ｐi（すなわち０）を管理データ格納部１１３に保存する。さらに、格納処理部１０１は、ステップｉの作業領域（すなわち作業データ格納部１１１の領域）のうちＭi番目の領域にＮiを格納する（ステップＳ９）。Ｎiは、ステップ（ｉ−１）から呼び出されたときに判明しているものとする。そして処理は終了する。
【００２６】
なお、ステップｉの作業領域はＭi個の領域を含むので、ステップＳ９においてはＭi個の領域のうちＭi番目の領域にＮiが格納される。Ｍi番目の領域は、ＮiとＭiとの差分に相当する領域である。これについては後で具体例を用いて説明する。
【００２７】
以上のように、本実施の形態においては問題サイズの情報がそのまま保存されるわけではなく、問題サイズの情報を復元するために使用される最低限の情報（すなわち、Ｐi及びＬi）が保存される。なお、Ｎi≠Ｍiである場合には問題サイズの情報が保存されるものの、保存される領域は作業領域の一部であるので、問題サイズの情報を保存するために別途領域を用意しなくてもよい。
【００２８】
なお、後で具体例を示すように、Ｌi及びＰiは各ステップについて保存されるが、Ｍi及びＮiは最終ステップのみについて保存されるとする。
【００２９】
次に、図８を用いて、問題サイズの情報を復元する処理について説明する。本処理は各ステップについて実行されるが、説明を簡単にするためステップｉについて実行される場合について説明する。
【００３０】
まず、復元処理部１０３は、管理データ格納部１１３からＭi及びＬi-1を読み出し、Ｍi-1＝ｃｅｉｌ（ｃ＊Ｍi）＋Ｌi-1によりＭi-1を算出する（図８：ステップＳ１１）。ｃｅｉｌは切り上げの関数である。
【００３１】
復元処理部１０３は、管理データ格納部１１３からＰi-1を読み出し、Ｐi-1＝１（すなわち、Ｍi-1＝Ｎi-1）であるか判定する（ステップＳ１３）。
【００３２】
Ｐi-1＝１である場合（ステップＳ１３：Ｙｅｓルート）、復元処理部１０３は、Ｎi-1にＭi-1を設定する（ステップＳ１７）。そして、問題処理部１０５は、復元処理部１０３により復元されたＮi-1を用いて、ステップｉの問題についての処理を実行する。
【００３３】
一方、Ｐi-1＝１ではない場合（ステップＳ１３：Ｎｏルート）、復元処理部１０３は、ステップ（ｉ−１）の作業領域のＭi-1番目の領域の値を作業データ格納部１１１から読み出す。そして、復元処理部１０３は、読み出した値をＮi-1に設定する（ステップＳ１５）。そして、問題処理部１０５は、復元処理部１０３により復元されたＮi-1を用いて、ステップｉの問題についての処理を実行する。そして処理は終了する。
【００３４】
なお、最終的な実行結果（すなわち、接尾辞配列）は出力データ格納部１１４に格納される。
【００３５】
以上のように、本実施の形態においては、問題サイズの情報そのものを保存することなく、各ステップにおいて処理を実行することができる。従って、特に使用できる記憶領域が限られている場合や大規模なデータに対して再帰処理を実行する場合において、リソースを削減し、ひいてはコストを削減することができるようになる。また、処理の高速化および不要な処理の省略により、リアルタイム性の向上と省電力とを実現することができるようになる。
【００３６】
本実施の形態の方法によれば、使用される情報はＭi、Ｐi及びＬiであるので、データの取得に要する時間はＯ記法でＯ（１）（回）である。また、Ｐi＝１（ビット）であり、Ｌi＝ｌｏｇ２＝１（ビット）であるので、領域はＯ記法でＯ（ｌｏｇＮ）＋（１＋１）＊ｈ＝Ｏ（ｌｏｇＮ）＋２ｌｏｇＮ（ビット）である。図４を用いて説明した第１の方法と比較すると、同等の時間で領域を４０９６ビットから１２８ビットに小さくすることができる。また、図５を用いて説明した第２の方法と比較すると、１２８ビットの領域を追加することで、処理を２64倍速くすることができるようになる。
【００３７】
図９乃至図１５を用いて、本実施の形態における作業領域及び管理領域（ここでは、管理データ格納部１１３の領域）の状態の遷移について具体的に説明する。
【００３８】
初期状態は、図９に示す状態であるとする。すなわち、作業領域は１０の領域に分かれており、管理領域には、初期値としてＭ0＝１０及びＮ0＝１０が格納されている。さらに、Ｍ0＝Ｎ0であるのでＰ0＝１が格納されており、Ｌ0＝Ｍ0 ｍｏｄ ２＝０が格納されている。なお、Ｎは１０であり、ｃは２であるとする。
【００３９】
図１０に示すように、ステップ１においては、Ｍ1およびＬ1が算出される。Ｍ1＝ｆｌｏｏｒ（Ｍ0／２）＝５であり、Ｌ1＝Ｍ1 ｍｏｄ ２＝１である。Ｎ1が４であることは判明している。Ｍ1≠Ｎ1であるので、Ｐ1は０である。従って、ステップＳ１の作業領域のＭ1（＝５）番目の領域に、Ｎ1＝４が保存される。
【００４０】
図１１に示すように、ステップ２においては、Ｍ2およびＬ2が算出される。Ｍ2＝ｆｌｏｏｒ（Ｍ1／２）＝２であり、Ｌ2＝Ｍ2 ｍｏｄ ２＝０である。Ｎ2が２であることは判明している。Ｍ2＝Ｎ2であるので、Ｐ2は１である。
【００４１】
図１２に示すように、ステップ３においては、Ｍ3およびＬ3が算出される。Ｍ3＝ｆｌｏｏｒ（Ｍ2／２）＝１であり、Ｌ3＝Ｍ3 ｍｏｄ ２＝１である。Ｎ2が１であることは判明している。Ｍ3＝Ｎ3であるので、Ｐ3は１である。
【００４２】
本例においては、ステップ３が最終ステップであるとする。この場合、図１３に示すように、ステップ０からステップ２までの作業領域は、ステップ１の作業領域のうちＭ1番目の領域を除いて解放される（すなわち、データが陽に保存されない）。また、ステップ０からステップ２までの管理領域のうちＭi及びＮiの領域は解放される（すなわち、データが陽に保存されない）。
【００４３】
そして、図１３の状態に基づいてステップ２の問題サイズが復元される。Ｍ2＝ｃｅｉｌ（ｃ＊Ｍ3）＋Ｌ2＝ｃｅｉｌ（２＊１）＋０＝２である。Ｐ2＝１であるので、Ｎ2＝Ｍ2＝２である。
【００４４】
次に、図１４の状態に基づいてステップ１の問題サイズが復元される。Ｍ1＝ｃｅｉｌ（ｃ＊Ｍ2）＋Ｌ1＝ｃｅｉｌ（２＊２）＋１＝５である。Ｐ1＝０であるので、Ｎ1はステップ１の作業領域のＭ1番目の領域から読み出される。従って、Ｎ1＝４である。
【００４５】
次に、図１５の状態に基づいてステップ０の問題サイズが復元される。Ｍ0＝ｃｅｉｌ（ｃ＊Ｍ1）＋Ｌ0＝ｃｅｉｌ（２＊５）＋０＝１０である。Ｐ0＝１であるので、Ｎ0＝Ｍ0＝１０である。
【００４６】
以上のような処理を実行すれば、前のステップの問題サイズの情報を特定することができる。なお、図１４及び図１５に示したように、対象のステップの前のステップのＭi及びＮiを復元し、復元したＮiを用いて対象のステップの処理が完了した段階で、対象のステップのＭi及びＮiの領域及び作業領域を解放してもよい。
【００４７】
［実施の形態２］
第１の実施の形態の方法は、ステップ（ｉ＋１）の問題サイズがステップｉの問題サイズの１／ｃ倍であるケースを対象としている。これに対して、第２の実施の形態の方法は、ステップ（ｉ＋１）の問題サイズがステップｉの問題サイズよりｃだけ小さいケースを対象とする。
【００４８】
この場合、以下のように第１の実施の形態の方法を変更すればよい。
【００４９】
まず、定義を以下のように変更する。
（１）ｃ≧１
（２）Ｍi+1＝ｆｌｏｏｒ（Ｍi−ｃ）
（３）ｈ＝ｏ（Ｎ）
（４）Ｌi＝Ｍi−ｃｅｉｌ（ｃ＋Ｍi+1）
【００５０】
また、ステップｉにおいてＭiが判明しているときにＭi-1及びＮi-1を求める計算を、以下のように変更する。
（１）Ｍi-1＝ｃｅｉｌ（ｃ＋Ｍi）＋Ｌi-1
（２）Ｐi-1＝１である場合、Ｎi-1＝Ｍi-1
（３）Ｐi-1≠１である場合、Ｎi-1はステップ（ｉ−１）の作業領域のＭi-1番目の領域に格納された値
【００５１】
以上のようにすれば、ステップ（ｉ＋１）の問題サイズがステップｉの問題サイズよりｃだけ小さいケースについても、処理を高速化し且つ記憶領域のサイズが大きくなることを抑制することができるようになる。
【００５２】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００５３】
また、上で説明したデータ構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００５４】
また、接尾辞配列の生成において実行される再帰処理を例として説明したが、別の再帰処理に対しても本実施の形態を適用することができる。例えば、再帰処理後に再帰処理前の情報を使用する場合には本実施の形態の処理を適用可能であるので、問題サイズの情報以外の情報について本実施の形態の処理と同様の処理を実行してもよい。
【００５５】
また、再帰処理以外の処理であって特定の処理を繰り返し実行する処理に対して本実施の形態を適用してもよい。
【００５６】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図１６に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５７】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００５８】
本実施の形態の第１の態様に係る格納方法は、（Ａ）各工程において特定の処理が実行される複数の工程のうち第１の工程において、第１の工程における処理対象のサイズである問題サイズが、第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、（Ｂ）判定結果を記憶領域に保存し、（Ｃ）第１の工程の次の工程である第２の工程において、記憶領域に保存された判定結果を用いて問題サイズを特定し、特定した問題サイズに基づき第２の工程の特定の処理を実行する処理を含む。
【００５９】
このようにすれば、前の工程の問題サイズの情報を保存する記憶領域が大きくなることを抑制できるようになる。これにより、特定の処理を繰り返し実行する場合において、実行中に使用される記憶領域のサイズが大きくなることを抑制する。
【００６０】
また、本格納方法は、（Ｄ）第１の工程において、上限サイズを所定の数で割った場合の剰余の情報を記憶領域に保存する処理をさらに含んでもよい。そして、第２の工程の特定の処理を実行する処理において、（ｃ１）判定結果が、問題サイズが上限サイズと一致することを示している場合、記憶領域に保存した剰余の情報を用いて問題サイズを特定してもよい。
【００６１】
判定結果のみでは問題サイズを特定できない場合にも対処できるようになる。
【００６２】
また、本格納方法は、（Ｅ）問題サイズが上限サイズと一致しない場合、第１の工程において、問題サイズと上限サイズとの差に相当する領域に、問題サイズの情報を格納する処理をさらに含んでもよい。そして、第２の工程の特定の処理を実行する処理において、（ｃ２）判定結果が、問題サイズが上限サイズと一致しないことを示している場合、問題サイズを記憶領域から読み出してもよい。
【００６３】
使用されない領域に問題サイズの情報が保存されるので、新たに使用される領域が増えてしまうことが無い。
【００６４】
また、第２の工程の特定の処理を実行する処理において、（ｃ３）第２の工程における処理対象のサイズの上限サイズに所定の数を乗じた値と剰余の情報とを用いて、問題サイズを特定してもよい。
【００６５】
本実施の形態の第２の態様に係る格納装置は、（Ｆ）各工程において特定の処理が実行される複数の工程のうち第１の工程において、第１の工程における処理対象のサイズである問題サイズが、第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、判定結果を記憶領域（例えば管理データ格納部１１３の領域）に保存する保存処理部（例えば格納処理部１０１）と、（Ｇ）第１の工程の次の工程である第２の工程において、記憶領域に保存された判定結果を用いて問題サイズを特定し、特定した問題サイズに基づき第２の工程の特定の処理を実行する実行部（例えば復元処理部１０３）とを有する。
【００６６】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００６７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００６８】
（付記１）
コンピュータに、
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、
判定結果を記憶領域に保存し、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する、
処理を実行させる格納プログラム。
【００６９】
（付記２）
前記第１の工程において、前記上限サイズを所定の数で割った場合の剰余の情報を前記記憶領域に保存する
処理を前記コンピュータにさらに実行させ、
前記第２の工程の前記特定の処理を実行する処理において、
前記判定結果が、前記問題サイズが前記上限サイズと一致することを示している場合、前記記憶領域に保存した前記剰余の情報を用いて前記問題サイズを特定する、
付記１記載の格納プログラム。
【００７０】
（付記３）
前記問題サイズが前記上限サイズと一致しない場合、前記第１の工程において、前記問題サイズと前記上限サイズとの差に相当する領域に、前記問題サイズの情報を格納する、
処理を前記コンピュータにさらに実行させ、
前記第２の工程の前記特定の処理を実行する処理において、
前記判定結果が、前記問題サイズが前記上限サイズと一致しないことを示している場合、前記問題サイズを前記記憶領域から読み出す、
付記１又は２記載の格納プログラム。
【００７１】
（付記４）
前記第２の工程の前記特定の処理を実行する処理において、
前記第２の工程における処理対象のサイズの上限サイズに前記所定の数を乗じた値と前記剰余の情報とを用いて、前記問題サイズを特定する、
付記２記載の格納プログラム。
【００７２】
（付記５）
コンピュータが、
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、
判定結果を記憶領域に保存し、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する、
処理を実行する格納方法。
【００７３】
（付記６）
各工程において特定の処理が実行される複数の工程のうち第１の工程において、前記第１の工程における処理対象のサイズである問題サイズが、前記第１の工程の前の工程の状態に基づき規定される上限サイズと一致するか判定し、判定結果を記憶領域に保存する保存処理部と、
前記第１の工程の次の工程である第２の工程において、前記記憶領域に保存された前記判定結果を用いて前記問題サイズを特定し、特定した前記問題サイズに基づき前記第２の工程の前記特定の処理を実行する実行部と、
を有する格納装置。
【符号の説明】
【００７４】
１  情報処理装置    １０１  格納処理部
１０３  復元処理部    １０５  問題処理部
１１０  入力データ格納部    １１１  作業データ格納部
１１３  管理データ格納部    １１４  出力データ格納部
【図１】
2018132899.tif 000003
【図２】
2018132899.tif 000004
【図３】
2018132899.tif 000005
【図４】
2018132899.tif 000006
【図５】
2018132899.tif 000007
【図６】
2018132899.tif 000008
【図７】
2018132899.tif 000009
【図８】
2018132899.tif 000010
【図９】
2018132899.tif 000011
【図１０】
2018132899.tif 000012
【図１１】
2018132899.tif 000013
【図１２】
2018132899.tif 000014
【図１３】
2018132899.tif 000015
【図１４】
2018132899.tif 000016
【図１５】
2018132899.tif 000017
【図１６】
2018132899.tif 000018