(57)【特許請求の範囲】
【請求項１】
通信リンクにより接続している隣接装置のポテンシャル変数及び補助変数を保存し、隣接装置からポテンシャル変数及び補助変数を受信する度に、保存している該隣接装置のポテンシャル変数及び補助変数を更新する第１手段と、
自装置のポテンシャル変数、補助変数及び密度制御変数を保存し、自装置のポテンシャル変数及び補助変数を隣接装置に送信する第２手段と、
各隣接装置のポテンシャル変数及び補助変数、並びに、自装置のポテンシャル変数、補助変数及び密度制御変数に基づき自装置のポテンシャル変数及び補助変数を所定の計算式により更新する第３手段と、
自装置のポテンシャル変数と、各隣接装置のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する第４手段と、
を備えており、
第４手段は、自装置のポテンシャル変数が、全隣接装置のポテンシャル変数より大きいこと、或いは、小さいことを、前記所定の機能の実行を行う条件の１つとし、
前記所定の計算式は、自装置のポテンシャル変数の更新の際、該ポテンシャル変数が一定の閾値以上である場合０である項および乱数項を含む、
通信装置。
【請求項２】
前記所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、
前記極大値と極小値の繰り返し密度は、前記密度制御変数により変化する、
請求項１に記載の通信装置。
【請求項３】
Ａ、ΔＴ、Δｘ、ｈ及びｋを正の定数とすると、
隣接装置ｎの補助変数ｖｎｔ、自装置のポテンシャル変数ｕｉｔ、自装置の補助変数ｖｉｔ及び自装置の密度制御変数ｃｉｔから、自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉｃを求める計算式は、
【数１】
0005522800.tif 000018
であり、
隣接装置ｎのポテンシャル変数ｕｎｔ、自装置のポテンシャル変数ｕｉｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを求める計算式は、
【数２】
0005522800.tif 000019
であり、
【数３】
0005522800.tif 000020
であり、δ（ｔ）は−１≦δ（ｔ）≦１を満たす乱数である
請求項１又は２に記載の通信装置。
【請求項４】
Ａ、ΔＴ、Δｘ、ｈ及びｋを正の定数とすると、
隣接装置ｎの２つの補助変数ｖｎｔ及びｗｎｔ、自装置のポテンシャル変数ｕｉｔ、自装置の２つの補助変数ｖｉｔ及びｗｉｔ、自装置の密度制御変数ｃｉｔから自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉｃ及び補助変数ｗｉｔ＋２Ｉｃを求める計算式は、それぞれ、
【数４】
0005522800.tif 000021
であり、
隣接装置ｎのポテンシャル変数ｕｎｔ、自装置のポテンシャル変数ｕｉｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを求める計算式は、
【数５】
0005522800.tif 000022
であり、
【数６】
0005522800.tif 000023
であり、δ（ｔ）は−１≦δ（ｔ）≦１を満たす乱数である
請求項１又は２に記載の通信装置。
【請求項５】
第４手段は、自装置のポテンシャル変数を更新することによる値の変化を、所定の閾値により大小判定し、変化が小さいことを前記所定の機能の実行を行う条件の１つとする、
請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
密度制御変数を、自装置の内部又は外部の監視対象の値により決定する、
請求項１から５のいずれか１項に記載の通信装置。
【請求項７】
それぞれがポテンシャル変数、補助変数及び密度制御変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、
各通信装置が、通信リンクにより接続している隣接装置にポテンシャル変数及び補助変数を広告する第１ステップと、
各通信装置が、隣接装置からポテンシャル変数及び補助変数を受信した場合において、該隣接装置のポテンシャル変数及び補助変数を既に保存している場合には、保存している該隣接装置のポテンシャル変数及び補助変数を更新し、保存していない場合には、該隣接装置のポテンシャル変数及び補助変数を保存する第２ステップと、
各通信装置が、各隣接装置のポテンシャル変数及び補助変数、並びに、自装置のポテンシャル変数、補助変数及び密度制御変数に基づき、自装置のポテンシャル変数及び補助変数を所定の計算式により更新する第３ステップと、
を繰り返し、
各通信装置が、自装置のポテンシャル変数と、各隣接装置のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する第４ステップを有し、
第４ステップにおいて、所定の機能の実行を行うと判定する条件の１つは、ポテンシャル変数が、全隣接装置のポテンシャル変数より大きいこと、或いは、小さいことであり、
前記所定の計算式は、自装置のポテンシャル変数の更新の際、該ポテンシャル変数が一定の閾値以上である場合０である項および乱数項を含む、
方法。
【請求項８】
前記所定の計算式は、ポテンシャル変数の値を高さとすると、各通信装置のポテンシャル変数の分布を、山と谷が繰り返す形状にするものであり、
前記山と谷が生じる密度は、前記密度制御変数により変化する、
請求項７に記載の方法。
【請求項９】
請求項１から６のいずれか１項に記載の通信装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のノードの中から状況に応じてサーバの役割をするノードを決める方式に関するものである。つまり、一台の固定的なサーバノードとその他多数のクライアントノードとの通信によって成り立つものではなく、動的にサーバを変更しながらアプリケーションを提供することを主眼においている。このようなタイプのアプリケーションが実現されるネットワークとしてＰ２Ｐネットワークやセンサーネットワークのようなマルチホップネットワークが挙げられる。また、サーバを動的に変更するというアイデアに類似したものとして、ＣＤＮ（Contents Delivery Network）が挙げられる。
【背景技術】
【０００２】
Ｐ２Ｐネットワークは、インターネットの仕組みの上に構築されたエンドホスト間で構成される仮想的なネットワークである（オーバレイネットワークともいう）。この仮想的なネットワークでは、インターネットの制約（アドレス、名前解決など）に縛られない、自由な（独自の）ルール・プロトコルを規定し運用することができる。Ｐ２Ｐネットワークではエンドホスト同士の通信をベースとして、Gnutella,Winnyといったファイル共有などのサービスが提供されている。
【０００３】
センサーネットワークにおいて、環境を測定するセンサーデバイス（センサーノードまたは単にノード）は、単一のノードだけで利用されるだけでなく、多数のデバイスを環境中に分散配置して、広い範囲にわたる環境情報を取得するという用途にも利用される。その際、多数のノードが必ずしもすべて同時に稼動するわけではなく、測定地域をカバーする必要十分な個数のノードのみが稼動するように制御する仕組みや、それらのノードが測定した情報を、データ処理を行うサーバに集めるために情報を適切なノードへと転送する仕組みなどが必要となる。これらセンサ・ネットワークにおけるルーティング技術が、非特許文献１及び２に記載されている。
【０００４】
ＣＤＮ（Contents Delivery Network）とは、Ｗｅｂコンテンツなどへの高速なアクセスを可能にするためのネットワーク技術であり、ユーザからネットワーク的になるべく近い位置に設置されたサーバにコンテンツの複製を分散的に配置しておくというものである。ネットワークの各地にコンテンツが分散配置されるため、ユーザへの応答が速くなるだけではなく、コンテンツを転送するためのトラフィックも局所的な範囲（つまりユーザと複製を保持している近くのサーバの間）に限定することができ、輻輳回避にも役立つ。
【０００５】
上記のようなネットワークに対して、ネットワーク全体を管理する管理装置を設けることなく、ネットワークを構成する各通信装置の中で、所定の機能を実行する通信装置を、通信装置に与えられた、あるいは、通信装置が取得する値により決まる密度にて選択して配置する方法が、特願２００９−２５３７３９にて出願された。
【０００６】
前記出願は、「状況に応じて一定の間隔（数ノードに１台）にサーバとして動作するノードを動的に配置すること」を自律分散的に実現する手法である。なお、サーバを配置するとは、ノードがもつサーバ機能を有効化することをさす（全ノードがサーバ機能を保持しているものとする）。状況とは、例えば周辺ノードの負荷状態であり、前記出願は、周辺ノードの負荷が高ければそれにあわせてサーバの密度（何ノードに１台サーバが存在するか）が高くなるようにし、負荷が低ければ密度が低くなるようにできる。このとき、「似たような状況」にあるノード群（連結されたグラフ）をひとつのクラスタだと考え、クラスタごとにサーバ密度を制御する。前記出願は、適当な確率で各ノードがランダムにサーバになるかどうかを決めるものではない。それは、サーバの密度を平均的には制御できたとしても、ランダムであるが故に必ず密度に大きな斑ができるためである。前記出願は、各ノードが自律分散的にサーバになるべきかどうかを判断し、全体を統括するサーバ（サーバ密度を制御するサーバ）の存在や各ノードの特定の初期状態を全く必要とせず、ほぼ等間隔にサーバを配置することが可能である。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｃ．Ｉｎｔａｎａｇｏｎｗｉｗａｔ、  ｅｔ  ａｌ．、“Ｄｉｒｅｃｔｅｄ  Ｄｉｆｆｕｓｉｏｎ  ｆｏｒ  Ｗｉｒｅｌｅｓｓ  Ｓｅｎｓｏｒ  Ｎｅｔｗｏｒｋｉｎｇ”、ＩＥＥＥ／ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｎｅｔｗｏｒｋｉｎｇ、ＶＯＬ．１１  Ｎｏ．  1、ｐｐ２、２００３年
【非特許文献２】Ｆ．Ｙｅ、ｅｔ  ａｌ．、“ＧＲＡｄｉｅｎｔ  Ｂｒｏａｄｃａｓｔ：  Ａ  Ｒｏｂｕｓｔ  Ｄａｔａ  Ｄｅｌｉｖｅｒｙ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｌａｒｇｅ  Ｓｃａｌｅ  Ｓｅｎｓｏｒ  Ｎｅｔｗｏｒｋｓ”、ＡＣＭ  Ｗｉｒｅｌｅｓｓ  Ｎｅｔｗｏｒｋｓ、  Ｖｏｌ．１１  Ｎｏ．３、ｐｐ．２８５−２９８（１４）、２００５年
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記出願（特願２００９−２５３７３９）では、各ノードがポテンシャル変数を自律分散的に変化させ、複数の山状のポテンシャルの空間分布を作り出すことによって上述のような、「サーバの配置」を実現する（山の頂上に位置するノードがサーバとなる）。しかし、前記出願では、起動直後および状況が変化する度に各ノードがポテンシャル変数の値を初期化しなければならない。これは次のような問題を引き起こす可能性がある。
【０００９】
全ノードが起動する時刻は必ずしも同時ではない。起動時刻がノードごとに大きくずれると、各ノードのポテンシャルの値（絶対値）が非常に小さくなる。そのため、山状のポテンシャルの空間分布は形成されるが、ポテンシャルの起伏が小さすぎて識別できなくなる場合がある。
【００１０】
状況の変化とは、クラスタ変数Ｃの変化にあたる（クラスタ変数Ｃは山と山の間隔を決めるパラメータである）。従来手法では、変数Ｃが変化する度に、ポテンシャル変数の値を乱数で初期化する。これはすなわち、それまでに生成されていたポテンシャル分布を完全に破棄して、最初からやり直すことを意味する。そのため、変数Ｃが変化するとサーバ機能をどのノードも一度放棄することになる。また、頻繁に変数Ｃの値が変化してしまうと、ポテンシャル変数（すなわちポテンシャルの空間分布）が定常状態に達することができなくなり、やはりサーバを決めることができなくなってしまう。
【００１１】
したがって、本発明は、ネットワーク全体を管理する管理装置を設けることなく、ネットワークを構成する各通信装置の中で、所定の機能を実行する通信装置を、通信装置のポテンシャル変数の初期値に依存することなく、配置する方法と、そのための通信装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を実現するため本発明による通信装置は、通信リンクにより接続している隣接装置のポテンシャル変数及び補助変数を保存し、隣接装置からポテンシャル変数及び補助変数を受信する度に、保存している該隣接装置のポテンシャル変数及び補助変数を更新する第１手段と、自装置のポテンシャル変数、補助変数及び密度制御変数を保存し、自装置のポテンシャル変数及び補助変数を隣接装置に送信する第２手段と、各隣接装置のポテンシャル変数及び補助変数、並びに、自装置のポテンシャル変数、補助変数及び密度制御変数に基づき自装置のポテンシャル変数及び補助変数を所定の計算式により更新する第３手段と、自装置のポテンシャル変数と、各隣接装置のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する第４手段とを備えており、第４手段は、自装置のポテンシャル変数が、全隣接装置のポテンシャル変数より大きいこと、或いは、小さいことを、前記所定の機能の実行を行う条件の１つとし、前記所定の計算式は、自装置のポテンシャル変数の更新の際、該ポテンシャル変数が一定の閾値以上である場合０である項および乱数項を含む。
【００１３】
また、前記所定の計算式は、複数の前記通信装置から構成されるネットワークにおける各通信装置のポテンシャル変数を、極大値と極小値が繰り返す様に分布させるものであり、前記極大値と極小値の繰り返し密度は、前記密度制御変数により変化することも好ましい。
【００１４】
また、Ａ、ΔＴ、Δｘ、ｈ及びｋを正の定数とすると、
隣接装置ｎの補助変数ｖｎｔ、自装置のポテンシャル変数ｕｉｔ、自装置の補助変数ｖｉｔ及び自装置の密度制御変数ｃｉｔから、自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉｃを求める計算式は、
【数１】
0005522800.tif 000002
であり、
隣接装置ｎのポテンシャル変数ｕｎｔ、自装置のポテンシャル変数ｕｉｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを求める計算式は、
【数２】
0005522800.tif 000003
であり、
【数３】
0005522800.tif 000004
であり、δ（ｔ）は−１≦δ（ｔ）≦１を満たす乱数であることも好ましい。
【００１５】
また、Ａ、ΔＴ、Δｘ、ｈ及びｋを正の定数とすると、隣接装置ｎの２つの補助変数ｖｎｔ及びｗｎｔ、自装置のポテンシャル変数ｕｉｔ、自装置の２つの補助変数ｖｉｔ及びｗｉｔ、自装置の密度制御変数ｃｉｔから自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉｃ及び補助変数ｗｉｔ＋２Ｉｃを求める計算式は、それぞれ、
【数４】
0005522800.tif 000005
であり、
隣接装置ｎのポテンシャル変数ｕｎｔ、自装置のポテンシャル変数ｕｉｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを求める計算式は、
【数５】
0005522800.tif 000006
であり、
【数６】
0005522800.tif 000007
であり、δ（ｔ）は−１≦δ（ｔ）≦１を満たす乱数であることも好ましい。
【００１６】
また、第４手段は、自装置のポテンシャル変数を更新することによる値の変化を、所定の閾値により大小判定し、変化が小さいことを前記所定の機能の実行を行う条件の１つとすることも好ましい。
【００１７】
また、密度制御変数を、自装置の内部又は外部の監視対象の値により決定することも好ましい。
【００１８】
上記目的を実現するため本発明による方法は、それぞれがポテンシャル変数、補助変数及び密度制御変数を管理する複数の通信装置を含むシステムにおいて、所定の機能を実行する通信装置を選択する方法であって、各通信装置が、通信リンクにより接続している隣接装置にポテンシャル変数及び補助変数を広告する第１ステップと、各通信装置が、隣接装置からポテンシャル変数及び補助変数を受信した場合において、該隣接装置のポテンシャル変数及び補助変数を既に保存している場合には、保存している該隣接装置のポテンシャル変数及び補助変数を更新し、保存していない場合には、該隣接装置のポテンシャル変数及び補助変数を保存する第２ステップと、各通信装置が、各隣接装置のポテンシャル変数及び補助変数、並びに、自装置のポテンシャル変数、補助変数及び密度制御変数に基づき、自装置のポテンシャル変数及び補助変数を所定の計算式により更新する第３ステップと、を繰り返し、各通信装置が、自装置のポテンシャル変数と、各隣接装置のポテンシャル変数に基づき所定の機能の実行を行うか否かを判定する第４ステップを有し、第４ステップにおいて、所定の機能の実行を行うと判定する条件の１つは、ポテンシャル変数が、全隣接装置のポテンシャル変数より大きいこと、或いは、小さいことであり、前記所定の計算式は、自装置のポテンシャル変数の更新の際、該ポテンシャル変数が一定の閾値以上である場合０である項および乱数項を含む。
【００１９】
また、前記所定の計算式は、ポテンシャル変数の値を高さとすると、各通信装置のポテンシャル変数の分布を、山と谷が繰り返す形状にするものであり、前記山と谷が生じる密度は、前記密度制御変数により変化することも好ましい。
【００２０】
本発明のプログラムによれば、
上記通信装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００２１】
本発明では、各ノードのポテンシャル変数の初期値に依存せず、既存手法と同等のポテンシャルの空間分布を生成する。初期値に依存しないため、起動直後はポテンシャル変数を０などの適当な数値にしておくだけでよい。また、既存手法のように変数Ｃが変化する度にポテンシャル変数に乱数をセットする必要はない。そのため、変数Ｃが変化しても、それまでに形成されていたポテンシャルの空間分布は維持され、そこから新たな空間分布へと連続的に変化する。したがって、サーバも空間分布の変化に伴って刻々と移動するため、サーバが決定できないという事態を避けることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明による通信システムを示す図である。
【図２】本発明による通信装置の簡略化した構成図である。
【図３】処理の流れを説明する図である。
【図４】ポテンシャル変数の分布を示す図である。
【発明を実施するための形態】
【００２３】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。図１は、本発明による通信システムを示す図である。本発明による通信システムは、図１において四角形で表されている本発明による通信装置を複数台含んでいる。なお、図１において、各通信装置を接続する線は通信リンクである。本発明の通信装置により構成されるネットワークにおいては、例えば、Ｐ２Ｐネットワークや、無線のアドホック・ネットワークの様に、ネットワーク構成、つまり、通信装置間の通信リンクや、ネットワークに参加している通信装置が、時間の経過により変化する可能性がある。なお、以下の説明において、隣接装置とは、ある通信装置から見て、通信リンクにより接続されている通信装置を意味するものとする。つまり、図１の縦線で塗り潰された四角形に対応する通信装置は、図１の斜線で塗り潰された四角形に対応する通信装置の隣接装置である。
【００２４】
図２に、本発明による通信装置の簡略化した構成を示す。図２に示す様に、本発明による通信装置は、隣接装置変数管理部１と、変数計算部２と、自装置変数管理部３と、実行判定部４とを備えている。また、以下に説明する本発明の第１実施形態において、各通信装置は、ポテンシャル変数ｕと、補助変数ｖと、密度制御変数（クラスタ変数）Ｃを管理している。ここで、ポテンシャル変数とは、各通信装置が、所定の機能の実行を行うか否かを判定するために使用する値であり、補助変数とは、ポテンシャル変数の計算に利用する変数であり、密度制御変数とは、所定の機能を実行する通信装置の密度を変化させる変数である。ここで、第１実施形態において、密度制御変数は、各通信装置にあらかじめ設定されている値とする。
【００２５】
隣接装置変数管理部１は、隣接装置のポテンシャル変数及び補助変数を、当該隣接装置の識別子に関連付けて保持している。具体的には、隣接装置変数管理部１は、隣接装置が所定のスケジュールに基づいて広告する、当該隣接装置のポテンシャル変数及び補助変数を含む信号を受信する度に、保持している当該隣接装置のポテンシャル変数及び補助変数を受信した値に更新し、ある通信装置と通信リンクが新たに設定され、これにより当該通信装置から初めて広告を受信した場合には、広告に含まれる当該通信装置の識別子に関連付けて、広告に含まれるポテンシャル変数及び補助変数を保存する。なお、ある隣接装置から所定の期間、ポテンシャル変数及び補助変数を含む信号を受信しなかった場合、当該隣接装置とはもはや隣接関係にはないと看做すことができるので、隣接装置変数管理部１は、当該隣接装置であった通信装置のポテンシャル変数及び補助変数を削除する。
【００２６】
自装置変数管理部３は、自装置のポテンシャル変数、補助変数及び密度制御変数を保持しており、所定のスケジュールに基づいて自装置のポテンシャル変数及び補助変数を隣接装置に広告する。
【００２７】
変数計算部２は、隣接装置変数管理部１が保持している各隣接装置のポテンシャル変数及び補助変数と、自装置変数管理部３が保持している自装置のポテンシャル変数、補助変数及び密度制御変数に基づき、所定のスケジュールで指定されるタイミングにおいて、自装置のポテンシャル変数及び補助変数の値を新たに決定する。自装置変数管理部３は、管理している自装置のポテンシャル変数及び補助変数を、変数計算部２が決定した値に更新する。なお、自装置変数管理部３は、変数計算部２が決定した値にポテンシャル変数の値を更新する前に、更新前の値を実行判定部４に出力し、実行判定部４は、この値を、自装置のポテンシャル変数の１つ前の値として保持する。
【００２８】
実行判定部４は、所定のスケジュールで指定されるタイミングにおいて、保持している自装置の１つ前のポテンシャル変数と、自装置変数管理部３が保持している自装置の最新のポテンシャル変数と、隣接装置変数管理部１が管理している各隣接装置のポテンシャル変数から、所定の機能の実行を行うか否かを判定する。判定時に所定の機能を実行していない場合において、実行するとの判定になった場合には所定の機能の実行を開始し、実行しないとの判定になった場合には、所定の機能の実行は開始しない。同様に、判定時に所定の機能を実行している場合において、実行するとの判定になった場合には、そのまま所定の機能の実行を継続し、実行しないとの判定になった場合には、所定の機能の実行を停止する。
【００２９】
続いて、第１実施形態におけるシステムの動作について説明する。なお、初期状態において、各通信装置は、ポテンシャル変数及び補助変数に所定の値、例えば０を設定する。
【００３０】
本実施形態において、変数計算部２は、自装置のポテンシャル変数及び補助変数を、更新間隔Ｉｃのタイミングにて周期的に計算して更新し、自装置変数管理部３は、ｍ×Ｉｃに１回、自装置のポテンシャル変数を広告し、実行判定部４は、ｎ×Ｉｃに１回、所定の機能の実行判定を行う。なお、ｍ及びｎは整数である。図３に、ｍ＝１、ｎ＝４の場合における処理の流れを示す。なお、ポテンシャル変数及び補助変数の更新は、異なるタイミングで行っても良い。つまり、時刻Ｔ＋ｘ・Ｉｃ（ｘは整数）にポテンシャル変数の更新を行い、時刻Ｔ＋ｘ・Ｉｃ＋Ｉｃ／２に補助変数の更新を行う形態であっても良い。
【００３１】
続いて、変数計算部２における、自装置のポテンシャル変数及び補助変数の更新処理について説明する。なお、下記の式（１）および式（２）は、ある時刻ｔにおいて、変数ｕが計算されていたということを前提としている。ｕｉｔはノードｉが時刻ｔで算出した自ノードの変数ｕの値である。ｕｎｔは時刻ｔ−Ｉｃ〜時刻ｔ＋Ｉｃの間にノードｉが隣接ノードから受信した変数ｕの値である。ｖｉｔ＋Ｉｃはノードｉが時刻ｔ＋Ｉｃで算出した自ノードの変数ｖの値である。ｖｎｔは時刻ｔ〜時刻ｔ＋２Ｉｃの間にノードｉが隣接ノードから受信した変数ｖの値である。ｃｉｔはノードｉの時刻ｔにおける密度制御変数Ｃの値である。まず、変数計算部２は、自装置変数管理部３が保持しているポテンシャル変数ｕｉｔ、補助変数ｖｉｔ、密度制御変数ｃｉｔ、隣接装置変数管理部１が保持している隣接装置の補助変数をｖｎｔから、自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉｃを、以下の式（１）により求める。その後、自装置変数管理部３は、保持しているポテンシャル変数ｕｉｔを、求めたｕｉｔ＋２Ｉｃに更新する。続いて、変数計算部２は、自装置変数管理部３が保持しているポテンシャル変数ｕｉｔ、隣接装置変数管理部１が保持している隣接装置の補助変数ｕｎｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを、以下の式（２）により求める。
【００３２】
【数７】
0005522800.tif 000008
ただし、
【数８】
0005522800.tif 000009
であり、δ（ｔ）は−１≦δ（ｔ）≦１を満たす乱数である。また、上式においてΣは、総ての隣接装置について足し合わせることを意味している。なお、上述した例では、式（１）は時刻ｔ＋２Ｉｃにおいて実施される計算、式（２）は時刻ｔ＋Ｉｃにおいて実施される計算を示している。また、Ａは正の定数で拡散係数などと呼ばれる事もある。ΔｘおよびΔＴは空間および時間を離散化するための小さな値である（ΔＴ＝Ｉｃとしてもよい）。これらすべての定数はすべてのノードに共通である。また、Ａ、Δｘ、ΔＴの値のバランスによって、変数ｕの値のネットワーク内での空間分布（つまりポテンシャルの空間分布）がクラスタ内で定常状態になるまでの時間が変わる。
【００３３】
式（１）では、関数ｇおよび関数δの項が含まれている。付加する値は小さな値であり、定数ｈ、ｋによって小さな値を実現する。（ｈ，ｋもすべてのノードで共通である）。関数ｇの定義の中の定数Ｘは、形成されるポテンシャルの空間分布の山の高さを決める値である（Ｘもすべてのノードで共通である）。山の高さはおよそＸ／ｓｉｎ（Δｘ／ｃｉｔ）になると見積もられる。なおｈは小さいほどよいが、小さすぎると定常状態に達するのに時間がかかる（ｈはＡの１０分の１以下が適当だと考えられる）。また、ｋはＧｔｈｒｅｓｈ*２Ｉｃよりも十分に小さな値とする（例えば１０分の１以下など）。なお、Ｇｔｈｒｅｓｈは、実行判定部４での閾値と同じである。
【００３４】
なお、上述した例では、式（１）により自装置のポテンシャル変数ｕを先に更新し、その後、更新後のポテンシャル変数を使用して、式（２）により、自装置の補助変数ｖを更新していたが、補助変数を先に更新し、その後、ポテンシャル変数を計算する形態であっても良い。ただし、その順序は固定的とする。つまり、式（１）によりポテンシャル変数を先に更新するのであれば、各タイミングにおいてポテンシャル変数を先に更新し、その後、式（２）による補助変数の更新を行う。
【００３５】
式（１）及び式（２）は、ｎ次元ユークリッド空間における以下の式（３）を、時間１階・空間２階の偏微分方程式と、空間２階の微分方程式の連立微分方程式に分割し、それらを時間および空間について離散化した式であると考えられる。ただし、Ｐ２Ｐネットワークはユークリッド空間と異なり隣接ノードの数が固定ではないため（ｎ次元ユークリッド空間では隣接点はすべての点について２ｎ個となる）、各ノードはそれぞれすべての隣接ノードの変数ｕ、ｖと自ノードのｕ、ｖについての差分を求め、足し合わせている（式（１）と式（２）のシグマ記号の部分に相当する）。
【数９】
0005522800.tif 000010
ただし、
【数１０】
0005522800.tif 000011
ｈ、ｋは、小さな正の定数である。
【００３６】
式（３）で、
【数１１】
0005522800.tif 000012
であり、微分演算子∇２は、ラプラシアンと呼ばれる微分演算子であり、ｎ次元ユークリッド空間では以下の式（４）の様に定義される。同様に、∇４は以下の式（５）の様に定義される。したがって、
【数１２】
0005522800.tif 000013
は以下の式（６）の様に表される。
【数１３】
0005522800.tif 000014
も、式（５）から式（６）と同様にして求められる。
【００３７】
【数１４】
0005522800.tif 000015
【００３８】
各通信装置が、式（１）及び（２）に従い、ポテンシャル変数及び補助変数を更新していくと、各通信装置のポテンシャル変数の空間分布は、密度制御変数Ｃの値により決まる密度にて極大値及び極小値が繰り返す様になる。なお、密度制御変数Ｃの値が大きい程密度は低く、つまり、繰り返し周期が長くなる。図４は、各通信装置がそれぞれ４つの通信装置と通信リンクを設定し、つまり、ネットワーク構成が格子状である場合において、定常状態となったときの、ある一列の通信装置のポテンシャル変数の分布を示している。よって、例えば、通信装置Ｅは、通信装置Ｄ及びＦの隣接装置である。ポテンシャル変数の値を高さとすると、図４は、１２台の通信装置毎に山及び谷が生じている様子を示している。なお、図４は、ネットワークが格子状であるため、ポテンシャル変数は、正弦波状に分布しているが、実際には、通信リンクの設定状態により、図４に示すものより歪んだ分布となる。しかしながら、通信リンクの設定状態に係らず、ポテンシャル変数は、極大値及び極小値が繰り返す様に分布し、その密度については、密度制御変数Ｃにより制御することが可能である。なお、ΔＴ、Δｘ及びＡの値により定常状態になるまでの時間が決定される。
【００３９】
続いて、実行判定部４における所定の機能を実行するか否かの判定について説明する。まず、実行判定部４は、上述した様に、保持している自装置の１つ前のポテンシャル変数ｕｉｔと、自装置変数管理部３が保持している自装置の最新のポテンシャル変数ｕｉｔ＋２Ｉｃと、ポテンシャル変数の更新間隔Ｉｃに基づき、自装置のポテンシャル変数の時間変化率＝（ｕｉｔ＋２Ｉｃ−ｕｉｔ）／Ｉｃを求め、求めた時間変化率の絶対値が閾値Ｇｔｈｒｅｓｈ以下であるか否かを判定する。
【００４０】
閾値より大きい場合には、ポテンシャル変数の分布が定常状態にないと判定できるため、所定の機能を実行しないと判定する。なお、この閾値は、理想的には０とすべきであるが、現実的には０とすることはできず、０に近い所定の値、例えば、（ＲＡＮＤ＿ＭＡＸ／Ｉｃ）×０．０００１等に設定する（ＲＡＮＤ＿ＭＡＸは適当な実数定数であり、設計時に設定しておく。）。なお、この閾値が低すぎると所定の機能の実行がなかなか開始されなくなり、高すぎると、多数の通信装置において無駄に所定の機能の実行が開始されることになる。
【００４１】
時間変化率の絶対値が閾値以下である場合、実行判定部４は、自装置変数管理部３が保持している自装置の最新のポテンシャル変数ｕｉｔ＋２Ｉｃと、隣接装置変数管理部１が保持している全隣接装置のポテンシャル変数を比較し、自装置変数管理部３が保持している自装置の最新のポテンシャル変数ｕｉｔ＋２Ｉｃが最大である場合、所定の機能を実行すると判定し、それ以外の場合には、所定の機能を実行しないと判定する。これは、自装置が、ネットワークのポテンシャル変数の分布における極大値に該当する場合には、所定の機能を実行すると判定するものであるが、極小値の場合に所定の機能を実行すると判定する形態であっても、極大値及び極小値の両方において所定の機能を実行すると判定する形態であっても良い。
【００４２】
なお、本実施形態においては、ポテンシャル変数の分布において山の頂点となっている通信装置が所定の機能を実行しているため、この所定の機能にアクセスしたい場合、通信装置は、隣接装置の中で、ポテンシャル変数が最大の通信装置に信号を送信すれば良い。信号を受信した通信装置は、自装置が所定の機能を実行していない場合、さらに、隣接装置の中で、ポテンシャル変数が最大の通信装置に信号を転送することで、最終的には、所定の機能を実行している通信装置に信号が到達することになる。
【００４３】
続いて、本発明の第２実施形態について説明する。第１実施形態においては、１つの補助変数ｖのみを使用していたが、第２実施形態においては、２つの補助変数ｖ及びｗを利用する。したがって、隣接装置変数管理部１は、隣接装置のポテンシャル変数及び２つの補助変数を保持し、自装置変数管理部３は、自装置のポテンシャル変数、２つの補助変数及び密度制御変数を保持し、所定のスケジュールに基づいて自装置のポテンシャル変数及び２つの補助変数を隣接装置に広告する。また、変数計算部２は、隣接装置変数管理部１が保持している各隣接装置のポテンシャル変数及び２つの補助変数と、自装置変数管理部３が保持している自装置のポテンシャル変数、２つの補助変数及び密度制御変数に基づき、所定のスケジュールで指定されるタイミングにおいて、自装置のポテンシャル変数及び２つの補助変数の値を新たに決定する。
【００４４】
本実施形態においては、各通信装置が広告する変数が増え、広告するデータ量と、変数の計算量が増加する。しかしながら、ΔＴ、Δｘ及びＡが同一である場合、定常状態に収束する時間は第１実施形態より短くなる。以下に、第２実施形態におけるポテンシャル変数、補助変数の更新方法を説明する。その他の処理は第１実施形態と同じである。
【００４５】
まず、初期状態において、各通信装置は、２つの補助変数及びポテンシャル変数に所定値、例えば０を設定する。ある時刻ｔにおいて、変数ｕが計算されていたということを前提としている。ｕｉｔはノードｉが時刻ｔで算出した自ノードの変数ｕの値である。ｕｎｔは時刻ｔ−Ｉｃ〜時刻ｔ＋Ｉｃの間にノードｉが隣接ノードから受信した変数ｕの値である。ｖｉｔ＋Ｉｃはノードｉが時刻ｔ＋Ｉｃで算出した自ノードの変数ｖの値である。ｖｎｔは時刻ｔ〜時刻ｔ＋２Ｉｃの間にノードｉが隣接ノードから受信した変数ｖの値である。ｗｉｔはノードｉが時刻ｔで算出した自ノードの変数ｗの値である。ｗｎｔは時刻ｔ〜時刻ｔ＋２Ｉｃの間にノードｉが隣接ノードから受信した変数ｗの値である。ｃｉｔはノードｉの時刻ｔにおける密度制御変数Ｃの値である。また、変数計算部２は、自装置変数管理部３が保持しているポテンシャル変数ｕｉｔ、２つの補助変数ｖｉｔ及びｗｉｔ、密度制御変数ｃｉｔ、隣接装置変数管理部１が保持している隣接装置の２つの補助変数ｖｎｔ及びｗｎｔから、自装置の更新後のポテンシャル変数ｕｉｔ＋２Ｉ及びｗｉｔ＋２Ｉを、それぞれ、以下の式（７）及び（８）により求める。その後、自装置変数管理部３は、保持しているポテンシャル変数ｕｉｔを求めたｕｉｔ＋２Ｉｃに、さらに、保持している補助変数ｗｉｔを求めたｗｉｔ＋２Ｉｃに更新する。続いて、変数計算部２は、自装置変数管理部３が保持しているポテンシャル変数をｕｉｔ、隣接装置変数管理部１が保持している隣接装置の補助変数をｕｎｔから、自装置の更新後の補助変数ｖｉｔ＋Ｉｃを、以下の式（９）により求める。
【数１５】
0005522800.tif 000016
【００４６】
なお、Ａ、ΔＴ、Δｘ、ｇ（ｕｉｔ）、δ（ｔ）、ｈ及びｋ、さらに、Σの意味は第１実施形態と同じである。なお、第１実施形態と同様、先に式（９）により補助変数ｖを更新し、その後、式（７）及び（８）により、ポテンシャル変数及び補助変数ｗの更新を行う形態であっても良い。ただし、式（７）及び（８）による更新と、式（９）による更新の順番は、各タイミングにおいて同じとする。つまり、時刻Ｔ＋ｘ・Ｉｃ（ｘは整数）にポテンシャル変数ｕ及び補助変数ｗの更新を行い、時刻Ｔ＋ｘ・Ｉｃ＋Ｉｃ／２に補助変数ｖの更新を行う形態であっても良い。
【００４７】
式（７）、（８）及び（９）は、ｎ次元ユークリッド空間における以下の式（１０）を、時間１階・空間２階の偏微分方程式と、空間２階の微分方程式の連立微分方程式に分割し、それらを時間及び空間について離散化した式と考えることができる。なお、本発明におけるシステムは、ｎ次元ユークリッド空間と異なり、隣接する通信装置の数が一定ではないため、式（７）、（８）及び（９）においては、各隣接装置と自装置の変数の差を積算している。
【００４８】
【数１６】
0005522800.tif 000017
なお、Ａは、式（１）と同じく正の定数であり、ラプラシアンに関しては第１実施形態と同様である。
【００４９】
上述した２つの実施形態において、各通信装置には、あらかじめ所定の値が密度制御変数Ｃとして設定されているものとしていた。しかしながら、各通信装置が、密度制御変数Ｃの値を、例えば、ＣＰＵの負荷率、通信用バッファの空き容量、センサが測定した温度等の環境値、通信装置が電池駆動である場合の電池の残量、通信装置が太陽電池で駆動されている場合の発電量等により動的に変更する形態であっても良い。
【００５０】
例えば、通信装置が太陽電池で駆動されている場合において、発電量により密度制御変数Ｃを決定するものとすると、日向にあり発電量の多い領域においては高い密度で所定の機能を実行する通信装置が配置され、日陰にあり発電量の少ない領域においては低い密度で所定の機能を実行する通信装置が配置され、さらに、発電量の変化に応じてその密度が自律的に変更されることになる。同様に、ＣＰＵの負荷率により密度制御変数Ｃを決定するものとすると、負荷に応じて所定の機能を実行する通信装置の密度を制御することが可能になる。
【００５１】
なお、本発明による通信装置は、コンピュータを図２の各部として機能させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。さらに、本発明は、ハードウェア及びソフトウェアの組合せによっても実現可能である。
【００５２】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。従って本発明の範囲は特許請求の範囲およびその均等範囲によってのみ規定されるものである。
【符号の説明】
【００５３】
１  隣接装置変数管理部
２  変数計算部
３  自装置変数管理部
４  実行判定部
【図１】
0005522800.tif 000024
【図２】
0005522800.tif 000025
【図３】
0005522800.tif 000026
【図４】
0005522800.tif 000027