情報処理装置および割当方法
【課題】頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理したい。
【解決手段】設定条件保持部10は、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する。第1演算部40は、設定条件保持部10により保持される情報を参照して、同一の割当対象の割り当てが制限される被割当対象の数が複数の割当対象の数より少ない被割当対象を少なくとも一つ選択し、選択した被割当対象に対して設定条件にしたがい割当対象を割り当てる第1アルゴリズムを実行する。第2演算部50は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、設定条件にしたがい割当対象を割り当てる、第1アルゴリズムと異なる第2アルゴリズムを実行する。
【解決手段】設定条件保持部10は、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する。第1演算部40は、設定条件保持部10により保持される情報を参照して、同一の割当対象の割り当てが制限される被割当対象の数が複数の割当対象の数より少ない被割当対象を少なくとも一つ選択し、選択した被割当対象に対して設定条件にしたがい割当対象を割り当てる第1アルゴリズムを実行する。第2演算部50は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、設定条件にしたがい割当対象を割り当てる、第1アルゴリズムと異なる第2アルゴリズムを実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、いわゆる頂点彩色の問題を解くための情報処理装置および割当方法に関する。
【背景技術】
【0002】
頂点彩色とは、頂点と、頂点間を結ぶ辺で構成されるグラフにおいて、各頂点を、辺によって結ばれる頂点同士は異なる色で彩色するといった規則に基づき全ての頂点を彩色する問題である。なお、頂点の次数とは、その頂点に繋がる辺の数を言う。頂点彩色は、様々な分野に応用することができる。たとえば、リコンフィギュラブル回路を備えたプロセッサにおいて(特許文献1参照)、複数の変数を複数のRAMに割り当てる際に用いることができる。
【0003】
特許文献2は、資源割当装置を開示する。この装置は、高級言語で書かれたプログラムを機械語プログラムに翻訳するコンパイラに用いられ、プログラミング言語で記述されたプログラムの中の変数と生存区間の組である割付対象を複数個生成し、生成した割付対象に順次レジスタ、メモリ等のハードウェアである資源が有する資源要素を割り付ける。
【特許文献1】特開2005−182654号公報
【特許文献2】特開平8−314727号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
頂点彩色の問題を解くためのアルゴリズムは複数存在する。それらの中には近似アルゴリズムおよび厳密アルゴリズムが含まれる。近似アルゴリズムは高速処理が可能であるが、解への到達確率が厳密アルゴリズムより低くなってしまう。一方、厳密アルゴリズムは解への到達確率が厳密アルゴリズムより高いが、低速処理となってしまう。このように、近似アルゴリズムおよび厳密アルゴリズムはトレードオフの関係にある。なお、近似アルゴリズムおよび厳密アルゴリズムの具体例は後述する。
【0005】
本発明はこうした状況に鑑みなされたものであり、その目的は、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる情報処理装置および割当方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明のある態様の情報処理装置は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を少なくとも一つ選択し、選択した被割当対象に対して設定条件にしたがい割当対象を割り当てる第1アルゴリズムを実行する第1演算部と、複数の被割当対象のうち第1演算部により選択されていない被割当対象に対して、設定条件にしたがい割当対象を割り当てる、第1アルゴリズムと異なる第2アルゴリズムを実行する第2演算部と、を備える。
【0007】
本発明の別の態様もまた、情報処理装置である。この装置は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、既に割り当てられた、被割当対象と割当対象との対応関係を保持する対応関係保持部と、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象のうち、同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象から順に選択する選択部と、選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部と、選択部により選択された被割当対象に対して、対応関係保持部に保持される対応関係を参照して、順番保持部に保持される順番と逆の順番で割当対象を割り当てていく割当部と、を備える。
【0008】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0009】
本発明によれば、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる。
【発明を実施するための最良の形態】
【0010】
図1は、本発明の実施の形態に係る情報処理装置100の構成を示すブロック図である。
情報処理装置100は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる。ここで、被割当対象および割当対象の一例としてつぎのものが挙げられる。すなわち、前者が所定のプログラムなどに規定される変数、後者がその変数を格納するレジズタまたはメモリである。
【0011】
情報処理装置100は、設定条件保持部10、対応関係保持部20、演算部30および制御部60を備える。演算部30は、第1演算部40および第2演算部50を有する。第1演算部40は、選択部41、順番保持部42、第1割当部43、第1登録部44および判定部45を含む。第2演算部50は、第2割当部53および第2登録部54を含む。
【0012】
これらの構成は、ハードウェア的には、任意のコンピュータのCPU、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
【0013】
設定条件保持部10は、上記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する。ここで、「同一の割当対象の割り当てが制限される被割当対象」とは「同一の割当対象の割り当てが禁止される被割当対象」であってもよい。それ以外の被割当対象との関係では同一の割当対象を割り当てることが禁止されない。上記設定条件はいわゆる頂点彩色の問題を解く際の前提として、ユーザ操作などに起因してあらかじめ設定条件保持部10に設定される。
【0014】
対応関係保持部20は、第1演算部40または第2演算部50により既に割り当てられた、被割当対象と割当対象との対応関係を保持する。割り当てが開始される段階では割り当てが完了した被割当対象は存在しないが、割り当てが開始されると割り当てが完了した被割当対象の数が順次増えていく。最終的にはすべての被割当対象に割当対象が割り当てられることになる。
【0015】
第1演算部40は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを実行する。なお、前者の数が後者の数より少ない被割当対象のすべてを必ずしも選択する必要はない。第2演算部50は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、上記設定条件にしたがい割当対象を割り当てる第2アルゴリズムを実行する。
【0016】
ここで、第2アルゴリズムが厳密アルゴリズムであってもよい。なお、第1アルゴリズムおよび第2アルゴリズムは、両方とも近似アルゴリズムであってもよい。その場合、解への到達確率が同程度の、異なる近似アルゴリズムであってもよい。なお、第1アルゴリズムおよび第2アルゴリズムはコンピュータプログラムで実現されてもよい。
【0017】
本実施の形態おいて、近似アルゴリズムとは、複数の被割当対象のすべてに対して上記設定条件にしたがう割当対象の割り当てが客観的に可能な場合でも、その割り当てに必ずしも到達しないアルゴリズムである。一方、厳密アルゴリズムとは、複数の被割当対象のすべてに対して上記設定条件にしたがう割当対象の割り当てが客観的に可能な場合、必ず割り当てできるアルゴリズムである。
【0018】
以下、第1演算部40の構成を具体的に説明する。
選択部41は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を選択する。前者の数が後者の数より少ない被割当対象をすべて選択してもよい。選択部41は、この条件を満たす被割当対象を一括して選択してもよいし、一つずつ順に選択してもよい。順に選択する場合、その順番は任意であってよいし、所定の規則にしたがった選択でもよい。所定の規則にしたがった選択としてつぎのような選択手法がある。選択部41は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除する。その際、選択部41は、各選択時点において同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象のうち、同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象を選択してもよい。
【0019】
順番保持部42は、選択部41により選択された被割当対象とその順番とを対応付けて保持する。選択部41が前記所定の規則にしたがった選択を行う場合、必須の構成要素である。
【0020】
第1割当部43は、選択部41により選択された被割当対象に対して、対応関係保持部20に保持される対応関係を参照して、上記設定条件にしたがい上記割当対象を順次割り当てる。ここで、選択部41が前記所定の規則にしたがった選択を行った場合、第1割当部43は、順番保持部42に保持される順番と逆の順番で上記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させる。
【0021】
第1登録部44は、第1割当部43による割り当て結果を対応関係保持部20に登録する。具体的には、どの被割当対象にどの割当対象が割り当てられたかを特定するための情報を対応関係保持部20に登録する。
判定部45は、複数の被割当対象のすべてが選択部41により選択できたか否かを判定し、その判定結果を制御部60に供給する。
【0022】
つぎに、第2演算部50の構成を具体的に説明する。
第2割当部53は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、対応関係保持部20に保持される対応関係を参照して、上記割当対象を順次割り当てる。第1登録部44は、第1割当部による割り当て結果を対応関係保持部20に登録する。
【0023】
制御部60は、第1演算部40および第2演算部50の演算処理を制御する。具体的には、判定部45による判定の結果、複数の被割当対象のすべてが選択部41により選択できなかったとき、先に、その選択できなかった被割当対象に対して割当対象を割り当てるよう第2割当部を制御し、その後に、選択部41により選択できた被割当対象に対して割当対象を割り当てるよう第1割当部を制御する。一方、判定部45による判定の結果、複数の被割当対象のすべてが選択部41により選択できたとき、すべての被割当対象に対して割当対象を割り当てるよう第1割当部を制御する。この場合、第2演算部50の処理は必要ない。
【0024】
図2は、近似アルゴリズムの一例を説明するための図である。この近似アルゴリズムは以下の手順にしたがう。
手順1.与えられたグラフGn中で次数(図では辺で表される)が彩色する色の数より少ない頂点を一つ選び、その頂点をxとし、頂点xと頂点xから出ている辺を取り除き、グラフG(n+1)を得る。
手順2.グラフG(n+1)をグラフGnとおいて上記作業を繰り返すと、(1)空なグラフが得られるか、(2)すべての頂点の次数が彩色する色の数以上であるようなグラフが残る。(1)の場合、後述する手順3を実行し、(2)の場合、本手法では彩色できない。
手順3.つぎのように手順1の繰り返しを逆にたどる。G’nの彩色結果に、頂点xと頂点xから出ていた辺を加え、頂点xに「頂点xから辺で結ばれている頂点と異なる色」を塗って、G’(n−1)の彩色を得ることを繰り返す。
【0025】
図2の例では、四つの頂点(頂点1〜頂点4)を三色(赤、緑、青)で塗り分けるものである。以下、図において緑を縦線、赤を横線、青を斜線で示す。図2の上段では、上記手順1を繰り返してグラフG4を得ている。すなわち、頂点1→頂点2→頂点3→頂点4の順番で、頂点とその頂点から出ている辺をすべて取り除いている。図2の下段では、上記手順3を行って彩色している。
【0026】
具体的には、まず頂点4を赤に塗る。つぎに頂点3とそれと頂点4を結ぶ辺を加え、頂点3を緑で塗る。つぎに頂点2と、それと頂点3、4をそれぞれ結ぶ辺を加え、頂点2を青で塗る。最後に、頂点1と、それと頂点2を結ぶ辺を加え、頂点1を赤で塗る。
【0027】
このように、この近似アルゴリズムは高速に解が求められるといった特徴がある。なぜなら、次数が彩色する色の数より少ない頂点はどのような順番で彩色しても確実に彩色可能である頂点であるためである。しかしながら、彩色可能なグラフを彩色できない場合があるといった問題がある。
【0028】
図3は、上記近似アルゴリズムで彩色できないグラフの一例を示す図である。
図3に示すグラフは五つの頂点を持ち、それらを二色で彩色可能なものである。しかしながら、上記近似アルゴリズムはそれらを二色で彩色することができない。
【0029】
図4は、設定条件保持部10、対応関係保持部20および順番保持部42を一つのテーブル70で構成した例を示す図である。
このテーブル70は図2に示した割り当て処理例に使用したデータに則している。テーブル70は、項目として被割当対象、設定条件、順番および割当結果を持つ。被割当対象は頂点1〜4である。設定条件は各頂点1〜4ごとに、辺で結ばれた頂点を保持する。順番は除去された順番である。彩色する際はその逆の順番で彩色される。割当結果は各頂点1〜4ごとに、割り当てられた色を保持する。第1演算部40は、テーブル70を参照して被割当対象を選択することができる。また、被割当対象に割当対象を割り当てることができる。なお、第1演算部40は被割当対象を選択する際、このテーブル70ではなく他のテーブルを参照して選択してもよい。たとえば、項目として被割当対象、その被割当対象と接続されている他の被割当対象の数、を持つテーブルを参照して被割当対象を選択してもよい。
【0030】
つぎに、厳密アルゴリズムの一例を説明する。この厳密アルゴリズムは彩色可能なグラフは必ず彩色できるアルゴリズムである。
手順1.彩色されていない頂点の中で、隣接頂点に割り当てられた異なる色の数が最大である頂点を選ぶ。そのような頂点が複数ある場合には、その中で色が割り当てられていない頂点集合により構成された誘導部分グラフ中、次数が最大のものを選ぶ。
手順2.選んだ頂点に彩色可能な色を一つ選び、彩色する。
手順3.手順1と手順2を繰り返す。手順2で割り当てる色がなくなった場合には、一つ前の頂点に戻り、別の色で彩色して再度手順1と手順2を繰り返す。
【0031】
つぎに、本実施の形態に係る情報処理装置100の動作について説明する。
図5は、実施の形態に係る情報処理装置100の動作例1を説明するためのフローチャートである。
第1演算部40は上述した近似アルゴリズムを実行する。選択部41はグラフの中において次数が彩色数より小さい頂点が存在するか否か判断する(S10)。存在する場合(S10のY)、選択部41はその一つ以上の頂点の中から任意の頂点を選択する(S11)。そして、選択した頂点とその頂点に接続する辺をグラフから削除する(S12)。その後、ステップS10に遷移する。
【0032】
判定部45はステップS10にて次数が彩色数より小さい頂点が存在しない場合(S10のN)、グラフが空であるか否か判断する(S13)。その判断結果を制御部60に通知する。空でない場合(S13のN)、第2演算部50は制御部60の指示にしたがい、当該近似アルゴリズムと異なる別のアルゴリズムを用いて、グラフ内の残りの頂点を彩色する(S14)。そのアルゴリズムとして、上述した厳密アルゴリズムを用いることができる。ステップS13にてグラフが空である場合(S13のY)、ステップS14をスキップする。
【0033】
つぎに、制御部60はグラフが初期状態であるか否か判断する(S15)。初期状態である場合(S15のY)、処理を終了する。ステップS14にて厳密アルゴリズムによりすべての頂点が彩色された場合、および後述するステップS16〜S18の処理が繰り返されてすべての頂点が彩色された場合などが該当する。
【0034】
ステップS15にてグラフが初期状態でない場合(S15のN)、第1割当部43はステップS12にて削除した順番と逆順に頂点を選択し(S16)、その頂点とその頂点に接続していた辺をグラフ内に戻す(S17)。その際、その頂点を、その頂点と辺で繋がる頂点と異なる色で彩色する(S18)。その後、ステップS15に遷移する。
【0035】
図6は、実施の形態に係る情報処理装置100の動作例2を説明するためのフローチャートである。動作例2に係る図6のフローチャートは、動作例1に係る図5のフローチャートと基本部分は同じである。以下、相違点および追加点について説明する。
図5のステップS11の代わりに図6ではつぎの処理を行う。すなわち、選択部41はグラフの中において次数が彩色数より小さい頂点のうち、最小の頂点を選択する(S11’)。
【0036】
また、ステップS18にて彩色する際の色を、色別の頂点の数を斟酌して選択してもよい。たとえば、色別の頂点数に上限がある場合、各色の残り頂点数が多い色を優先的に選択してもよい。または、色別の頂点数を平均化したい場合、色別の頂点数が少ない色を優先的に選択してもよい。
【0037】
つぎに、実施の形態に係る情報処理装置100の適用例について説明する。
まず、適用例1として複数のRAMに複数の変数を割り当てるRAM割り当てについて説明する。適用例1では上記割当対象がRAM、上記被割当対象が変数である。
【0038】
図7は、実施の形態に係る情報処理装置100の適用例1に係るプロセッサシステムを示す図である。
このプロセッサシステムは六個の演算器1〜6と四個のRAM1〜4を備える。各演算器1〜6は演算結果を任意のRAM1〜4に書き込むことができる。また、任意のRAM1〜4のデータを参照することもできる。このプロセッサシステムにおいて、特定のRAMに対して同時に複数の演算器から値を書き込むことはできない。また、特定のRAMから異なるデータを同時に複数の演算器に供給することもできない。
【0039】
図8は、図7に示した適用例1に係るプロセッサシステムで利用される変数の一例を示す図である。より具体的には、図8は各タイミングにおいて各演算器1〜6が使用する変数を示す表である。
タイミング1では、変数aと変数bが同時に利用されるため、それらを一つのRAMに格納することはできず、異なる二つのRAMに割り当てられる。また、変数bと変数cは同時に利用されることがないため、同じRAMに割り当ててもよい。
【0040】
図9は、図8に示した表の変数a〜eの関係をグラフ化した図である。
変数a〜eを頂点とし、同じRAMに割り当てられることができない変数同士を辺で結んだものである。このようにして生成されたグラフに対して、頂点彩色を行う。この場合、頂点に塗られる色がそれぞれのRAMに対応し、RAMの数が彩色数となる。
【0041】
同じ色で塗られた頂点は同じRAMに格納される。単に塗り分けるだけでは特定のRAMにだけ変数が集まってしまい、そのRAMのサイズを超えてしまう可能性が高い。これを回避するため、複数のRAMに割り当てられる変数を、残りのRAM容量を考慮して割り当てるとよい。すなわち、残りのRAM容量が多いRAMに割り当てるとよい。これにより、RAM容量に収められる可能性を高めることができる。なお、割り当てることが可能なRAMの候補数が多いほど、よりRAM容量に収まる可能性が高くなる。
【0042】
つぎに、適用例2として複数のレジスタに複数の変数を割り当てるレジスタ割り当てについて説明する。適用例2では上記割当対象がレジスタ、上記被割当対象が変数である。適用例2は適用例1と異なり、各レジスタは一単位のデータしか格納することがきない。
【0043】
図10は、実施の形態に係る情報処理装置100の適用例2に係る、複数の変数a〜eの生存区間を示す図である。
ある変数に値が設定されその値が最後に読み出されるまで、その変数は一つのレジスタを占有する。この区間を生存区間と呼ぶ。図10において、各線の開始位置がその線に対応する変数に値が設定される開始時間を示し、各線の終了位置が最後に読み出される終了時間を示す。この図では、変数aと変数bは生存区間が重なっているが、変数aと変数cは生存区間が重なっていない。二つの変数の生存区間が重ならない場合、同一のレジスタに割り当てることができるが、重なる場合、異なるレジスタに割り当てる必要がある。
【0044】
図11は、図10に示した変数a〜eの生存区間の関係をグラフ化した図である。
変数a〜eを頂点とし、生存区間が重なる変数同士を辺で結んだものである。このようにして生成されたグラフに対して、頂点彩色を行う。この場合、頂点に塗られる色がそれぞれのレジスタに対応し、レジスタの数が彩色数となる。
【0045】
つぎに、適用例3として複数の町に複数の色を割り当てる地図彩色について説明する。適用例3では上記割当対象が色、上記被割当対象が町である。すなわち、地図を見やすくするため、隣同士の町を異なる色で塗り分ける。
【0046】
図12は、実施の形態に係る情報処理装置100の適用例3に係る、複数の町a〜iを含む地図を示す図である。この地図上において隣接する町を異なる色で塗る。
図13は、図12に示した複数の町a〜iの関係をグラフ化した図である。町a〜iを頂点とし、隣接する町を辺で結んだものである。
【0047】
以上説明したように実施の形態によれば、近似アルゴリズムで解が求まらなかった問題に対して、厳密アルゴリズムを組み合わせることにより、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる。厳密アルゴリズムのみを適用する場合に比べ、探索範囲を狭めて厳密アルゴリズムを適用することができるため、より高速に解を求めることができる。
【0048】
また、次数がより少ない頂点を先に取り除くことにより、頂点を戻して彩色する際に、より後の段階で彩色の自由度を高めることができる。このような、次数がより少ない頂点を先に取り除く手法をRAM割り当てに適用した場合、各RAMのサイズに応じた変数の割り当てを容易にすることができる。取り除く頂点の順序を考慮しないと、後の彩色で特定の色の頂点だけが多くなってしまうケースが発生し得る。これは色別の数が重要となる分野でとくに問題となる。上述したRAM割り当てでは、色別の数がRAMのサイズによって制限されるため、特定の色の頂点が多いとRAMに入りきらないという問題が起きる。
【0049】
たとえば、RAMのサイズを五とし、RAM1にもRAM2にも割り当てることができる五つの変数を先に彩色し、RAM1にしか割り当てることがきない五つの変数を後で彩色した場合を考える。先の五つの変数をすべてRAM1に割り当ててしまうと、残りの五つの変数を割り当てられなくなってしまう。上述した方式では、RAM1とRAM2に割り当てられる変数が後に彩色されるため、最初にRAM1にのみ割り当てる変数を割り当てた後、残りの五つの変数を残ったRAM2に割り当てることができる。
【0050】
以上、本発明をいくつかの実施形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0051】
図5、6に示したフローチャートのステップS10では、彩色数より少ない次数が存在する間、ステップS13には遷移しないが、所定数の頂点を選択したらステップS13に遷移するように処理してもよい。
【図面の簡単な説明】
【0052】
【図1】本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図2】近似アルゴリズムの一例を説明するための図である。
【図3】近似アルゴリズムで彩色できないグラフの一例を示す図である。
【図4】設定条件保持部、対応関係保持部および順番保持部を一つのテーブルで構成した例を示す図である。
【図5】実施の形態に係る情報処理装置の動作例1を説明するためのフローチャートである。
【図6】実施の形態に係る情報処理装置の動作例2を説明するためのフローチャートである。
【図7】実施の形態に係る情報処理装置の適用例1に係るプロセッサシステムを示す図である。
【図8】図7に示した適用例1に係るプロセッサシステムで利用される変数の一例を示す図である。
【図9】図8に示した表の変数a〜eの関係をグラフ化した図である。
【図10】実施の形態に係る情報処理装置の適用例2に係る、複数の変数a〜eの生存区間を示す図である。
【図11】図10に示した変数a〜eの生存区間の関係をグラフ化した図である。
【図12】実施の形態に係る情報処理装置の適用例3に係る、複数の町a〜iを含む地図を示す図である。
【図13】図12に示した複数の町a〜iの関係をグラフ化した図である。
【符号の説明】
【0053】
10 設定条件保持部、 20 対応関係保持部、 30 演算部、 40 第1演算部、 41 選択部、 42 順番保持部、 43 第1割当部、 44 第1登録部、 45 判定部、 50 第2演算部、 53 第2割当部、 54 第2登録部、 60 制御部、 70 テーブル、 100 情報処理装置。
【技術分野】
【0001】
本発明は、いわゆる頂点彩色の問題を解くための情報処理装置および割当方法に関する。
【背景技術】
【0002】
頂点彩色とは、頂点と、頂点間を結ぶ辺で構成されるグラフにおいて、各頂点を、辺によって結ばれる頂点同士は異なる色で彩色するといった規則に基づき全ての頂点を彩色する問題である。なお、頂点の次数とは、その頂点に繋がる辺の数を言う。頂点彩色は、様々な分野に応用することができる。たとえば、リコンフィギュラブル回路を備えたプロセッサにおいて(特許文献1参照)、複数の変数を複数のRAMに割り当てる際に用いることができる。
【0003】
特許文献2は、資源割当装置を開示する。この装置は、高級言語で書かれたプログラムを機械語プログラムに翻訳するコンパイラに用いられ、プログラミング言語で記述されたプログラムの中の変数と生存区間の組である割付対象を複数個生成し、生成した割付対象に順次レジスタ、メモリ等のハードウェアである資源が有する資源要素を割り付ける。
【特許文献1】特開2005−182654号公報
【特許文献2】特開平8−314727号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
頂点彩色の問題を解くためのアルゴリズムは複数存在する。それらの中には近似アルゴリズムおよび厳密アルゴリズムが含まれる。近似アルゴリズムは高速処理が可能であるが、解への到達確率が厳密アルゴリズムより低くなってしまう。一方、厳密アルゴリズムは解への到達確率が厳密アルゴリズムより高いが、低速処理となってしまう。このように、近似アルゴリズムおよび厳密アルゴリズムはトレードオフの関係にある。なお、近似アルゴリズムおよび厳密アルゴリズムの具体例は後述する。
【0005】
本発明はこうした状況に鑑みなされたものであり、その目的は、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる情報処理装置および割当方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明のある態様の情報処理装置は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を少なくとも一つ選択し、選択した被割当対象に対して設定条件にしたがい割当対象を割り当てる第1アルゴリズムを実行する第1演算部と、複数の被割当対象のうち第1演算部により選択されていない被割当対象に対して、設定条件にしたがい割当対象を割り当てる、第1アルゴリズムと異なる第2アルゴリズムを実行する第2演算部と、を備える。
【0007】
本発明の別の態様もまた、情報処理装置である。この装置は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、既に割り当てられた、被割当対象と割当対象との対応関係を保持する対応関係保持部と、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象のうち、同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象から順に選択する選択部と、選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部と、選択部により選択された被割当対象に対して、対応関係保持部に保持される対応関係を参照して、順番保持部に保持される順番と逆の順番で割当対象を割り当てていく割当部と、を備える。
【0008】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0009】
本発明によれば、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる。
【発明を実施するための最良の形態】
【0010】
図1は、本発明の実施の形態に係る情報処理装置100の構成を示すブロック図である。
情報処理装置100は、複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる。ここで、被割当対象および割当対象の一例としてつぎのものが挙げられる。すなわち、前者が所定のプログラムなどに規定される変数、後者がその変数を格納するレジズタまたはメモリである。
【0011】
情報処理装置100は、設定条件保持部10、対応関係保持部20、演算部30および制御部60を備える。演算部30は、第1演算部40および第2演算部50を有する。第1演算部40は、選択部41、順番保持部42、第1割当部43、第1登録部44および判定部45を含む。第2演算部50は、第2割当部53および第2登録部54を含む。
【0012】
これらの構成は、ハードウェア的には、任意のコンピュータのCPU、メモリ、その他のLSIで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
【0013】
設定条件保持部10は、上記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する。ここで、「同一の割当対象の割り当てが制限される被割当対象」とは「同一の割当対象の割り当てが禁止される被割当対象」であってもよい。それ以外の被割当対象との関係では同一の割当対象を割り当てることが禁止されない。上記設定条件はいわゆる頂点彩色の問題を解く際の前提として、ユーザ操作などに起因してあらかじめ設定条件保持部10に設定される。
【0014】
対応関係保持部20は、第1演算部40または第2演算部50により既に割り当てられた、被割当対象と割当対象との対応関係を保持する。割り当てが開始される段階では割り当てが完了した被割当対象は存在しないが、割り当てが開始されると割り当てが完了した被割当対象の数が順次増えていく。最終的にはすべての被割当対象に割当対象が割り当てられることになる。
【0015】
第1演算部40は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを実行する。なお、前者の数が後者の数より少ない被割当対象のすべてを必ずしも選択する必要はない。第2演算部50は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、上記設定条件にしたがい割当対象を割り当てる第2アルゴリズムを実行する。
【0016】
ここで、第2アルゴリズムが厳密アルゴリズムであってもよい。なお、第1アルゴリズムおよび第2アルゴリズムは、両方とも近似アルゴリズムであってもよい。その場合、解への到達確率が同程度の、異なる近似アルゴリズムであってもよい。なお、第1アルゴリズムおよび第2アルゴリズムはコンピュータプログラムで実現されてもよい。
【0017】
本実施の形態おいて、近似アルゴリズムとは、複数の被割当対象のすべてに対して上記設定条件にしたがう割当対象の割り当てが客観的に可能な場合でも、その割り当てに必ずしも到達しないアルゴリズムである。一方、厳密アルゴリズムとは、複数の被割当対象のすべてに対して上記設定条件にしたがう割当対象の割り当てが客観的に可能な場合、必ず割り当てできるアルゴリズムである。
【0018】
以下、第1演算部40の構成を具体的に説明する。
選択部41は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を選択する。前者の数が後者の数より少ない被割当対象をすべて選択してもよい。選択部41は、この条件を満たす被割当対象を一括して選択してもよいし、一つずつ順に選択してもよい。順に選択する場合、その順番は任意であってよいし、所定の規則にしたがった選択でもよい。所定の規則にしたがった選択としてつぎのような選択手法がある。選択部41は、同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除する。その際、選択部41は、各選択時点において同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な複数の割当対象の数より少ない被割当対象のうち、同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象を選択してもよい。
【0019】
順番保持部42は、選択部41により選択された被割当対象とその順番とを対応付けて保持する。選択部41が前記所定の規則にしたがった選択を行う場合、必須の構成要素である。
【0020】
第1割当部43は、選択部41により選択された被割当対象に対して、対応関係保持部20に保持される対応関係を参照して、上記設定条件にしたがい上記割当対象を順次割り当てる。ここで、選択部41が前記所定の規則にしたがった選択を行った場合、第1割当部43は、順番保持部42に保持される順番と逆の順番で上記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させる。
【0021】
第1登録部44は、第1割当部43による割り当て結果を対応関係保持部20に登録する。具体的には、どの被割当対象にどの割当対象が割り当てられたかを特定するための情報を対応関係保持部20に登録する。
判定部45は、複数の被割当対象のすべてが選択部41により選択できたか否かを判定し、その判定結果を制御部60に供給する。
【0022】
つぎに、第2演算部50の構成を具体的に説明する。
第2割当部53は、複数の被割当対象のうち第1演算部40により選択されていない被割当対象に対して、対応関係保持部20に保持される対応関係を参照して、上記割当対象を順次割り当てる。第1登録部44は、第1割当部による割り当て結果を対応関係保持部20に登録する。
【0023】
制御部60は、第1演算部40および第2演算部50の演算処理を制御する。具体的には、判定部45による判定の結果、複数の被割当対象のすべてが選択部41により選択できなかったとき、先に、その選択できなかった被割当対象に対して割当対象を割り当てるよう第2割当部を制御し、その後に、選択部41により選択できた被割当対象に対して割当対象を割り当てるよう第1割当部を制御する。一方、判定部45による判定の結果、複数の被割当対象のすべてが選択部41により選択できたとき、すべての被割当対象に対して割当対象を割り当てるよう第1割当部を制御する。この場合、第2演算部50の処理は必要ない。
【0024】
図2は、近似アルゴリズムの一例を説明するための図である。この近似アルゴリズムは以下の手順にしたがう。
手順1.与えられたグラフGn中で次数(図では辺で表される)が彩色する色の数より少ない頂点を一つ選び、その頂点をxとし、頂点xと頂点xから出ている辺を取り除き、グラフG(n+1)を得る。
手順2.グラフG(n+1)をグラフGnとおいて上記作業を繰り返すと、(1)空なグラフが得られるか、(2)すべての頂点の次数が彩色する色の数以上であるようなグラフが残る。(1)の場合、後述する手順3を実行し、(2)の場合、本手法では彩色できない。
手順3.つぎのように手順1の繰り返しを逆にたどる。G’nの彩色結果に、頂点xと頂点xから出ていた辺を加え、頂点xに「頂点xから辺で結ばれている頂点と異なる色」を塗って、G’(n−1)の彩色を得ることを繰り返す。
【0025】
図2の例では、四つの頂点(頂点1〜頂点4)を三色(赤、緑、青)で塗り分けるものである。以下、図において緑を縦線、赤を横線、青を斜線で示す。図2の上段では、上記手順1を繰り返してグラフG4を得ている。すなわち、頂点1→頂点2→頂点3→頂点4の順番で、頂点とその頂点から出ている辺をすべて取り除いている。図2の下段では、上記手順3を行って彩色している。
【0026】
具体的には、まず頂点4を赤に塗る。つぎに頂点3とそれと頂点4を結ぶ辺を加え、頂点3を緑で塗る。つぎに頂点2と、それと頂点3、4をそれぞれ結ぶ辺を加え、頂点2を青で塗る。最後に、頂点1と、それと頂点2を結ぶ辺を加え、頂点1を赤で塗る。
【0027】
このように、この近似アルゴリズムは高速に解が求められるといった特徴がある。なぜなら、次数が彩色する色の数より少ない頂点はどのような順番で彩色しても確実に彩色可能である頂点であるためである。しかしながら、彩色可能なグラフを彩色できない場合があるといった問題がある。
【0028】
図3は、上記近似アルゴリズムで彩色できないグラフの一例を示す図である。
図3に示すグラフは五つの頂点を持ち、それらを二色で彩色可能なものである。しかしながら、上記近似アルゴリズムはそれらを二色で彩色することができない。
【0029】
図4は、設定条件保持部10、対応関係保持部20および順番保持部42を一つのテーブル70で構成した例を示す図である。
このテーブル70は図2に示した割り当て処理例に使用したデータに則している。テーブル70は、項目として被割当対象、設定条件、順番および割当結果を持つ。被割当対象は頂点1〜4である。設定条件は各頂点1〜4ごとに、辺で結ばれた頂点を保持する。順番は除去された順番である。彩色する際はその逆の順番で彩色される。割当結果は各頂点1〜4ごとに、割り当てられた色を保持する。第1演算部40は、テーブル70を参照して被割当対象を選択することができる。また、被割当対象に割当対象を割り当てることができる。なお、第1演算部40は被割当対象を選択する際、このテーブル70ではなく他のテーブルを参照して選択してもよい。たとえば、項目として被割当対象、その被割当対象と接続されている他の被割当対象の数、を持つテーブルを参照して被割当対象を選択してもよい。
【0030】
つぎに、厳密アルゴリズムの一例を説明する。この厳密アルゴリズムは彩色可能なグラフは必ず彩色できるアルゴリズムである。
手順1.彩色されていない頂点の中で、隣接頂点に割り当てられた異なる色の数が最大である頂点を選ぶ。そのような頂点が複数ある場合には、その中で色が割り当てられていない頂点集合により構成された誘導部分グラフ中、次数が最大のものを選ぶ。
手順2.選んだ頂点に彩色可能な色を一つ選び、彩色する。
手順3.手順1と手順2を繰り返す。手順2で割り当てる色がなくなった場合には、一つ前の頂点に戻り、別の色で彩色して再度手順1と手順2を繰り返す。
【0031】
つぎに、本実施の形態に係る情報処理装置100の動作について説明する。
図5は、実施の形態に係る情報処理装置100の動作例1を説明するためのフローチャートである。
第1演算部40は上述した近似アルゴリズムを実行する。選択部41はグラフの中において次数が彩色数より小さい頂点が存在するか否か判断する(S10)。存在する場合(S10のY)、選択部41はその一つ以上の頂点の中から任意の頂点を選択する(S11)。そして、選択した頂点とその頂点に接続する辺をグラフから削除する(S12)。その後、ステップS10に遷移する。
【0032】
判定部45はステップS10にて次数が彩色数より小さい頂点が存在しない場合(S10のN)、グラフが空であるか否か判断する(S13)。その判断結果を制御部60に通知する。空でない場合(S13のN)、第2演算部50は制御部60の指示にしたがい、当該近似アルゴリズムと異なる別のアルゴリズムを用いて、グラフ内の残りの頂点を彩色する(S14)。そのアルゴリズムとして、上述した厳密アルゴリズムを用いることができる。ステップS13にてグラフが空である場合(S13のY)、ステップS14をスキップする。
【0033】
つぎに、制御部60はグラフが初期状態であるか否か判断する(S15)。初期状態である場合(S15のY)、処理を終了する。ステップS14にて厳密アルゴリズムによりすべての頂点が彩色された場合、および後述するステップS16〜S18の処理が繰り返されてすべての頂点が彩色された場合などが該当する。
【0034】
ステップS15にてグラフが初期状態でない場合(S15のN)、第1割当部43はステップS12にて削除した順番と逆順に頂点を選択し(S16)、その頂点とその頂点に接続していた辺をグラフ内に戻す(S17)。その際、その頂点を、その頂点と辺で繋がる頂点と異なる色で彩色する(S18)。その後、ステップS15に遷移する。
【0035】
図6は、実施の形態に係る情報処理装置100の動作例2を説明するためのフローチャートである。動作例2に係る図6のフローチャートは、動作例1に係る図5のフローチャートと基本部分は同じである。以下、相違点および追加点について説明する。
図5のステップS11の代わりに図6ではつぎの処理を行う。すなわち、選択部41はグラフの中において次数が彩色数より小さい頂点のうち、最小の頂点を選択する(S11’)。
【0036】
また、ステップS18にて彩色する際の色を、色別の頂点の数を斟酌して選択してもよい。たとえば、色別の頂点数に上限がある場合、各色の残り頂点数が多い色を優先的に選択してもよい。または、色別の頂点数を平均化したい場合、色別の頂点数が少ない色を優先的に選択してもよい。
【0037】
つぎに、実施の形態に係る情報処理装置100の適用例について説明する。
まず、適用例1として複数のRAMに複数の変数を割り当てるRAM割り当てについて説明する。適用例1では上記割当対象がRAM、上記被割当対象が変数である。
【0038】
図7は、実施の形態に係る情報処理装置100の適用例1に係るプロセッサシステムを示す図である。
このプロセッサシステムは六個の演算器1〜6と四個のRAM1〜4を備える。各演算器1〜6は演算結果を任意のRAM1〜4に書き込むことができる。また、任意のRAM1〜4のデータを参照することもできる。このプロセッサシステムにおいて、特定のRAMに対して同時に複数の演算器から値を書き込むことはできない。また、特定のRAMから異なるデータを同時に複数の演算器に供給することもできない。
【0039】
図8は、図7に示した適用例1に係るプロセッサシステムで利用される変数の一例を示す図である。より具体的には、図8は各タイミングにおいて各演算器1〜6が使用する変数を示す表である。
タイミング1では、変数aと変数bが同時に利用されるため、それらを一つのRAMに格納することはできず、異なる二つのRAMに割り当てられる。また、変数bと変数cは同時に利用されることがないため、同じRAMに割り当ててもよい。
【0040】
図9は、図8に示した表の変数a〜eの関係をグラフ化した図である。
変数a〜eを頂点とし、同じRAMに割り当てられることができない変数同士を辺で結んだものである。このようにして生成されたグラフに対して、頂点彩色を行う。この場合、頂点に塗られる色がそれぞれのRAMに対応し、RAMの数が彩色数となる。
【0041】
同じ色で塗られた頂点は同じRAMに格納される。単に塗り分けるだけでは特定のRAMにだけ変数が集まってしまい、そのRAMのサイズを超えてしまう可能性が高い。これを回避するため、複数のRAMに割り当てられる変数を、残りのRAM容量を考慮して割り当てるとよい。すなわち、残りのRAM容量が多いRAMに割り当てるとよい。これにより、RAM容量に収められる可能性を高めることができる。なお、割り当てることが可能なRAMの候補数が多いほど、よりRAM容量に収まる可能性が高くなる。
【0042】
つぎに、適用例2として複数のレジスタに複数の変数を割り当てるレジスタ割り当てについて説明する。適用例2では上記割当対象がレジスタ、上記被割当対象が変数である。適用例2は適用例1と異なり、各レジスタは一単位のデータしか格納することがきない。
【0043】
図10は、実施の形態に係る情報処理装置100の適用例2に係る、複数の変数a〜eの生存区間を示す図である。
ある変数に値が設定されその値が最後に読み出されるまで、その変数は一つのレジスタを占有する。この区間を生存区間と呼ぶ。図10において、各線の開始位置がその線に対応する変数に値が設定される開始時間を示し、各線の終了位置が最後に読み出される終了時間を示す。この図では、変数aと変数bは生存区間が重なっているが、変数aと変数cは生存区間が重なっていない。二つの変数の生存区間が重ならない場合、同一のレジスタに割り当てることができるが、重なる場合、異なるレジスタに割り当てる必要がある。
【0044】
図11は、図10に示した変数a〜eの生存区間の関係をグラフ化した図である。
変数a〜eを頂点とし、生存区間が重なる変数同士を辺で結んだものである。このようにして生成されたグラフに対して、頂点彩色を行う。この場合、頂点に塗られる色がそれぞれのレジスタに対応し、レジスタの数が彩色数となる。
【0045】
つぎに、適用例3として複数の町に複数の色を割り当てる地図彩色について説明する。適用例3では上記割当対象が色、上記被割当対象が町である。すなわち、地図を見やすくするため、隣同士の町を異なる色で塗り分ける。
【0046】
図12は、実施の形態に係る情報処理装置100の適用例3に係る、複数の町a〜iを含む地図を示す図である。この地図上において隣接する町を異なる色で塗る。
図13は、図12に示した複数の町a〜iの関係をグラフ化した図である。町a〜iを頂点とし、隣接する町を辺で結んだものである。
【0047】
以上説明したように実施の形態によれば、近似アルゴリズムで解が求まらなかった問題に対して、厳密アルゴリズムを組み合わせることにより、頂点彩色の問題を、解への到達確率を高く維持しつつ高速処理することができる。厳密アルゴリズムのみを適用する場合に比べ、探索範囲を狭めて厳密アルゴリズムを適用することができるため、より高速に解を求めることができる。
【0048】
また、次数がより少ない頂点を先に取り除くことにより、頂点を戻して彩色する際に、より後の段階で彩色の自由度を高めることができる。このような、次数がより少ない頂点を先に取り除く手法をRAM割り当てに適用した場合、各RAMのサイズに応じた変数の割り当てを容易にすることができる。取り除く頂点の順序を考慮しないと、後の彩色で特定の色の頂点だけが多くなってしまうケースが発生し得る。これは色別の数が重要となる分野でとくに問題となる。上述したRAM割り当てでは、色別の数がRAMのサイズによって制限されるため、特定の色の頂点が多いとRAMに入りきらないという問題が起きる。
【0049】
たとえば、RAMのサイズを五とし、RAM1にもRAM2にも割り当てることができる五つの変数を先に彩色し、RAM1にしか割り当てることがきない五つの変数を後で彩色した場合を考える。先の五つの変数をすべてRAM1に割り当ててしまうと、残りの五つの変数を割り当てられなくなってしまう。上述した方式では、RAM1とRAM2に割り当てられる変数が後に彩色されるため、最初にRAM1にのみ割り当てる変数を割り当てた後、残りの五つの変数を残ったRAM2に割り当てることができる。
【0050】
以上、本発明をいくつかの実施形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0051】
図5、6に示したフローチャートのステップS10では、彩色数より少ない次数が存在する間、ステップS13には遷移しないが、所定数の頂点を選択したらステップS13に遷移するように処理してもよい。
【図面の簡単な説明】
【0052】
【図1】本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図2】近似アルゴリズムの一例を説明するための図である。
【図3】近似アルゴリズムで彩色できないグラフの一例を示す図である。
【図4】設定条件保持部、対応関係保持部および順番保持部を一つのテーブルで構成した例を示す図である。
【図5】実施の形態に係る情報処理装置の動作例1を説明するためのフローチャートである。
【図6】実施の形態に係る情報処理装置の動作例2を説明するためのフローチャートである。
【図7】実施の形態に係る情報処理装置の適用例1に係るプロセッサシステムを示す図である。
【図8】図7に示した適用例1に係るプロセッサシステムで利用される変数の一例を示す図である。
【図9】図8に示した表の変数a〜eの関係をグラフ化した図である。
【図10】実施の形態に係る情報処理装置の適用例2に係る、複数の変数a〜eの生存区間を示す図である。
【図11】図10に示した変数a〜eの生存区間の関係をグラフ化した図である。
【図12】実施の形態に係る情報処理装置の適用例3に係る、複数の町a〜iを含む地図を示す図である。
【図13】図12に示した複数の町a〜iの関係をグラフ化した図である。
【符号の説明】
【0053】
10 設定条件保持部、 20 対応関係保持部、 30 演算部、 40 第1演算部、 41 選択部、 42 順番保持部、 43 第1割当部、 44 第1登録部、 45 判定部、 50 第2演算部、 53 第2割当部、 54 第2登録部、 60 制御部、 70 テーブル、 100 情報処理装置。
【特許請求の範囲】
【請求項1】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを実行する第1演算部と、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件にしたがい前記割当対象を割り当てる、前記第1アルゴリズムと異なる第2アルゴリズムを実行する第2演算部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記第1演算部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記第1演算部は、選択した順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1演算部または前記第2演算部により既に割り当てられた、前記被割当対象と前記割当対象との対応関係を保持する対応関係保持部をさらに備え、
前記第1演算部は、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択する選択部と、
前記選択部により選択された被割当対象に対して、前記設定条件保持部により保持される設定条件および前記対応関係保持部に保持される対応関係を参照して、前記割当対象を順次割り当てる第1割当部と、
前記第1割当部による割り当て結果を前記対応関係保持部に登録する第1登録部と、
前記複数の被割当対象のすべてが前記選択部により選択できたか否かを判定する判定部と、を含み、
前記第2演算部は、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件保持部により保持される設定条件および前記対応関係保持部に保持される対応関係を参照して、前記割当対象を割り当てる第2割当部と、
前記第2割当部による割り当て結果を前記対応関係保持部に登録する第2登録部と、を含むことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1演算部および前記第2演算部の演算処理を制御する制御部をさらに備え、
前記制御部は、前記判定部による判定の結果、前記複数の被割当対象のすべてが前記選択部により選択できなかったとき、先に、その選択できなかった被割当対象に対して前記割当対象を割り当てるよう前記第2割当部を制御し、その後に、前記選択部により選択できた被割当対象に対して前記割当対象を割り当てるよう前記第1割当部を制御し、
前記制御部は、前記判定部による判定の結果、前記複数の被割当対象のすべてが前記選択部により選択できたとき、すべての被割当対象に対して前記割当対象を割り当てるよう前記第1割当部を制御することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第1演算部は、
前記選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部をさらに含み、
前記選択部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記第1割当部は、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項3または4に記載の情報処理装置。
【請求項6】
前記選択部は、各選択時点において前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象のうち、前記同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象を選択することを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記第2アルゴリズムは、前記複数の被割当対象のすべてに対して前記設定条件にしたがう前記割当対象の割り当てが可能な場合、必ず割り当てできるアルゴリズムであることを特徴とする請求項1から6のいずれかに記載の情報処理装置。
【請求項8】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、
既に割り当てられた、前記被割当対象と前記割当対象との対応関係を保持する対応関係保持部と、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象のうち、前記同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象から順に選択する選択部と、
前記選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部と、
前記選択部により選択された被割当対象に対して、前記対応関係保持部に保持される前記対応関係を参照して、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていく割当部と、
を備えることを特徴とする情報処理装置。
【請求項9】
前記選択部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記割当部は、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記被割当対象は、所定の変数であり、
前記割当対象は、前記変数を格納する、レジスタまたはメモリであることを特徴とする請求項1から9のいずれかに記載の情報処理装置。
【請求項11】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる割当方法であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を設定条件保持部に保持する第1ステップと、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを第1演算部に実行させる第2ステップと、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件にしたがい前記割当対象を割り当てる、前記第1アルゴリズムと異なる第2アルゴリズムを第2演算部に実行させる第3ステップと、
を備えることを特徴とする割当方法。
【請求項12】
前記第2ステップは、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
第4ステップとして、選択した順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項11に記載の割当方法。
【請求項1】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを実行する第1演算部と、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件にしたがい前記割当対象を割り当てる、前記第1アルゴリズムと異なる第2アルゴリズムを実行する第2演算部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記第1演算部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記第1演算部は、選択した順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1演算部または前記第2演算部により既に割り当てられた、前記被割当対象と前記割当対象との対応関係を保持する対応関係保持部をさらに備え、
前記第1演算部は、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択する選択部と、
前記選択部により選択された被割当対象に対して、前記設定条件保持部により保持される設定条件および前記対応関係保持部に保持される対応関係を参照して、前記割当対象を順次割り当てる第1割当部と、
前記第1割当部による割り当て結果を前記対応関係保持部に登録する第1登録部と、
前記複数の被割当対象のすべてが前記選択部により選択できたか否かを判定する判定部と、を含み、
前記第2演算部は、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件保持部により保持される設定条件および前記対応関係保持部に保持される対応関係を参照して、前記割当対象を割り当てる第2割当部と、
前記第2割当部による割り当て結果を前記対応関係保持部に登録する第2登録部と、を含むことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1演算部および前記第2演算部の演算処理を制御する制御部をさらに備え、
前記制御部は、前記判定部による判定の結果、前記複数の被割当対象のすべてが前記選択部により選択できなかったとき、先に、その選択できなかった被割当対象に対して前記割当対象を割り当てるよう前記第2割当部を制御し、その後に、前記選択部により選択できた被割当対象に対して前記割当対象を割り当てるよう前記第1割当部を制御し、
前記制御部は、前記判定部による判定の結果、前記複数の被割当対象のすべてが前記選択部により選択できたとき、すべての被割当対象に対して前記割当対象を割り当てるよう前記第1割当部を制御することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第1演算部は、
前記選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部をさらに含み、
前記選択部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記第1割当部は、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項3または4に記載の情報処理装置。
【請求項6】
前記選択部は、各選択時点において前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象のうち、前記同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象を選択することを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記第2アルゴリズムは、前記複数の被割当対象のすべてに対して前記設定条件にしたがう前記割当対象の割り当てが可能な場合、必ず割り当てできるアルゴリズムであることを特徴とする請求項1から6のいずれかに記載の情報処理装置。
【請求項8】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる情報処理装置であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を保持する設定条件保持部と、
既に割り当てられた、前記被割当対象と前記割当対象との対応関係を保持する対応関係保持部と、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象のうち、前記同一の割当対象の割り当てが制限される被割当対象の数が最も小さい被割当対象から順に選択する選択部と、
前記選択部により選択された被割当対象とその順番とを対応付けて保持する順番保持部と、
前記選択部により選択された被割当対象に対して、前記対応関係保持部に保持される前記対応関係を参照して、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていく割当部と、
を備えることを特徴とする情報処理装置。
【請求項9】
前記選択部は、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
前記割当部は、前記順番保持部に保持される順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記被割当対象は、所定の変数であり、
前記割当対象は、前記変数を格納する、レジスタまたはメモリであることを特徴とする請求項1から9のいずれかに記載の情報処理装置。
【請求項11】
複数の被割当対象のそれぞれに、あらかじめ定められた設定条件にしたがい、それぞれ異なる複数の割当対象から一つを選択して割り当てる割当方法であって、
前記設定条件として、各被割当対象ごとに自己以外の被割当対象のうち同一の割当対象の割り当てが制限される被割当対象を特定する情報を設定条件保持部に保持する第1ステップと、
前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を少なくとも一つ選択する第1アルゴリズムを第1演算部に実行させる第2ステップと、
前記複数の被割当対象のうち前記第1演算部により選択されていない被割当対象に対して、前記設定条件にしたがい前記割当対象を割り当てる、前記第1アルゴリズムと異なる第2アルゴリズムを第2演算部に実行させる第3ステップと、
を備えることを特徴とする割当方法。
【請求項12】
前記第2ステップは、前記同一の割当対象の割り当てが制限される被割当対象の数が、被割当対象に割当可能な前記複数の割当対象の数より少ない被割当対象を選択していき、各選択時点において、選択した被割当対象を次の選択時点における選択対象から除去し、かつその選択した被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その選択した被割当対象との関係における制限を解除し、
第4ステップとして、選択した順番と逆の順番で前記割当対象を割り当てていき、各割り当て時点において、割り当てた被割当対象と同一の割当対象の割り当てが制限される被割当対象について、その割り当てた被割当対象との関係における制限を復活させることを特徴とする請求項11に記載の割当方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2009−181279(P2009−181279A)
【公開日】平成21年8月13日(2009.8.13)
【国際特許分類】
【出願番号】特願2008−18923(P2008−18923)
【出願日】平成20年1月30日(2008.1.30)
【出願人】(000001889)三洋電機株式会社 (18,308)
【Fターム(参考)】
【公開日】平成21年8月13日(2009.8.13)
【国際特許分類】
【出願日】平成20年1月30日(2008.1.30)
【出願人】(000001889)三洋電機株式会社 (18,308)
【Fターム(参考)】
[ Back to top ]