IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-21988情報処理プログラム、および情報処理方法
<>
  • 特開-情報処理プログラム、および情報処理方法 図1
  • 特開-情報処理プログラム、および情報処理方法 図2
  • 特開-情報処理プログラム、および情報処理方法 図3
  • 特開-情報処理プログラム、および情報処理方法 図4
  • 特開-情報処理プログラム、および情報処理方法 図5
  • 特開-情報処理プログラム、および情報処理方法 図6
  • 特開-情報処理プログラム、および情報処理方法 図7
  • 特開-情報処理プログラム、および情報処理方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024021988
(43)【公開日】2024-02-16
(54)【発明の名称】情報処理プログラム、および情報処理方法
(51)【国際特許分類】
   H04L 41/142 20220101AFI20240208BHJP
   G06N 99/00 20190101ALI20240208BHJP
【FI】
H04L41/142
G06N99/00 180
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022125236
(22)【出願日】2022-08-05
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】清水 俊宏
(57)【要約】
【課題】制約を満たすトポロジー構造を効率よく探索すること。
【解決手段】情報処理装置は、スイッチiとスイッチjとのスイッチ間がdホップ以内であるという制約1の入力を受け付ける。情報処理装置は、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続する他のスイッチの数がk以下であるという制約2の入力を受け付ける。情報処理装置は、変数ai,j,dを用いて制約1を表す第1制約論理式と、変数bi,x,kを用いて制約2を表す第2制約論理式とを設定する。情報処理装置は、第1制約論理式および第2制約論理式を共にTrueにするよう、変数ai,j,dの解と変数bi,x,kの解とを算出するSAT問題を解くことにより、変数ai,j,dの解と変数bi,x,kの解とを算出する。
【選択図】図7
【特許請求の範囲】
【請求項1】
トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式と、前記スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式とに基づく問題を設定し、
設定した前記問題を解くことにより、前記第1制約論理式および前記第2制約論理式を満たすよう、前記第1真偽値変数の解と、前記第2真偽値変数の解とを算出する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記第1制約論理式は、
前記スイッチ群に含まれる第1スイッチと第2スイッチとの組み合わせのスイッチ間が第1ホップ数以内で接続されるか否かを示す第1真偽値変数の否定と、
前記スイッチ群に含まれる前記組み合わせ以外の各スイッチに関する、当該スイッチと前記組み合わせのそれぞれのスイッチとのスイッチ間が前記第1ホップ数より1小さいホップ数以内で接続されるか否かを示す第1真偽値変数同士の論理積と、の論理和を表す、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記第2制約論理式は、
前記スイッチ群に含まれる第3スイッチに直接接続された他のスイッチの数が0以上であるか否かを示す第2真偽値変数と、
前記スイッチ群に含まれる前記第3スイッチ以外の第1数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が第1閾値以上であるか否かを示す第2真偽値変数の否定と、前記スイッチ群に含まれる前記第3スイッチ以外の1つ分の第4スイッチを前記第1数分のスイッチに追加した第2数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値以上であるか否かを示す第2真偽値変数との論理和と、
前記第1数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値以上であるか否かを示す第2真偽値変数の否定と、前記第3スイッチと前記第4スイッチとのスイッチ間が1ホップ以内で接続されるか否かを示す第1真偽値変数の否定との論理和に対する、前記第2数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値より1大きい数以上であるか否かを示す第2真偽値変数との論理和と、
前記第3スイッチに直接接続された他のスイッチの数が第2閾値以上であるか否かを示す第2真偽値変数の否定と、の論理積を表す、ことを特徴とする請求項2に記載の情報処理プログラム。
【請求項4】
算出した前記第1真偽値変数の解に基づいて、前記トポロジー構造を特定し、
特定した前記トポロジー構造を出力する、
処理を前記コンピュータに実行させることを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項5】
前記問題は、充足可能性問題である、ことを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項6】
トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式と、前記スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式とに基づく問題を設定し、
設定した前記問題を解くことにより、前記第1制約論理式および前記第2制約論理式を満たすよう、前記第1真偽値変数の解と、前記第2真偽値変数の解とを算出する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、および情報処理方法に関する。
【背景技術】
【0002】
従来、複数のサーバを含み、それぞれのサーバをスイッチに接続し、スイッチを介してサーバ間を通信可能にしたネットワークシステムがある。サーバとスイッチとの接続関係は、例えば、トポロジー構造と呼ばれる。トポロジー構造に対して、スイッチ間のホップ数に関する制約などが設けられることがある。
【0003】
先行技術としては、例えば、いずれかのスイッチに各ノードが接続され、かつ、すべてのネットワークに含まれる各終端装置にそれぞれ異なる組み合わせのノードが接続されるよう、各スイッチに接続されるノードを特定するものがある。また、例えば、次状態の探索を省略可能であるか否かを問い合わせながらモデル検査を実施する技術がある。また、例えば、通信プロトコルの仕様を表す有限状態機械のデータの入力に応じて、テスト系列生成課題を充足可能性問題に変換して解決する技術がある。また、例えば、新ノードの配置時に平均パス長が最小ホップ数に保たれるようネットワークトポロジを作成する技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2015-70439号公報
【特許文献2】国際公開第2014/168164号
【特許文献3】米国特許出願公開第2005/0086020号明細書
【特許文献4】米国特許出願公開第2007/0291663号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、制約を満たすトポロジー構造を探索することが難しい。例えば、トポロジー構造のすべてのパターンを調査し、制約を満たすトポロジー構造を探索するとすれば、探索にかかる所要時間が膨大になるという問題がある。
【0006】
1つの側面では、本発明は、制約を満たすトポロジー構造を効率よく探索することを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式と、前記スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式とに基づく問題を設定し、設定した前記問題を解くことにより、前記第1制約論理式および前記第2制約論理式を満たすよう、前記第1真偽値変数の解と、前記第2真偽値変数の解とを算出する情報処理プログラム、および情報処理方法が提案される。
【発明の効果】
【0008】
一態様によれば、制約を満たすトポロジー構造を効率よく探索することが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4図4は、情報処理装置100の機能的構成例を示すブロック図である。
図5図5は、SAT問題を設定する一例を示す説明図である。
図6図6は、SAT問題を設定する別の例を示す説明図(その1)である。
図7図7は、SAT問題を設定する別の例を示す説明図(その2)である。
図8図8は、全体処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、および情報処理方法の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、制約を満たすトポロジー構造を探索し易くするためのコンピュータである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。トポロジー構造は、スイッチ群に含まれるスイッチ間の接続関係である。
【0012】
制約は、例えば、スイッチ間の接続関係に関する条件である。制約は、具体的には、特定のスイッチに直接接続される他のスイッチの数の上限または下限などを規定する。制約は、具体的には、特定のスイッチ間が所定ホップ数以内で接続されることを規定する。制約は、例えば、スイッチ間の効率的な通信を実現するために設定される。
【0013】
ホップ数は、例えば、特定のスイッチ間を通信可能に接続する際に特定のスイッチ間を中継する他のスイッチの数に比例する数である。ホップ数は、具体的には、特定のスイッチ間を中継する他のスイッチの数に1加算した数に対応する。所定ホップ数以内で接続とは、特定のスイッチ間が所定ホップ数以内で通信可能に接続されることである。以下の説明では、特定のスイッチ間が直接接続される場合、特定のスイッチ間のホップ数は、1であるとする。
【0014】
しかしながら、従来では、制約を満たすトポロジー構造を探索することが難しい。例えば、トポロジー構造のすべてのパターンを調査することにより、制約を満たすトポロジー構造を探索する場合が考えられる。この場合、探索にかかる所要時間が膨大になるという問題がある。例えば、所要時間は、指数関数的に増大する傾向がある。
【0015】
そこで、本実施の形態では、制約を満たすトポロジー構造を効率よく探索可能にすることができる情報処理方法について説明する。
【0016】
図1において、情報処理装置100は、トポロジー構造を形成可能なスイッチ群110を特定する。情報処理装置100は、例えば、利用者の操作入力に基づき、スイッチ群110の指定を受け付ける。スイッチ111は、サーバなどの処理部に接続されていてもよい。情報処理装置100は、スイッチ群110に含まれるスイッチ111間の接続関係の制約を取得する。情報処理装置100は、例えば、利用者の操作入力に基づき、制約の入力を受け付ける。
【0017】
以下の説明では、スイッチ群110に含まれるx番目のスイッチ111を「スイッチ111x」と表記する場合がある。xは、1~nである。nは、スイッチ群110に含まれるスイッチ111の数である。制約は、例えば、スイッチ111iとスイッチ111jとがdホップ以内で接続されることを示す。制約は、例えば、スイッチ111iに接続された他のスイッチ111がk個以上存在することを示す。
【0018】
(1-1)情報処理装置100は、スイッチ群110に含まれるスイッチ111間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式を設定する。情報処理装置100は、例えば、第1真偽値変数を用いて入力されたいずれかの制約を表す第1制約論理式を設定する。第1制約論理式は、例えば、スイッチ111iとスイッチ111jとがdホップ以内で接続される制約を表す。
【0019】
情報処理装置100は、スイッチ群110に含まれるスイッチ111に直接接続された他のスイッチ111の数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式を設定する。情報処理装置100は、例えば、第2真偽値変数を用いて入力されたいずれかの制約を表す第2制約論理式を設定する。第2制約論理式は、例えば、スイッチ111iに接続された他のスイッチ111がk個以上存在する制約を表す。
【0020】
情報処理装置100は、第1制約論理式と、第2制約論理式とに基づく問題を設定する。情報処理装置100は、例えば、第1制約論理式および第2制約論理式を共にTrueにするよう、第1真偽値変数の解と、第2真偽値変数の解とを探索する充足可能性問題を設定する。以下の説明では、充足可能性問題を「SAT問題(SATisfiability problem)」と表記する場合がある。SAT問題は、NP(Non-deterministic Polynomial)完全問題である。
【0021】
(1-2)情報処理装置100は、設定した問題を解くことにより、第1制約論理式および第2制約論理式を満たすよう、第1真偽値変数の解と、第2真偽値変数の解とを算出する。情報処理装置100は、例えば、ソルバを用いて、設定したSAT問題を解くことにより、第1制約論理式および第2制約論理式を共にTrueにする、第1真偽値変数の解と、第2真偽値変数の解とを算出する。
【0022】
ソルバは、第1真偽値変数の解と、第2真偽値変数の解とが存在すれば、トポロジー構造に関する対称性などの性質を利用して、第1真偽値変数の解と、第2真偽値変数の解とを比較的高速に求めることができる。
【0023】
(1-3)情報処理装置100は、算出した第1真偽値変数の解と、算出した第2真偽値変数の解とを、利用者が参照可能に出力する。情報処理装置100は、算出した第1真偽値変数の解に基づいて、トポロジー構造を特定してもよい。情報処理装置100は、特定したトポロジー構造を、利用者が参照可能に出力してもよい。
【0024】
これにより、情報処理装置100は、第1真偽値変数の解と、第2真偽値変数の解とを効率よく算出することができる。情報処理装置100は、第1真偽値変数の解に基づいて、制約を満たすトポロジー構造を特定可能にすることができるため、制約を満たすトポロジー構造の探索にかかる所要時間の低減化を図ることができる。
【0025】
ここでは、情報処理装置100が、単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働する場合があってもよい。例えば、複数のコンピュータが、情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に、情報処理装置100としての機能が実現される場合があってもよい。具体的には、情報処理装置100が、他のコンピュータと協働する場合の一例については、図2を用いて後述する。
【0026】
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0027】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、情報処理装置100と、問題求解装置201と、クライアント装置202とを含む。
【0028】
情報処理システム200において、情報処理装置100とクライアント装置202とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。情報処理システム200において、情報処理装置100と問題求解装置201とは、有線または無線のネットワーク210を介して接続される。
【0029】
情報処理装置100は、スイッチ群のトポロジー構造を探索するためのコンピュータである。情報処理装置100は、システム管理者によって用いられる。情報処理装置100は、スイッチ群を特定可能にし、スイッチ群のトポロジー構造の制約を示し、スイッチ群のトポロジー構造を探索することを要求する処理依頼を、クライアント装置202から受信する。
【0030】
情報処理装置100は、受信した処理依頼に基づいて、スイッチ群を特定する。情報処理装置100は、受信した処理依頼に基づいて、スイッチ群のトポロジー構造の制約を特定する。情報処理装置100は、例えば、特定のスイッチ間が所定ホップ数以内で接続されることを規定する制約を特定する。情報処理装置100は、例えば、特定のスイッチに直接接続される他のスイッチの数の上限または下限などを規定した制約を特定する。
【0031】
情報処理装置100は、複数の真偽値変数を用いて特定した制約を表す制約論理式を設定する。真偽値変数は、例えば、スイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数である。真偽値変数は、例えば、スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数である。
【0032】
情報処理装置100は、例えば、1以上の第1真偽値変数を用いた第1制約論理式を設定する。情報処理装置100は、具体的には、1以上の第1真偽値変数を用いて、スイッチiとスイッチjとがdホップ以内で接続される制約を表す第1制約論理式を設定する。
【0033】
情報処理装置100は、例えば、1以上の第2真偽値変数を用いた第2制約論理式を設定する。第2制約論理式は、さらに、第1真偽値変数を用いていてもよい。情報処理装置100は、具体的には、1以上の第2真偽値変数を用いて、スイッチiに接続された他のスイッチがk個以上存在する制約を表す第2制約論理式を設定する。
【0034】
情報処理装置100は、設定した制約論理式に基づくSAT問題を設定する。情報処理装置100は、例えば、設定した第1制約論理式および設定した第2制約論理式を共にTrueにするよう、第1真偽値変数の解と、第2真偽値変数の解とを算出するSAT問題を設定する。情報処理装置100は、設定したSAT問題を、問題求解装置201に送信する。
【0035】
情報処理装置100は、SAT問題を解いて算出された第1真偽値変数の解と、第2真偽値変数の解とを、問題求解装置201から受信する。情報処理装置100は、受信した第1真偽値変数の解と、第2真偽値変数の解とを、クライアント装置202に送信する。情報処理装置100は、受信した第1真偽値変数の解に基づいて、スイッチ群のトポロジー構造を特定してもよい。情報処理装置100は、特定したスイッチ群のトポロジー構造を、クライアント装置202に送信する。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0036】
問題求解装置201は、SAT問題を解くソルバを有するコンピュータである。問題求解装置201は、SAT問題を、情報処理装置100から受信する。問題求解装置201は、ソルバを用いて、SAT問題を解くことにより、第1制約論理式および第2制約論理式を共にTrueにするよう、第1真偽値変数の解と、第2真偽値変数の解とを算出する。問題求解装置201は、算出した第1真偽値変数の解と、第2真偽値変数の解とを、情報処理装置100に送信する。問題求解装置201は、例えば、サーバ、または、PCなどである。
【0037】
クライアント装置202は、システム利用者によって用いられるコンピュータである。システム利用者は、例えば、制約を満たすトポロジー構造を探索したいと考える探索作業者である。クライアント装置202は、システム利用者の操作入力に基づき、処理依頼を生成し、情報処理装置100に送信する。
【0038】
クライアント装置202は、例えば、システム利用者の操作入力に基づき、スイッチ群を特定可能にする情報の入力を受け付ける。クライアント装置202は、例えば、システム利用者の操作入力に基づき、スイッチ群のトポロジー構造の制約の入力を受け付ける。クライアント装置202は、例えば、スイッチ群を特定可能にする情報と、スイッチ群のトポロジー構造の制約とを含み、スイッチ群のトポロジー構造を探索することを要求する処理依頼を生成し、情報処理装置100に送信する。
【0039】
クライアント装置202は、SAT問題を解いて算出された第1真偽値変数の解と、第2真偽値変数の解とを、情報処理装置100から受信する。クライアント装置202は、受信した第1真偽値変数の解と、第2真偽値変数の解とを、システム利用者が参照可能に出力する。
【0040】
クライアント装置202は、スイッチ群のトポロジー構造を、情報処理装置100から受信してもよい。クライアント装置202は、スイッチ群のトポロジー構造を、システム利用者が参照可能に出力してもよい。クライアント装置202は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0041】
これにより、情報処理システム200は、第1真偽値変数の解と、第2真偽値変数の解とを効率よく算出することができる。情報処理システム200は、第1真偽値変数の解に基づいて、制約を満たすトポロジー構造を特定可能にすることができるため、制約を満たすトポロジー構造の探索にかかる所要時間の低減化を図ることができる。
【0042】
情報処理システム200は、制約を満たすトポロジー構造を、システム利用者が利用可能にすることができる。情報処理システム200は、システム利用者が、スイッチ群を用いて、制約を満たすトポロジー構造を形成し易くすることができ、システム利用者にかかる作業負担の低減化を図ることができる。システム利用者は、スイッチ群のスイッチ間をどのように接続すれば、制約を満たすトポロジー構造を形成することができるのかを把握することができ、制約を満たすトポロジー構造を形成し易くすることができる。
【0043】
ここでは、情報処理装置100が、問題求解装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、問題求解装置201としての機能を有し、問題求解装置201としても動作する場合があってもよい。
【0044】
ここでは、情報処理装置100が、クライアント装置202とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置202としての機能を有し、クライアント装置202としても動作する場合があってもよい。
【0045】
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0046】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0047】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0048】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0049】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0050】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0051】
(問題求解装置201のハードウェア構成例)
問題求解装置201のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0052】
(クライアント装置202のハードウェア構成例)
クライアント装置202のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0053】
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。
【0054】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、設定部402と、求解部403と、出力部404とを含む。
【0055】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0056】
取得部401~出力部404は、制御部の一例として機能する。取得部401~出力部404は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0057】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、トポロジー構造を形成するスイッチ群を特定可能にする情報を記憶する。記憶部400は、例えば、スイッチ群に含まれるスイッチの数と、スイッチ群に含まれるそれぞれのスイッチを識別する番号とを記憶する。スイッチの数は、例えば、nであるとする。スイッチ群を特定可能にする情報は、例えば、取得部401によって取得される。
【0058】
記憶部400は、トポロジー構造の制約を記憶する。制約は、例えば、スイッチ群に含まれるスイッチ間の接続関係に関する条件である。制約は、具体的には、特定のスイッチ間が所定ホップ数以内で接続されることを規定する。制約は、具体的には、特定のスイッチに直接接続される他のスイッチの数の上限または下限などを規定する。制約は、例えば、取得部401によって取得される。
【0059】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、自装置利用者の操作入力に基づき、各種情報を取得する。自装置利用者は、例えば、システム管理者、または、システム利用者などである。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0060】
取得部401は、例えば、トポロジー構造を形成するスイッチ群を特定可能にする情報を取得する。取得部401は、例えば、スイッチ群に含まれるスイッチの数を取得する。取得部401は、具体的には、スイッチ群に含まれるスイッチの数を、他のコンピュータから受信することにより取得する。他のコンピュータは、例えば、クライアント装置202である。取得部401は、具体的には、自装置利用者の操作入力に基づき、スイッチの数の入力を受け付けることにより、スイッチの数を取得してもよい。
【0061】
取得部401は、例えば、スイッチ群に含まれるそれぞれのスイッチを識別する番号を取得する。取得部401は、具体的には、スイッチ群に含まれるそれぞれのスイッチを識別する番号を、他のコンピュータから受信することにより取得する。他のコンピュータは、例えば、クライアント装置202である。取得部401は、具体的には、自装置利用者の操作入力に基づき、スイッチの数の入力を受け付けることにより、スイッチの数を取得してもよい。
【0062】
取得部401は、例えば、トポロジー構造の制約を取得する。取得部401は、具体的には、トポロジー構造の制約を、他のコンピュータから受信することにより取得する。取得部401は、具体的には、自装置利用者の操作入力に基づき、トポロジー構造の制約の入力を受け付けることにより、トポロジー構造の制約を取得してもよい。
【0063】
取得部401は、例えば、スイッチ群のトポロジー構造を探索することを要求する処理依頼を取得してもよい。処理依頼は、例えば、スイッチ群に含まれるスイッチの数を含んでいてもよい。処理依頼は、例えば、スイッチ群に含まれるそれぞれのスイッチを識別する番号を含んでいてもよい。処理依頼は、例えば、トポロジー構造の制約を含んでいてもよい。取得部401は、具体的には、処理依頼を、他のコンピュータから受信することにより取得する。取得部401は、具体的には、自装置利用者の操作入力に基づき、処理依頼の入力を受け付けることにより、処理依頼を取得してもよい。
【0064】
取得部401は、具体的には、取得した処理依頼から、スイッチ群に含まれるスイッチの数を取得してもよい。取得部401は、具体的には、取得した処理依頼から、スイッチ群に含まれるそれぞれのスイッチを識別する番号を取得してもよい。取得部401は、具体的には、取得した処理依頼から、トポロジー構造の制約を取得してもよい。
【0065】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、自装置利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部401は、例えば、処理依頼を取得したことを、設定部402と求解部403との処理を開始する開始トリガーとして受け付けてもよい。
【0066】
設定部402は、スイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式を設定する。第1制約論理式は、例えば、取得部401で取得したいずれかの制約を表す。以下の説明では、第1真偽値変数を「ai,j,d」と表記する場合がある。ai,j,dは、具体的には、スイッチiとスイッチjがdホップ以内で接続されるか否かを示す真偽値変数である。
【0067】
設定部402は、例えば、¬ai,j,d∨(ai,1,d-1∧a1,j,d-1)∨(ai,2,d-1∧a2,j,d-1)∨・・・∨(ai,n,d-1∧an,j,d-1)という第1制約論理式を設定する。¬は、否定を示す。否定は、真偽値の反転に対応する。∨は、論理和を示す。∨は、ORに対応する。∧は、論理積を示す。∧は、ANDに対応する。当該第1制約論理式は、ai,j,dがTrueであれば、(ai,1,d-1∧a1,j,d-1)∨(ai,2,d-1∧a2,j,d-1)∨・・・∨(ai,n,d-1∧an,j,d-1)がTrueであることを表す。
【0068】
¬ai,j,dは、スイッチ群に含まれるスイッチiとスイッチjとの組み合わせのスイッチ間が第1ホップ数d以内で接続されるか否かを示す第1真偽値変数の否定である。ai,t,d-1∧a1,t,d-1は、当該組み合わせ以外のスイッチtと当該組み合わせのそれぞれのスイッチi,jとのスイッチ間が第1ホップ数dより1小さいホップ数d-1以内で接続されるか否かを示す第1真偽値変数同士の論理積である。これにより、設定部402は、スイッチ群のトポロジー構造を探索するにあたって、スイッチiとスイッチjがdホップ以内で接続されることを制約として利用可能にすることができる。
【0069】
設定部402は、スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式を設定する。以下の説明では、第2真偽値変数を「bi,x,k」と表記する場合がある。bi,x,kは、具体的には、スイッチi以外のスイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続されるスイッチjの数が、k以上であるか否かを示す真偽値変数である。第2制約論理式は、例えば、さらに、第1真偽値変数を用いていてもよい。
【0070】
設定部402は、例えば、すべてのiに関する「bi,x,0∧(¬bi,x,k∨bi,x+1,k)∧((¬bi,x,k∨¬ai,x+1,1)∨bi,x+1,k+1)∧¬bi,n,k+1」の論理積という第2制約論理式を設定する。bi,x,0は、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続された他のスイッチの数が0以上であるか否かを示す第2真偽値変数であり、常にTrueであることが好ましい。
【0071】
(¬bi,x,k∨bi,x+1,k)は、スイッチj(j≦x)のうち、スイッチiに直接接続された他のスイッチの数がk以上であれば、スイッチj(j≦x+1)のうち、スイッチiに直接接続された他のスイッチの数がk以上であることを表す。(¬bi,x,k∨¬ai,x+1,1)∨bi,x+1,k+1は、スイッチiにスイッチx+1が直接接続で、スイッチiに直接接続のスイッチj≦xの数がk以上であれば、スイッチiに直接接続のスイッチj≦x+1の数がk+1以上であることを表す。
【0072】
¬bi,n,k+1は、スイッチj(j=1,2,・・・,n)のうち、スイッチiに直接接続された他のスイッチの数がk+1以上ではなくk以下であることを表す。これにより、設定部402は、スイッチ群のトポロジー構造を探索するにあたって、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続された他のスイッチの数の上限値または下限値などを制約として利用可能にすることができる。
【0073】
設定部402は、設定した第1制約論理式と、設定した第2制約論理式とに基づく問題を設定する。設定部402は、例えば、第1制約論理式および第2制約論理式をTrueにするよう、第1真偽値変数の解と、第2真偽値変数の解とを算出するSAT問題を設定する。これにより、設定部402は、第1真偽値変数の解と、第2真偽値変数の解とを算出可能にすることができる。
【0074】
求解部403は、設定部402で設定した問題を解くことにより、第1制約論理式および第2制約論理式を満たすよう、第1真偽値変数の解と、第2真偽値変数の解とを算出する。求解部403は、例えば、ソルバを用いて、設定部402で設定したSAT問題を解くことにより、第1制約論理式および第2制約論理式をTrueにするよう、第1真偽値変数の解と、第2真偽値変数の解とを算出する。これにより、求解部403は、第1真偽値変数の解と、第2真偽値変数の解とを効率よく算出することができる。
【0075】
求解部403は、算出した第1真偽値変数の解に基づいて、スイッチ群が形成するトポロジー構造を特定してもよい。求解部403は、具体的には、ai,j,1に基づいて、スイッチ群のいずれのスイッチ間を直接接続するのかを特定することにより、スイッチ群が形成するトポロジー構造を特定する。これにより、求解部403は、システム利用者が、算出した第1真偽値変数の解からスイッチ群が形成するトポロジー構造を特定せずに済ませることができ、作業負担の低減化を図ることができる。
【0076】
出力部404は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部404は、少なくともいずれかの機能部の処理結果を自装置利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0077】
出力部404は、求解部403で算出した第1真偽値変数の解と、求解部403で算出した第2真偽値変数の解とを出力する。出力部404は、例えば、求解部403で算出した第1真偽値変数の解と、求解部403で算出した第2真偽値変数の解とを、システム利用者が参照可能に出力する。出力部404は、具体的には、求解部403で算出した第1真偽値変数の解と、求解部403で算出した第2真偽値変数の解とを、クライアント装置202に送信する。出力部404は、具体的には、求解部403で算出した第1真偽値変数の解と、求解部403で算出した第2真偽値変数の解とを、ディスプレイに表示してもよい。これにより、出力部404は、システム利用者が、スイッチ群のトポロジー構造を特定し易くすることができ、システム利用者にかかる作業負担の低減化を図ることができる。
【0078】
出力部404は、求解部403で特定したトポロジー構造を出力する。出力部404は、例えば、求解部403で特定したスイッチ群のトポロジー構造を、システム利用者が参照可能に出力する。出力部404は、具体的には、求解部403で特定したスイッチ群のトポロジー構造を、クライアント装置202に送信する。出力部404は、具体的には、求解部403で特定したスイッチ群のトポロジー構造を、ディスプレイに表示してもよい。これにより、出力部404は、システム利用者が、スイッチ群のトポロジー構造を特定し易くすることができ、システム利用者にかかる作業負担の低減化を図ることができる。
【0079】
(情報処理装置100の動作例)
次に、情報処理装置100の動作例について説明する。
【0080】
情報処理装置100は、スイッチ群に含まれるスイッチの台数の入力を受け付ける。情報処理装置100は、スイッチ群に含まれるそれぞれのスイッチの番号の入力を受け付ける。情報処理装置100は、スイッチ群に含まれるそれぞれのスイッチに番号を割り振ってもよい。以下の説明では、番号iのスイッチを「スイッチi」と表記する場合がある。
【0081】
情報処理装置100は、スイッチ間のホップ数に関する制約1の入力を受け付ける。情報処理装置100は、例えば、スイッチiとスイッチjとのスイッチ間がdホップ以内であるという制約1の入力を受け付ける。情報処理装置100は、スイッチに直接接続する他のスイッチの数に関する制約2の入力を受け付ける。情報処理装置100は、例えば、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続する他のスイッチの数がk以下であるという制約2の入力を受け付ける。
【0082】
情報処理装置100は、制約1を表すための真偽値を示す変数ai,j,dを用意する。変数ai,j,dは、スイッチiとスイッチjとがdホップ以内で接続されるか否かを示す。変数ai,j,dは、d=1であれば、スイッチiとスイッチjとが直接接続されるか否かを示す。変数ai,j,dは、例えば、スイッチiとスイッチjとがdホップ以内で接続されれば、Trueであり値1である。変数ai,j,dは、例えば、スイッチiとスイッチjとがdホップ以内で接続されなければ、Falseであり値0である。
【0083】
情報処理装置100は、制約2を表すための真偽値を示す変数bi,x,kを用意する。変数bi,x,kは、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続されたスイッチの数がk以上であるか否かを示す。変数bi,x,kは、例えば、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続されたスイッチの数がk以上であれば、Trueであり値1である。変数bi,x,kは、例えば、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続されたスイッチの数がk以上でなければ、Falseであり値0である。
【0084】
情報処理装置100は、i=jであれば、変数ai,j,dは常にFalseが正常であるため、¬a1,1,d∧¬a2,2,d∧・・・∧¬an,n,dという部分論理式1-1を設定する。情報処理装置100は、スイッチiとスイッチjとがdホップ以内という制約の入力があれば、当該制約を表す部分論理式1-2を設定する。部分論理式1-2は、例えば、¬ai,j,d∨(ai,1,d-1∧a1,j,d-1)∨(ai,2,d-1∧a2,j,d-1)∨・・・∨(ai,n,d-1∧an,j,d-1)である。情報処理装置100は、部分論理式1-1と、部分論理式1-2とを、論理積∧で接続した第1制約論理式を設定する。これにより、情報処理装置100は、スイッチ群のトポロジー構造を探索するにあたって、スイッチiとスイッチjがdホップ以内で接続されることを制約として利用することができる。
【0085】
情報処理装置100は、bi,x,0は常にTrueが正常であるため、b1,x,0∧b2,x,0∧・・・∧bn,x,0という部分論理式2-1を設定する。情報処理装置100は、例えば、各xの値1~nについて部分論理式2-1を設定してもよい。
【0086】
スイッチiに直接接続されたスイッチj(j≦x)の数がk以上であれば、スイッチiに直接接続されたスイッチj(j≦x+1)の数は、k以上になる。このため、情報処理装置100は、(¬b1,x,k∨b1,x+1,k)∧(¬b2,x,k∨b2,x+1,k)∧・・・∧(¬bn,x,k∨bn,x+1,k)という部分論理式2-2を設定する。情報処理装置100は、各xの値1~nについて、部分論理式2-2を設定してもよい。部分論理式2-2は、i=xの(¬bi,x,k∨bi,x+1,k)の項を含まなくてもよい。
【0087】
スイッチiにスイッチx+1が直接接続され、スイッチiに直接接続されたスイッチj≦xの数がk以上であれば、スイッチiに直接接続されたスイッチj≦x+1の数は、k+1以上になる。このため、情報処理装置100は、部分論理式2-3を設定する。情報処理装置100は、各xの値1~nについて、部分論理式2-3を設定してもよい。部分論理式2-3は、((¬b1,x,k∨¬a1,x+1,1)∨b1,x+1,k+1)∧((¬b2,x,k∨¬a2,x+1,1)∨b2,x+1,k+1)∧・・・∧((¬bn,x,k∨¬an,x+1,1)∨bn,x+1,k+1)である。
【0088】
情報処理装置100は、スイッチiに直接接続されたスイッチj(j=1,2,・・・,n)の数がk以下であるという制約の入力があれば、¬bi,n,k+1という、当該制約を表す部分論理式2-4を設定する。情報処理装置100は、部分論理式2-1と、部分論理式2-2と、部分論理式2-3と、部分論理式2-4とを、論理積∧で接続した第2制約論理式を設定する。これにより、情報処理装置100は、スイッチ群のトポロジー構造を探索するにあたって、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続された他のスイッチの数の上限値または下限値などを制約として利用することができる。
【0089】
情報処理装置100は、第1制約論理式および第2制約論理式を共にTrueにするよう、変数ai,j,dの解と変数bi,x,kの解とを算出するSAT問題を設定する。情報処理装置100は、SATソルバを用いて、設定したSAT問題を解くことにより、変数ai,j,dの解と変数bi,x,kの解とを算出する。SATソルバは、例えば、clasp、GlueMiniSAT、Lingeling、MiniSat、PicoSAT、sat4j、または、Sugar Solverなどである。
【0090】
SAT問題は、NP完全性を有する。SAT問題は、すべてのリテラルが2以下の真偽値によって形成されていれば、多項式時間内に解くことができる。リテラルは、例えば、論理変数などを表す文字記号である。SATソルバは、変数ai,j,dの解と変数bi,x,kの解とが存在すれば、トポロジー構造に関する対称性などの性質を利用して、変数ai,j,dの解と変数bi,x,kの解とを比較的高速に求めることができる。このため、情報処理装置100は、SATソルバを用いて、変数ai,j,dの解と変数bi,x,kの解とを効率よく算出することができる。
【0091】
ここで、図5を用いて、情報処理装置100が、SAT問題を設定し、スイッチ群のトポロジー構造を特定する一例について説明する。
【0092】
図5は、SAT問題を設定する一例を示す説明図である。図5において、情報処理装置100は、スイッチ群に含まれるスイッチの台数5の入力と、スイッチ群に含まれるそれぞれのスイッチの番号の入力とを受け付ける。
【0093】
情報処理装置100は、例えば、スイッチ1とスイッチ3とのスイッチ間が2ホップ以内であるという制約1-1の入力を受け付ける。情報処理装置100は、例えば、スイッチ3とスイッチ5とのスイッチ間が2ホップ以内であるという制約1-2の入力を受け付ける。情報処理装置100は、例えば、スイッチ2とスイッチ4とのスイッチ間が2ホップ以内であるという制約1-3の入力を受け付ける。
【0094】
情報処理装置100は、例えば、各スイッチiが有するポートの数が4であるため、各スイッチiに直接接続する他のスイッチの数が4以下であるという制約2-1の入力を受け付ける。情報処理装置100は、真偽値を示す変数ai,j,dを用意する。情報処理装置100は、真偽値を示す変数bi,x,kを用意する。
【0095】
情報処理装置100は、¬a1,1,d∧¬a2,2,d∧・・・∧¬an,n,dという部分論理式を設定する。情報処理装置100は、例えば、¬a1,3,2∨(a1,1,2-1∧a1,3,2-1)∨(a1,2,2-1∧a2,3,2-1)∨・・・∨(a1,5,2-1∧a5,3,2-1)という、制約1-1を表す部分論理式を設定する。情報処理装置100は、例えば、¬a3,5,2∨(a3,1,2-1∧a1,5,2-1)∨(a3,2,2-1∧a2,5,2-1)∨・・・∨(a3,5,2-1∧a5,5,2-1)という、制約1-1を表す部分論理式を設定する。情報処理装置100は、例えば、¬a2,4,2∨(a2,1,2-1∧a1,4,2-1)∨(a2,2,2-1∧a2,4,2-1)∨・・・∨(a2,5,2-1∧a5,4,2-1)という、制約1-1を表す部分論理式を設定する。情報処理装置100は、設定した各部分論理式を論理積∧で接続した第1制約論理式を設定する。
【0096】
情報処理装置100は、b1,x,0∧b2,x,0∧・・・∧bn,x,0という部分論理式を設定する。情報処理装置100は、(¬b1,x,k∨b1,x+1,k)∧(¬b2,x,k∨b2,x+1,k)∧・・・∧(¬bn,x,k∨bn,x+1,k)という部分論理式を設定する。情報処理装置100は、((¬b1,x,k∨¬a1,x+1,1)∨b1,x+1,k+1)∧・・・∧((¬bn,x,k∨¬an,x+1,1)∨bn,x+1,k+1)という部分論理式を設定する。
【0097】
情報処理装置100は、例えば、¬b1,5,4+1∧¬b2,5,4+1∧・・・∧¬b5,5,4+1という、制約2-1を表す部分論理式を設定する。情報処理装置100は、設定した部分論理式を論理積∧で接続した第2制約論理式を設定する。情報処理装置100は、第1制約論理式および第2制約論理式を共にTrueにするよう、変数ai,j,dの解と変数bi,x,kの解とを算出するSAT問題を設定する。
【0098】
情報処理装置100は、SATソルバを用いて、設定したSAT問題を解くことにより、変数ai,j,dの解と変数bi,x,kの解とを算出する。情報処理装置100は、算出した変数ai,j,1の解に基づいて、直接接続されるスイッチiとスイッチjとのペアを特定し、スイッチ群のトポロジー構造を特定する。図5の例では、情報処理装置100は、スイッチ群のトポロジー構造500を特定する。スイッチ1は、サーバが接続されていてもよい。スイッチ3は、サーバが接続されていてもよい。
【0099】
また、図6および図7を用いて、情報処理装置100が、SAT問題を設定し、スイッチ群のトポロジー構造を特定する別の例について説明する。
【0100】
図6および図7は、SAT問題を設定する別の例を示す説明図である。図6において、情報処理装置100は、スイッチ群600に含まれるスイッチの台数14の入力と、スイッチ群600に含まれるそれぞれのスイッチの番号の入力とを受け付ける。
【0101】
情報処理装置100は、例えば、スイッチ1~7の各スイッチ間が2ホップ以内であるという制約1-1の入力を受け付ける。情報処理装置100は、例えば、各スイッチ1~7が有するポートの数が6であり、サーバが最大3つ接続するため、各スイッチ1~7に直接接続する他のスイッチの数が3以下であるという制約2-1の入力を受け付ける。情報処理装置100は、例えば、各スイッチ8~14が有するポートの数が6であるため、各スイッチ8~14に直接接続する他のスイッチの数が6以下であるという制約2-2の入力を受け付ける。情報処理装置100は、真偽値を示す変数ai,j,dを用意する。情報処理装置100は、真偽値を示す変数bi,x,kを用意する。
【0102】
情報処理装置100は、¬a1,1,d∧¬a2,2,d∧・・・∧¬an,n,dという部分論理式を設定する。情報処理装置100は、例えば、制約1-1を表す部分論理式を設定する。当該部分論理式は、スイッチ1~7の各スイッチ間の¬ai,j,2∨(ai,1,2-1∧a1,j,2-1)∨(ai,2,2-1∧a2,j,2-1)∨・・・∨(ai,14,2-1∧a14,j,2-1)を論理積∧で接続した部分論理式である。情報処理装置100は、設定した各部分論理式を論理積∧で接続した第1制約論理式を設定する。
【0103】
情報処理装置100は、b1,x,0∧b2,x,0∧・・・∧bn,x,0という部分論理式を設定する。情報処理装置100は、(¬b1,x,k∨b1,x+1,k)∧(¬b2,x,k∨b2,x+1,k)∧・・・∧(¬bn,x,k∨bn,x+1,k)という部分論理式を設定する。情報処理装置100は、((¬b1,x,k∨¬a1,x+1,1)∨b1,x+1,k+1)∧・・・∧((¬bn,x,k∨¬an,x+1,1)∨bn,x+1,k+1)という部分論理式を設定する。
【0104】
情報処理装置100は、例えば、¬b1,14,3+1∧¬b2,14,3+1∧・・・∧¬b7,14,3+1という、制約2-1を表す部分論理式を設定する。情報処理装置100は、例えば、¬b8,14,6+1∧¬b9,14,6+1∧・・・∧¬b14,14,6+1という、制約2-2を表す部分論理式を設定する。情報処理装置100は、設定した部分論理式を論理積∧で接続した第2制約論理式を設定する。情報処理装置100は、第1制約論理式および第2制約論理式を共にTrueにするよう、変数ai,j,dの解と変数bi,x,kの解とを算出するSAT問題を設定する。次に、図7の説明に移行する。
【0105】
図7において、情報処理装置100は、SATソルバを用いて、設定したSAT問題を解くことにより、変数ai,j,dの解と変数bi,x,kの解とを算出する。情報処理装置100は、算出した変数ai,j,1の解に基づいて、直接接続されるスイッチiとスイッチjとのペアを特定し、スイッチ群600のトポロジー構造を特定する。
【0106】
図7の例では、情報処理装置100は、スイッチ群600のトポロジー構造700を特定する。スイッチ1~7は、3つのサーバが接続されていてもよい。トポロジー構造700は、具体的には、ラテン方陣FAT-Treeと呼ばれる形式である。
【0107】
トポロジー構造700は、第1制約論理式および第2制約論理式を共にTrueにすることができる。例えば、スイッチ1とスイッチ7とのスイッチ間の¬a1,7,2∨(a1,1,2-1∧a1,7,2-1)∨・・・∨(a1,10,2-1∧a10,7,2-1)∨・・・∨(a1,14,2-1∧a14,7,2-1)は、Trueになる。
【0108】
具体的には、トポロジー構造700について(a1,10,2-1∧a10,7,2-1)は、Trueになる。このため、¬a1,7,2∨(a1,1,2-1∧a1,7,2-1)∨(a1,2,2-1∧a2,7,2-1)∨・・・∨(a1,10,2-1∧a10,7,2-1)∨・・・∨(a1,14,2-1∧a14,7,2-1)は、Trueになる。
【0109】
このように、情報処理装置100は、制約を満たすスイッチ群のトポロジー構造を効率よく特定することができ、制約を満たすトポロジー構造の探索にかかる所要時間の低減化を図ることができる。情報処理装置100は、システム利用者が、スイッチ群のトポロジー構造を特定し易くすることができ、システム利用者にかかる作業負担の低減化を図ることができる。
【0110】
(全体処理手順)
次に、図8を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0111】
図8は、全体処理手順の一例を示すフローチャートである。図8において、情報処理装置100は、スイッチ集合Sと、各スイッチ間の接続ホップ数の制約1と、各スイッチのポート数の制約2との入力を受け付ける(ステップS801)。
【0112】
次に、情報処理装置100は、入力を受け付けた制約1に基づく変数ai,j,dと、入力を受け付けた制約2に基づく変数bi,x,kとを用意する(ステップS802)。そして、情報処理装置100は、用意した変数ai,j,dを用いて入力を受け付けた制約1を表す論理式1と、用意した変数bi,x,kを用いて入力を受け付けた制約2を表す論理式2とを設定する(ステップS803)。
【0113】
次に、情報処理装置100は、SATソルバを用いて、設定した論理式1と論理式2とに基づくSAT問題を解くことにより、変数ai,j,dの真偽値と、変数bi,x,kの真偽値とを算出する(ステップS804)。そして、情報処理装置100は、算出した変数ai,j,dの真偽値に基づいて、スイッチ集合Sのトポロジー構造を特定する(ステップS805)。
【0114】
次に、情報処理装置100は、特定したトポロジー構造を出力する(ステップS806)。そして、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、制約を満たすスイッチ群のトポロジー構造を効率よく特定することができ、制約を満たすトポロジー構造の探索にかかる所要時間の低減化を図ることができる。
【0115】
ここで、情報処理装置100は、図8の一部ステップの処理の順序を入れ替えて実行してもよい。また、情報処理装置100は、図8の一部ステップの処理を省略してもよい。例えば、ステップS806の処理は省略可能である。
【0116】
以上説明したように、情報処理装置100によれば、トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式を設定することができる。情報処理装置100によれば、スイッチ群に含まれるスイッチに直接接続されたスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式を設定することができる。情報処理装置100によれば、第1制約論理式と、第2制約論理式とに基づく問題を設定することができる。情報処理装置100によれば、設定した問題を解くことにより、第1制約論理式および第2制約論理式を満たすよう、第1真偽値変数の解と、第2真偽値変数の解とを算出することができる。これにより、情報処理装置100は、トポロジー構造を効率よく特定可能にすることができる。
【0117】
情報処理装置100によれば、スイッチ群に含まれる第1スイッチと第2スイッチとの組み合わせのスイッチ間が第1ホップ数以内で接続されるか否かを示す第1真偽値変数の否定の項1を設定することができる。情報処理装置100によれば、組み合わせ以外の各スイッチと組み合わせのそれぞれのスイッチとのスイッチ間が第1ホップ数より1小さいホップ数以内で接続されるか否かを示す第1真偽値変数同士の論理積の項2を設定することができる。情報処理装置100によれば、設定した項1,2の論理和を表す第1制約論理式を設定することができる。これにより、情報処理装置100は、スイッチ群のトポロジー構造を探索するにあたって、スイッチiとスイッチjがdホップ以内で接続されることを制約として利用可能にすることができる。
【0118】
情報処理装置100によれば、スイッチ群に含まれる第3スイッチに直接接続されたスイッチの数が0以上であるか否かを示す第2真偽値変数の項1を設定することができる。情報処理装置100によれば、第1数分のスイッチのうち第3スイッチに直接接続されたスイッチの数が第1閾値以上であるか否かを示す第2真偽値変数の否定の項2を特定することができる。情報処理装置100によれば、第4スイッチを第1数分のスイッチに追加した第2数分のスイッチのうち第3スイッチに直接接続されたスイッチの数が第1閾値以上であるか否かを示す第2真偽値変数の項3を特定することができる。情報処理装置100によれば、項2,3の論理和の項4を設定することができる。情報処理装置100によれば、第1数分のスイッチのうち第3スイッチに直接接続されたスイッチの数が第1閾値以上であるか否かを示す第2真偽値変数の否定の項5を特定することができる。情報処理装置100によれば、第3スイッチと第4スイッチとのスイッチ間が1ホップ以内で接続されるか否かを示す第1真偽値変数の否定の項6を特定することができる。情報処理装置100によれば、項5,6の論理和と、第2数分のスイッチのうち第3スイッチに直接接続されたスイッチの数が第1閾値より1大きい数以上であるか否かを示す第2真偽値変数の項7との論理和の項8を設定することができる。情報処理装置100によれば、第3スイッチに直接接続されたスイッチの数が第2閾値以上であるか否かを示す第2真偽値変数の否定の項9を設定することができる。情報処理装置100によれば、設定した項1,4,7,8の論理積を表す第2制約論理式を設定することができる。これにより、情報処理装置100は、スイッチ群のトポロジー構造を探索するにあたって、スイッチj(j=1,2,・・・,x)のうち、スイッチiに直接接続された他のスイッチの数の上限値または下限値などを制約として利用可能にすることができる。
【0119】
情報処理装置100によれば、算出した第1真偽値変数の解と、算出した第2真偽値変数の解とを出力することができる。これにより、情報処理装置100は、システム利用者が、トポロジー構造を特定可能にすることができ、システム利用者にかかる作業負担の低減化を図ることができる。
【0120】
情報処理装置100によれば、算出した第1真偽値変数の解に基づいて、トポロジー構造を特定することができる。情報処理装置100によれば、特定したトポロジー構造を出力することができる。これにより、情報処理装置100は、システム利用者が、トポロジー構造を参照可能にすることができ、システム利用者にかかる作業負担の低減化を図ることができる。
【0121】
情報処理装置100によれば、SAT問題を設定することができる。これにより、情報処理装置100は、SATソルバにより、設定したSAT問題を効率よく解くことができる。このため、情報処理装置100は、制約を満たすスイッチ群のトポロジー構造を効率よく特定することができる。情報処理装置100は、制約を満たすトポロジー構造の探索にかかる所要時間の低減化を図ることができる。
【0122】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0123】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0124】
(付記1)トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式と、前記スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式とに基づく問題を設定し、
設定した前記問題を解くことにより、前記第1制約論理式および前記第2制約論理式を満たすよう、前記第1真偽値変数の解と、前記第2真偽値変数の解とを算出する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0125】
(付記2)前記第1制約論理式は、
前記スイッチ群に含まれる第1スイッチと第2スイッチとの組み合わせのスイッチ間が第1ホップ数以内で接続されるか否かを示す第1真偽値変数の否定と、
前記スイッチ群に含まれる前記組み合わせ以外の各スイッチに関する、当該スイッチと前記組み合わせのそれぞれのスイッチとのスイッチ間が前記第1ホップ数より1小さいホップ数以内で接続されるか否かを示す第1真偽値変数同士の論理積と、の論理和を表す、ことを特徴とする付記1に記載の情報処理プログラム。
【0126】
(付記3)前記第2制約論理式は、
前記スイッチ群に含まれる第3スイッチに直接接続された他のスイッチの数が0以上であるか否かを示す第2真偽値変数と、
前記スイッチ群に含まれる前記第3スイッチ以外の第1数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が第1閾値以上であるか否かを示す第2真偽値変数の否定と、前記スイッチ群に含まれる前記第3スイッチ以外の1つ分の第4スイッチを前記第1数分のスイッチに追加した第2数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値以上であるか否かを示す第2真偽値変数との論理和と、
前記第1数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値以上であるか否かを示す第2真偽値変数の否定と、前記第3スイッチと前記第4スイッチとのスイッチ間が1ホップ以内で接続されるか否かを示す第1真偽値変数の否定との論理和に対する、前記第2数分のスイッチのうち前記第3スイッチに直接接続された他のスイッチの数が前記第1閾値より1大きい数以上であるか否かを示す第2真偽値変数との論理和と、
前記第3スイッチに直接接続された他のスイッチの数が第2閾値以上であるか否かを示す第2真偽値変数の否定と、の論理積を表す、ことを特徴とする付記2に記載の情報処理プログラム。
【0127】
(付記4)算出した前記第1真偽値変数の解と、算出した前記第2真偽値変数の解とを出力する、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0128】
(付記5)算出した前記第1真偽値変数の解に基づいて、前記トポロジー構造を特定し、
特定した前記トポロジー構造を出力する、
処理を前記コンピュータに実行させることを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0129】
(付記6)前記問題は、充足可能性問題である、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0130】
(付記7)トポロジー構造を形成するスイッチ群に含まれるスイッチ間が所定ホップ数以内で接続されるか否かを示す第1真偽値変数を用いた第1制約論理式と、前記スイッチ群に含まれるスイッチに直接接続された他のスイッチの数が所定数以上であるか否かを示す第2真偽値変数を用いた第2制約論理式とに基づく問題を設定し、
設定した前記問題を解くことにより、前記第1制約論理式および前記第2制約論理式を満たすよう、前記第1真偽値変数の解と、前記第2真偽値変数の解とを算出する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【符号の説明】
【0131】
100 情報処理装置
110,600 スイッチ群
111 スイッチ
200 情報処理システム
201 問題求解装置
202 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 取得部
402 設定部
403 求解部
404 出力部
500,700 トポロジー構造
図1
図2
図3
図4
図5
図6
図7
図8