(57)【要約】【課題】ネットワーク内の通信装置から所定の機能を実行する通信装置をランダムに選択するための通信装置を提供する。【解決手段】通信装置は、第１変数及び第２変数を保持しており、第１変数を隣接装置に広告し、隣接装置が広告する第１変数、自装置の第１変数及び第２変数に基づき自装置の第１変数を更新し、所定の機能を実行しておらず、かつ、第２変数が所定値ではない場合に、前記所定の機能を実行するか否かを判定し、実行する場合には、前記所定の機能の実行を開始し、実行しない場合には、移動処理の対象とする移動先の隣接装置を決定し、決定した隣接装置に移動要求メッセージを送信し、当該隣接装置から移動完了メッセージを受信した場合、自装置の第２変数を前記所定値に更新する。【選択図】図２
2011077616.tif 000002
【特許請求の範囲】
【請求項１】
通信リンクにより直接接続している隣接通信装置のポテンシャル変数を保存し、隣接通信装置からポテンシャル変数を受信する度に、保存している該隣接通信装置のポテンシャル変数を更新する第１手段と、
自装置のポテンシャル変数、リーダ変数及びリーダ・フラグを保存し、自装置のポテンシャル変数を隣接通信装置に送信する第２手段と、
各隣接通信装置のポテンシャル変数、自装置のポテンシャル変数及びリーダ変数に基づき、自装置のポテンシャル変数を更新する第３手段と、
を備えており、所定の機能を実行していないときはリーダ・フラグを第１の値とし、前記所定の機能を実行しているときはリーダ・フラグを第２の値とする通信装置であって、
リーダ・フラグが第１の値であり、かつ、リーダ変数が所定値ではない場合に、前記所定の機能を実行するか否かを判定し、実行する場合には、リーダ・フラグを第２の値に更新して前記所定の機能の実行を開始し、実行しない場合には、移動処理の対象とする移動先の隣接通信装置を決定する第４手段と、
第４手段が決定した移動先の隣接通信装置に移動要求メッセージを送信し、移動先の隣接通信装置から移動完了メッセージを受信した場合、リーダ変数を前記所定値に更新する第５手段と、
を備えている通信装置。
【請求項２】
第３手段は、所定の計算式により自装置のポテンシャル変数を更新し、
ポテンシャル変数の値を高さとすると、前記計算式は、複数の前記通信装置から構成されるネットワークにおけるポテンシャル変数を、リーダ変数が前記所定値ではない通信装置の位置を頂点とする山の形状に分布させるものである、
請求項１に記載の通信装置。
【請求項３】
前記計算式は、自装置のポテンシャル変数に対して、隣接通信装置のポテンシャル変数から自装置のポテンシャル変数を減じた値を全隣接通信装置に渡り積算した値に基づく値を加算し、自装置のポテンシャル変数に基づく値を減じ、自装置のリーダ変数が前記所定値ではない場合には、さらに、自装置のリーダ変数に基づく値を加算することで、自装置の更新後のポテンシャル変数を求めるものである、
請求項２に記載の通信装置。
【請求項４】
第４手段は、隣接通信装置のポテンシャル変数の平均値と、隣接通信装置のポテンシャル変数の最大値との差の大小を閾値判定し、差が小さいときには、前記所定の機能の実行をすると判定する、
請求項１から３のずれか１項に記載の通信装置。
【請求項５】
第４手段は、前回移動処理を実行したときから所定の期間が経過しており、前回の移動処理直前のリーダ変数と、第２手段が保持しているリーダ変数が等しいときには、前記所定の機能の実行をすると判定する、
項１から４のずれか１項に記載の通信装置。
【請求項６】
第４手段は、隣接通信装置の中でポテンシャル変数の最も大きい隣接通信装置を移動先に決定する、
請求項１から５のいずれか１項に記載の通信装置。
【請求項７】
移動要求メッセージには、該移動要求メッセージを送信した通信装置のリーダ変数の値が含まれており、
第５手段は、隣接通信装置から移動要求メッセージを受信した場合、自装置のリーダ変数を、該移動要求メッセージに含まれる値を加算した値に更新し、更新後に、該隣接通信装置に移動完了メッセージを送信する、
請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
それぞれがリーダ・フラグを管理している複数の通信装置を含み、各通信装置は、所定の機能を実行していないときはリーダ・フラグを第１の値とし、所定の機能を実行しているときはリーダ・フラグを第２の値とするシステムにおいて、前記所定の機能を実行する通信装置を決定する方法であって、
各通信装置が、通信リンクにより直接接続している隣接通信装置にポテンシャル変数を広告する第１ステップと、
各通信装置が、隣接通信装置からポテンシャル変数を受信した場合において、該隣接通信装置のポテンシャル変数を既に保存している場合には、保存している該隣接通信装置のポテンシャル変数を更新し、該隣接通信装置のポテンシャル変数を保存していない場合には、該隣接通信装置のポテンシャル変数を保存する第２ステップと、
各通信装置が、各隣接通信装置のポテンシャル変数、自装置のポテンシャル変数及び自装置のリーダ変数に基づき、自装置のポテンシャル変数を更新する第３ステップと、
を繰り返し、
リーダ・フラグが第１の値であり、かつ、リーダ変数が所定値ではない通信装置が、前記所定の機能を実行するか否かを判定し、実行する場合には、自装置のリーダ・フラグを第２の値に更新して前記所定の機能の実行を開始し、実行しない場合には、移動処理の対象とする移動先の隣接通信装置を決定する第４ステップと、
移動先の隣接通信装置を決定した通信装置が、移動先の隣接通信装置に移動要求メッセージを送信し、移動先の隣接通信装置から移動完了メッセージを受信した場合、自装置のリーダ変数を前記所定値に更新する第５ステップと、
を備えている方法。
【請求項９】
請求項１から７のいずれか１項に記載の通信装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを構成する多数の通信装置の中から、所定の機能、例えば、サーバ機能を実行する１つの通信装置を自律的に決定する技術に関する。
【背景技術】
【０００２】
Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）ネットワークとは、オーバレイ・ネットワークとも呼ばれ、例えば、インターネットに接続する通信装置間で構成される仮想的なネットワークである。また、センサ・ネットワークとは、環境を測定するセンサ・デバイスを分散配置して、広範囲にわたる環境情報を取得するネットワークである。センサ・ネットワークには、Ｓｉｎｋノードと呼ばれるノードが存在する。Ｓｉｎｋノードとは、当該Ｓｉｎｋノードの周囲のノードが測定した測定値を収集して、測定値を処理する装置に送信するゲートウェイとしての役割を果たしている。
【０００３】
Ｐ２Ｐネットワークや、センサ・ネットワークにおいて、サーバ機能や、Ｓｉｎｋ機能の様な、特定の役割をする通信装置の存在は不可欠であるが、これらネットワークは、ネットワークに参加する通信装置及びネットワークから離脱する通信装置の発生、故障によるネットワーク・トポロジの変更等が頻繁に生じるため、所定の機能を実行する通信装置を自律的に決定する仕組みが重要となる。分散環境において特定の通信装置を決定する方法は、リーダ選出アルゴリズムと呼ばれ、例えば、非特許文献１や２に記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｅ．Ｃｈａｎｇ、  ｅｔ  ａｌ．、“Ａｎ  ｉｍｐｒｏｖｅｄ  ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｄｅｃｅｎｔｒａｌｉｚｅｄ  ｅｘｔｒｅｍａ−ｆｉｎｄｉｎｇ  ｉｎ  ｃｉｒｃｕｌａｒ  ｃｏｎｆｉｇｕｒａｔｉｏｎｓ  ｏｆ  ｐｒｏｃｅｓｓｅｓ”、Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ、ＶＯＬ．２２  Ｉｓｓｕｅ  ５、ｐｐ２８１−２８３、１９７９年
【非特許文献２】Ｅ．Ｃｈａｎｇ、  ｅｔ  ａｌ．、“Ａｎ  Ｏ（ｎｌｏｇ  ｎ）  Ｕｎｉｄｉｒｅｃｔｉｏｎａｌ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｔｈｅ  Ｃｉｒｃｕｌａｒ  Ｅｘｔｒｅｍａ  Ｐｒｏｂｌｅｍ”、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌａｎｇｕａｇｅｓ  ａｎｄ  Ｓｙｓｔｅｍｓ、ＶＯＬ．４  Ｉｓｓｕｅ  ４、ｐｐ７５８−７６２、１９８２年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
引用文献１及び２に記載のリーダ選出アルゴリズムは、通信装置の識別子を利用するものである。具体的には、総ての通信装置が重複しない識別子を保持していることを前提に、ネットワーク内で最大の識別子を有する通信装置をリーダとして選択するものである。従来技術による方法は、ネットワーク内のどこかに自装置の識別子より大きな識別子を有する通信装置が存在しているのか否かを、各通信装置が判定しなければならず、処理が複雑になる。また、同じ通信装置により構成されるネットワークでは、必ず同じ通信装置がリーダとなり、負荷分散という観点からは好ましくない。さらに、膨大な数の超小型センサによりネットワークを構成する場合の様に、各通信装置に重複しない個別の識別子を事前に割り当てることが現実的ではない場合には、利用することができない。
【０００６】
したがって、本発明は、ネットワークを構成する通信装置から所定の機能を実行する通信装置をランダムに選択する方法、当該方法のために使用する通信装置及び当該通信装置としてコンピュータを機能させるプログラムを提供することを目的とする。本発明による通信装置で構成されるシステムにおいて、各通信装置の識別子は、直接通信を行う隣接装置と区別できる程度のもので良い。
【課題を解決するための手段】
【０００７】
本発明の通信装置は、
通信リンクにより直接接続している隣接通信装置のポテンシャル変数を保存し、隣接通信装置からポテンシャル変数を受信する度に、保存している該隣接通信装置のポテンシャル変数を更新する第１手段と、自装置のポテンシャル変数、リーダ変数及びリーダ・フラグを保存し、自装置のポテンシャル変数を隣接通信装置に送信する第２手段と、各隣接通信装置のポテンシャル変数、自装置のポテンシャル変数及びリーダ変数に基づき、自装置のポテンシャル変数を更新する第３手段とを備えており、所定の機能を実行していないときはリーダ・フラグを第１の値とし、前記所定の機能を実行しているときはリーダ・フラグを第２の値とする通信装置であって、リーダ・フラグが第１の値であり、かつ、リーダ変数が所定値ではない場合に、前記所定の機能を実行するか否かを判定し、実行する場合には、リーダ・フラグを第２の値に更新して前記所定の機能の実行を開始し、実行しない場合には、移動処理の対象とする移動先の隣接通信装置を決定する第４手段と、第４手段が決定した移動先の隣接通信装置に移動要求メッセージを送信し、移動先の隣接通信装置から移動完了メッセージを受信した場合、リーダ変数を前記所定値に更新する第５手段とを備えていることを特徴とする。
【０００８】
本発明における通信装置の他の実施形態によれば、
第３手段は、所定の計算式により自装置のポテンシャル変数を更新し、ポテンシャル変数の値を高さとすると、前記計算式は、複数の前記通信装置から構成されるネットワークにおけるポテンシャル変数を、リーダ変数が前記所定値ではない通信装置の位置を頂点とする山の形状に分布させるものであることも好ましい。
【０００９】
また、本発明における通信装置の他の実施形態によれば、
前記計算式は、自装置のポテンシャル変数に対して、隣接通信装置のポテンシャル変数から自装置のポテンシャル変数を減じた値を全隣接通信装置に渡り積算した値に基づく値を加算し、自装置のポテンシャル変数に基づく値を減じ、自装置のリーダ変数が前記所定値ではない場合には、さらに、自装置のリーダ変数に基づく値を加算することで、自装置の更新後のポテンシャル変数を求めるものであることも好ましい。
【００１０】
さらに、本発明における通信装置の他の実施形態によれば、
第４手段は、隣接通信装置のポテンシャル変数の平均値と、隣接通信装置のポテンシャル変数の最大値との差の大小を閾値判定し、差が小さいときには、前記所定の機能の実行をすると判定することも好ましい。
【００１１】
さらに、本発明における通信装置の他の実施形態によれば、
第４手段は、前回移動処理を実行したときから所定の期間が経過しており、前回の移動処理直前のリーダ変数と、第２手段が保持しているリーダ変数が等しいときには、前記所定の機能の実行をすると判定することも好ましい。
【００１２】
さらに、本発明における通信装置の他の実施形態によれば、
第４手段は、隣接通信装置の中でポテンシャル変数の最も大きい隣接通信装置を移動先に決定することも好ましい。
【００１３】
さらに、本発明における通信装置の他の実施形態によれば、
移動要求メッセージには、該移動要求メッセージを送信した通信装置のリーダ変数の値が含まれており、第５手段は、隣接通信装置から移動要求メッセージを受信した場合、自装置のリーダ変数を、該移動要求メッセージに含まれる値を加算した値に更新し、更新後に、該隣接通信装置に移動完了メッセージを送信することも好ましい。
【００１４】
本発明の方法は、
それぞれがリーダ・フラグを管理している複数の通信装置を含み、各通信装置は、所定の機能を実行していないときはリーダ・フラグを第１の値とし、所定の機能を実行しているときはリーダ・フラグを第２の値とするシステムにおいて、前記所定の機能を実行する通信装置を決定する方法であって、各通信装置が、通信リンクにより直接接続している隣接通信装置にポテンシャル変数を広告する第１ステップと、各通信装置が、隣接通信装置からポテンシャル変数を受信した場合において、該隣接通信装置のポテンシャル変数を既に保存している場合には、保存している該隣接通信装置のポテンシャル変数を更新し、該隣接通信装置のポテンシャル変数を保存していない場合には、該隣接通信装置のポテンシャル変数を保存する第２ステップと、各通信装置が、各隣接通信装置のポテンシャル変数、自装置のポテンシャル変数及び自装置のリーダ変数に基づき、自装置のポテンシャル変数を更新する第３ステップとを繰り返し、リーダ・フラグが第１の値であり、かつ、リーダ変数が所定値ではない通信装置が、前記所定の機能を実行するか否かを判定し、実行する場合には、自装置のリーダ・フラグを第２の値に更新して前記所定の機能の実行を開始し、実行しない場合には、移動処理の対象とする移動先の隣接通信装置を決定する第４ステップと、移動先の隣接通信装置を決定した通信装置が、移動先の隣接通信装置に移動要求メッセージを送信し、移動先の隣接通信装置から移動完了メッセージを受信した場合、自装置のリーダ変数を前記所定値に更新する第５ステップとを備えていることを特徴とする。
【００１５】
本発明におけるプログラムによれば上記通信装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１６】
所定の機能を実行する通信装置を、自律的に、かつ、ランダムに選択することができる。また、本発明による通信装置で構成されるシステムにおいて、各通信装置の識別子は、直接通信を行う隣接通信装置と区別できる程度のもので良い。このため、例えば、システムの起動処理（ブートストラップ）に適用することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明によるシステムを示す図である。
【図２】本発明による通信装置の簡略化した構成図である。
【図３】処理の流れを説明する図である。
【発明を実施するための形態】
【００１８】
本発明を実施するための形態について、以下では図面を用いて詳細に説明する。
【００１９】
図１は、本発明によるシステムを示す図であり、本システムは、図１において四角形で表されている本発明による通信装置を複数台含んでいる。なお、図１において、各通信装置を接続する線は通信リンクである。本発明の通信装置により構成されるネットワークは、例えば、Ｐ２Ｐネットワークや、無線のアドホック・ネットワークの様に、ネットワーク構成、つまり、通信装置間の通信リンクや、ネットワークに参加している通信装置が、時間の経過により変化する可能性がある。なお、以下の説明において、隣接装置とは、ある通信装置から見て、通信リンクにより直接接続されている通信装置を意味するものとする。
【００２０】
図１において、斜線で塗り潰された四角形は、リーダ変数の値が０ではない通信装置を表している。なお、以下の説明において、リーダ変数の値が０ではない通信装置を、リーダ・シンボルを有する装置と呼ぶ。本発明においては、リーダ・シンボルを有する装置を１台に集約させ、最後に残ったリーダ・シンボルを有する１台の通信装置が、所定の機能を実行する。
【００２１】
図２に、本発明による通信装置の簡略化した構成を示す。図２に示す様に、本発明による通信装置は、他装置変数管理部１と、ポテンシャル計算部２と、自装置変数管理部３と、実行判定部４と、移動処理部５とを備えている。
【００２２】
他装置変数管理部１は、隣接装置のポテンシャル変数を、当該隣接装置の識別子に関連付けて保持している。具体的には、他装置変数管理部１は、隣接装置が所定のスケジュールに基づいて広告する、当該隣接装置のポテンシャル変数を含む信号を受信する度に、保持している当該隣接装置のポテンシャル変数を受信した値に更新し、ある通信装置と通信リンクが新たに設定され、これにより当該通信装置から初めて広告を受信した場合には、広告に含まれる当該通信装置の識別子に関連付けて、広告に含まれるポテンシャル変数を保存する。ここで、ポテンシャル変数とは、リーダ・シンボルを有する装置を１台に集約させるために利用する値であり、その詳細については後述する。
【００２３】
自装置変数管理部３は、自装置のポテンシャル変数と、リーダ変数を保持しており、所定のスケジュールに基づいて自装置のポテンシャル変数を隣接装置に広告する。さらに、自装置変数管理部３は、リーダ・フラグを管理し、自装置が所定の機能を実行している場合、リーダ・フラグを“真”に、所定の機能を実行していない場合には、リーダ・フラグを“偽”に設定する。
【００２４】
ポテンシャル計算部２は、他装置変数管理部１が保持している各隣接装置のポテンシャル変数と、自装置変数管理部３が保持している自装置のポテンシャル変数及びリーダ変数に基づき、所定のスケジュールで指定されるタイミングにおいて、自装置のポテンシャル変数の更新後における値を決定し、自装置変数管理部３は、保持している自装置のポテンシャル変数を、ポテンシャル計算部２が決定した値に更新する。
【００２５】
実行判定部４は、自装置変数管理部３が保持しているリーダ変数が０ではなく、つまり、自装置がリーダ・シンボルを有しており、リーダ・フラグが“偽”である場合、所定のスケジュールで指定されるタイミングにおいて、自装置がネットワーク内でリーダ・シンボルを有する唯一の装置であるか否かを判定し、唯一の装置と判定した場合には所定の機能の実行を開始し、リーダ・フラグを“真”に更新する。なお、唯一の装置ではないと判定した場合、リーダ・シンボル移動処理の対象とする移動先の隣接装置を決定し、移動処理部５は、移動先の隣接装置とメッセージを交換して、リーダ・シンボルの移動処理を完了させる。
【００２６】
続いて、本発明によるシステムの動作について説明する。なお、初期状態、つまり起動時において、各通信装置は、所定の確率Ｐｓで、リーダ変数にＱを設定し、それ以外にはリーダ変数に０を設定する様に構成されている。なお、初期状態及び処理の途中において、隣接装置の数が１である通信装置は、リーダ変数に０を設定する。ここで、Ｑは、総ての通信装置で同じ値であっても、通信装置により異なる値であっても良い。同様に、Ｐｓも総ての通信装置で同じ値であっても、通信装置により異なる値であっても良い。さらに、起動時において、各通信装置は、ポテンシャル変数を所定の初期値、本実施形態においては０、に設定する。
【００２７】
本実施形態において、ポテンシャル計算部２は、自装置のポテンシャル変数を、更新間隔Ｉｃのタイミングにて周期的に更新し、自装置変数管理部３は、ｍ×Ｉｃに１回、自装置のポテンシャル変数を広告し、リーダ変数が０ではなく、かつ、リーダ・フラグが“偽”である通信装置の実行判定部４は、ｎ×Ｉｃに１回、所定の機能の実行を行うか否かについての判定を行う。なお、ｍ及びｎは整数である。図３に、ｍ＝２、ｎ＝４の場合における処理の流れを示す。
【００２８】
続いて、ポテンシャル計算部２における、自装置のポテンシャル変数の更新処理について説明する。ポテンシャル計算部２は、自装置変数管理部３が保持しているポテンシャル変数をｕ、リーダ変数をｓ、他装置変数管理部１が保持している隣接装置ｋのポテンシャル変数をｖｋとすると、自装置の更新後のポテンシャル変数ｕｎｅｗを、以下の式（１）により求める。ただし、隣接装置数が１である場合には、更新後のポテンシャル変数ｕｎｅｗを初期値、本実施形態においては０に更新する。
【００２９】
【数１】
2011077616.tif 000003
【００３０】
なお、式（１）において、ａ、ｂ及びｃは正の定数であり、Δｔ及びΔｘは、正の小さな定数であり、総ての通信装置のポテンシャル計算部２に対して同じ値をあらかじめ設定しておく。また、式（１）においてΣは、総ての隣接装置について足し合わせることを意味している。
【００３１】
式（１）は、ｎ次元ユークリッド空間における以下の式（２）を、時間及び空間について離散化した式と考えることができる。つまり、Δｔは偏微分方程式を数値計算する際に一般的に行われる時間を離散化するための値であり、Δｘは偏微分方程式を数値計算する際に一般的に行われる空間を離散化するための値である。なお、本発明におけるシステムは、ｎ次元ユークリッド空間と異なり、隣接する通信装置の数が一定ではないため、式（１）においては、各隣接装置のポテンシャル変数と自装置のポテンシャル変数との差を積算している。
【００３２】
【数２】
2011077616.tif 000004
であり、ａ、ｂ及びｃは、式（１）と同じく正の定数である。また、式（２）の、
【００３３】
【数３】
2011077616.tif 000005
はラプラシアンとも呼ばれ、ｎ次元ユークリッド空間では以下の様に定義される。
【００３４】
【数４】
2011077616.tif 000006
【００３５】
式（２）（よって式（１）も）は、拡散方程式と呼ばれるクラスの微分方程式を変形したものである。式（１）及び式（２）の定数ａを含む項は拡散項、定数ａは拡散係数と呼ばれることがあり、物理的には熱や化学物質が空間中を拡散していくことを表している。式（１）において、自装置のポテンシャル変数ｕが、隣接装置のポテンシャル変数ｖより平均して大きい場合、定数ａを含む項は、更新後のポテンシャル変数ｕｎｅｗを小さくする様に働き、自装置のポテンシャル変数ｕが、隣接装置のポテンシャル変数ｖより平均して小さい場合、定数ａを含む項は、更新後のポテンシャル変数ｕｎｅｗを大きくする様に働き、自装置のポテンシャル変数ｕが、隣接装置のポテンシャル変数ｖの平均とほぼ等しい場合、定数ａを含む項は、更新後のポテンシャル変数ｕｎｅｗを、あまり変化させない。つまり、定数ａを含む項は、隣接装置と自装置のポテンシャル変数との関係に応じて、更新後のポテンシャル変数ｕｎｅｗを増減させる様に作用し、変数ａの値が大きい程、更新後のポテンシャル変数ｕｎｅｗを大きく変化させる。
【００３６】
また、定数ｂを含む項は減衰項、定数ｂは減衰係数と呼ばれることがあり、物理的には様々なエネルギーが摩擦などで失われていく度合いを表す。式（１）において、定数ｂの値及び現在のポテンシャル変数ｕが大きい程、更新後のポテンシャル変数ｕｎｅｗを小さくする様に働く。さらに、定数ｃを含む項は、ポテンシャル変数ｕの時間的な増加の度合いを決定する。式（１）においては、リーダ変数ｓが０ではない場合のみ、この項が働き、更新後のポテンシャル変数ｕｎｅｗを大きくする。しかしながら、定数ｂを含む項が、更新後のポテンシャル変数ｕｎｅｗが時間と共に限りなく大きくなることを抑える。
【００３７】
各通信装置が、ポテンシャル変数を更新していくと、式（１）の定数ｃを含む項の働きにより、リーダ変数が０ではない通信装置のポテンシャル変数ｕは、リーダ変数が０である通信装置のポテンシャル変数ｕより大きくなる。また、その増加の程度は、リーダ変数の値が大きい程、大きくなる、また、リーダ変数が０である通信装置のポテンシャル変数ｕは、リーダ変数が０ではない通信装置より離れるに従い小さくなる。つまり、式（１）は、ポテンシャル変数を高さとすると、ポテンシャル変数の分布を、リーダ変数が０ではない通信装置を頂点とする山の形状にするものであり、定数ａ、ｂ、ｃの大きさを調整することで、山の高さや、その分布の形成速度を調整することができる。一例として、ａ＝１００、ｂ＝１０、ｃ＝１であり、Δｘ＝１０−８程度のオーダ、Δｔ＝１０−３程度のオーダが利用できる。
【００３８】
続いて、リーダ変数が０ではく、かつ、リーダ・フラグが“偽”である通信装置における所定の機能の実行判定と、実行を行わない場合におけるリーダ・シンボルの移動処理について説明する。なお、実行判定及び移動先の隣接装置の決定は実行判定部４が、リーダ・シンボルの移動処理は移動処理部５が行う。
【００３９】
（手順１）実行判定部４は、手順５で説明する様に、過去に移動処理を行っていた場合、そのときの時刻ｔｐと、移動処理直前の自装置のリーダ変数ｓｐの値を記録している。各実行判定において、実行判定部４は、まず、記録している時刻ｔｐと、現在時刻との差が所定期間以上であり、かつ、記録しているリーダ変数ｓｐと、自装置変数管理部３が保持している現在のリーダ変数の値が同じである場合には、所定の機能の実行を開始し、リーダ・フラグを“真”にして終了する。
【００４０】
（手順２）実行判定部４は、他装置変数管理部１から取得する総ての隣接装置のポテンシャル変数ｖの平均値Ｖａを計算し、さらに、平均値Ｖａと、隣接装置のポテンシャル変数の最大値ｖｘとの差の絶対値Ｄｉｆｆ＝｜ｖｘ−Ｖａ｜を計算する。
【００４１】
（手順３）実行判定部４は、差の絶対値Ｄｉｆｆが、所定の閾値以下の場合には、所定の機能の実行を開始し、リーダ・フラグを“真”にして処理を終了する。それ以外の場合には、移動処理を行うと判定する。
【００４２】
（手順４）実行判定部４は、前記隣接装置の中でポテンシャル変数が最大の装置を移動先装置とする。なお、ポテンシャル変数が最大のものが複数ある場合には、その中から任意の隣接装置を１つ選択し、選択した隣接装置を移動先装置とする。
【００４３】
（手順５）実行判定部４は、現在時刻と、現在のリーダ変数を記録した後、移動処理部５に、移動処理を開始する様に指示する。
【００４４】
（手順６）移動元装置、つまり、移動処理を開始すると判定した装置の移動処理部５は、移動先装置の移動処理部５に、自装置のリーダ変数の値を含む移動要求メッセージを送信する。
【００４５】
（手順７）移動先装置の移動処理部５は、移動要求メッセージを受信した場合、自装置変数管理部３が保持しているリーダ変数の値を、移動要求メッセージに含まれる移動元装置のリーダ変数の値を加算した値に更新する。移動先装置の移動処理部５は、自装置変数管理部３が保持しているリーダ変数の値を更新後、移動完了メッセージを移動元装置に送信する。
【００４６】
（手順８）移動元装置の移動処理部５は、移動先装置から移動完了メッセージを受信した場合、自装置管理部３が保持しているリーダ変数の値を０に更新する。
【００４７】
なお、移動元装置及び移動先装置は移動処理を行っている間に、他の通信装置から移動要求メッセージを受信した場合、この他の通信装置に対しては移動不可メッセージを送信し、この他の通信装置との移動処理を拒否する。よって、移動元装置は、移動先装置から移動不可メッセージを受信した場合、移動処理を中止する。また、移動先装置は、移動要求メッセージを受信した場合、自装置における実行判定を中止し、自装置が移動先装置となることを防ぐ。
【００４８】
上記手順の中で、手順１は、同じ値のリーダ変数が、ネットワーク内の所定の通信装置間を行き来している状態を判定するものである。式（１）及び上記手順から、この様な状態はリーダ・シンボルを有する通信装置がネットワーク内において唯１つとなっている場合に発生する可能性が高いものであるため、手順１の条件を満たす場合、その通信装置が所定の機能を実行する。ただし、手順１における所定期間を短くしすぎると、他にもリーダ・シンボルを有する通信装置が存在しているのに、所定の機能を実行してしまう可能性が高くなり、逆に、長くしすぎると、リーダ・シンボルを有する装置が１つのみになっているのにも係らず、所定の機能の実行が開始されなくなってしまう。
【００４９】
また、式（１）は、リーダ・シンボルを有する通信装置を頂点とする山の形状に、ポテンシャル変数を分布させるものであり、リーダ・シンボルを有する通信装置が１つである場合には、このリーダ・シンボルを有する通信装置の隣接装置のポテンシャル変数は、ほぼ同じ値、理想的には０になる。これに対して、リーダ・シンボルを有する通信装置が複数ある場合には、各リーダ・シンボルを有する通信装置の周囲にある隣接装置のポテンシャル変数は、他のリーダ・シンボルを有する通信装置の影響によりばらつきが生じる。したがって、差の絶対値Ｄｉｆｆを閾値により大小判定し、小である場合には、リーダ変数が０ではない通信装置が１つとなっていると判定することがでる。したがって、手順３の条件を満たす場合、その通信装置が所定の機能を実行する。なお、差の絶対値Ｄｉｆｆは、理想的には０になるため、閾値は非常に小さい値となるが、具体的な値は、式（１）によるポテンシャル変数の分布の生じ方、つまり、各定数の値により決定する。
【００５０】
手順１及び手順３の条件を満たさない場合、他にもリーダ・シンボルを有する通信装置が存在するためリーダ・シンボルを移動させる。上記手順から明らかなように、移動先装置がリーダ・シンボルを有する通信装置ではない場合、移動処理は単にリーダ・シンボルを１つ移動させるのみであるが、移動先装置がリーダ・シンボルを有する通信装置の場合、リーダ・シンボルを有する２つの通信装置を１つに集約するものとなる。リーダ・シンボルを有する装置を最終的に１つにするためには、リーダ・シンボルを有する通信装置を互いに近い領域に集め、最終的には、リーダ・シンボルを有する通信装置間で移動処理を行わせる必要がある。
【００５１】
上述した様に、式（１）は、リーダ変数が０ではない通信装置を、リーダ変数の値が大きい程、高い山の頂点とする様にポテンシャル変数を分布させるものである。本実施形態においては、２つのリーダ・シンボルを有する通信装置が１つに集約する場合、集約後の通信装置のリーダ変数は、元の２つの通信装置のリーダ変数の合計となり、集約により大きな山が生じる。したがって、ポテンシャル変数が最大の隣接装置にリーダ・シンボルを移動させることで、リーダ・シンボルを有する通信装置を互いに近い領域に集め、最終的には１台に集約させることができる。
【００５２】
なお、最終的にリーダ・シンボルを有する装置が１つとなり、この装置が所定の機能を実行していたとしても、この装置がネットワークから離脱する可能性がある。この装置がネットワークから離脱した場合、ネットワークの総ての通信装置のポテンシャル変数は、０に収束する。したがって、各通信装置は、ポテンシャル変数の更新後、更新後の値が所定の閾値以下であるか否かを判定し、所定の閾値以下となっている場合、隣接装置数を調べ、隣接装置数が１では無い場合、所定の確率でリーダ変数に、起動時と同じ値Ｑを設定する。これにより、リーダ・フラグが“真”の装置がネットワークから離脱したとしても、所定の機能を実行する装置を新たに生じさせることができる。ここで、所定の閾値は非常に小さい値とすることが好ましい。なお、隣接装置の数が１である通信装置のリーダ変数を常に０に設定し、ポテンシャル値を０に更新するのは、所定の機能を実行する装置をネットワークの端に張り付かせない様にするためである。
【００５３】
本発明においては、ポテンシャル変数の分布において山の頂点となっている通信装置が所定の機能を実行しているため、この所定の機能にアクセスしたい場合、通信装置は、隣接装置の中で、ポテンシャル変数が最大の通信装置に信号を送信すれば良い。信号を受信した通信装置は、自装置が所定の機能を実行していない場合、さらに、隣接装置の中で、ポテンシャル変数が最大の通信装置に信号を転送することで、最終的には、所定の機能を実行している通信装置に信号が到達することになる。
【００５４】
なお、本発明による通信装置は、コンピュータを図２の各部として機能させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。さらに、本発明は、ハードウェア及びソフトウェアの組合せによっても実現可能である。
【符号の説明】
【００５５】
１  他装置変数管理部
２  ポテンシャル計算部
３  自装置変数管理部
４  実行判定部
５  移動処理部
【図１】
2011077616.tif 000007
【図２】
2011077616.tif 000008
【図３】
2011077616.tif 000009