以下に添付図面を参照して本願に係る設計支援装置を有する設計支援装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
以下の実施例1では、図1を用いて、本願に係る設計支援装置の一例を説明する。図1は、実施例1に係る設計支援装置の機能構成を説明する図である。図1に示す例では、設計支援装置10には、入力装置1、出力装置2が接続されている。また、設計支援装置10は、受付部11、算出部12、特定部13、出力部14を有する。
設計支援装置10は、相互に通信する複数のノードを複数のネットワークに接続する際、各ノードをどのスイッチに接続するかを設計する。具体的には、設計支援装置10は、利用者からパラメータの入力を受け付けると、受け付けたパラメータに応じて、各ネットワークに含まれるスイッチに、どのノードを接続するかを特定する。そして、設計支援装置10は、各スイッチに特定したノードを接続する旨を示す接続情報を出力する。なお、ノードとは、例えば、サーバ等の情報処理装置やCPU(Central Processing Unit)等の演算処理装置を含む電子装置である。
ここで、図2を用いて、設計支援装置10が実行する処理の概要について説明する。図2は、実施例1に係る設計支援装置が実行する処理の概要を説明する図である。なお、図2には、複数のノードa〜dを二つのネットワークに接続する例について記載した。また、図2では、各ノードa〜dを単にa〜dと記載した。
例えば、図2中(A)に示す例では、図23中(z)と同様に、ノードa〜dが、スイッチ20、20a〜20cを有するネットワークと、スイッチ20d〜20gを有するネットワークとに接続されている。ここで、図2中(A)に示す例では、スイッチ20、20a〜20cを有するネットワークと、スイッチ20d〜20gを有するネットワークとは、同一のトポロジを有する。
このため、図2中(A)の直線および点線で示すように、ノードaとノードbとの通信経路、および、ノードcとノードdとの通信経路は、ホップ数が「1」となる。しかしながら、ノードaとノードcとの通信経路、ノードaとノードdとの通信経路、ノードbとノードcとの通信経路、ノードbとノードdとの通信経路は、どちらのネットワークを経由する場合にも、ホップ数が「3」となる。
そこで、設計支援装置10は、図2中(B)に示すように、スイッチ20、20a〜20cを有するネットワークのトポロジと、スイッチ20d〜20gを有するネットワークのトポロジとが異なるトポロジとなるように、各ネットワークを設計する。詳細には、設計支援装置10は、スイッチ20、20a〜20cのうち、ノードa〜dと接続されたスイッチ20b、20cのいずれかにノードa〜dが接続されるようネットワークを設計する。また、設計支援装置10は、スイッチ20d〜20gのうち、スイッチ20d、20eのいずれかにノードa〜dが接続されるようネットワークを設計する。
さらに、設計支援装置10は、ノードa〜dが接続されるスイッチ20b〜20eにそれぞれ異なるノードの組が接続されるよう、各ネットワークを設計する。すなわち、設計支援装置10は、共通する2つのノードを含んだノードの組が存在しないように、各スイッチ20b〜20eに対して接続されるノードの組を特定する。
例えば、図2中(B)に示す例では、設計支援装置10は、スイッチ20bにノードa、ノードbを接続し、スイッチ20cにノードc、ノードdを接続する旨の接続情報を生成する。また、設計支援装置10は、スイッチ20dにノードa、ノードcを接続し、スイッチ20eにノードb、ノードdを接続する旨の接続情報を生成する。
この結果、設計支援装置10は、ノードaとノードbとの通信経路およびノードcとノードdとの通信経路のホップ数を増加させることなく、ノードaとノードcとの通信経路およびノードbとノードdとの通信経路のホップ数を「1」にできる。このため、設計支援装置10は、各ノードa〜dが通信する際の遅延を削減することができる。なお、以下の説明では、ノードが接続されるスイッチを終端スイッチと記載する。
図1に戻り、説明を続ける。入力装置1は、設計するネットワークの各種パラメータの入力を行うための入力装置であり、例えば、マウス、キーボード、タッチパッド等の入力装置である。例えば、入力装置1は、利用者から各種パラメータとして、ネットワークに接続するノードの数「m」、各ノードに接続されるネットワークの数「n」を受け付ける。また、入力装置1は、ネットワークを形成するスイッチのうち、ノードと接続される終端スイッチに接続されるノード数「d」の入力を受け付ける。かかる場合は、入力装置1は、受け付けた各種パラメータの値「m」「n」「d」を設計支援装置10へ出力する。
出力装置2は、接続情報を出力するための出力装置であり、例えば、モニタ等接続情報を表示するための表示装置、もしくは、プリンタ等接続情報を印刷するための出力装置である。例えば、出力装置2は、設計支援装置10から接続情報を受信すると、受信した接続情報を表示する。
次に、設計支援装置10が有する機能構成について説明する。受付部11は、入力装置1を介して、利用者が入力した各種パラメータの値「m」「n」「d」を受け付ける。かかる場合、受付部11は、受け付けた各種パラメータの値「m」「n」「d」を算出部12に出力する。
算出部12は、利用者が入力した各種パラメータを用いて、各ネットワークの終端スイッチの数を算出する。詳細には、算出部12は、受付部11から各種パラメータの値「m」「n」「d」を受け付けると、ネットワークの数「n」が「2」であるか否かを判定する。そして、算出部12は、ネットワークの数「n」が「2」である場合は、「m」個のノードと接続可能な終端スイッチの数「s」を算出する。
具体的には、算出部12は、ノード数「m」を1つのスイッチが有するノード数「d」で除算し、除算した値よりも大きい最小の整数を算出する。例えば、算出部12は、「m=12」、「d=3」の場合は、「s=4」を算出する。そして、算出部12は、受信した各種パラメータの値「m=12」「n=2」「d=3」と、算出した値「s=4」とを特定部13に出力する。
一方、算出部12は、ネットワークの数「n」が「2」ではない場合、すなわち、ネットワークの数「m」が「3」以上である場合は、「m」を「d」で除算した値以上の整数であって、1を除く「n」以下の整数で割り切れない最小の数を「s」として算出する。例えば、算出部12は、「m=17」、「d=4」、「n=4」である場合は、「5」以上の整数であって、1を除く「4」以下の整数で割り切れない最小の数、すなわち「5」を「s」の値とする。そして、受信した各種パラメータの値「m=17」、「d=4」、「n=4」と、算出した値「s=5」とを特定部13に出力する。
特定部13は、入力された数のノードに対し、入力された数のネットワークを接続する際、各ネットワークの終端スイッチに接続するノードを特定する。具体的には、特定部13は、全てのネットワークに各ノードが接続されるように、各終端スイッチに接続されるノードを特定する。また、特定部13は、全ての終端スイッチに接続されるノードの組み合わせが、それぞれ異なるように、各終端スイッチに接続されるノードを特定する。
以下、特定部13が実行する処理の一例について、ネットワークの数「n」が「2」の場合と、「3」以上の場合とに分けて説明する。例えば、特定部13は、算出部12から各種パラメータ「m=12」「n=2」「d=3」「s=4」を受信する。かかる場合は、特定部13は、終端スイッチに接続されるノードの数「3」を各行の要素数とし、終端スイッチの数「4」を各列の要素数とする行列形式の番号を、「12」個のノードに対して付与する。詳細には、特定部13は、番号(1,1)〜(1,3)、(2,1)〜(2,3)、(3,1)〜(3,3)、(4,1)〜(4,3)を各ノードに付与する。
次に、特定部13は、1つ目のネットワークに含まれる各終端スイッチに接続されるノードの組として、同一の行番号が付与されたノードを特定する。例えば、特定部13は、1つめのネットワークに含まれるスイッチ20、20a〜20cに接続されるノードを特定する場合は、スイッチ20に接続されるノードの組として、番号(1,1)〜(1,3)が付与されたノードの組を特定する。また、特定部13は、スイッチ20aに接続されるノードの組として、番号(2,1)〜(2,3)が付与されたノードの組を特定し、スイッチ20bに接続されるノードの組として、番号(3,1)〜(3,3)が付与されたノードの組を特定する。また、特定部13は、スイッチ20cに接続されるノードの組として、番号(4,1)〜(4,3)が付与されたノードの組を特定する。
ここで、特定部13は、2つ目のネットワークに含まれる各終端スイッチに接続されるノードの組として、単純に列番号が同一となるノードの組を特定した場合は、番号(4,1)〜(4,3)が付与されたノードを2つ目のネットワークに接続できない。そこで、特定部13は、2つ目のネットワークに含まれる各終端スイッチに接続されるノードの組として、行番号と列番号とが1つずつ異なる番号が付与されたノードの組を特定する。
例えば、特定部13は、2つ目のネットワークに含まれるスイッチ20d〜20gに接続されるノードを特定する場合は、以下の処理を実行する。まず、特定部13は、番号(1,1)が付与されたノードを起点として選択する。また、特定部13は、番号(1,1)を起点として行番号と列番号とが1つずつ異なる番号であって、「d」の値から1を減算した数の番号を算出する。具体的には、特定部13は、番号(1,1)から行番号と列番号とに1を順次加算した2つの番号(2,2)、(3,3)を算出する。そして、特定部13は、起点として選択された番号(1,1)、および算出した番号(2,2)、(3,3)が付与されたノードをスイッチ20dに接続するノードの組とする。
次に、特定部13は、番号(1,1)と行番号が1つ異なる番号(2,1)が付与されたノードを起点として選択する。また、特定部13は、番号(2,1)から行番号と列番号とに1を順次加算した2つの番号(3,2)、(4,3)を算出する。そして、特定部13は、起点として選択された番号(2,1)、および算出した番号(3,2)、(4,3)が付与されたノードをスイッチ20eに接続するノードの組とする。
また、特定部13は、番号(2,1)と行番号が1つ異なる番号(3,1)が付与されたノードを起点として選択する。また、特定部13は、番号(3,1)から行番号と列番号とに1を加算した番号(4,2)を算出する。ここで、番号(4,2)の行番号と列番号とに1を加算した番号は(5,3)となるが、番号(5,3)が割当てられたノードは、存在しない。このため、特定部13は、行番号および列番号のうち、要素数を超えた番号については、値を「1」に戻して、番号を算出する。詳細には、特定部13は、番号(4,2)の行番号と列番号とに1を加算した場合は、番号(1,3)を算出する。そして、特定部13は、起点として選択された番号(3,1)、および算出した番号(4,2)、(1,3)が付与されたノードをスイッチ20fに接続するノードの組とする。
同様に、特定部13は、番号(4,1)が付与されたノードを起点とし、行番号と列番号とが1つずつ異なる番号、すなわち番号(1,2)、(2,3)を算出する。そして、特定部13は、番号(4,1)、(1,2)、(2,3)が付与されたノードをスイッチ20gに接続するノードの組とする。
かかる処理を実行することで、特定部13は、図3に示すように、各終端スイッチに接続するノードの組を特定する。図3は、ネットワークが2つ存在する際に、実施例1に係る設計支援装置が出力するネットワークの一例を説明する図である。なお、図3に示す例では、各ノードa〜lとスイッチ20、20a〜20gとの接続関係を記載した。なお、図3に示す例では、各ノードa〜lを付与された行列形式の番号順に表示した。
例えば、図3中点線に示すように、番号(1,1)〜(1,3)が付与されるノードa〜cは、スイッチ20に接続され、番号(2,1)〜(2,3)が付与されるノードd〜fは、スイッチ20aに接続される。また、番号(3,1)〜(3,3)が付与されるノードg〜iは、スイッチ20bに接続され、番号(4,1)〜(4,3)が付与されるノードj〜lは、スイッチ20cに接続される。
また、図3中(C)に示すように、番号(1,1)、(2,2)、(3,3)が付与されたノードa、ノードe、ノードiは、図3中(D)中の直線に示すように、スイッチ20dに接続される。また、図3中(E)に示すように、番号(2,1)、(3,2)、(4,3)が付与されたノードd、ノードh、ノードlは、図3中(D)中の長点線に示すように、スイッチ20eに接続される。また、図3中(F)に示すように、番号(3,1)、(4,2)、(1,3)が付与されたノードg、ノードk、ノードcは、図3中(D)中の2点破線に示すように、スイッチ20fに接続される。また、図3中(G)に示すように、番号(4,1)、(1,2)、(2,3)が付与されたノードj、ノードb、ノードfは、図3中(D)中の1点破線に示すように、スイッチ20gに接続される。
この結果、ノードa〜cの組、ノードd〜fの組、ノードg〜iの組、ノードj〜lの組は、スイッチ20、20a〜20cを介して、それぞれ1ホップでノード間通信を実行できる。さらに、ノードa、ノードe、ノードiの組、ノードd、ノードh、ノードlの組は、スイッチ20d、20eを介して、それぞれ1ホップでノード間通信を実行できる。また、ノードg、ノードk、ノードcの組、ノードj、ノードb、ノードfの組は、スイッチ20f、20gを介して、それぞれ1ホップでノード間通信を実行できる。このため、設計支援装置10は、ノード間通信の遅延を軽減できる。
なお、特定部13は、各ネットワークに含まれる終端スイッチ同士の接続関係についても特定する。例えば、特定部13は、1つ目のネットワークについて、スイッチ20、20a、20bを接続するスイッチ、およびスイッチ20a〜20cを接続するスイッチを特定する。また、特定部13は、2つ目のネットワークについて、スイッチ20d〜20fを接続するスイッチ、およびスイッチ20e〜20gを接続するスイッチを特定する。
次に、ネットワークの数「n」が「3」以上の場合に特定部13が実行する処理の流れについて説明する。例えば、特定部13は、ネットワークの数「n」が「2」の場合に実行する処理をそのまま拡張した場合には、複数の終端スイッチに共通する2つのノードを接続してしまう場合がある。
例えば、図4は、ネットワークが3つ存在する際に、実施例1に係る設計支援装置が実行する処理を説明する第1の図である。なお、図4には、各種パラメータの値が「m=12」「n=3」「d=3」「s=4」である際に、各終端スイッチに接続されるノードの組を記載した。例えば、特定部13は、上述した処理を実行することで、図4中(H)に示すように、1つ目のネットワークおよび2つ目のネットワークに含まれる終端スイッチに接続するノードの組として、図3と同様なノードの組を特定する。
ここで、3つ目のネットワークに含まれる終端スイッチに対して接続するノードの組を特定する処理として、例えば、起点となるノードの番号から順次列番号に1を加算し、行番号に2を加算した番号を算出し、算出した番号のノードを特定する処理が考えられる。しかしながら、特定部13が、かかる処理を実行した場合は、図4中(I)に示すように、スイッチの数が2の倍数となる際に、同一のノードの組を、複数の終端スイッチに接続してしまう場合がある。
詳細には、特定部13は、図4中(J)に示すように、ノードa〜cを1つ目のネットワークに含まれる終端スイッチに接続するノードの組として特定する。しかしながら、特定部13は、上述した処理を実行した場合は、ノードa、ノードh、ノードcを3つ目のネットワークに含まれる終端スイッチに接続するノードの組として特定してしまう。この結果、特定部13は、ノードaとノードcとの組を2つの終端スイッチに接続してしまうので、ノードaとノードcとを1ホップで接続する通信経路が2つ存在する結果、1ホップで通信可能なノードの組み合わせの数が減ってしまう。
そこで、設計支援装置10は、以下の処理を実行する。まず、算出部12は、上述したように、ネットワークの数「m」が「3」以上である場合は、「m」を「d」で除算した値以上の整数であって、1を除く「n」以下の整数で割り切れない最小の数を「s」として算出する。一方、特定部13は、「m」個のノードと、「d×s−m」個の仮想的なノードとに行列形式の番号を付与する。
そして、特定部13は、各ネットワークに含まれる終端スイッチに接続するノードの組を特定する。具体的には、特定部13は、p番目のネットワークに含まれるk番目の終端スイッチに接続するd個のノードとして、番号(k,1)(k+p,2)(k+3p,4)…(k+(d−1)p,d)が付与されたノードを特定する。ここで、pとは、0以上n−1以下となる整数であり、kとは、0以上s−1以下となる整数である。すなわち、特定部13は、列番号が1つ異なる度に、前記ネットワークに付与された整数番号と同じ値ずつ行番号が異なる番号が付与されたノードの組を特定する。
以下、図5を用いて、ネットワークが3つ存在する際に、特定部13が特定するノードの組の一例について説明する。図5は、ネットワークが3つ存在する際に、実施例1に係る設計支援装置が実行する処理を説明する第2の図である。なお、図5には、各種パラメータの値が「m=12」「n=3」「d=3」である際に、各終端スイッチに接続されるノードの組を記載した。また、図5に示す例では、各ノードを、各ノードに付与される番号に応じて行列形式で記載し、仮想的なノードを点線の丸印で囲んだ。
例えば、各種パラメータの値が「m=12」「n=3」「d=3」である場合は、算出部12は、終端スイッチの数「s=5」を算出する。ここで、終端スイッチが「5」つ存在する場合は、全部で15個のノードを接続可能である。そこで、特定部13は、12個のノードa〜lと、3つの仮想的なノードm〜oに対し、各行の要素数が「3」、各列の要素数が「5」となる行列形式の番号を付与する。
そして、特定部13は、図5中(K)に示すように、0番目のネットワークに含まれる各終端スイッチに接続するノードの組として、行番号が同一となるノードの組を特定する。詳細には、特定部13は、1番目の終端スイッチに接続するノードa〜cを特定し、2番目の終端スイッチに接続するノードd〜fを特定し、3番目の終端スイッチに接続するノードg〜iを特定する。また、特定部13は、4番目の終端スイッチに接続するノードj〜lを特定し、5番目の終端スイッチに接続するノードm〜oを特定する。なお、ノードm〜oは、仮想的なノードであるため、0番目のネットワークに含まれる5番目の終端スイッチには、ノードが接続されない。
また、特定部13は、図5中(L)に示すように、1番目のネットワークに含まれる各終端スイッチに接続するノードの組として、行番号と列番号とが1つずつ異なるノードの組を特定する。詳細には、特定部13は、1番目の終端スイッチに接続するノードa、ノードe、ノードiを特定し、2番目の終端スイッチに接続するノードd、ノードh、ノードlを特定し、3番目の終端スイッチに接続するノードg、ノードk、ノードoを特定する。また、特定部13は、4番目の終端スイッチに接続するノードj、ノードn、ノードcを特定し、5番目の終端スイッチに接続するノードm、ノードb、ノードfを特定する。なお、ノードm〜oは、仮想的なノードである。このため、1番目のネットワークに含まれる3番目の終端スイッチには、ノードg、ノードkのみが接続され、4番目の終端スイッチには、ノードj、ノードcのみが接続され、5番目の終端スイッチには、ノードb、ノードfが接続される。
また、特定部13は、図5中(M)に示すように、2番目のネットワークに含まれる各終端スイッチに接続するノードの組として、列番号が1つ異なる度に行番号が2つ異なるノードの組を特定する。詳細には、特定部13は、図5中(N)に示すように、1番目の終端スイッチに接続するノードとして、直線六角形で囲むノードa、ノードh、ノードoを特定する。また、特定部13は、2番目の終端スイッチに接続するノードとして、点線六角形で囲むノードd、ノードk、ノードcを特定し、3番目の終端スイッチに接続するノードとして、1点破線の六角形で囲むノードg、ノードn、ノードfを特定する。
また、特定部13は、4番目の終端スイッチに接続するノードとして、2点破線の六角形で囲むノードj、ノードb、ノードiを特定し、5番目の終端スイッチに接続するノードとして長点線の六角形で囲むノードm、ノードe、ノードlを特定する。なお、ノードm〜ノードoは、仮想的なノードであるため、1番目のスイッチには、ノードa、ノードhのみが接続され、3番目のスイッチには、ノードg、ノードfのみが接続され、5番目のスイッチには、ノードe、ノーlのみが接続される。
また、特定部13は、図5に示す0番目から2番目の各ネットワークに含まれる終端スイッチ同士の接続関係についても特定する。なお、終端スイッチ同士の接続関係を設計する処理については、任意の従来技術を適用することができるが、例えば、特定部13は、終端スイッチに接続するノードの数に1を加算した値、すなわち、各スイッチが有するポートの数を算出する。そして、特定部13は、ネットワークごとに、算出したポートの数と、終端スイッチの数と、ノードの数とに基づいて、終端スイッチ同士の接続関係を設計してもよい。
また、特定部13は、ツリー型のネットワークを設計する場合は、利用者から、各ネットワークにおけるスイッチの段数の指定を受け付け、受け付けた段数を有するツリー型のネットワークを設計しても良い。また、特定部13は、終端スイッチ同士をファブリックで接続するネットワークを設計してもよい。
その後、特定部13は、各終端スイッチに接続されるノードの組、各終端スイッチの接続関係、および各パラメータの値「m」「n」「d」「s」を出力部14に出力する。また、特定部13は、仮想的なノードが存在する場合は、仮想的なノードに付与された番号を出力部14に通知する。例えば、特定部13は、p番目のネットワークに含まれるk番目の終端スイッチに接続するノードに付与された番号を出力部14に通知する。
なお、上述した例では、算出部12と特定部13とは、「n=2」と「n≧3」の場合とで異なる処理を実行した。しかしながら、実施例はこれに限定されるものではない。すなわち、算出部12と特定部13とは、nの値が2であっても、「n≧3」の場合と同様の処理を実行することで、各ネットワークの各終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を特定することができる。
図1に戻り、出力部14は、特定部13が特定したノードの組を終端スイッチに接続する旨の接続情報を出力する。例えば、出力部14は、パラメータ「m」「n」「d」「s」の値、p番目のネットワークに含まれるk番目の終端スイッチに接続する各ノードに付与された番号、および、終端スイッチ同士の接続関係とを特定部13から受信する。かかる場合は、出力部14は、受信した情報を用いて、各ノードと各終端スイッチとの接続を示す接続表を作成し、作成した接続表を出力装置2へ出力する。
ここで、図6を用いて、出力部14が出力する接続表の一例について説明する。図6は、ネットワークが3つ存在する際に、実施例1に係る設計支援装置が特定するノードの組の一例を説明する図である。なお、図6には、特定部13が、各ネットワークの終端スイッチに接続されるノードの組として、図5に示すノードの組を特定した際に、出力部14が出力する接続表の一例について記載した。
例えば、出力部14は、直線の丸印で示すノードa〜lを横一列に配置し、つづけて点線の丸印で示す仮想的なノードm〜oを配置する。そして、出力部14は、ノードa〜c、ノードd〜f、ノードg〜i、ノードj〜l、ノードm〜oをそれぞれ四角で囲むことで、各ノードの組を0番目のネットワークに含まれる各終端スイッチに接続されるノードの組として表示する。
また、出力部14は、1番目のネットワークに含まれる終端スイッチとしてスイッチ20a〜20eを描画する。そして、出力部14は、各スイッチ20a〜20eと、図5中(L)に記載したノードの組とを直線でつなぐことで、1番目のネットワークに含まれる各スイッチ20a〜20eに接続されるノードの組を描画する。また、出力部14は、2番目のネットワークに含まれる終端スイッチとして、スイッチ20f〜20jを描画する。そして、出力部14は、各スイッチ20f〜20jと、図5中(M)に記載した各ノードの組とを直線でつなぐことで、2番目のネットワークに含まれる各スイッチ20f〜20jに接続されるノードの組を描画する。
また、出力部14は、スイッチ20a〜20eを接続するスイッチ20、およびスイッチ20f〜20jを接続するスイッチ20kを描画する。そして、出力部14は、描画した接続表のデータを出力装置2へ出力し、画面に接続表を表示、若しくは接続表の印刷を実行させる。この結果、設計支援装置10は、利用者に対し、各ノード間の通信遅延が少ないネットワークを構築する接続情報を出力することができる。
次に、図7〜9を用いて、設計支援装置10が実行する処理の他の例について説明する。なお、以下の説明では、各種パラメータ「m=17」「n=4」「d=4」の際に、設計支援装置10が実行する処理の流れについて説明する。まず、図7を用いて、設計支援装置10が終端スイッチに接続されるノードの組を特定する処理の例について説明する。
図7は、実施例1に係る設計支援装置が特定するノードの組を説明する図である。なお、図7に示す例では、ノードを直線の円で示し、仮想的なノードを点線の円で示した。また、図7に示す例では、各ノードおよび仮想的なノードに付与される番号を円の中に記載した。例えば、設計支援装置10は、各種パラメータ「m=17」「n=4」「d=4」の入力を受け付ける。かかる場合、設計支援装置10は、1つのネットワークに含まれる終端スイッチの数「s」として、「m/d=4.25」よりも大きい整数であって、「4.25」よりも少ない「1」以外の整数「4」、「3」、「2」により割り切れない整数「5」を算出する。
ここで、「d=4」の際、「s=5」個の終端スイッチには、合計で20個のノードを接続できる。このため、設計支援装置10は、17個のノードと、3個の仮想的なノードに、行列形式の番号を付与する。そして、設計支援装置10は、図7中(O)に示すように、0番目のネットワークが含む終端スイッチに接続されるノードの組として、行番号が同一の番号が付与されたノードを特定する。
例えば、設計支援装置10は、0番目の終端スイッチに接続されるノードの組として、番号(1,1)〜(1,4)が付与されたノードを特定し、1番目の終端スイッチに接続されるノードの組として、番号(2,1)〜(2,4)が付与されたノードを特定する。また、設計支援装置10は、2番目の終端スイッチに接続されるノードの組として、番号(3,1)〜(3,4)が付与されたノードを特定し、3番目の終端スイッチに接続されるノードの組として、番号(4,1)〜(4,4)が付与されたノードを特定する。また、設計支援装置10は、4番目の終端スイッチに接続されるノードとして、番号(5,1)〜(5,4)が付与されたノードを特定する。
また、設計支援装置10は、図7中(P)に示すように、1番目のネットワークが含む終端スイッチに接続されるノードの組として、行番号と列番号とが1つずつ異なる番号が付与されたノードを特定する。例えば、設計支援装置10は、図7中(Q)に示すように、0番目の終端スイッチに接続されるノードの組として、番号(1,1)(2,2)(3,3)(4,4)が付与されたノードを特定する。
また、設計支援装置10は、1番目の終端スイッチに接続されるノードの組として、番号(2,1)(3,2)(4,3)(5,4)が付与されたノードを特定する。また、設計支援装置10は、2番目の終端スイッチに接続されるノードの組として、番号(3,1)(4,2)(1,4)(5,3)が付与されたノードを特定する。また、設計支援装置10は3番目の終端スイッチに接続されるノードの組として、番号(4,1)(5,2)(1,3)(2,4)が付与されたノードを特定する。また、設計支援装置10は、4番目の終端スイッチに接続されるノードの組として、番号(5,1)(1,2)(2,3)(3,4)が付与されたノードを特定する。
また、設計支援装置10は、図7中(R)に示すように、2番目のネットワークが含む終端スイッチに接続されるノードの組として、列番号が1つ異なる度に、行番号が2つ異なる番号が付与されたノードを特定する。例えば、設計支援装置10は、図7中(S)に示すように、0番目の終端スイッチに接続されるノードの組として、太線の六角形で示す番号(1,1)(3,2)(5,3)(2,4)が付与されたノードを特定する。
また、設計支援装置10は、1番目の終端スイッチに接続されるノードの組として、細点線の六角形で示す番号(2,1)(4,2)(1,3)(3,4)が付与されたノードを特定する。また、設計支援装置10は、2番目の終端スイッチに接続されるノードの組として、太点線の六角形で示す番号(3,1)(5,2)(2,3)(4,4)が付与されたノードを特定する。また、設計支援装置10は、3番目の終端スイッチに接続されるノードの組として、2点破線の六角形で示す番号(4,1)(1,2)(3,3)(5,4)が付与されたノードを特定する。また、設計支援装置10は、4番目の終端スイッチに接続されるノードの組として、1点破線の六角形で示す番号(5,1)(2,2)(4,3)(1,4)が付与されたノードを特定する。
また、設計支援装置10は、図7中(T)に示すように、3番目のネットワークが含む終端スイッチに接続されるノードの組として、列番号が1つ異なる度に、行番号が3つ異なる番号が付与されたノードを特定する。例えば、設計支援装置10は、図7中(U)に示すように、0番目の終端スイッチに接続されるノードの組として、太線の六角形で示す番号(1,1)(4,2)(2,3)(5,4)が付与されたノードを特定する。
また、設計支援装置10は、1番目の終端スイッチに接続されるノードの組として、細点線の六角形で示す番号(2,1)(5,2)(3,3)(1,4)が付与されたノードを特定する。また、設計支援装置10は、2番目の終端スイッチに接続されるノードの組として、太点線の六角形で示す番号(3,1)(1,2)(4,3)(2,4)が付与されたノードを特定する。また、設計支援装置10は、3番目の終端スイッチに接続されるノードの組として、2点破線の六角形で示す番号(4,1)(2,2)(5,3)(3,4)が付与されたノードを特定する。また、設計支援装置10は、4番目の終端スイッチに接続されるノードの組として、1点破線の六角形で示す番号(5,1)(3,2)(1,3)(4,4)が付与されたノードを特定する。
その後、設計支援装置10は、図8および図9に示す接続表を生成し、生成した接続表を出力する。図8は、パラメータを一般化した場合に、実施例1に係る設計支援装置が出力する接続表の一例を説明する第1の図である。また、図9は、パラメータを一般化した場合に、実施例1に係る設計支援装置が出力する接続表の一例を説明する第2の図である。
なお、図8には、設計支援装置10が特定したノードの組のうち、0番目のネットワークと1番目のネットワークとに含まれる終端スイッチに接続されるノードの組を示す接続表を記載した。また、図9には、設計支援装置10が特定したノードの組のうち、2番目のネットワークと3番目のネットワークとに含まれる終端スイッチに接続されるノードの組を示す接続表を記載した。また、図8、図9に示す例では、各終端スイッチ同士を接続するスイッチについては、記載を省略した。
例えば、設計支援装置10は、図8中(V)に示すように、図7中(O)に示すノードの組と、0番目のネットワークに含まれる終端スイッチであるスイッチ20、20a〜20dとの接続を記載する。なお、スイッチ20、20a〜20dは、それぞれ0番目〜4番目の終端スイッチに対応する。
例えば、設計支援装置10は、スイッチ20にノード(1,1)〜(1,4)が接続され、スイッチ20aにノード(2,1)〜(2,4)が接続され、スイッチ20bにノード(3,1)〜(3,4)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20cにノード(4,1)〜(4,4)が接続され、スイッチ20dにノード(5,1)が接続される旨を示す接続表を作成する。なお、設計支援装置10は、番号(5,2)〜(5,4)が付与された仮想的なノードについては、接続表に記載しない。
また、設計支援装置10は、図8中(W)に示すように、図7中(P)に示すノードの組と、1番目のネットワークに含まれる終端スイッチであるスイッチ20e〜20iとの接続を記載する。なお、スイッチ20e〜20iは、順に、0番目、4番目、3番目、2番目、1番目の終端スイッチに対応する。
例えば、設計支援装置10は、スイッチ20eにノード(1,1)(2,2)(3,3)(4,4)が接続され、スイッチ20fにノード(1,2)(2,3)(3,4)(5,1)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20gにノード(1,3)(2,4)(4,1)が接続され、スイッチ20hにノード(1,4)(3,1)(4,2)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20iにノード(2,1)(3,2)(4,3)が接続される旨を示す接続表を作成する。
また、設計支援装置10は、図9中(X)に示すように、図7中(R)に示すノードの組と、2番目のネットワークに含まれる終端スイッチであるスイッチ20j〜20nとの接続を記載する。なお、スイッチ20j〜20nは、順に、0番目、3番目、1番目、4番目、2番目の終端スイッチに対応する。
例えば、設計支援装置10は、スイッチ20jにノード(1,1)(2,4)(3,2)が接続され、スイッチ20kにノード(1,2)(3,3)(4,1)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20lにノード(1,3)(2,1)(3,4)(4,2)が接続され、スイッチ20mにノード(1,4)(2,2)(4,3)(5,1)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20nにノード(2,3)(3,1)(4,4)が接続される旨を示す接続表を作成する。
また、設計支援装置10は、図9中(Y)に示すように、図7中(T)に示すノードの組と、3番目のネットワークに含まれる終端スイッチであるスイッチ20o〜20sとの接続を記載する。なお、スイッチ20o〜20sは、順に、0番目、3番目、1番目、4番目、2番目の終端スイッチに対応する。
例えば、設計支援装置10は、スイッチ20oにノード(1,1)(2,3)(4,2)が接続され、スイッチ20pにノード(2,2)(3,4)(4,1)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20qにノード(1,4)(2,1)(3,3)が接続され、スイッチ20rにノード(1,3)(3,2)(4,4)(5,1)が接続される旨を示す接続表を作成する。また、設計支援装置10は、スイッチ20sにノード(1,2)(3,1)(2,4)(4,3)が接続される旨を示す接続表を作成する。
この結果、設計支援装置10は、17個のノードを4つのネットワークに接続する際に、各ネットワークごとに、終端スイッチのいずれかに17個のノードを接続し、かつ、各終端スイッチに接続するノードの組として、それぞれ異なるノードの組を特定できる。この結果、設計支援装置10は、1ホップで通信可能なノードの組を最大化できるので、ノード間通信の遅延を軽減できる。
次に、図10を用いて、設計支援装置10が実行する処理の流れについて説明する。図10は、実施例1に係る設計支援装置が実行する処理の流れを説明するフローチャートである。まず、設計支援装置10は、入力装置1を介して、ネットワーク数「n」、終端スイッチに接続するノード数「d」、全てのノード数「m」の入力を受け付ける(ステップS101)。
次に、設計支援装置10は、「d」および「m」の値を用いて、スイッチ数「s」を算出する算出処理を実行し(ステップS102)、ネットワークを識別する変数pの値を「0」に初期化する(ステップS103)。また、設計支援装置10は、pの値が「n」よりも小さいか否かを判定し(ステップS104)、pの値が「n」よりも小さいと判定した場合は(ステップS104:Yes)、終端スイッチを識別する変数kの値を「1」に設定する(ステップS105)。そして、設計支援装置10は、変数kの値が「s」以下となるか否かを判定する(ステップS106)。
また、設計支援装置10は、変数kの値が「s」以下となる場合は(ステップS106:Yes)、p番目のネットワークにおけるk番目のスイッチに接続されるノードの組を特定する特定処理を実行する(ステップS107)。次に、設計支援装置10は、変数kの値に「1」を加算し(ステップS108)、ステップS106を実行する。
また、設計支援装置10は、変数kの値が「s」よりも大きい場合は(ステップS106:No)、変数pの値に「1」を加算し(ステップS109)、ステップS104を実行する。また、設計支援装置10は、変数pの値がn以上となる場合は(ステップS104:No)、ステップS107に示す特定処理によって特定されたノードの組を示す接続表を作成する(ステップS110)。そして、設計支援装置10は、作成した接続表を出力して(ステップS111)、処理を終了する。
次に、図11を用いて、設計支援装置10が実行する算出処理の流れについて説明する。図11は、実施例1に係る設計支援装置がスイッチ数を算出する処理の流れを説明するフローチャートである。なお、図11に示す処理は、図10中ステップS102に記載した算出処理である。
まず、設計支援装置10は、「m」の値に「1」を加算した値を「d」の値で除算した値を「s」とし(ステップS201)、変数iの値を「2」に初期化する(ステップS202)。また、設計支援装置10は、変数iの値が「n」の値よりも小さいか否かを判定する(ステップS203)。そして、設計支援装置10は、変数iの値が「n」よりも小さい場合は(ステップS203:Yes)、「s」の値を変数iの値で除算した剰余が「0」であるか否かを判定する(ステップS204)。
また、設計支援装置10は、「s」の値を「i」の値で除算した剰余が「0」である場合は(ステップS204:Yes)、「s」の値に「1」を加算し(ステップS205)、変数iの値に「1」を加算して(ステップS206)、ステップS203を実行する。ここで、設計支援装置10は、「s」の値を変数iの値で除算した剰余が「0」ではない場合は(ステップS204:No)、ステップS205の実行をスキップし、ステップS206を実行する。また、設計支援装置10は、変数iの値が「n」の値以上となる場合は(ステップS203:No)、「s」の値を出力して算出処理を終了する。
次に、図12を用いて、設計支援装置10が実行する特定処理の流れについて説明する。図12は、実施例1に係る設計支援装置がノードの組を特定する処理の流れを説明するフローチャートである。なお、図12に示す処理は、図10中ステップS107に記載した特定処理である。
まず、設計支援装置10は、ノードに付与された番号の行番号を示す変数xの値を「1」に初期化し(ステップS301)、変数xの値が「s」の値よりも小さいか否かを判定する(ステップS302)。また、設計支援装置10は、変数xの値が「s」の値よりも小さい場合は(ステップS302:Yes)、変数iの値を「1」に初期化し(ステップS303)、変数iの値が「d」の値よりも小さいか否かを判定する(ステップS304)。
そして、設計支援装置10は、変数iの値が「d」の値よりも小さい場合は(ステップS304:Yes)、変数iの値と「p」の値との積を「s」の値で除算した剰余に1を加算した値を、ノードに付与された番号の列番号を示す変数「y」とする(ステップS305)。また、設計支援装置10は、番号(x、y)が付与されたノードをノードの組に追加し(ステップS306)、変数iの値に「1」を加算して(ステップS307)、ステップS304を実行する。
また、設計支援装置10は、変数iの値が「d」の値以上となる場合は(ステップS304:No)、変数xの値に「1」を加算して(ステップS308)、ステップS302を実行する。また、設計支援装置10は、変数xの値が「s」の値以上となる場合は(ステップS302:No)、特定処理を終了する。
[設計支援装置10の効果]
上述したように、設計支援装置10は、ネットワークに接続するノードの数「m」、各ノードに接続されるネットワークの数「n」、および、終端スイッチに接続されるノードの数「d」の入力を受け付ける。また、設計支援装置10は、ノードの数「m」、ネットワークの数「n」、終端スイッチに接続されるノードの数「d」の値から、各ネットワーク内でノードと接続される終端スイッチの数「s」を算出する。
そして、設計支援装置10は、各ネットワークが有する「s」個の終端スイッチのいずれかに各ノードが接続され、かつ、全てのネットワークが有する終端スイッチに接続されるノードの組がそれぞれ異なるように、各終端スイッチに接続されるノードを特定する。その後、設計支援装置10は、特定されたノードを終端スイッチに接続する旨の接続情報を出力する。
このため、設計支援装置10は、1ホップで通信可能なノードの組の数を増やすことができるので、各ノードが複数のネットワークに接続されている際に、ノード間通信の遅延を削減することができる。
また、設計支援装置10は、受け付けたネットワークの数が「2」である場合は、ノードの数「m」を、1つの終端スイッチに接続されるノードの数「d」で除算した値よりも大きい整数のうち、値が最小の整数をスイッチの数「s」として算出する。また、設計支援装置10は、1つの終端スイッチに接続されるノードの数「d」を各行の要素数とし、終端スイッチの数「s」を各列の要素数とする行列形式の番号を「m」個のノードに付与する。
そして、設計支援装置10は、第1のネットワークに含まれる各終端スイッチに接続されるノードの組として、同一の行番号が付与されたノードの組を特定する。また、設計支援装置10は、第2のネットワークに含まれる各終端スイッチに接続されるノードの組として、行番号と列番号とが1ずつ異なる番号が付与されたノードの組を特定する。すなわち、設計支援装置10は、行番号が1つ異なる度に列番号が1つ異なる番号が付与されたノードの組を特定する。このため、設計支援装置10は、各ノードに2つのネットワークを接続する際、1ホップで通信可能なノードの組の数を増やすことができる。この結果、設計支援装置10は、ノード間通信の遅延を削減することができる。
また、設計支援装置10は、ノードの数「m」を、1つの終端スイッチに接続されるノードの数「d」で除算した値よりも大きい整数のうち、受け付けたネットワークの数以下の整数で割り切れない最小の整数をスイッチの数「s」として算出する。また、設計支援装置10は、受け付けた数のネットワークに0から始まる整数番号を付与する。そして、設計支援装置10は、ネットワークごとに、以下の処理を実行する。すなわち、設計支援装置10は、ネットワークに含まれる各終端スイッチに接続されるノードの組として、列番号が1つ異なる度に、行番号がネットワークに付与された整数番号と同じ値だけ異なる番号が付与されたノードの組を特定する。
このため、設計支援装置10は、複数のノードに任意の数のネットワークが接続される際に、各ネットワークが有する終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を特定することができる。この結果、設計支援装置10は、任意の数のネットワークが各ノードに接続される際に、1ホップで通信可能なノードの組の数を増やすせるので、ノード間通信の遅延を削減することができる。
上述した設計支援装置10は、入力された各種パラメータの値から、各終端スイッチに接続されるノードに付与された番号を算出することで、各ノードを全てのネットワークに接続し、かつ、各終端スイッチに異なるノードの組を接続した。しかしながら、実施例はこれに限定されるものではない。以下では、実施例2として、相互直行ラテン方格を利用して、各終端スイッチに接続されるノードの組を特定する設計支援装置10aについて説明する。なお、以下の説明では、実施例1と同様の機能を発揮する装置や機能構成については、同一の符号を付し、説明を省略する。
図13は、実施例2に係る設計支援装置の機能構成を説明する図である。図13に示すように、設計支援装置10aは、受付部11、算出部12a、特定部13a、出力部14、記憶部15を有する。また、記憶部15は、相互直行ラテン方格データ16を記憶する。
相互直行ラテン方格データ16は、複数の相互直行ラテン方格を含むデータである。以下、相互直行ラテン方格データ16に含まれる相互直行ラテン方格について説明する。例えば、ラテン方格とは、任意の整数qについて、q行q列の正方行列であり、1〜qまでの整数値を要素に含む行列である。また、ラテン方格は、任意の行および任意の列に同じ整数値を含まない行列である。このため、ラテン方格の任意の行および任意の列には、1〜qまでの整数値が1つずつ存在する。
また、相互直行ラテン方格とは、ラテン方格のうち、各列に含まれる要素の順序がすべて異なるラテン方格である。例えば、ある列の要素が(1,2,3,4)となるラテン方格は、要素が(2,3,4,1)、(3,4,1,2)、または(4,1,2,3)となる列を含む場合は、相互直行ラテン方格ではない。また、q行q列の相互直行ラテン方格は、qの値が素数もしくは素数のべき乗である場合、q−1個存在し、例えば統計処理ソフトウェアRのcrossdesパッケージを用いて、算出が可能である。
設計支援装置10aは、ネットワークごとに異なる相互直行ラテン方格を選択する。そして、設計支援装置10aは、選択した相互直行ラテン方格に含まれる各要素とノードとを対応付けし、値が同一となる要素と対応付けられたノードの組を1つの終端スイッチに接続されるノードの組として特定する。この結果、上述した相互直行ラテン方格の性質により、設計支援装置10aは、各終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を特定する。この結果、設計支援装置10aは、相互直行ラテン方格に含まれる各要素を参照するだけで、各終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を特定できる。
以下、図14を用いて、相互直行ラテン方格データ16に含まれる相互直行ラテン方格の一例について説明する。図14は、実施例2に係る設計支援装置が記憶する相互直行ラテン方格データの一例を説明する図である。なお、図14には、4行4列の正方行列である相互直行ラテン方格の一例について記載した。
例えば、図14中(a)に示すように、第1の相互直行ラテン方格は、1行目に要素(1,2,3,4)を有し、2行目に要素(2,1,4,3)を有し、3行目に要素(3,4,1,2)を有し、4行目に要素(4,3,2,1)を有する。また、図14中(b)に示すように、第2の相互直行ラテン方格は、1行目に要素(1,2,3,4)を有し、2行目に要素(3,4,1,2)を有し、3行目に要素(4,3,2,1)を有し、4行目に要素(2,1,4,3)を有する。また、図13中(c)に示すように、第3の相互直行ラテン方格は、1行目に要素(1,2,3,4)を有し、2行目に要素(4,3,2,1)を有し、3行目に要素(2,1,4,3)を有し、4行目に要素(3,4,1,2)を有する。
なお、図14に示す相互直行ラテン方格は、あくまで一例であり、相互直行ラテン方格データ16には、他にも、3行3列、5行5列、7行7列、8行8列、9行9列、11行11列の相互直行ラテン方格が含まれるものとする。
図13に戻り、説明を続ける。算出部12aは、受付部11から各種パラメータの値「m」「n」「d」を用いて、各ネットワークの終端スイッチの数を算出する。詳細には、算出部12aは、「m」を「d」の値で除算した値よりも大きい整数であって、1を除く「n」以下の整数で割り切れない値、および、素数のべき乗となる値のうち最小の整数を算出する。例えば、算出部12aは、「m=12」、「d=3」、「n=4」である場合は、「m/d=4」を算出する。
ここで、算出部12aが算出した「4」以上の整数のうち、「2」、「3」、「4」で割り切れない最小の整数は「5」である。一方、算出部12aが算出した「4」以上の整数のうち、素数のべき乗となる最小の整数は「4」である。このため、算出部12aは、「4」以上の整数のうち、「2」、「3」、「4」で割り切れない最小の整数「5」、および、素数のべき乗となる最小の整数「4」のうち、値がより小さい整数「4」をスイッチの数「s」として算出する。
その後、算出部12aは、各パラメータの値「m」「n」「d」と、算出したスイッチの数「s」とを特定部13aに出力する。また、算出部12aは、算出したスイッチの数「s」が素数のべき乗である場合は、スイッチの数が素数のべき乗である旨を特定部13aに通知し、「s」が素数のべき乗ではない場合は、スイッチの数が素数のべき乗である旨を特定部13aに通知する。
特定部13aは、各終端スイッチに接続されるノードの組を特定する。具体的には、特定部13aは、各パラメータの値「m」「n」「d」と、算出したスイッチの数「s」とを算出部12aから受信する。また、特定部13aは、スイッチの数「s」が素数のべき乗であるか否かの通知を算出部12aから受信する。
そして、特定部13aは、スイッチの数「s」が素数のべき乗ではない旨の通知を受信した場合は、図1に示す特定部13と同様の処理を実行することで、各終端スイッチに接続されるノードの組を特定し、特定したノードの組を出力部14に出力する。
一方、特定部13aは、スイッチの数「s」が素数のべき乗である旨の通知を受信した場合は、以下の処理を実行する。まず、特定部13aは、終端スイッチに接続されるノードの数「d」を各行の要素数とし、終端スイッチの数「s」を各列の要素数とする行列形式の番号を、「m」個のノードに対して付与する。また、特定部13aは、各ネットワークが有する「s」個の終端スイッチに、1からSまでの整数番号を付与する。また、特定部13aは、s行s列の相互直行ラテン方格を、相互直行ラテン方格データ16から「n」個抽出し、取得した各相互直行ラテン方格と「n」個のネットワークとを対応付ける。
そして、特定部13aは、ネットワークごとに、以下の処理を実行する。例えば、特定部13aは、k番目の終端スイッチに対して接続されるノードの組を特定する場合は、対応付けられた相互直行ラテン方格に含まれる各要素のうち、値が「k」となる要素を抽出する。そして、特定部13aは、抽出した要素と同一の行番号および列番号が付与されたノードを、終端スイッチに接続されるノードの組として特定する。
以下、特定部13aが実行する処理の一例について説明する。なお、以下の説明では、「m=12」、「n=4」、「d=3」の際に特定部13aが実行する処理の一例について説明する。例えば、図15は、実施例2に係る設計支援装置が相互直行ラテン方格を利用して設計するネットワークの一例を説明する図である。例えば、特定部13aは、ノードa〜lに対して、行列形式の番号を付与することで、図15中(d)に示す相互直行ラテン方格の各要素とノードa〜lとを対応付ける。
そして、特定部13aは、1番目の終端スイッチに接続するノードの組として、図15中(d)に示す相互直行ラテン方格の各要素のうち、値が「1」の要素と対応付けられたノードa、ノードe、ノードiを特定する。また、特定部13aは、2番目の終端スイッチに接続するノードの組として、値が「2」の要素と対応付けられたノードb、ノードd、ノードlを特定する。
また、特定部13aは、3番目の終端スイッチに接続するノードの組として、値が「3」の要素と対応付けられたノードc、ノードg、ノードkを特定する。また、特定部13aは、4番目の終端スイッチに接続するノードの組として、値が「4」の要素と対応付けられたノードf、ノードh、ノードjを特定する。この結果、特定部13aは、図15中(e)に示すように、1番目から4番目までの終端スイッチに接続するノードの組を特定する。
また、特定部13aは、ネットワークごとに異なる相互直行ラテン方格を用いて、上述した処理を実行し、各終端スイッチに接続されるノードの組を特定する。詳細には、特定部13aは、0番目のネットワークに含まれる各終端スイッチに接続されるノードの組として、特定部13と同様に、行番号が同一となるノードの組を特定する。続いて、特定部13aは、図14中(a)に示した相互直行ラテン方格を用いて、1番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。
また、特定部13aは、図14中(b)に示した相互直行ラテン方格を用いて、2番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。また、特定部13aは、図14中(c)に示した相互直行ラテン方格を用いて、3番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。この結果、例えば、特定部13aは、各終端スイッチに接続されるノードの組として、図16に示すノードの組を特定する。
図16は、実施例2に係る設計支援装置が設計するネットワークの一例を説明するための図である。なお、図16には、0番目のネットワークについて特定したノードの組を図16中(f)に示し、1番目のネットワークについて図14中(a)に示す相互直行ラテン方格を用いて特定したノードの組を図16中(g)に示した。また、図16には、2番目のネットワークについて図14中(b)に示す相互直行ラテン方格を用いて特定したノードの組を図16中(h)に示した。また、図16には、3番目のネットワークについて図14中(c)に示す相互直行ラテン方格を用いて特定したノードの組を図16中(i)に示した。
例えば、特定部13aは、図16中(f)に示すように、0番目のネットワークに含まれる各終端スイッチに接続されるノードの組として、ノードa〜c、ノードd〜f、ノードg〜i、ノードj〜lの組を特定する。また、特定部13aは、図16中(g)に示すように、1番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。詳細には、特定部13aは、直線の六角形で示すように、ノードa、ノードe、ノードiの組を特定し、点線の六角形で示すように、ノードd、ノードb、ノードlの組を特定する。また、特定部13aは、1点破線の六角形で示すように、ノードg、ノードk、ノードcの組を特定し、2点破線で示すように、ノードj、ノードh、ノードfの組を特定する。
また、特定部13aは、図16中(h)に示すように、2番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。詳細には、特定部13aは、直線の六角形で示すように、ノードa、ノードk、ノードfの組を特定し、点線の六角形で示すように、ノードj、ノードb、ノードiの組を特定する。また、特定部13aは、1点破線の六角形で示すように、ノードd、ノードh、ノードcの組を特定し、2点破線で示すように、ノードg、ノードe、ノードlの組を特定する。
また、特定部13aは、図16中(i)に示すように、3番目のネットワークに含まれる各終端スイッチに接続されるノードの組を特定する。詳細には、特定部13aは、直線の六角形で示すように、ノードa、ノードh、ノードlの組を特定し、点線の六角形で示すように、ノードg、ノードb、ノードfの組を特定する。また、特定部13aは、1点破線の六角形で示すように、ノードj、ノードe、ノードcの組を特定し、2点破線で示すように、ノードd、ノードk、ノードiの組を特定する。
この結果、設計支援装置10aは、図17、および、図18に示す接続表を出力する。図17は、実施例2に係る設計支援装置が出力する接続表の一例を説明する第1の図である。また、図18は、実施例2に係る設計支援装置が出力する接続表の一例を説明する第2の図である。例えば、設計支援装置10aは、図17中(j)に示すように、0番目のネットワークに含まれる終端スイッチであるスイッチ20、20a〜20cに、ノードa〜c、ノードd〜f、ノードg〜i、ノードj〜lの組を接続する旨を示す接続表を出力する。
また、設計支援装置10aは、図17中(k)に示すように、1番目のネットワークに含まれる終端スイッチであるスイッチ20d〜20gに、特定したノードの組を接続する旨を示す接続表を出力する。詳細には、設計支援装置10aは、スイッチ20dにノードa、ノードe、ノードiを接続し、スイッチ20eに、ノードb、ノードd、ノードlの組を接続し、スイッチ20fに、ノードc、ノードg、ノードkを接続する旨を示す接続表を出力する。また、設計支援装置10aは、スイッチ20gに、ノードf、ノードj、ノードhを接続する旨を示す接続表を出力する。
また、設計支援装置10aは、図18中(l)に示すように、2番目のネットワークに含まれる終端スイッチであるスイッチ20h〜20kに、特定したノードの組を接続する旨を示す接続表を出力する。詳細には、設計支援装置10aは、スイッチ20hにノードa、ノードf、ノードkを接続し、スイッチ20iに、ノードb、ノードi、ノードjの組を接続し、スイッチ20jに、ノードc、ノードd、ノードhを接続する旨を示す接続表を出力する。また、設計支援装置10aは、スイッチ20kに、ノードe、ノードg、ノードlを接続する旨を示す接続表を出力する。
また、設計支援装置10aは、図18中(m)に示すように、3番目のネットワークに含まれる終端スイッチであるスイッチ20l〜20oに、特定したノードの組を接続する旨を示す接続表を出力する。詳細には、設計支援装置10aは、スイッチ20lにノードa、ノードh、ノードlを接続し、スイッチ20mに、ノードb、ノードf、ノードgの組を接続し、スイッチ20nに、ノードc、ノードe、ノードjを接続する旨を示す接続表を出力する。また、設計支援装置10aは、スイッチ20oに、ノードd、ノードi、ノードkを接続する旨を示す接続表を出力する。
このように、設計支援装置10aは、記憶部15が記憶する相互直行ラテン方格を用いて、各終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を特定することができる。この結果、設計支援装置10aは、各終端スイッチに接続されるノードの組を容易に特定することができる。
なお、設計支援装置10aは、ノードの組を特定する度に、相互直行ラテン方格を算出してもよい。例えば、設計支援装置10aは、スイッチの数「s」を算出し、算出したスイッチの数「s」が素数のべき乗となる場合は、行方向および列方向の要素数が「s」となる相互直行ラテン方格を算出し、算出した相互直行ラテン方格を用いて、各終端スイッチに接続されるノードの組を特定してもよい。
次に、図19〜図21を用いて、設計支援装置10aが実行する処理の流れについて説明する。なお、設計支援装置10aは、図10に示した処理と同様の処理を実行することで、終端スイッチに接続されるノードの組を特定するものとする。また、以下の説明では、設計支援装置10aが実行する処理のうち、図10中ステップS102に示す算出処理と、ステップS107に示す特定処理の流れについて説明する。
まず、図19を用いて、設計支援装置10aが実行する算出処理の流れについて説明する。図19は、実施例2に係る設計支援装置がスイッチ数を算出する処理の流れを説明するフローチャートである。なお、図19に示す各処理のうち、図11に示す各処理と同様の処理については、同一の符号を付し、説明を省略する。
例えば、設計支援装置10aは、図19に示すように、図11に示すステップS204の処理とステップS205の処理との間に、ステップS401に示す処理を実行する。詳細には、設計支援装置10aは、「s」の値を「i」の値で除算した剰余が「0」である場合は(ステップS204:Yes)、「s」の値が素数のべき乗であるか否かを判定する(ステップS401)。そして、設計支援装置10aは、「s」の値が素数のべき乗ではない場合は(ステップS401:No)、ステップS205を実行する。一方、設計支援装置10aは、「s」の値が素数のべき乗である場合は(ステップS401:Yes)、ステップS205の実行をスキップし、ステップS206を実行する。
次に、図20を用いて、設計支援装置10aが実行する特定処理の流れについて説明する。図20は、実施例2に係る設計支援装置がノードの組を特定する処理の流れを説明するフローチャートである。なお、図20に示す各処理のうち、図12に示す各処理と同様の処理については、同一の符号を付し、説明を省略する。また、図21には、p番目のネットワークに含まれる終端スイッチのうち、k番目の終端スイッチに接続されるノードを特定する処理について記載した。
例えば、設計支援装置10aは、図12に示すステップS301の処理の前にステップS501に示す処理を実行し、ステップS305の処理に変えて、ステップS502に示す処理を実行する。詳細には、設計支援装置10aは、p番目のネットワークに含まれる終端スイッチに接続されるノードの組を特定する場合は、相互直行ラテン方格データ16に格納された相互直行ラテン方格のうち、p番目の相互直行ラテン方格を読出す(ステップS501)。なお、pの値は0以外の値であるものとする。
そして、設計支援装置10aは、ステップS304を実行し、変数「i」の値が「d」の値よりも小さい場合は(ステップS304:Yes)、ステップS501にて読出した相互直行ラテン方格を用いて変数「y」の値を特定する(ステップS502)。そして、設計支援装置10aは、番号(x、y)が付与されたノードをノードの組に追加する(ステップS306)。
次に、図21を用いて、設計支援装置10aが、相互直行ラテン方格を用いて変数「y」の値を特定する処理の流れについて説明する。図21は、実施例2に係る設計支援装置がyの値を特定する処理の流れを説明するフローチャートである。なお、図21には、図20中ステップS502に記載した「y」の値を特定する処理を詳細に記載した。
例えば、設計支援装置10aは、変数「i」の値を「1」に初期化する(ステップS601)。そして、設計支援装置10aは、図20中ステップS501にて読み出した相互直行ラテン方格のうち、「x」行「i」列の要素が終端スイッチの番号「k」の値と一致するか否かを判定する(ステップS602)。その後、設計支援装置10aは、「x」行「i」列の要素が終端スイッチの番号「k」の値と一致しない場合は(ステップS602:No)、「i」の値に「1」を加算し(ステップS603)、ステップS602を実行する。また、設計支援装置10aは、「x」行「i」列の要素が終端スイッチの番号「k」の値と一致する場合は(ステップS602:Yes)、「y」の値を「i」とし(ステップS604)、処理を終了する。
[設計支援装置10aの効果]
上述したように、設計支援装置10aは、「m/d」以上となる整数であって、1を除く「n」以下の整数および素数のべき乗となる整数のうち、最小の整数を各ネットワークに含まれる終端スイッチの数「s」として算出する。また、設計支援装置10aは、終端スイッチの数「s」の値が素数のべき乗である場合は、各ネットワークにそれぞれ異なる相互直行ラテン方格を対応付ける。
そして、設計支援装置10aは、ネットワークごとに、以下の処理を実行する。すなわち、設計支援装置10aは、対応付けられた相互直行ラテン方格の各要素のうち、値が同一となる要素を抽出し、抽出した要素と同一の行番号および列番号が付与されたノードの組を、同一の終端スイッチに接続されるノードの組として特定する。
このように、設計支援装置10aは、相互直行ラテン方格を用いて、各終端スイッチに接続されるノードの組を特定する。このため、設計支援装置10aは、全てのネットワークにおいて、各終端スイッチに接続されるノードの組として、それぞれ異なるノードの組を容易に特定することができる。
また、設計支援装置10aは、行数が素数のべき乗となる相互直行ラテン方格を記憶する。そして、設計支援装置10aは、終端スイッチの数「s」の値が素数のべき乗である場合は、記憶された相互直行ラテン方格のうち、行数が終端スイッチの数「s」と同じ相互直行ラテン方格を用いて、各終端スイッチに接続されるノードの組を特定する。このため、設計支援装置10aは、それぞれ異なるノードの組を容易に特定することができる。