(57)【要約】【課題】より正確な通信を、より容易に行うことができるようにする。【解決手段】送信装置１１は、送信用データを分割してパケットデータを生成し、そのパケットデータに対して、有効係数の存在可能領域が限定された係数行列を用いてEOR演算を行い、パケットデータを実際に送信するEOR変換データに変換してから、それをUDP等の所定のプロトコルを用いてパケット化して送信する。受信装置１３は、送信装置１１より供給されるパケットを受信してEOR変換データを抽出し、その受信したEOR変換データを用いて、元の送信用データを復元する。このとき、受信装置１３は、送信装置１１より送信されたEOR変換データの中から、少なくとも元の送信用データを復元するのに必要な数以上のEOR変換データを受信する。本発明は、例えば、通信システムに適用できる。【選択図】図２
2005223683.tif 000002
【特許請求の範囲】
【請求項１】
送信用データを送信する送信装置と、前記送信装置により送信される前記送信用データを受信する受信装置を備える送受信システムであって、
前記送信装置は、前記送信用データを分割することにより複数の第１のデータを生成し、生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換し、得られた複数の前記第２のデータをそれぞれパケット化し、前記受信装置に送信し、
前記受信装置は、前記送信装置が送信した複数の前記第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信し、受信した前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持し、保持した複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する
ことを特徴とする送受信システム。
【請求項２】
送信用データを受信装置に送信する送信装置であって、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成手段と、
前記データ生成手段により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換手段と、
前記変換手段により複数の前記第１のデータを変換して得られた複数の前記第２のデータを、それぞれパケット化し、前記受信装置に送信する送信手段と
を備えることを特徴とする送信装置。
【請求項３】
前記変換手段は、
前記排他的論理和演算を行う前記第１のデータを選択するための係数行列を用いて前記第１のデータを前記第２のデータに変換する行列式を生成する行列式生成手段と、
前記行列式生成手段により生成された前記行列式を、前記排他的論理和演算を用いて演算することにより前記第２のデータを求める演算手段と
を備えることを特徴とする請求項２に記載の送信装置。
【請求項４】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、
前記有効係数は、前記係数行列の各行に対して前記部分集合として設定される前記有効係数が存在可能な列の範囲内において任意に選択された成分であり、
各行の前記範囲は、前記範囲の列数が互いに同じであり、前記範囲の先頭の列が行毎に互いに異なるように設定される
ことを特徴とする請求項３に記載の送信装置。
【請求項５】
前記範囲を行毎に設定する範囲設定手段と、
前記範囲設定手段により設定された前記範囲に基づいて、前記係数行列の各成分の値を判定する判定手段と、
前記判定手段による判定結果に基づいて前記係数行列の全ての成分の値を保持することにより前記係数行列を保持する係数行列保持手段と
をさらに備え、
前記行列式生成手段は、前記係数行列保持手段により保持されている前記係数行列を用いて前記行列式を生成する
ことを特徴とする請求項４に記載の送信装置。
【請求項６】
前記変換手段は、複数の前記第１のデータを、前記第１のデータの数より多くの前記第２のデータに変換する
ことを特徴とする請求項２に記載の送信装置。
【請求項７】
前記変換手段により前記第１のデータを変換して得られた前記第２のデータに、前記範囲に関する情報を付加する情報付加手段をさらに備え、
前記送信手段は、前記情報付加手段により前記情報が付加された複数の前記第２のデータをそれぞれパケット化し、前記受信装置に送信する
ことを特徴とする請求項２に記載の送信装置。
【請求項８】
前記データ生成手段は、前記送信用データをブロックに分割し、さらに、前記ブロックを分割することにより複数の前記第１のデータを生成する
ことを特徴とする請求項２に記載の送信装置。
【請求項９】
送信用データを受信装置に送信する送信装置の送信方法であって、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、
前記データ生成ステップの処理により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換ステップと、
前記変換ステップの処理により複数の前記第１のデータが変換されて得られた複数の前記第２のデータを、それぞれパケット化し、前記受信装置に送信するように制御する送信制御ステップと
を含むことを特徴とする送信方法。
【請求項１０】
送信用データを受信装置に送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、
前記データ生成ステップの処理により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換ステップと、
前記変換ステップの処理により複数の前記第１のデータが変換されて得られた複数の前記第２のデータを、それぞれパケット化し、前記受信装置に送信するように制御する送信制御ステップと
を含むことを特徴とするプログラム。
【請求項１１】
送信装置が送信したデータを受信する受信装置であって、
前記送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、前記排他的論理和演算の演算結果として複数の前記部分集合について求められた複数の第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信する受信手段と、
前記受信手段により受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持手段と、
前記保持手段により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元手段と
を備えることを特徴とする受信装置。
【請求項１２】
前記復元手段は、
前記排他的論理和演算を行う前記第１のデータを選択するための係数行列を用いて前記第１のデータを前記第２のデータに変換する行列式を生成する行列式生成手段と、
前記行列式生成手段により生成された前記行列式を前記第１のデータを変数として解き、前記第１のデータを求める演算手段と
を備えることを特徴とする請求項１１に記載の受信装置。
【請求項１３】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、
前記有効係数は、前記係数行列の各行に対して前記部分集合として設定される前記有効係数が存在可能な列の範囲内において任意に選択された成分であり、
各行の前記範囲は、前記範囲の列数が互いに同じであり、前記範囲の先頭の列が行毎に互いに異なるように設定される
ことを特徴とする請求項１２に記載の受信装置。
【請求項１４】
前記受信手段により受信された前記第２のデータに付加された、前記排他的論理和演算を行う複数の前記第１のデータを任意に選択する前記範囲に関する情報に基づいて、前記係数行列を生成する係数行列生成手段をさらに備え、
前記行列式生成手段は、前記係数行列生成手段により生成された前記係数行列を用いて、前記行列式を生成する
ことを特徴とする請求項１２に記載の受信装置。
【請求項１５】
前記係数行列の各成分を所定の行数および列数毎に複数の小領域に分割し、各小領域の成分の値に基づいて、前記行列式生成手段により生成された前記行列式の、前記小領域に対応する部分の演算を行うか否かを判定する演算判定手段をさらに備え、
前記演算手段は、前記行列式生成手段により生成された前記行列式の、前記演算判定手段により演算を行うと判定された部分についてのみ演算を行って、前記第１のデータを変数として解くことにより前記第１のデータを求める
ことを特徴とする請求項１２に記載の受信装置。
【請求項１６】
送信装置が送信したデータを受信する受信装置の受信方法であって、
前記送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、前記排他的論理和演算の演算結果として複数の前記部分集合について求められた複数の第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信するように制御する受信制御ステップと、
前記受信制御ステップの処理により制御されて受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持ステップと、
前記保持ステップの処理により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元ステップと
を含むことを特徴とする受信方法。
【請求項１７】
送信装置が送信したデータを受信する受信処理をコンピュータに行わせるプログラムにおいて、
前記送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、前記排他的論理和演算の演算結果として複数の前記部分集合について求められた複数の第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信するように制御する受信制御ステップと、
前記受信制御ステップの処理により制御されて受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持ステップと、
前記保持ステップの処理により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元ステップと
を含むことを特徴とするプログラム。
【請求項１８】
送信用データを送受信する送受信装置であって、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成手段と、
前記データ生成手段により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換手段と、
前記変換手段により複数の前記第１のデータが変換されて得られた複数の前記第２のデータをそれぞれパケット化し、他の送受信装置に送信する送信手段と、
前記他の送受信装置が送信した複数の前記第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信する受信手段と、
前記受信手段により受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持手段と、
前記保持手段により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元手段と
を備えることを特徴とする送受信装置。
【請求項１９】
送信用データを送受信する送受信装置の送受信方法であって、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、
前記データ生成ステップの処理により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換ステップと、
前記変換ステップの処理により複数の前記第１のデータが変換されて得られた複数の前記第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップと、
前記他の送受信装置が送信した複数の前記第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信するように制御する受信制御ステップと、
前記受信制御ステップの処理により制御されて受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持ステップと、
前記保持ステップの処理により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元ステップと
を含むことを特徴とする送受信方法。
【請求項２０】
送信用データを送受信する送受信処理を、コンピュータに行わせるプログラムにおいて、
前記送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、
前記データ生成ステップの処理により生成された全ての前記第１のデータを要素とする集合を全体集合とし、前記全体集合より前記全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した前記部分集合より前記第１のデータを任意に複数選択し、選択した複数の前記第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の前記部分集合について求めることにより、複数の前記第１のデータを複数の前記第２のデータに変換する変換ステップと、
前記変換ステップの処理により複数の前記第１のデータが変換されて得られた複数の前記第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップと、
前記他の送受信装置が送信した複数の前記第２のデータを、前記第２のデータが対応する前記第１のデータの数以上受信するように制御する受信制御ステップと、
前記受信制御ステップの処理により制御されて受信される、前記第２のデータが対応する前記第１のデータの数以上の前記第２のデータを保持する保持ステップと、
前記保持ステップの処理により保持される複数の前記第２のデータを用いて、前記第２のデータに対応する行列式を生成し、前記行列式を解くことにより、前記第１のデータを復元する復元ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送受信システム、送信装置および方法、受信装置および方法、送受信装置および方法、並びにプログラムに関し、特に、データの送受信をより正確、かつ、より容易に行うことができるようにした送受信システム、送信装置および方法、受信装置および方法、送受信装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、ブロードバンド通信網の発達などにより、インターネットに代表されるネットワークを介して音声や映像等のデータのストリーミング配信やリアルタイムな放送等が数多く行われるようになってきた。
【０００３】
従来、このようなネットワークを介したデータ配信において、例えば、データイレースのように、送信装置が送信したデータ（パケット）の内、一部が受信装置により受信できない場合や、受信装置が送信装置の送信処理の途中から受信を開始した場合等において、受信装置が不足しているデータの再送を送信装置に対して要求する方法がある。
【０００４】
また、送信装置が、例えば、リードソロモン符号等を用いて、送信データを、互いに独立した複数のデータに変換し、その変換した複数のデータを送信することにより、受信装置がそれらの複数のデータの内、任意のデータを、所定の数以上受信し、その受信したデータから元の送信データを復元する方法も提案されている。
【０００５】
例えば、送信装置のエンコーダが、キー発生器において発生されたキーＩを用いて、入力記号発生器の出力を変換し、リードソロモン値関数である出力記号Ｂ（Ｉ）を生成し、そのキーと出力記号を受信装置に供給し、受信装置のデコーダは、受信したキーを用いて出力記号を変換し、入力記号を回復する方法がある（例えば、特許文献１参照）。
【０００６】
また、送信側の装置が、例えば、図１に示されるように、同じデータを繰り返し送信し、受信側の装置は、パケットをロスした場合、次回に送信されるデータ（パケット群）の中から、ロスしたパケットを受信し、データを復元するカルーセル方式を用いた方法もある。
【０００７】
図１は、受信側の装置がデータを受信する様子の例を示す図である。送信側の装置が同じデータ１を繰り返し送信するので、受信側の装置は、データ１Ａ、データ１Ｂ、データ１Ｃ、データ１Ｄのように、同じデータを繰り返し受信する。従って、例えば、データ１Ａを受信した際に、パケットロス２Ａが発生した場合であっても、受信側の装置は、次に受信するデータ１Ｂの、そのロスしたパケット（パケットロス２Ａ）に対応するパケット２Ｂを受信すれば、そのパケット２Ｂを用いて、データ１を復元することができる。また、データ１Ｂを受信した際に、パケット２Ｂもロスしてしまったとしても、受信側の装置は、さらに次に受信するデータ１Ｃの、パケットロス２Ａに対応するパケット２Ｃを受信することができれば、そのパケット２Ｃを用いて、データ１を復元することができる。さらに、このパケット２Ｃをロスした場合も、受信側の装置は、パケット２Ｄを受信すればよい。このように、受信側の装置は、繰り返される送信の内、少なくともいずれか１回の送信において各パケットを受信することができ、結果的に全パケットを受信することができれば、データ１を復元することができる。
【０００８】
【特許文献１】特開２００１−１８９６６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したような再送要求を行う方法の場合、例えば、マルチキャスト等のように、複数の装置に対してデータを送信するような通信の場合、送信側の装置には、受信側の各装置からの再送要求が集中してしまうため、送信側の装置の処理の負荷が増大し、送信処理を正常に行うことができない恐れがあるという課題があった。
【００１０】
また、リードソロモン符号等を用いる方法の場合、データのエンコード処理およびデコード処理に、桁あふれを防止するためにガロア体上の演算が必要になり、そのため複雑な演算が増大し、送信装置および受信装置の負荷が増大し、正常にデータの送受信を行うためにそれらの処理性能を高性能なものにしなければならず、それらの製造コストが増大してしまうという課題があった。
【００１１】
そこで、製造コストが下がるように、ガロア体上の演算処理を減らすために、変換するデータ量を削減する方法が考えられるが、送信装置が送信するデータ量を削減すると、受信装置において、元のデータの復元性能が低下してしまう場合がある。
【００１２】
また、上述したようなカルーセル方式の通信の場合、図１に示されるように、データ１Ａを受信する際に、パケットロス２Ａが発生すると、受信側の装置は、次回の送信であるデータ１Ｂの、パケットロス２Ａに対応するパケット２Ｂを受信するまで、待機する必要がある。すなわち、この場合、受信側の装置における受信処理の時間は、データ１を受信するのに必要な時間分、長くなってしまい、受信側の装置における受信処理の負荷が増大してしまうという課題があった。すなわち、図１に示されるように、受信側の装置は、パケットロス２Ａが発生すると、次に送信されるパケット２Ｂを受信するまで（受信側の装置がデータ１を受信するのに必要な時間）待機しなければならず、受信処理時間が増大してしまう。さらに、パケット２Ｂをロスした場合、受信側の装置は、さらに待機時間を延長し、次のパケット２Ｃを受信するまで待機する必要がある。
【００１３】
本発明は、このような状況に鑑みてなされたものであり、データの送受信を正確、かつ、より容易に行うことができるようにするものである。
【課題を解決するための手段】
【００１４】
本発明の送受信システムは、送信用データを送信する送信装置と、送信装置により送信される送信用データを受信する受信装置を備える送受信システムであって、送信装置は、送信用データを分割することにより複数の第１のデータを生成し、生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換し、得られた複数の第２のデータをそれぞれパケット化し、受信装置に送信し、受信装置は、送信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信し、受信した第２のデータが対応する第１のデータの数以上の第２のデータを保持し、保持した複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元することを特徴とする。
【００１５】
本発明の送信装置は、送信用データを分割することにより複数の第１のデータを生成するデータ生成手段と、データ生成手段により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換手段と、変換手段により複数の第１のデータを変換して得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信する送信手段とを備えることを特徴とする。
【００１６】
前記変換手段は、排他的論理和演算を行う第１のデータを選択するための係数行列を用いて第１のデータを第２のデータに変換する行列式を生成する行列式生成手段と、行列式生成手段により生成された行列式を、排他的論理和演算を用いて演算することにより第２のデータを求める演算手段とを備えるようにすることができる。
【００１７】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、有効係数は、係数行列の各行に対して部分集合として設定される有効係数が存在可能な列の範囲内において任意に選択された成分であり、各行の範囲は、範囲の列数が互いに同じであり、範囲の先頭の列が行毎に互いに異なるように設定されるようにすることができる。
【００１８】
前記範囲を行毎に設定する範囲設定手段と、範囲設定手段により設定された範囲に基づいて、係数行列の各成分の値を判定する判定手段と、判定手段による判定結果に基づいて係数行列の全ての成分の値を保持することにより係数行列を保持する係数行列保持手段とをさらに備え、行列式生成手段は、係数行列保持手段により保持されている係数行列を用いて行列式を生成するようにすることができる。
【００１９】
前記変換手段は、複数の第１のデータを、第１のデータの数より多くの第２のデータに変換するようにすることができる。
【００２０】
前記変換手段により第１のデータを変換して得られた第２のデータに、範囲に関する情報を付加する情報付加手段をさらに備え、送信手段は、情報付加手段により情報が付加された複数の第２のデータをそれぞれパケット化し、受信装置に送信するようにすることができる。
【００２１】
前記データ生成手段は、送信用データをブロックに分割し、さらに、ブロックを分割することができる。
【００２２】
本発明の送信方法は、送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップと、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信するように制御する送信制御ステップとを含むことを特徴とする。
【００２３】
本発明の第１のプログラムは、送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップと、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信するように制御する送信制御ステップとをコンピュータに実行させる。
【００２４】
本発明の受信装置は、送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信する受信手段と、受信手段により受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持手段と、保持手段により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元手段とを備えることを特徴とする。
【００２５】
前記復元手段は、排他的論理和演算を行う第１のデータを選択するための係数行列を用いて第１のデータを第２のデータに変換する行列式を生成する行列式生成手段と、行列式生成手段により生成された行列式を第１のデータを変数として解き、第１のデータを求める演算手段とを備えるようにすることができる。
【００２６】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、有効係数は、係数行列の各行に対して部分集合として設定される有効係数が存在可能な列の範囲内において任意に選択された成分であり、各行の範囲は、範囲の列数が互いに同じであり、範囲の先頭の列が行毎に互いに異なるように設定されるようにすることができる。
【００２７】
前記受信手段により受信された第２のデータに付加された、排他的論理和演算を行う複数の第１のデータを任意に選択する範囲に関する情報に基づいて、係数行列を生成する係数行列生成手段をさらに備え、行列式生成手段は、係数行列生成手段により生成された係数行列を用いて、行列式を生成するようにすることができる。
【００２８】
前記係数行列の各成分を所定の行数および列数毎に複数の小領域に分割し、各小領域の成分の値に基づいて、行列式生成手段により生成された行列式の、小領域に対応する部分の演算を行うか否かを判定する演算判定手段をさらに備え、演算手段は、行列式生成手段により生成された行列式の、演算判定手段により演算を行うと判定された部分についてのみ演算を行って、第１のデータを変数として解くことにより第１のデータを求めるようにすることができる。
【００２９】
本発明の受信方法は、送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップと、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップと、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元ステップとを含むことを特徴とする。
【００３０】
本発明の第２のプログラムは、送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップと、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップと、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元ステップとをコンピュータに実行させる。
【００３１】
本発明の送受信装置は、送信用データを分割することにより複数の第１のデータを生成するデータ生成手段と、データ生成手段により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換手段と、変換手段により複数の第１のデータが変換されて得られた複数の第２のデータをそれぞれパケット化し、他の送受信装置に送信する送信手段と、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信する受信手段と、受信手段により受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持手段と、保持手段により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元手段とを備えることを特徴とする。
【００３２】
本発明の送受信方法は、送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップと、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップと、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップと、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップと、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元ステップとを含むことを特徴とする。
【００３３】
本発明の第３のプログラムは、送信用データを分割することにより複数の第１のデータを生成するデータ生成ステップと、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップと、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップと、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップと、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップと、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元ステップとをコンピュータに実行させる。
【００３４】
本発明の送受信システムにおいては、送信用データを送信する送信装置と、送信装置により送信される送信用データを受信する受信装置とが備えられ、送信装置においては、送信用データを分割することにより複数の第１のデータが生成され、生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合が設定され、設定された部分集合より第１のデータが任意に複数選択され、選択された複数の第１のデータが互いにビット毎に排他的論理和演算され、演算結果である第２のデータが複数の部分集合について求められることにより、複数の第１のデータが複数の第２のデータに変換され、得られた複数の第２のデータがそれぞれパケット化されて、受信装置に送信され、受信装置においては、送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての第１のデータ要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合が設定され、設定された部分集合より第１のデータが任意に複数選択され、選択した複数の第１のデータが互いにビット毎に排他的論理和演算され、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータが、第２のデータが対応する第１のデータの数以上受信され、受信された第２のデータが対応する第１のデータの数以上の第２のデータが保持され、保持された複数の第２のデータを用いて、第２のデータに対応する行列式が生成され、行列式を解くことにより、第１のデータが復元される。
【００３５】
本発明の送信装置および方法、並びに第１のプログラムにおいては、送信用データを分割することにより複数の第１のデータが生成され、生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合が設定され、設定された部分集合より第１のデータが任意に複数選択され、選択された複数の第１のデータが互いにビット毎に排他的論理和演算され、演算結果である第２のデータが複数の部分集合について求められることにより、複数の第１のデータが複数の第２のデータに変換され、複数の第１のデータを変換して得られた複数の第２のデータが、それぞれパケット化されて、受信装置に送信される。
【００３６】
本発明の受信装置および方法、並びに第２のプログラムにおいては、送信装置が送信したデータであり、それぞれが、送信用データが分割されて生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータが、第２のデータが対応する第１のデータの数以上受信され、受信された、第２のデータが対応する第１のデータの数以上の第２のデータが保持され、保持された複数の第２のデータを用いて、第２のデータに対応する行列式が生成され、行列式を解くことにより、第１のデータが復元される。
【００３７】
本発明の送受信装置および方法、並びに第３のプログラムにおいては、送信用データを分割することにより複数の第１のデータが生成され、生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータが複数の第２のデータに変換され、複数の第１のデータが変換されて得られた複数の第２のデータがそれぞれパケット化されて、他の送受信装置に送信され、他の送受信装置が送信した複数の第２のデータが、第２のデータが対応する第１のデータの数以上受信され、受信された、第２のデータが対応する第１のデータの数以上の第２のデータが保持され、保持された複数の第２のデータを用いて、第２のデータに対応する行列式が生成されて、行列式を解くことにより、第１のデータが復元される。
【発明の効果】
【００３８】
本発明によれば、データを送受信することができる。特に、データの送受信をより正確、かつ、より容易に行うことができる。
【発明を実施するための最良の形態】
【００３９】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４０】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定したりするものではない。
【００４１】
本発明においては、送信用データ（例えば、図４の送信データ４１）を送信する送信装置（例えば、図２の送信装置１１）と、送信装置により送信される送信用データを受信する受信装置（例えば、図２の受信装置１３）を備える送受信システム（例えば、図２の通信システム１０）が提供される。送信装置は、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成し（例えば、図１７のステップＳ２）、生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータを複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータ（例えば、図４のEOR変換データ４４）に変換し（例えば、図１７のステップＳ６）、得られた複数の第２のデータをそれぞれパケット化し、受信装置に送信し（例えば、図１７のステップＳ８）、受信装置は、送信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信し（例えば、図２０のステップＳ８１）、受信した第２のデータが対応する第１のデータの数以上の第２のデータを保持し（例えば、図２０のステップＳ８３）、保持した複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する（例えば、図２０のステップＳ８５）。
【００４２】
本発明においては、送信用データ（例えば、図４の送信データ４１）を受信装置（例えば、図２の受信装置１３）に送信する送信装置（例えば、図２の送信装置１１）が提供される。この送信装置は、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成手段（例えば、図３のブロック分割部２２）と、データ生成手段により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４の変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換手段（例えば、図３のEOR変換データ生成部２４）と、変換手段により複数の第１のデータを変換して得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信する送信手段（例えば、図３のUDPパケット化部２７乃至イーサネット(R)処理部３１）とを備える。
【００４３】
前記変換手段は、排他的論理和演算を行う第１のデータを選択するための係数行列（例えば、式（３）の右辺第１項の行列）を用いて第１のデータを第２のデータに変換する行列式（例えば、式（３））を生成する行列式生成手段（例えば、図６の行列式生成部６１）と、行列式生成手段により生成された行列式を、排他的論理和演算を用いて演算することにより第２のデータを求める演算手段（例えば、図６の行列式演算部６２）とを備えるようにすることができる。
【００４４】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、有効係数は、係数行列の各行に対して部分集合として設定される有効係数が存在可能な列の範囲（例えば、図８の有効係数の存在可能範囲）内において任意に選択された成分であり、各行の範囲は、範囲の列数が互いに同じであり、範囲の先頭の列が行毎に互いに異なるように設定されるようにすることができる。
【００４５】
前記範囲を行毎に設定する範囲設定手段（例えば、図６の範囲制御部８４）と、範囲設定手段により設定された範囲に基づいて、係数行列の各成分の値を判定する判定手段（例えば、図６の係数判定部８５）と、判定手段による判定結果に基づいて係数行列の全ての成分の値を保持することにより係数行列を保持する係数行列保持手段（例えば、図６の係数行列保持部７１）とをさらに備え、行列式生成手段は、係数行列保持手段により保持されている係数行列を用いて行列式を生成する（例えば、図１８のステップＳ３９）ようにすることができる。
【００４６】
前記変換手段により第１のデータを変換して得られた第２のデータに、範囲に関する情報（例えば、図１０の先頭情報１２２）を付加する情報付加手段（例えば、図９の先頭情報付加部１０２）をさらに備え、送信手段は、情報付加手段により情報が付加された複数の第２のデータをそれぞれパケット化し、受信装置に送信するようにすることができる。
【００４７】
前記データ生成手段は、送信用データをブロック（例えば、図４のブロック４２）に分割し、さらに、ブロックを分割することができる。
【００４８】
本発明においては、送信用データ（例えば、図４の送信データ４１）を受信装置（例えば、図２の受信装置１３）に送信する送信装置（例えば、図２の送信装置１１）の送信方法が提供される。この送信方法は、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成ステップ（例えば、図１７のステップＳ２）と、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４のEOR変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップ（例えば、図１７のステップＳ６）と、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信するように制御する送信制御ステップ（例えば、図１７のステップＳ８）とを含む。
【００４９】
本発明においては、送信用データ（例えば、図４の送信データ４１）を受信装置（例えば、図２の受信装置１３）に送信する送信処理をコンピュータ（例えば、図２の送信装置１１）に実行させる第１のプログラムが提供される。この第１のプログラムは、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成ステップ（例えば、図１７のステップＳ２）と、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４のEOR変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップ（例えば、図１７のステップＳ６）と、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、受信装置に送信するように制御する送信制御ステップ（例えば、図１７のステップＳ８）とを含む。
【００５０】
本発明においては、送信装置（例えば、図２の送信装置１１）が送信したデータを受信する受信装置（例えば、図２の受信装置１３）が提供される。この受信装置は、送信装置が送信したデータであり、それぞれが、送信用データ（例えば、図４の送信データ４１）が分割されて生成された全ての第１のデータ（例えば、図４の元データ４３）を要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータ（例えば、図４の変換データ４４）を、第２のデータが対応する第１のデータの数以上受信する受信手段（例えば、図１１のイーサネット(R)処理部１３１乃至アプリケーションデータ抽出部１３３）と、受信手段により受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持手段（例えば、図１１のバッファ部１３４）と、保持手段により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元手段（例えば、図１３のパケットデータ復元部１３５）とを備える。
【００５１】
前記復元手段は、排他的論理和演算を行う第１のデータを選択するための係数行列（例えば、式（４）の右辺第１項の行列）を用いて第１のデータを第２のデータに変換する行列式（例えば、式（４））を生成する行列式生成手段（例えば、図１３の行列式作成部１５３）と、行列式生成手段により生成された行列式を第１のデータを変数として解き、第１のデータを求める演算手段（例えば、図１３の行列式演算部１５７）とを備えるようにすることができる。
【００５２】
前記係数行列は、値が「１」の成分である有効係数と、値が「０」の成分である無効係数とにより構成され、有効係数は、係数行列の各行に対して部分集合として設定される有効係数が存在可能な列の範囲（例えば、図８の有効係数の存在可能範囲）内において任意に選択された成分であり、各行の範囲は、範囲の列数が互いに同じであり、範囲の先頭の列が行毎に互いに異なるように設定されるようにすることができる。
【００５３】
前記受信手段により受信された第２のデータに付加された、排他的論理和演算を行う複数の第１のデータを任意に選択する範囲（例えば、図８の有効係数の存在可能範囲）に関する情報（例えば、図１０の先頭情報１２２）に基づいて、係数行列を生成する係数行列生成手段（例えば、図１３の係数行列作成部１５２）をさらに備え、行列式生成手段は、係数行列生成手段により生成された係数行列を用いて、行列式を生成するようにすることができる。
【００５４】
前記係数行列の各成分を所定の行数および列数毎に複数の小領域（例えば、図１６のタイル１６３）に分割し、各小領域の成分の値に基づいて、行列式生成手段により生成された行列式の、小領域に対応する部分の演算を行うか否かを判定する演算判定手段（例えば、図１３のタイル処理部１５６）をさらに備え、演算手段は、行列式生成手段により生成された行列式の、演算判定手段により演算を行うと判定された部分についてのみ演算を行って、第１のデータを変数として解くことにより第１のデータを求めるようにすることができる。
【００５５】
本発明においては、送信装置（例えば、図２の送信装置１１）が送信したデータを受信する受信装置（例えば、図２の受信装置１３）の受信方法が提供される。この受信方法は、送信装置が送信したデータであり、それぞれが、送信用データ（例えば、図４の送信データ４１）が分割されて生成された全ての第１のデータ（例えば、図４の元データ４３）を要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータ（例えば、図４の変換データ４４）を、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップ（例えば、図２０のステップＳ８１）と、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップ（例えば、図２０のステップＳ８３）と、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式（例えば、式（４））を生成し、行列式を解くことにより、第１のデータを復元する復元ステップ（例えば、図２０のステップＳ８５）とを含む。
【００５６】
本発明においては、送信装置（例えば、図２の送信装置１１）が送信したデータを受信する受信処理をコンピュータ（例えば、図２の受信装置１３）に実行させる第２のプログラムが提供される。この第２のプログラムは、送信装置が送信したデータであり、それぞれが、送信用データ（例えば、図４の送信データ４１）が分割されて生成された全ての第１のデータ（例えば、図４の元データ４３）を要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、排他的論理和演算の演算結果として複数の部分集合について求められた複数の第２のデータ（例えば、図４の変換データ４４）を、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップ（例えば、図２０のステップＳ８１）と、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップ（例えば、図２０のステップＳ８３）と、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式（例えば、式（４））を生成し、行列式を解くことにより、第１のデータを復元する復元ステップ（例えば、図２０のステップＳ８５）とを含む。
【００５７】
本発明においては、送信用データ（例えば、図４の送信データ４１）を送受信する送受信装置（例えば、図３１の送受信装置４１１または送受信装置４１３）が提供される。この送受信装置は、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成手段（例えば、図３のブロック分割部２２）と、データ生成手段により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４の変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換手段（例えば、図３のEOR変換データ生成部２４）と、変換手段により複数の第１のデータが変換されて得られた複数の第２のデータをそれぞれパケット化し、他の送受信装置に送信する送信手段（例えば、図３のUDPパケット化部２７乃至イーサネット(R)処理部３１）と、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信する受信手段（例えば、図１１のイーサネット(R)処理部１３１乃至アプリケーションデータ抽出部１３３）と、受信手段により受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持手段（例えば、図１１のバッファ部１３４）と、保持手段により保持される複数の第２のデータを用いて、第２のデータに対応する行列式を生成し、行列式を解くことにより、第１のデータを復元する復元手段（例えば、図１３のパケットデータ復元部１３５）とを備える。
【００５８】
本発明においては、送信用データ（例えば、図４の送信データ４１）を送受信する送受信装置（例えば、図３１の送受信装置４１１または送受信装置４１３）の送受信方法が提供される。この送受信方法は、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成ステップ（例えば、図１７のステップＳ２）と、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４のEOR変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップ（例えば、図１７のステップＳ６）と、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップ（例えば、図１７のステップＳ８）と、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップ（例えば、図２０のステップＳ８１）と、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップ（例えば、図２０のステップＳ８３）と、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式（例えば、式（４））を生成し、行列式を解くことにより、第１のデータを復元する復元ステップ（例えば、図２０のステップＳ８５）とを含む。
【００５９】
本発明においては、送信用データ（例えば、図４の送信データ４１）を送受信する送受信処理をコンピュータ（例えば、図１８の送受信装置２１１または送受信装置２１３）に実行させる第３のプログラムが提供される。この第３のプログラムは、送信用データを分割することにより複数の第１のデータ（例えば、図４の元データ４３）を生成するデータ生成ステップ（例えば、図１７のステップＳ２）と、データ生成ステップの処理により生成された全ての第１のデータを要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合（例えば、図８の有効係数の存在可能範囲）を設定し、設定した部分集合より第１のデータを任意に複数選択し、選択した複数の第１のデータを互いにビット毎に排他的論理和演算し、演算結果である第２のデータ（例えば、図４のEOR変換データ４４）を複数の部分集合について求めることにより、複数の第１のデータを複数の第２のデータに変換する変換ステップ（例えば、図１７のステップＳ６）と、変換ステップの処理により複数の第１のデータが変換されて得られた複数の第２のデータを、それぞれパケット化し、他の送受信装置に送信するように制御する送信制御ステップ（例えば、図１７のステップＳ８）と、他の送受信装置が送信した複数の第２のデータを、第２のデータが対応する第１のデータの数以上受信するように制御する受信制御ステップ（例えば、図２０のステップＳ８１）と、受信制御ステップの処理により制御されて受信される、第２のデータが対応する第１のデータの数以上の第２のデータを保持する保持ステップ（例えば、図２０のステップＳ８３）と、保持ステップの処理により保持される複数の第２のデータを用いて、第２のデータに対応する行列式（例えば、式（４））を生成し、行列式を解くことにより、第１のデータを復元する復元ステップ（例えば、図２０のステップＳ８５）とを含む。
【００６０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００６１】
図２は、本発明を適用した通信システムの構成例を表している。
【００６２】
図２の通信システム１０は、データを送信する送信装置１１、LAN（Local Area Network）やインターネット等に代表されるネットワークであり、送信装置１１が接続されるネットワーク１２、および、ネットワーク１２に接続され、送信装置１１より送信されるデータを受信する受信装置１３により構成される。
【００６３】
送信装置１１は、外部より供給されたダウンロードデータ等の、送信用のコンテンツデータ（送信用データ）を取得すると、その送信用データを分割して送信する際のパケットサイズのデータ（パケットデータ）を生成し、それらのパケットデータの中から任意に抽出した複数のパケットデータをビット毎のEOR演算（Exclusive OR：排他的論理和）によって合成することにより、パケットデータを実際に送信するEOR変換データに変換する。送信装置１１は、このような要領で、パケットデータを変換したEOR変換データを複数生成し、それらをUDP（User Datagram Protocol）等の所定のプロトコルを用いてパケット化して送信する。
【００６４】
受信装置１３は、送信装置１１より供給されるパケット（EOR変換データ）を受信すると、受信したパケットからEOR変換データを抽出し、その受信したEOR変換データを用いて、元の送信用データを復元する。このとき、送信装置１１は、受信装置１３が元の送信用データを復元するのに必要な数以上のEOR変換データを受信装置１３に送信し、受信装置１３は、その送信されたEOR変換データの中から、少なくとも、元の送信用データを復元するのに必要な数以上のEOR変換データを受信する。なお、後述するように、送信装置１１が送信するEOR変換データは、互いに独立であることが保証されていないので、実際には、受信装置１３は、元の送信用データを復元することができるように、送信装置１１より供給されるEOR変換データを必要数より多く受信する（マージン分を確保する）。受信装置１３は、このようにEOR変換データを受信すると、それらのEOR変換データを用いて、EOR演算の行列式を生成し、その行列式の解を求めることにより、元の送信用データを復元する。送信装置１１におけるEOR変換データの生成方法、および、受信装置１３における元の送信用データの復元方法の詳細については後述する。
【００６５】
このようにすることにより、受信装置１３は、送信装置１１が送信するパケットを全て受信しなくても、送信装置１１に再送要求を行うことなく、送信装置１１が送信した送信用データを復元することができる。
【００６６】
図３は、送信装置１１の詳細な構成例を示すブロック図である。なお、送信装置１１により処理される送信用データの変化を、図４を用いて説明する。
【００６７】
図３において、送信装置１１のデータ分割部２１は、送信装置１１の外部より供給されたコンテンツデータ等の送信データを所定のデータサイズのブロックに分割し、それをブロック分割部２２に供給する。すなわち、データ分割部２１は、供給される送信データを内蔵するバッファ（図示せず）に蓄積していき、所定のデータサイズのデータが蓄積される度に、それをブロックとしてブロック分割部２２に供給する。
【００６８】
例えば、図４の場合、送信装置１１に供給される送信データ４１は、データ分割部２１により、ブロックＡ乃至ブロックＣの３つのブロック４２に分割される。
【００６９】
図３に戻り、ブロック分割部２２は、データ分割部２１と同様にして、データ分割部２１より供給されるブロック単位の送信データを、さらに所定のデータサイズに分割する。すなわち、ブロック分割部２２は、ブロック単位の送信データを、後段において、パケット化する際のデータサイズ（パケットサイズ）に分割し、パケット用のデータ（パケットデータ）を生成する。パケットデータを生成したブロック分割部２２は、それを、パケットデータ保持部２３に供給する。
【００７０】
例えば、図４において、ブロック４２は、それぞれ、ブロック分割部２２により、パケット化する際のデータサイズのパケットデータである元データ４３に分割される。図４の場合、各ブロックはそれぞれ３個の元データ４３に分割される。例えば、ブロックＡは元データＡ1乃至Ａ3に分割され、ブロックＢは元データＢ1乃至Ｂ3に分割され、ブロックＣは元データＣ1乃至Ｃ3に分割される。
【００７１】
パケットデータ保持部２３は、供給されるパケットデータ（元データ）を順次保持していき、各元データを、各元データ対応するブロックに基づいて管理する。そして、パケットデータ保持部２３は、データ変換制御部２６の制御により、所定のタイミングで、その保持している元データを、ブロック単位で、EOR変換データ生成部２４に供給する。
【００７２】
EOR変換データ生成部２４は、パケットデータ保持部２３よりブロック毎に供給された元データを取得すると、それらを用いてEOR演算を行い、その元データを変換してEOR変換データを生成する。具体的には、EOR変換データ生成部２４は、各ブロックにおいて、そのブロックに対応する元データ群から所定の方法で元データを複数選択し、それらをビット毎にEOR演算により合成し、それをEOR変換データとする。EOR変換データ生成部２４は、このような変換処理を繰り返し、複数（元データの数より多く）のEOR変換データを生成する。より具体的な生成方法については後述する。
【００７３】
例えば、図４の場合、EOR変換データ生成部２４は、ブロックＡに対応する元データＡ1乃至Ａ3を、ビット毎にEOR演算して６つのEOR変換データＡ11乃至Ａ16に変換し、ブロックＢに対応する元データＢ1乃至Ｂ3を、ビット毎にEOR演算して６つのEOR変換データＢ11乃至Ｂ16に変換し、ブロックＣに対応する元データＣ1乃至Ｃ3を、ビット毎にEOR演算して６つのEOR変換データＣ11乃至Ｃ16に変換する。
【００７４】
なお、このとき、EOR変換データ生成部２４は、まず、ブロックＡに対応する元データＡ1乃至Ａ3を変換してEOR変換データＡ11を生成し、ブロックＢに対応する元データＢ1乃至Ｂ3を変換してEOR変換データＢ11を生成し、ブロックＣに対応する元データＣ1乃至Ｃ3を変換してEOR変換データＣ11を生成する。そして次に、EOR変換データ生成部２４は、各ブロックに対する２回目の処理に移行し、ブロックＡに対応する元データＡ1乃至Ａ3を変換してEOR変換データＡ12を生成し、ブロックＢに対応する元データＢ1乃至Ｂ3を変換してEOR変換データＢ12を生成し、ブロックＣに対応する元データＣ1乃至Ｃ3を変換してEOR変換データＣ12を生成する。そして、ｃは、以降、各ブロックに対して、３回目の変換処理、４回目の変換処理、・・・と、各ブロックの変換処理を順に繰り返す。
【００７５】
従って、図４の場合、EOR変換データ４４を生成順に整列すると、Ａ11，Ｂ11，Ｃ11，Ａ12，Ｂ12，Ｃ12，Ａ13，Ｂ13，Ｃ13，Ａ14，Ｂ14，Ｃ14，Ａ15，Ｂ15，Ｃ15，Ａ16，Ｂ16，Ｃ16となる。
【００７６】
一般に、パケットの送信時にネットワーク等において、受信側が連続する複数のパケットをバースト的にロスする（受信できない）場合がある。従って、送信装置１１がEOR変換データを順番に出力した場合、そのようなバースト的パケットロスにより、パケットのロスが１つのブロックに偏って集中してしまう場合がある。後述するように、元データを復元するためには、ある程度のパケット数（のEOR変換データ）を受信する必要があるため、このように、パケットロスに偏りが生じると、特定のブロックを復元できない恐れがある。
【００７７】
そこで、送信装置１１は、以上のように、各ブロックの変換処理を１回ずつ順に実行して、各ブロックのEOR変換データを混在させた順番で送信するようにすることにより、パケットの送信時にバースト的パケットロスが発生しても、そのロスが特定のブロックに集中することを抑制することができ、バースト的パケットロスに対する耐性を強くすることができる。すなわち、送信装置１１は、より正確にデータを受信装置１３に送信することができる。従って、通信システム１０は、より正確なデータの送受信を実現することができる。
【００７８】
EOR変換データ生成部２４は、元データを変換して得られたEOR変換データをアプリケーションデータ生成部２５に供給する。また、EOR変換データ生成部２４は、この変換処理に関する情報であり、EOR変換データに付加する付加情報を、EOR変換データに対応させてアプリケーションデータ生成部２５に供給する。
【００７９】
アプリケーションデータ生成部２５は、EOR変換データ生成部２４より供給されたEOR変換データに、EOR変換データ生成部２４より供給された付加情報等を含むヘッダを付加し、アプリケーションデータを生成する。ヘッダの内容の詳細については、後述する。アプリケーションデータ生成部２５は、生成したアプリケーションデータをUDPパケット化部２７に供給する。このとき、アプリケーションデータ生成部２５は、アプリケーションデータを生成して出力したことを示す出力情報を、データ変換制御部２６に供給する。
【００８０】
データ変換制御部２６は、アプリケーションデータ生成部２５より供給された出力情報に基づいて、全てのパケットを生成したか否かを判定し、まだ、パケット（EOR変換データ）の生成が終了していないと判定した場合は、パケットデータ保持部２３とEOR変換データ生成部２４を制御し、新たなEOR変換データを生成させる。
【００８１】
なお、ここまでの処理は、ISO（International Organization for Standardization）が制定した７階層のネットワークプロトコルの構造のモデルであるOSI階層モデル（Open Systems Interconnection layer model）における、アプリケーション層、プレゼンテーション層、およびセション層の処理である。
【００８２】
アプリケーションデータを供給されたUDPパケット化部２７は、それをUDPプロトコルに基づいてパケット化し、その生成したUDPパケットをバッファ２８に供給する。
【００８３】
図５に示されるように、UDPパケット化部２７において生成されるUDPパケット５１は、６４ビットのUDPヘッダ５２およびアプリケーションデータ５３により構成される。UDPヘッダ５２には、送信元のポート番号、送信先のポート番号、アプリケーションデータ５３のデータ長、およびチェックサム等の情報が含まれる。アプリケーションデータのデータサイズは、任意に定められた所定の値であるが、通常１Ｋバイト程度である。
【００８４】
図３に戻り、バッファ２８は、RAM（Random Access Memory）等の半導体メモリ等により構成され、UDPパケット化部２７より供給されるUDPパケットを蓄積し、出力制御部２９の制御に基づいて、その蓄積しているUDPパケットを出力する。
【００８５】
出力制御部２９は、バッファ２８に蓄積されているUDPパケットを、所定のタイミングで順に取得し、IP（Internet Protocol）処理部３０に供給する。これらのUDPパケット化部２７乃至出力制御部２９による処理は、OSI階層モデルにおける、トランスポート層の処理である。
【００８６】
IP処理部３０は、OSI階層モデルにおける、ネットワーク層の処理を行い、IPプロトコルに基づいて、出力制御部２９より供給されるUDPパケットをそれぞれIPパケット化し、イーサネット(R)（Ethernet(R)）処理部３１に供給する。イーサネット(R)処理部３１は、イーサネット(R)の規格に基づいて、データリンク層および物理層の処理を行い、IP処理部３０より供給されたIPパケットをさらにパケット化し、受信装置１３に送信するように、それを、ケーブル３２を介してネットワーク１２に出力する。
【００８７】
すなわち、EOR変換データ生成部２４において生成されたEOR変換データ４４は、図４に示されるように、生成された順にパケット化され、送信パケット４５としてネットワーク１２に出力される。イーサネット(R)処理部２９より出力されたパケットは、ネットワーク１２を介して受信装置１３に供給される。
【００８８】
このように、送信用データを分割した元データをそのまま送信せずに、複数の元データ（ブロック内の一部の元データ）の内容を含むEOR変換データに変換してから送信するので、送信装置１１は、受信装置１３が、送信装置１１より送信した複数のパケットの内、任意のパケットを所定の数以上取得すれば、元データ（送信用データ）を復元することができるようにすることができる。すなわち、送信装置１１は、受信装置１３のパケットロスに対する耐性を高め、データの送受信をより正確、かつ、より容易に行うようにデータを送信することができる。
【００８９】
なお、図４において示される、１つの送信データ４１に対するブロック４２、元データ４３、またはEOR変換データ４４等の数は、一例であり、生成される各データの数が、図４に示される数以外であってももちろんよい。また、送信パケット４５の送信順も一例であり、図４に示される以外の順番で送信されるようにしてももちろんよい。
【００９０】
次に、図３のEOR変換データ生成部２４の詳細について説明する。なお、以下においては、送信装置１１は、１ブロックの送信データより、Ｎ個の元データＤ（Ｄ1乃至ＤN）を生成し、そのＮ個の元データＤを変換して、Ｍ個のEOR変換データＳ（Ｓ1乃至ＳM）を生成する場合について説明する。図６は、EOR変換データ生成部２４の詳細な構成例を示すブロック図である。
【００９１】
図６において、図３のパケットデータ保持部２３より供給された１ブロック分の元データＤは、行列式生成部６１に供給される。１ブロック分の元データＤを取得した行列式生成部６１は、係数行列保持部７１に対して、EOR変換データを生成するための行列式の生成に用いられる係数行列を要求する。
【００９２】
係数行列は、全成分が「１」または「０」のＭ行Ｎ列の、元データの係数の行列であり、EOR演算を行う元データを選択するための行列である。後述するように、EOR変換データは、係数行列と、各元データを成分とする行列との積算により求められる。従って、係数行列の各行は、互いに異なるEOR変換データに対応し、その各行の各成分は、それぞれ互いに異なる元データの係数として、その元データと積算される。すなわち、各EOR変換データは、係数行列の値が「１」の成分（係数）と積算された元データの、ビット毎のEOR演算結果となる。なお、以下において、係数行列の、値が「１」の成分（係数）を有効係数と称し、値が「０」の成分（係数）を無効係数と称する。
【００９３】
また、この係数行列は、各行において、有効係数が存在することができる範囲が限定されている。その範囲は、行毎に互いに異なっており、有効係数は、その範囲内において任意に選択された成分とされる。すなわち、ブロック内において、各EOR変換データは、それぞれ、整列された全元データの、互いに異なる一部の範囲内より任意に抽出された複数の元データを、ビット毎のEOR演算により合成したものである。
【００９４】
係数行列保持部７１には、このような係数行列が予め生成され、保持されている。
【００９５】
この係数行列の生成について説明する。上述したように、この係数行列においては、各行において、有効係数の存在可能範囲が行毎に互いに異なり、有効係数は、その範囲内において任意に選択された成分であり、それ以外の成分が無効係数である。従って、このような係数行列を生成するために、EOR変換データ生成部２４は、まず、有効係数の存在可能範囲を各行において設定し、さらに、その範囲内の成分を任意に選択し、その成分を有効係数としてその値を「１」とし、それ以外の成分を無効係数としてその値を「０」とする。すなわち、係数行列の生成は、行単位で行われる。
【００９６】
具体的には、EOR変換データ生成部２４の擬似乱数生成部８１は、まず第１行目に対して、式（１）に示されるような演算を行い、線形合同法を用いて、上述した有効係数の存在可能範囲の先頭位置を決定するための擬似乱数を生成し、その値を先頭位置決定部部８２に供給する。
【００９７】
【数１】
2005223683.tif 000003
【００９８】
式（１）において、右辺第１項の定数Ａおよび右辺第３項の定数Ｃは、所定の自然数であり、右辺第２項の変数randは、前回求めた擬似乱数であり、左辺第１項の変数randは、今回求める擬似乱数である。また、変数randの初期値は「０」であり、今回求める擬似乱数（左辺第１項の変数randの値）は、右辺の式の演算結果を「Ｎ−バンド幅」で除算したときの余りである。なお、バンド幅は、予め定められた定数であり、有効係数の存在可能範囲の大きさ（列数）を示す値である。このバンド幅は、予め擬似乱数生成部８１に内蔵されるROMまたはRAM（いずれも図示せず）に記憶されている。定数Ｎは、各ブロックの元データの数であり、その情報も予め擬似乱数生成部８１に内蔵されるROMまたはRAMに記憶されている。
【００９９】
従って、式（１）により求められる擬似乱数（左辺第１項の変数randの値）は、値「０」から値「Ｎ−１−バンド幅」の間でランダムに決定される値である。この擬似乱数の値は、すなわち、係数行列の処理の対象となる行において、有効係数の存在可能範囲の先頭位置（列）、つまり、この有効係数の存在可能範囲が列番号「０」の列（第１列目）乃至列番号「Ｎ−１−バンド幅」の列（第（Ｎ−バンド幅）列目）の、どの列から開始されるかを示している。
このような擬似乱数を生成すると、擬似乱数生成部８１は、それを先頭位置決定部８２に供給する。先頭位置決定部８２は、その擬似乱数を、生成する係数行列の行に対応させて、その行の先頭位置として保持する。擬似乱数生成部８１は、以上のように、生成する係数行列の、２行目以降の各行について擬似乱数を生成し、先頭位置決定部８２は、それらの擬似乱数を各行に対応させて保持する。
【０１００】
生成する係数行列の全ての行に対する擬似乱数（先頭位置）が保持されると、範囲制御部８４は、幅設定部８３にバンド幅の値を要求する。幅設定部８３は、上述した有効係数の存在可能範囲の幅（列数）であるバンド幅の値（列数）を、内蔵するROMまたはRAM（いずれも図示せず）に予め保持しており、範囲制御部８４の要求に基づいて、そのバンド幅の値を範囲制御部８４に供給する。
【０１０１】
バンド幅の値を取得した範囲制御部８４は、次に、先頭位置決定部８２に対して各行の擬似乱数、すなわち、有効係数の存在可能範囲の先頭位置の情報を要求する。先頭位置決定部８２は、その要求に基づいて、保持している擬似乱数を範囲制御部８４に供給する。擬似乱数を取得した範囲制御部８４は、その擬似乱数、および幅設定部８３より取得したバンド幅の値に基づいて、生成する係数行列の各行における有効係数の存在可能範囲を決定する。
【０１０２】
次に、擬似乱数生成部８１は、式（２）に示されるような演算を行い、線形合同法のモジュロ演算を用いて、係数（係数行列の各成分）の値を設定するための擬似乱数を生成し、その値を範囲制御部８４に供給する。
【０１０３】
【数２】
2005223683.tif 000004
【０１０４】
式（２）において、右辺第１項および右辺第３項の変数Ｌは、予め定められた種データである。この種データは、例えば、全行において共通であっても良いし、各行において互いに異なるようにしてももちろんよい。右辺第２項の変数randは、前回求めた擬似乱数であり、左辺第１項の変数randは、今回求める擬似乱数である。また、変数randの初期値は「０」であり、今回求める擬似乱数（左辺第１項の変数randの値）は、例えば、３２ビット処理により行った、右辺の式のモジュロ演算結果である。
【０１０５】
擬似乱数生成部８１は、以上の式（２）の演算を行い、擬似乱数を生成すると、それを範囲制御部８４に供給する。範囲制御部８４は、その擬似乱数を取得すると、事前に決定した有効係数の存在可能範囲に基づいて、その擬似乱数が対応する係数の位置がこの有効係数の存在可能範囲内であるか否かを判定し、範囲内である場合のみ、その擬似乱数を係数判定部８５に供給する。範囲外である場合は、その擬似乱数の変わりに、値「０」を係数判定部８５に供給する。
【０１０６】
係数判定部８５は、取得した擬似乱数の値に基づいて、その擬似乱数が対応する各成分の値を判定する。このとき、係数判定部８５は、取得した擬似乱数の値に対して、例えば、閾値を設け、取得した擬似乱数の値が、その閾値以上である場合は、その擬似乱数が対応する成分の値を「１」と判定し、閾値より小さい場合は、その成分の値を「０」と判定し、その判定結果を係数行列保持部７１に供給し、保持させる。
【０１０７】
その際、係数判定部８５は、係数生成確率保持部８６に保持されている係数生成確率ｐを取得し、この係数生成確率ｐの値に基づいて、閾値の値を決定する。すなわち、係数判定部８５は、上述した各行の有効係数の存在可能範囲内において、有効係数の割合が係数生成確率ｐの値になるように（近づくように）、閾値の値を設定する。
【０１０８】
係数生成確率ｐは、予め定められた、「０」より大きく、かつ、「１」より小さい値の定数であり、各行の有効係数の存在可能範囲内において、有効係数の割合がどの程度になるかを確率的に指定する値である。すなわち、例えば、係数生成確率ｐの値が「０．５」であった場合、係数判定部９４は、各行の有効係数の存在可能範囲内において、有効係数の数と無効係数の数とがほぼ１対１となるように（近似するように）閾値を設定する。例えば、擬似乱数の値が、均一の確率で３２ビット全体に分布すると仮定した場合、係数判定部８５は、閾値の値を「2147483648」に設定する。
【０１０９】
以上のようにして、係数行列保持部７１には、係数判定部８５において値を判定された判定結果（「０」または「１」）が供給される。各部は以上のような処理を各係数について行い、１つずつ係数の値を判定し、係数行列保持部７１は、それらの判定結果を係数行列の各成分として保持していき、最終的に、係数行列の全ての成分を保持する。
【０１１０】
上述したように１ブロック分の元データＤを取得した行列式生成部６１は、係数行列保持部７１に対して、このように生成され係数行列保持部７１に保持されている係数行列を要求する。係数行列保持部７１は、この要求に応じて、保持している係数行列を行列式生成部６１に供給する。
【０１１１】
行列式生成部６１は、係数行列を取得すると、その係数行列と１ブロック分の元データを用いて、そのブロックに対するEOR変換データを生成するための行列式を生成する。具体的には、行列生成部６１は、以下の式（３）に示されるような行列式を生成する。
【０１１２】
【数３】
2005223683.tif 000005
【０１１３】
式（３）において、右辺第１項は、Ｍ行Ｎ列の係数行列であり、係数行列供給部７１より供給された係数行列である。右辺第２項は、元データＤ（Ｄ1乃至ＤN）の行列であり、左辺の行列は、この行列式により算出されるEOR変換データＳ（Ｓ1乃至ＳM）である。なお、式（３）において、通常の加算の代わりにビット毎のEOR演算が行われる。EOR演算については後述する。
【０１１４】
このような行列式を生成すると、行列式生成部６１は、この行列式を行列式演算部６２に供給する。なお、行列式は、所謂、連立方程式と同じものを示すものとする。以下においても同様である。
【０１１５】
また、行列式生成部６１は、このとき、係数行列の各行における有効係数の存在可能範囲について確認し、各行について、行番号と有効係数の存在可能範囲の先頭位置（列）を対応付け、それぞれを係数情報、先頭情報とし、行列式とともに、行列式演算部６２に供給する。これらの係数情報および先頭情報は、EOR変換データとともに受信装置１３に供給され、EOR変換データより元データを復元する際に、係数行列を生成するのに利用される。
【０１１６】
行列式演算部６２は、式（３）に示されるような行列式を演算する。すなわち、行列式演算部６２は、右辺第１項の係数行列の各行において、その行の各列成分を、それらが対応する、右辺第２項における各行成分（元データＤ1乃至ＤN）とそれぞれ積算し、得られた各積算結果を用いて、互いに対応するビット毎にEOR演算を行うことにより、各行に１つのEOR演算結果を算出し、それをEOR変換データＳとする。
【０１１７】
ここで、通常の１０進数の場合の、２つの行列の積算における演算手順を説明すると、まず、第１項の行列の各行が第２項の行列の各列と積算される。具体的には、第１項の行列の各行と第２項の行列の各列が互いに対応する成分毎に積算される。例えば、第１項の第１行目について説明すると、その行の第ｉ列目の成分は、第２項の各列の第ｉ行目の成分と積算される。このように積算が行われると、次に、この積算毎に各成分の積算結果が全て加算される。例えば、第１項の行列がＮ列の行列であり、第２項の行列がＮ行の行列であるとすると、第１項の行列の各行と第２項の行列の各列の各積算において、それぞれ、Ｎ個の成分同士の積算結果が得られるので、それらのＮ個の積算結果が加算され、この加算結果が、第１項の行列の行と第２項の行列の列の積算結果とされる。
【０１１８】
上述した式（３）の行列式においても、基本的にはこのような演算手順と同様の演算手順により演算が行われる。しかしながら、元データＤやEOR変換データＳは、２進数のビット列であるので、上述した１０進数の場合の演算手順における、成分同士の積算結果の通常の加算処理の代わりに、ビット毎のEOR演算が用いられる。
【０１１９】
演算手順の順序で説明すると、行列式演算部６２は、上述した１０進数の場合と同様に、式（３）の右辺第１項の係数行列の各行を、右辺第２項の行列（元データＤ1乃至ＤNを成分とする行列）の列と積算する。具体的には、右辺第１項の係数行列の各行の各列成分を、右辺第２項の行列の各成分（元データＤ1乃至ＤN）と、それぞれ積算する。右辺第１項の係数行列の各成分の値は「１」または「０」であるので、各成分の積算結果は、右辺第２項の各成分（元データＤ1乃至ＤN）となるか、若しくは、「０」（具体的には、元データＤと同じビット数であり、各ビットの値が「０」のビット列）となる。
【０１２０】
次に、行列式演算部６２は、これらの各成分の積算結果を、上述したように互いに対応するビット毎のEOR演算により合成する。なお、EOR演算について具体的に説明すると、値「０」と値「０」とのEOR演算結果の値は「０」であり、値「０」と値「１」とのEOR演算結果の値は「１」であり、値「１」と値「０」とのEOR演算結果の値は「１」であり、値「１」と値「１」とのEOR演算結果の値は「０」である。従って、例えば、「１１１１００００」のビット列と、「１０１０１０１０」のビット列とのEOR演算結果は、「０１０１１０１０」となる。行列式演算部６２は、このようなEOR演算を繰り返し、各成分の積算結果を全て合成する。そして、このEOR演算結果が、１つのEOR変換データＳとされる。
【０１２１】
以上のような演算を、式（３）の右辺第１項の係数行列の各行に対して繰り返し、全ての左辺第１項の行列の成分として示されるEOR変換データＳ1乃至ＳMが求められる。
【０１２２】
なお、上述したように、係数行列の各成分の値は、「０」または「１」であるので、その各成分と元データＤ1乃至ＤNとの積算結果は、右辺第２項の各成分（元データＤ1乃至ＤN）となるか、若しくは、「０」となる。従って、この積算について換言すると、行列式演算部６２は、その各成分と元データＤ1乃至ＤNとの積算により、EOR変換データＳを生成するために用いる元データＤを選択（抽出）している。
【０１２３】
また、上述したように、各成分の積算結果が互いに対応するビット毎のEOR演算により合成されるので、合成結果（EOR演算結果）の各ビットの値は、そのビットが対応する、EOR演算される各積算結果のビットにおいて、値が「１」である積算結果の数が奇数である場合、「１」になり、値が「１」である積算結果の数が偶数である場合、「０」になる。従って、このEOR演算について換言すると、行列式演算部６２は、上述した成分毎の積算結果の各ビットの値を、互いに対応するビット毎に集計し、値が「１」である積算結果の数が奇数である場合、そのビットに対応するEOR変換データＳのビットの値を「１」とし、値が「１」である積算結果の数が偶数である場合、そのビットに対応するEOR変換データＳのビットの値を「０」とする。
【０１２４】
すなわち、行列式演算部６２は、元データＤ1乃至ＤNの中から、所定の方法により元データＤを選択し、その選択した各元データＤの、互いに対応するビットについて、値が「１」の数が奇数である場合、そのビットに対応するEOR変換データＳのビットの値を「１」とし、値が「１」の数が偶数である場合、そのビットに対応するEOR変換データＳのビットの値を「０」として、各EOR変換データＳを求める。
【０１２５】
行列式演算部６２は、以上のように演算を行い、EOR変換データＳ（Ｓ1乃至ＳM）を求め、その解を解出力部６３に供給する。このとき、行列式演算部６２は、求めたEOR変換データとともに、上述した係数情報および先頭情報を解出力部６３に供給する。
【０１２６】
以上のように、EOR変換データ生成部２４においては、図７に示されるように、元データが変換されてEOR変換データが生成される。
【０１２７】
図７において、１つのブロックの元データ４３（元データＤ1乃至ＤN）は、パケットデータ９１−１乃至９１−Ｎのようにパケットサイズのデータであり、上述したように、EOR変換データ生成部２４において、EOR変換データ４４に変換される。EOR変換データ４４は、パケットデータ９２−１乃至９２−Ｍにより構成される。パケットデータ９２−１乃至９２−Ｍは、それぞれ、元データＤ1乃至ＤN（パケットデータ９１−１乃至９１−Ｎ）と上述した係数行列を用いて生成されたデータであり、式（３）により、元データＤ1乃至ＤN（パケットデータ９１−１乃至９１−Ｎ）から、上述した方法で抽出された複数の元データ４３をビット毎にEOR演算した演算結果である。
【０１２８】
解出力部６３は、以上のように算出された解を、EOR変換データＳとして、所定のタイミングで図３のアプリケーションデータ生成部２５に供給する。なお、解出力部６３は、EOR変換データとともに、上述した係数情報および先頭情報を図３のアプリケーションデータ生成部２５に供給する。
【０１２９】
次に、有効係数の存在可能範囲について説明する。
【０１３０】
通信システム１０において、受信装置１３は、後述するように、送信装置１１におけるEOR変換データの生成に利用された係数行列と同じ係数行列を利用して元データを復元するが、仮に、EOR変換データの生成に利用される元データに偏りがあり、かつ、その偏り方が特定できるものであるとすると、受信装置１３は、元データを復元する際に、係数行列の、明らかに有効係数が存在しない範囲に対応する演算を省略することができる。
【０１３１】
そこで、送信装置１１が、各EOR変換データの生成に利用する元データを選択する際に、所定の範囲を設定し、元データＤ1乃至ＤNの内、その範囲内の元データより選択するようにする。すなわち、係数行列の各行において、有効係数が存在する列の範囲を設定するようにし、有効係数は、その列の範囲内において任意に選択された列の係数とする。
【０１３２】
しかしながら、受信装置１３の、パケットロス（送信装置１１が送信したEOR変換データのロス）に対する耐性を向上させるために、ロスしたEOR変換データによって復元性能に影響がない（どのEOR変換データをロスしても復元性能が変化しない）ようにすることが望ましい。従って、送信装置１１においてEOR変換データを生成する際に、係数行列における有効係数の位置に偏りが無いようにする（任意に選択された元データを用いて各EOR変換データが生成されるようにする）必要がある。より具体的には、係数行列において、有効係数が各列に一様に偏りなく配置されることと、有効係数の配置が行毎に互いに独立している（規則性を有さない）ことが求められる。
【０１３３】
そこで、送信装置１１が、例えば、図８に示されるように、有効係数の存在可能範囲の位置を行毎にランダムに設定するようにする。図８は、式（３）における有効係数の存在可能範囲の位置を模式的に示す図である。
【０１３４】
図８において、縦軸は、生成されたEOR変換データＳ1乃至ＳMを示し、横軸は、元データＤ1乃至ＤNを表している。また、有効係数の存在可能範囲は、黒線で示している。すなわち、縦軸のEOR変換データＳ1乃至ＳMは、それぞれ、横軸の元データＤ1乃至ＤNの内、黒線で示される範囲内の元データ群の中から任意に抽出された（有効係数に対応する）元データのビット毎のEOR演算結果である。
【０１３５】
上述したように、有効係数の存在可能範囲の幅（バンド幅）は、予め定められた所定の値であるので、図８の黒線の幅は全て同じ長さである。また、上述したように、有効係数の存在可能範囲の先頭位置は、係数行列の第１列目乃至第（Ｎ−バンド幅）列目の間でランダムに決定されるので、図８の黒線の先頭位置（左端の位置）は、それぞれ、元データＤ1乃至元データＤ(N-バンド幅)の中からランダムに決定された元データとなる。従って、図８に示されるようにEOR変換データＳ1乃至ＳMを整列させた場合、各EOR変換データに対応する有効係数の存在可能範囲（黒線）の位置は、偏りなく一様に配置されることになる。
【０１３６】
すなわち、図８に示されるように、EOR変換データを生成する際に利用される係数行列において、有効係数が各列に一様に偏りなく配置され、かつ、有効係数の配置が行毎に互いに独立している（規則性を有さない）。
【０１３７】
しかしながら、図８において、EOR変換データＳ1乃至ＳMを有効係数の存在可能範囲の先頭位置に基づいて整列すると、有効係数の存在可能範囲が設定されているため、有効係数は、係数行列の対角成分付近に偏って位置することになる。すなわち、係数行列が帯行列のような特性をもつことになるので、受信装置１３は、元データを復元する際に、このような係数行列を利用することにより、明らかに有効係数が存在しない範囲を特定し、その範囲に対応する演算を省略することができる。
【０１３８】
換言すると、EOR変換データ生成部２４は、全ての元データＤ（元データＤ1乃至ＤN）を要素とする集合を全体集合とし、全体集合より全体集合の一部である任意の連続する要素群からなる部分集合として有効係数の存在可能範囲を設定し、設定した有効係数の存在可能範囲より元データＤを任意に複数選択し、選択した複数の元データＤを互いにビット毎に排他的論理和演算し、演算結果であるEOR変換データＳを複数の有効係数の存在可能範囲（すなわち、係数行列の各行）について求めることにより、元データＤ1乃至ＤNをEOR変換データＳ1乃至ＳMに変換する。
【０１３９】
次に、アプリケーションデータについて説明する。
【０１４０】
図９は、図３のアプリケーションデータ生成部２５の詳細な構成例を示すブロック図である。
【０１４１】
最初に、パケットデータが供給される前にブロックカウンタ１０４は初期化される。
【０１４２】
EOR変換データ生成部２４より供給されたEOR変換データおよび係数情報は、アプリケーションデータ生成部２５の係数情報付加部１０１に供給される。係数情報付加部１０１は、取得したEOR変換データに、取得した係数情報を付加し、それを先頭情報付加部１０２に供給する。また先頭情報付加部１０２には、EOR変換データ生成部２４より供給された先頭情報が付加される。先頭情報付加部１０２は、係数情報が付加されたEOR変換データに先頭情報を付加し、それをブロック番号付加部１０３に供給する。ブロック番号付加部１０３は、ブロックカウンタ１０４のカウント値を取得し、それをブロック番号として係数情報および先頭情報が付加されたEOR変換データに付加する。ブロックカウンタ１０４は、カウント値をブロック番号付加部１０３に供給すると、カウントアップし、カウント値を更新する。なお、ブロックカウンタ１０４は、最大値（Ｎ−１）のカウンタであり、カウントアップする毎に、カウント値を「１」増加させる。カウント値が最大値（Ｎ−１）のときにカウントアップする場合は、ブロックカウンタ１０４は、そのカウント値を「０」に更新する。ブロック番号をEOR変換データに付加したブロック番号付加部１０３は、それをアプリケーションデータ出力部１０５に供給する。アプリケーションデータ出力部１０５は、ブロック番号付加部１０３より供給された、係数情報、先頭情報、およびブロック番号が付加されたEOR変換データを、アプリケーションデータとして、図３のUDPパケット化部２７に出力する。
【０１４３】
図１０は、アプリケーションデータ出力部１０５より出力されるアプリケーションデータの構成例を示す図である。
【０１４４】
図１０において、アプリケーションデータ１１０は、ヘッダ１１１およびEOR変換データ１１２により構成される。ヘッダ１１１は、ブロック番号１２１、先頭情報１２２、および係数情報１２３よりなる。すなわち、アプリケーションデータは、EOR変換データ１１２に係数情報１２３、先頭情報１２２、およびブロック番号１２１がヘッダ１１１として付加されたものである。
【０１４５】
係数情報１２３は、受信装置１３が、係数行列の、EOR変換データ１１２が対応する行の各成分（係数）を生成するための情報であり、例えば、擬似乱数生成部８１における係数生成時の乱数発生の種データ（例えば32ビット＝4バイト）等により構成される。係数情報１２３は、その他にも、行番号やパケット番号（例えば6万種発生させる場合、2バイト）等のように、間接的に係数を指定する関連付け情報であってもよいし、そのEOR変換データ１１２が対応する係数自体のビット列（例えばバンド幅が400のとき、50バイト）であってもよいし、そのビット列をランレングスなどで圧縮したビット列等であってもよい。受信装置１３は、このような係数情報に基づいて、各EOR変換データに対応する係数行列の行成分を生成する。
【０１４６】
先頭情報１２２は、受信装置１３が、係数行列の、EOR変換データ１１２が対応する行の各成分（係数）を生成するための情報であり、係数行列における有効係数の存在可能範囲の先頭位置を示す情報である。受信装置１３は、このような先頭情報に基づいて、生成した係数行列における有効係数の存在可能範囲の位置を認識し、その位置に基づいて、演算を省略する係数を決定する。
【０１４７】
図９に戻り、以上のようなアプリケーションデータを出力すると、アプリケーションデータ出力部１０５は、そのアプリケーションデータを出力したことを示す出力情報をデータ変換制御部２６に供給する。
【０１４８】
データ変換制御部２６は、その出力情報に基づいて、送信用データに対応する全てのアプリケーションデータが出力されたか否かを判定し、全てのアプリケーションデータが出力されていないと判定した場合、次の変換データを生成するように、パケットデータ保持部２３およびEOR変換データ生成部２４を制御する。
【０１４９】
以上のように、送信用データを分割した複数の元データを送信するのではなく、元データをEOR変換データに変換してそれを送信するので、送信装置１１は、受信装置１３が任意のEOR変換データを所定の数以上受信して、元データを復元するようにすることができる。従って、送信装置１１は、より容易、かつ、より正確にデータを送信することができる。
【０１５０】
また、ブロック毎に生成したEOR変換データを、各ブロックのEOR変換データを混在させた順番で送信するので、送信装置１１は、受信装置１３のバースト的パケットロスに対する耐性を向上させることができる。
【０１５１】
さらに、係数行列の各行において、有効係数の存在可能範囲を限定することができるので、受信装置１３が元データ復元処理の演算量を削減させることができる。
【０１５２】
さらに、送信装置１１は、係数情報、先頭情報、ブロック情報等の情報を送信するので、受信装置１３が容易に元データ復元処理を行うようにすることができる。
【０１５３】
次に、データの受信側について説明する。
【０１５４】
図１１は、図２の受信装置１３の詳細な構成例を示すブロック図である。
【０１５５】
ネットワーク１２を介して受信装置１３に送信されたパケットは、ケーブル１３０を介してイーサネット(R)（Ethernet(R)）処理部１３１に供給される。イーサネット(R)処理部１３１は、イーサネット(R)の規格に基づいて、データリンク層および物理層の処理を行い、供給されたパケットからIPパケットを抽出し、IP処理部１３２に供給する。
【０１５６】
IP処理部１３２は、IPプロトコルに基づいて、ネットワーク層の処理を行い、供給されたIPパケットよりUDPパケットを抽出し、アプリケーションデータ抽出部１３３に供給する。アプリケーションデータ抽出部１３３は、UDPプロトコルに基づいてトランスポート層の処理を行い、UDPパケットより、アプリケーションデータを抽出し、それをバッファ部１３４に供給する。
【０１５７】
バッファ部１３４は、アプリケーションデータに付加されたブロック番号に基づいて、対応するブロック毎にアプリケーションデータを振り分けて保持し、パケットデータ復元部１３５に供給する。
【０１５８】
パケットデータ復元部１３５は、供給されたアプリケーションデータに含まれる変換データに基づいて、ブロック単位で元データを復元し、それをブロックデータ復元部１３６に供給する。ブロックデータ復元部１３６は、パケットデータ復元部１３５より供給される元データ（パケットデータ）を用いて、ブロックデータを復元し、そのブロックデータを再生出力部１３７に供給する。受信データ出力部１３７は、そのブロックデータを用いて受信データ（元の送信用データ）を復元し、それを受信装置１３の外部に出力する。
【０１５９】
送信装置１１より送信されたパケットは、受信装置１３に向けて送信されるが、様々な原因により、受信装置１３に受信されない場合がある。例えば、図１２に示されるように、送信装置１１が送信した送信パケット１４１の内、９つの送信パケットを受信すれば、受信装置１３は、元データを復元し、１つのブロックデータを復元することができる場合に、受信装置１３が、送信パケット１４１の番号３、７、および８のパケットをロスしたとする。すなわち、受信パケット１４２においては、パケット番号３、７、および８のパケットがロスされている。このように送信パケット１４１より任意のパケットを３つロスした場合、受信装置１３は、そのロスしたパケットと同じブロックに対応するパケットを、上述したパケット番号１乃至９のパケット以外に３つ（図１２の場合、パケット番号１０乃至１２を）受信すれば、元データを復元することができる。すなわち、受信装置１３は、送信装置１１が送信するパケットの中から、必要な数のパケットを受信することができれば、そのパケットが同じブロックに対応するパケットであればどのパケットであっても、元データを復元することができるようになされている。その復元処理の詳細については後述する。
【０１６０】
なお、上述したバッファ部１３４以降のモジュールが実行する処理は、OSI階層モデルにおける、アプリケーション層、プレゼンテーション層、およびセション層の処理である。
【０１６１】
このように、受信装置１３は、送信装置１１より送信したパケットの内、任意のパケットを所定の数以上取得すれば、元データ（送信用データ）を復元することができる。すなわち、受信装置１３は、送信装置１１が送信する変換データを用いて、元データを復元するようにすることにより、パケットロスに対する耐性を向上させることができ、データの送受信をより正確、かつ、より容易に行うようにデータを受信することができる。
【０１６２】
図１３は、パケットデータ復元部１３５の詳細な構成例を示すブロック図である。
【０１６３】
図１３において、バッファ部１３４は、アプリケーションデータをブロック毎に蓄積し、元データを復元するのに十分な数のアプリケーションデータを蓄積したブロックが発生した場合、そのアプリケーションデータを復元制御部１５１に供給する。
【０１６４】
復元処理部１５１は、係数行列作成部１５２にアプリケーションデータを供給し、そのブロックに対する係数行列を作成させる。係数行列作成部１５２は、係数行列を作成すると、それを行列式作成部１５３に供給する。復元制御部１５１は、また、行列式作成部１５３にアプリケーションデータを供給し、そのブロックに対する、元データを復元するための行列式を作成させる。
【０１６５】
行列式作成部１５３は、復元制御部１５１より供給されたアプリケーションデータおよび係数行列作成部１５２より供給された係数行列に基づいて、元データを復元するための行列式である式（４）を作成する。
【０１６６】
【数４】
2005223683.tif 000006
【０１６７】
なお、式（４）において、通常の加算処理の代わりにEOR演算が行われる。式（４）の右辺第１項の行列の各成分Ｑ1乃至ＱKは、受信装置１３が受信したＫ個（Ｍ＞Ｋ＞Ｎ）のEOR変換データを示している。左辺第２項の行列の各成分Ｐ1乃至ＰNは、求めるＮ個の元データを示している。式（４）の左辺第１項の行列は、予め係数行列供給部１２３において保持されているＭ行Ｎ列の係数行列、すなわち、式（２）の右辺第１項に示される係数行列と各成分の値が同じ係数行列（送信装置１１がEOR変換データを生成する際に利用する係数行列と同じ係数行列）より切り出された係数行列である。ただし、式（４）に示される係数行列の行成分は、受信装置１３が受信したパケット（EOR変換データＱ1乃至ＱK）が対応する行成分のみで構成される。
【０１６８】
従って、受信装置１３は、この式（４）に示される行列式（連立方程式）を解くことにより、元データＰ1乃至ＰNの解を求めることができる。
【０１６９】
行列式作成部１５３は、式（４）に示される行列式を生成すると、その行列式を行列式保持部１５４および行列式整列部１５５に供給する。行列式を取得した行列式整列部１５５は、その行列式の係数行列の有効係数の存在可能範囲に基づいて、行列式の各項の行を入れ替えて、図１４に示されるように整列させる。
【０１７０】
図１４は、行を入れ替えて整列された式（４）における有効係数の存在可能範囲の位置を模式的に示す図である。
【０１７１】
図１４において、図８の場合と同様に、縦軸は、受信したEOR変換データＱ1乃至ＱKを示し、横軸は、求める元データＰ1乃至ＰNを表している。また、有効係数の存在可能範囲は、黒線で示している。すなわち、縦軸のEOR変換データＱは、それぞれ、横軸の元データＰ1乃至ＰNの内、黒線で示される範囲内の元データ群の中から任意に抽出された（有効係数に対応する）元データのビット毎のEOR演算結果である。
【０１７２】
行列式整列部１５５は、行列式作成部１５３が作成した行列式の各項の行成分の入れ替えを行い、図１４に示されるように、式（４）における各行の有効係数の存在可能範囲の先頭位置が、第１行目から第Ｋ行目に向かって、順に、第１列目から第Ｎ列目に向かうようにする。
【０１７３】
すなわち、このときの式（４）の左辺第１項の係数行列における有効係数の位置は、例えば、図１５Ａに示されるように、係数行列の対角成分付近に集中し、係数行列が帯行列のようになる。実際には、この係数行列のサイズ（行数および列数）は、非常に大きく、図１５Ｂに示されるように、より帯行列の性格を強くする。図１５Ｂにおいて、ハッチで示される範囲が有効係数の存在可能範囲であり、両矢印で示される範囲がバンド幅１６１となる。なお、この有効係数の存在可能範囲内において、有効係数はランダムに配置される。このように行列式が整列されることにより、係数行列において有効係数の位置に偏りが生じる。従って、受信装置１３は、図１５Ｂのハッチで示されるような、有効係数の存在可能範囲外の領域（図１５Ｂ中白地の領域）での演算を省略することができる。
【０１７４】
このように行列式を整列すると、行列式整列部１５５は、整列した行列式を行列式保持部１５４に保持させるとともに、その情報をタイル処理部１５６に供給する。タイル処理部１５６は、その情報に基づいて、行列式保持部１５４に、整列済みの行列式を要求し、取得する。
【０１７５】
タイル処理部１５６は、整列された行列式を取得すると、取得した行列式の係数行列に対して、演算処理を制御する領域の単位であるタイルを設定し、各タイルについて、元データ復元のための演算を行うか否かを判定する。すなわち、タイル処理部１５６は、係数行列の全成分の領域を、所定の単位で行方向および列方向に分割した複数の小領域（タイル）を設定する。図１６にタイルの例を示す。図１６において、領域１６２は、係数行列の全成分の領域を示している。図１５を参照して説明したように、この領域１６２には、バンド幅１６１の有効係数の存在可能領域（２本の斜めの直線で挟まれた領域）が設定されており、その領域内に有効係数が分布している。
【０１７６】
タイル処理部１５６は、このような領域１６２を所定のサイズの、タイル１６３に示されるような小領域に分割する。図１６の例の場合、タイル処理部１５６は、領域１６２のサイズを、列数２０４８×行数２１１２とし、バンド幅１６１の大きさ（列数）を４００とし、このような領域１６２に対して１辺がバンド幅１６１の数分の一（例えば１２８）程度の大きさの小領域（例えば、列数１２８×行数１３２）をタイルとして設定している。
【０１７７】
なお、このタイルのサイズは予め設定され、タイル処理部１５６に保持されている。このようなタイルを設定すると、タイル処理部１５６は、各タイルについて演算の有無を判定する。演算の有無はそのタイルの位置により決定され、例えば、そのタイルが有効係数の存在可能範囲付近に存在する場合、タイル処理部１５６は、そのタイルにおいて演算すると判定し、タイル処理部１５６は、係数行列におけるそのタイルの成分に対応する部分行列式を抽出し、それを行列式演算部１５７に供給する。なお、演算を行わないと判定したタイルについては、タイル処理部１５６は、そのタイルについては処理せずに、次のタイルの判定を行う。
【０１７８】
図１６においては、ハッチで示されるタイルが演算を行うように設定されたタイルであり、水平方向に７タイル分ずつ設定されている。すなわち、タイル処理部１５６は、有効係数の存在可能範囲のバンド幅１６１よりやや大きめ範囲のタイルを、演算を行うタイルとして設定する。そしてそれ以外の、図１６において白地で示されるタイルは、演算を行わないタイルとして設定される。
【０１７９】
すなわち、領域１６２におけるタイルは、行列式演算部１５７が行列式を演算する演算処理の処理単位である。このとき、元データの復元には、その元データよりも多くの変換データを必要とするので、各タイルのサイズは、各タイルの列数より行数の方が多くなるように設定される。
【０１８０】
タイル処理部１５６が、このように設定することにより、行列式演算部１５７は、図１６に示されるように、有効係数の存在可能領域を含む、ハッチで示されるタイルのみを演算するので、領域１６２において係数行列全体に対して演算処理を行うよりも、その演算量を削減することができる。
【０１８１】
以上のように、行列式に対してマスキング処理を行い、演算を行う領域を限定すると、タイル処理部１５６は、その部分行列式を行列式演算部１５７に供給する。
【０１８２】
行列式演算部１５７は、式（４）に示される式の部分行列式を取得すると、その行列式を、例えば、ガウスの消去法を用いて、元データＤ1乃至ＤNの解を求め、その求めた元データＤ1乃至ＤNを解出力部１５８に供給る。ガウスの消去法の具体的な例については、後述する。
【０１８３】
解出力部１５８は、その解を元データとして、図１１のブロックデータ復元部１３６に供給する。
【０１８４】
以上のようにパケットデータ復元部１３５が復元処理を行うことにより、受信装置１３は、送信装置１１に再送要求をすることなしに、元データを容易に復元することができる。また、図１２を参照して説明したように、受信装置１３は、送信装置１１が送信する変換データの内、所定の数以上の任意の変換データを取得すれば、元データを復元することができるので、例えば、パケットをロスした場合であっても、ロスした数以上のパケットを任意に追加的に受信すればよく、カルーセル方式によりパケットを送信する場合と比較して、高速に復元処理を開始することができ、受信処理をより高速に実行することができる。また、これにより、送信装置１３が送信するパケット群に対して、受信装置１３が、その途中のパケットから受信を開始しても、所定の数以上の変換データを取得すれば、元データを復元することができる。さらに、受信装置１３は、EOR演算により元データを復元できるので、例えばリードソロモン符号の場合におけるガロア体上の演算のような複雑な演算を行わずに元データを復元することができ、より容易かつ高速に復元処理を行うことができるとともに、受信装置１３の製造コストを低減させることができる。
【０１８５】
次に、送信装置１１における、上述した各部の処理の流れについて説明する。
【０１８６】
外部からの送信データの供給が開始されると、送信装置１１は、データ送信処理を開始する。図３の送信装置１１によるデータ送信処理を図１７のフローチャートを参照して説明する。
【０１８７】
最初に、送信用データが外部より供給されると、送信装置１１のデータ分割部２１は、ステップＳ１において、送信用データをブロックに分割することによりブロックデータを生成する。ブロック分割部２２は、ステップＳ２において、生成されたブロックデータをさらにパケットデータに分割することにより、元データを生成する。
【０１８８】
パケットデータ保持部２３は、ステップＳ３において、ブロック分割部２２において生成された、１つの送信用データに対応する全てのパケットデータ（元データ）を保持する。
【０１８９】
ステップＳ４において、データ変換制御部２６は、生成するEOR変換データのパケット番号として変数ｊの値を初期化し、例えば「０」に設定する。また、ステップＳ５において、データ変換制御部２６は、生成するEOR変換データのブロック番号として変数ｉの値を初期化し、例えば「０」に設定する。
【０１９０】
次に、ステップＳ６において、データ変換制御部２６は、パケットデータ保持部２３およびEOR変換データ生成部２４を制御して、現在のパケット番号およびブロック番号の値に対応するEOR変換データを生成するために、パケットデータ保持部２３が保持している、ブロック番号ｉに対応するブロックの元データ群を用いた、ブロック番号ｉ、パケット番号ｊのEOR変換データの生成処理を開始させる。EOR変換データ生成部２４は、データ変換制御部２６に制御され、EOR変換データ生成処理を行い、供給された元データ群を用いてEOR演算を行い、指定されたブロック番号ｉ、パケット番号ｊのEOR変換データを生成する。EOR変換データ生成処理の詳細については後述する。
【０１９１】
EOR変換データ生成部２４が、指定されたブロック番号ｉ、パケット番号ｊのEOR変換データを生成すると、アプリケーションデータ生成部２５は、ステップＳ７において、アプリケーションデータ生成処理を行い、生成されたEOR変換データに上述した係数情報、先頭情報、およびブロック番号等のヘッダを付加し、アプリケーションデータを生成する。アプリケーションデータ生成処理の詳細は後述する。
【０１９２】
ステップＳ８において、UDPパケット化部２７は、生成されたアプリケーションデータをUDPパケット化し、バッファ２８は、そのUDPパケットを保持し、出力制御部２９は、所定のタイミングで保持されているUDPパケットを読み出し、IP処理部３０は、読み出されたUDPパケットをIPパケット化し、イーサネット(R)処理部３１は、さらにそのIPパケットを送信用にパケット化し、ケーブル３２を介して、ネットワーク１２に（ネットワーク１２を介して接続される受信装置１３に対して）送信する。
【０１９３】
また、データ変換制御部２６は、アプリケーションデータ生成部２５により生成された出力情報に基づいて、EOR変換データが出力されたことを確認すると、ステップＳ９において、ブロック番号ｉの値に「１」を加算し、ステップＳ１０において、全ブロックについて処理が終了したか否かを判定する。ブロック番号ｉの値が、ブロック分割部２２が分割したブロックの数以下であり、全ブロックについて処理が終了していないと判定した場合、データ変換制御部２６は、処理をステップＳ６に戻し、次のブロックのEOR変換データを生成させる。
【０１９４】
以上のようにステップＳ６乃至ステップＳ１０の処理を繰り返し、ステップＳ１０において、全ブロックについて処理が終了したと判定した場合、データ変換制御部２６は、ステップＳ１１に処理を進め、パケット番号ｊの値に「１」を加算し、ステップＳ１２において、全パケットについて処理が終了したか否かを判定する。データ変換制御部２６は、図４に示されるように、各ブロックに対応するEOR変換データを１つずつ生成するように制御し、全ブロックの処理が終了すると、再度、各ブロックに対応するEOR変換データを１つずつ生成するように制御する。データ変換制御部２６は、このような制御を繰り返し、各ブロックに対応するEOR変換データを予め定められた所定の数ずつ生成させる。
【０１９５】
すなわち、データ変換制御部２６は、ステップＳ１２において、パケット番号ｊの値が、この予め定められた所定の数より大きいか否かを判定することにより、全パケットについて処理が終了したか否かを判定する。そして、全パケットについて処理が終了していないと判定した場合、データ変換制御部２６は、処理をステップＳ５に戻し、それ以降の処理を繰り返すことにより、各部に、最初のブロックに対応するEOR変換データの生成から、再度繰り返させる。以上のようにステップＳ５乃至ステップＳ１２の処理を繰り返し、ステップＳ１２において、全パケットについて処理が終了したと判定した場合、データ変換制御部２６は、データ送信処理を終了する。
【０１９６】
以上のようにしてデータ送信処理が実行される。これにより、送信装置１１は、ガロア体の演算など、負荷の大きい処理を行わずに、高速に冗長データを生成することができ、データを容易かつ正確に送信することができる。また、送信装置１１は、パケットデータの送信順を上述したようにブロック単位で並べ替えて送信するので、バースト的パケットロスが発生しても、そのロスしたパケットが特定のブロックに集中することを抑制し、バースト的パケットロスに対する耐性も上げることができる。さらに、このように送信装置１１が送信処理を行うことにより、送信装置１１が送信したパケットを受信する受信装置１３は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。すなわち、通信システム１０は、より容易に、より正確な通信を行うことができる。
【０１９７】
次に、図１８のフローチャートを参照して、図１７のステップＳ６において実行されるEOR変換データ生成処理について説明する。
【０１９８】
最初に、EOR変換データ生成部２４の擬似乱数生成部８１は、ステップＳ３１において、有効係数の存在可能範囲の先頭位置設定用の擬似乱数を生成する。先頭位置決定部８２は、その擬似乱数に基づいて有効係数の存在可能範囲の先頭位置を決定しその情報を保持する。範囲制御部８４は、ステップＳ３２において、先頭位置決定部８２が保持する先頭位置に関する情報および、幅設定部８３が保持する有効係数の存在可能範囲の幅に関する情報に基づいて、有効係数の存在可能範囲（の位置）を決定する。
【０１９９】
擬似乱数生成部８１は、ステップＳ３３において、係数設定用の擬似乱数を生成する。範囲制御部８４は、ステップＳ３４において、その生成された擬似乱数が対応する係数（成分）の位置が、ステップＳ３２において決定した有効係数の存在可能範囲内であるか否かを判定し、有効係数の存在可能範囲内であると判定した場合、ステップＳ３５に処理を進める。ステップＳ３５において、係数判定部８５は、係数生成確率保持部８６が保持する係数生成確率ｐ、および、擬似乱数生成部８１が生成した係数設定用の擬似乱数に基づいて、係数の値が「０」であるか、若しくは「１」であるかを判定し、係数の値をその判定した値に設定し、処理をステップＳ３７に進める。また、ステップＳ３４において、擬似乱数が対応する係数の位置が有効係数の存在可能範囲外であると判定した場合、範囲制御部８４は、ステップＳ３６に処理を進め、係数行列保持部７１は、擬似乱数の値に関わらず、係数の値を「０」に設定し、処理をステップＳ３７に進める。
【０２００】
ステップＳ３７において、係数行列保持部７１は、設定された係数の値を保持し、ステップＳ３８において、保持した係数により、係数行列が完成したか否かを判定する。係数行列が完成していないと判定した場合、係数行列保持部７１は、ステップＳ３３に処理を戻し、それ以降の処理を各部に繰り返させることにより、次の係数の値を設定させる。
【０２０１】
ステップＳ３８において、係数行列が完成したと判定した場合、係数行列保持部７１は、ステップＳ３９に処理を進める。ステップＳ３９において、行列式生成部６１は、係数行列保持部７１が保持する係数行列を利用して、元データを変換する行列式を作成する。行列式演算部６２は、ステップＳ４０において、その行列式を演算する。解出力部６３は、その行列式演算部６２による演算結果である行列式の解をEOR変換データとして出力し、EOR変換データ生成処理を終了し、処理を図１６のステップＳ６に戻す。このとき、解出力部６３は、上述したように、EOR変換データとともに、係数情報や先頭情報も出力する。
【０２０２】
以上のように、元データを用いてEOR演算を行い、EOR変換データを生成するので、EOR変換データ生成部２４は、容易、かつ、高速にEOR変換データを生成することができる。これにより送信装置１１は、ガロア体の演算など、負荷の大きい処理を行わずに、高速にEOR変換データを生成することができ、データを容易かつ正確に送信することができる。また、このように送信装置１１が送信処理を行うことにより、送信装置１１が送信したパケットを受信する受信装置１３は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。すなわち、通信システム１０は、より容易に、より正確な通信を行うことができる。
【０２０３】
次に、図１７のステップＳ７において実行されるアプリケーションデータ生成処理の詳細を図１９のフローチャートを参照して説明する。
【０２０４】
最初に、係数情報付加部１０１は、ステップＳ６１において、EOR変換データ生成部２４において生成されたEOR変換データに対して、そのEOR変換データに対応する係数情報をヘッダとして付加する。ステップＳ６２において、先頭情報付加部１０２は、係数情報が付加されたEOR変換データに対して、そのEOR変換データに対応する先頭情報をヘッダとして付加する。さらに、ステップＳ６３において、ブロック番号付加部１０３は、ブロックカウンタ１０４においてカウントされたカウント値であるブロック番号を、係数情報および先頭情報が付加されたEOR変換データにヘッダとして付加する。
【０２０５】
ブロック番号付加部１０３によりEOR変換データにブロック番号が付加されると、ブロックカウンタ１０４は、ブロック番号付加部１０３に制御され、カウント値をカウントアップする。
【０２０６】
ステップＳ６５において、アプリケーションデータ出力部１０５は、係数情報、先頭情報、および、ブロック番号がヘッダとして付加されたEOR変換データをアプリケーションデータとして出力し、ステップＳ６６において、そのアプリケーションデータに対する出力情報を生成して出力する。ステップＳ６６の処理を終了すると、アプリケーションデータ出力部１０５は、アプリケーションデータ生成処理を終了し、処理を図１６のステップＳ７に戻し、それ以降の処理を行わせる。
【０２０７】
以上のように、アプリケーションデータ生成部２５がブロック番号をEOR変換データに付加することにより、受信装置１３は、受信したEOR変換データのブロックを識別することができ、ブロック毎に処理することができる。
【０２０８】
また、アプリケーションデータ生成部２５が係数情報や先頭情報をEOR変換データに付加することにより、受信装置１３は、送信装置１１におけるEOR変換データ生成処理の場合と対応するように行列式を生成し、その行列式を用いて元データの復元処理を実行し、元データを復元することができる。
【０２０９】
次に、受信装置１３が実行する処理の流れについて説明する。
【０２１０】
最初に、図１１の受信装置１３によるデータ受信処理を図２０のフローチャートを参照して説明する。
【０２１１】
受信装置１３に対して、送信装置１１よりパケットが送信され、そのパケットがケーブル２１０を介してイーサネット(R)処理部２２１に供給されると、イーサネット(R)処理部１３１は、ステップＳ８１において、そのパケットを受信する。パケットを受信したイーサネット(R)処理部１３１は、そのパケットからIPパケットを抽出する。IP処理部１３２は、そのIPパケットからUDPパケットを抽出する。
【０２１２】
UDPパケットを供給されたアプリケーションデータ抽出部１３３は、ステップＳ８２において、そのUDPパケットからアプリケーションデータを抽出し、それをバッファ部１３４に供給する。バッファ部１３４は、ステップＳ８３において、その供給されたアプリケーションデータをブロック毎に振り分けて保持する。バッファ部１３４は、ステップＳ８４において、保持している各ブロックのアプリケーションデータの数に基づいて、各ブロックにおいて元データを復元可能か否かを判定する。各ブロックのアプリケーションデータを、元データを復元するのに十分な数保持しており、元データを復元可能であると判定した場合、バッファ部１３４は、ブロック毎にアプリケーションデータをパケットデータ復元部１３５に供給し、ステップＳ８５に処理を進める。ステップＳ８５において、パケットデータ復元部１３５は、供給されたアプリケーションデータを用いて、元データ復元処理を行い、ブロック毎に元データを復元する。元データ復元処理の詳細は後述する。
【０２１３】
元データ復元処理を終了すると、パケットデータ復元部１３５は、復元した元データをブロックデータ復元部１３６に供給し、処理をステップＳ８６に進める。ステップＳ８６において、ブロックデータ復元部１３６は、供給された各元データを組み合わせ、ブロックデータを復元し、復元したブロックデータを受信データ生成部１３７に供給する。受信データ生成部１３７は、ステップＳ８７において、ブロックデータ復元部１３６より供給されるブロックデータを保持し、全てのブロックデータを保持すると、それらを組み合わせ、受信データ（元の送信用データ）を生成（復元）して、それを受信装置１３の外部に出力し、データ受信処理を終了する。
【０２１４】
また、ステップＳ８４において、いずれかのブロックのアプリケーションデータを、元データを復元するのに十分な数だけ保持しておらず、元データを復元不可能であると判定した場合、バッファ部１３４は、処理をステップＳ８８に進め、パケットの受信が終了したか否かを判定する。パケットの受信が終了していないと判定した場合、バッファ部１３４は、処理をステップＳ８１に戻し、それ以降の処理を繰り返す。
【０２１５】
また、ステップＳ８８において、パケットの受信処理が終了したと判定した場合、バッファ部１３４は、ステップＳ８９に処理を進め、エラー処理を行い、データ受信処理を終了する。
【０２１６】
以上のようにしてデータ受信処理を実行することにより、受信装置１３は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現し、より容易に、かつ、より正確にデータを受信することができる。
【０２１７】
次に、図２０のステップＳ８５において各ブロックの元データに対して実行される元データ復元処理の詳細を、図２１のフローチャートを参照して説明する。
【０２１８】
パケットデータ復元部１３５の復元制御部１５１は、ステップＳ１０１において、復元処理を行うブロックを指定するブロック番号ｉの値を初期化し、例えば、「０」に設定する。そして、復元制御部１５１は、設定されたブロック番号ｉのアプリケーションデータ群を、バッファ部１３４に対して要求し、それらを取得する。ブロック番号ｉのアプリケーションデータ群を取得すると、復元制御部１５１は、それらのアプリケーションデータより係数情報や先頭情報等を含むヘッダを抽出して係数行列作成部１５２に供給する。また、それとともに、復元制御部１５１は、取得したアプリケーションデータを行列式作成部１５３の要求に基づいて、行列式作成部１５３に供給する。
【０２１９】
係数情報や先頭情報等を供給された係数行列作成部１５２は、ステップＳ１０２においてブロック番号ｉ用の係数行列を作成し、それを行列式作成部１５３に供給する。行列式作成部１５３は、ステップＳ１０３において、供給されたアプリケーションデータおよび係数行列を用いて、行列式を作成し、それを行列式保持部１５４に供給して保持させる。また、行列式作成部１５４は、アプリケーションデータのヘッダに含まれる先頭情報を行列式整列部１５５に供給する。行列式整列部１５５は、ステップＳ１０４において、有効係数の存在可能範囲に基づいて、行列式保持部１５４に保持されている行列式を、各項において各行を入れ替え、行番号を変更することにより行列式を整列させる。
【０２２０】
行列式を整列させると、行列式整列部１５５は、その情報をタイル処理部１５６に供給する。タイル処理部１５６は、ステップＳ１０５において、行列式保持部１５６に保持されている行列式を取得し、その行列式の係数行列に対してタイルを設定し、有効係数の存在可能範囲に基づいて、各タイルの演算の有無を設定する。タイルの設定を行うとタイル処理部１５６は、ステップＳ１０６において、処理の対象となるタイルを選択するための変数であるタイル番号ｋの値を初期化して「０」に設定する。
【０２２１】
そしてタイル処理部１５６は、ステップＳ１０７において、タイル番号ｋのタイルに対して、タイルの演算の有無の設定に基づいて、そのタイルの演算を行うか否かを判定する。タイルの演算を行うと判定した場合、タイル処理部１５６は、処理をステップＳ１０８に進め、全体行列式よりタイル番号ｋに対応する部分行列式を抽出して、それを行列式演算部１５７に供給する。行列式演算部１５７は、供給された部分行列式をガウスの消去法等を用いて演算し、部分行列式を構成する各方程式の解を求める。行列式演算部１５７は、その求めた解を解出力部１５８に供給する。解出力部１５８は、ステップＳ１０９において、取得した部分行列式の解を元データとして出力し、処理をステップＳ１１０に進める。
【０２２２】
また、ステップＳ１０７において、処理対象のタイルに対応する部分行列式の演算を行わないと判定した場合、タイル処理部１５６は、処理をステップＳ１０８およびステップＳ１０９の処理を省略し、ステップＳ１１０に処理を進める。
【０２２３】
ステップＳ１１０において、タイル処理部１５６は、タイル番号ｋの値に「１」を加算し、ステップＳ１１１に処理を進める。ステップＳ１１１において、タイル処理部１５６は、タイル番号ｋの値に基づいて、全タイルについて処理が終了したか否かを判定し、未処理のタイルが存在し、未だ全タイルについて処理が終了していないと判定した場合、処理をステップＳ１０７に戻し、そのブロックの、それ以降の処理を繰り返す。
【０２２４】
また、ステップＳ１１１において、全タイルについて処理が終了したと判定した場合、タイル処理部１５６は、その情報を復元制御部１５１に供給し、ステップＳ１１２に処理を進める。ステップＳ１１２において、ブロック番号ｉの値に「１」を加算し、処理をステップＳ１１３に進める。ステップＳ１１３において全ブロックについて処理が終了していないと判定した場合、復元制御部１５１は、処理をステップＳ１０２に戻し、それ以降の処理を繰り返す。また、ステップＳ１１３において、全ブロックについて変換処理を行ったと判定した場合、復元制御部１５１は、元データ復元処理を終了し、図２０のＳ８５に処理を戻す。
【０２２５】
以上のように復元処理を行うことにより、パケットデータ復元部１３５は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。従って、受信装置１３は、より容易、かつ、より正確にデータを受信することができる。
【０２２６】
次に、図２２および図２３のフローチャートを参照して、図２１のステップＳ１０８において実行される求解処理の詳細を説明する。
【０２２７】
元データを復元するための行列式を供給された行列式演算部１５７は、ステップＳ１３１において、行列式に含まれる係数行列を参照し、全ての列に値が「１」の成分が存在するか否かを判定する。係数行列の全列に、値が「１」の成分が少なくとも１つ存在しないと、その列に対応する、ロスした元データを算出することができないので、行列式演算部１５７は、ステップＳ１３１においてこの判定処理を行う。
【０２２８】
ステップＳ１３１において、全ての列に値が「１」の成分が少なくとも１つ存在すると判定した場合、行列式演算部１５７は、処理をステップＳ１３２に進め、変数ｉの値を「１」に設定し、ガウスの消去法の、前進消去を開始する。前進消去は、行列式の係数行列において、値が「１」の成分の数を減らすように、係数行列の行間でEOR演算を行い、行列式を変形していく処理である。この前進消去の処理の具体的な例については、後述する。
【０２２９】
前進消去処理を開始した行列式演算部１５７は、ステップＳ１３３に処理を進め、第ｉ列の成分の値が「１」の行を、対象行の第１行目から順に検出する。対象行とは、係数行列において、前進消去処理の対象となる行のことである。後述するように、前進消去処理が進むごとに、この対象行が変化する。なお、初期状態において、対象行は全行である。
【０２３０】
ステップＳ１３４において、行列式演算部１５７は、ステップＳ１３３の処理により、行が複数検出されたか否かを判定し、複数検出されたと判定した場合、ステップＳ１３５において、最初に検出された行と、２番目以降に検出された行とで各成分についてEOR演算を行う。このとき、行列式の他の項も、この係数行列のEOR演算に対応するようにEOR演算を行う。
【０２３１】
行同士のEOR演算を行った行列式演算部１５７は、ステップＳ１３６に処理を進める。また、ステップＳ１３４において、第ｉ列の成分の値が「１」である行を、１行しか検出できなかったと判定した場合（各列には、値が「１」の成分が少なくとも１つ存在するので、１行は検出される）、ステップＳ１３５の処理を省略し、ステップＳ１３６に処理を進める。
【０２３２】
ステップＳ１３６において、行列式演算部１５７は、検出された（EOR演算により残された）、第ｉ列の成分の値が「１」の行を、求解用に保持し、対象行から除外する。そして、行列式演算部１５７は、ステップＳ１３７に処理を進め、変数ｉの値に「１」を加算し、ステップＳ１３８において、変数ｉの値がＫより大きいか否かを判定する。変数ｉの値がＫ以下である（すなわち、未処理の列が存在する）と判定した場合、行列式演算部１５７は、処理をステップＳ１３３に戻し、次の列に対して、それ以降の処理を繰り返す。
【０２３３】
以上の処理を繰り返すことにより、行列式演算部１５７は、前進消去の処理を進め、全ての列に対して処理を行い、係数行列の値が「１」の成分の数を減らすようにする。
【０２３４】
そして、ステップＳ１３８において、変数ｉの値がＫより大きいと判定した場合、行列式演算部１５７は、処理を図２３のステップＳ１４１に進める。
【０２３５】
図２３のステップＳ１４１において、行列式演算部しは、変数ｉの値をＫに設定し、保持した行を用いて、後退代入を開始する。後退代入は、以上の前進消去により、値が「１」の成分が減らされた係数行列によって、元データの解を求め、求めた解を順次他の行の方程式に代入していく処理である。この後退代入の処理の具体的な例については、後述する。
【０２３６】
後退代入を開始した行列式演算部１５７は、ステップＳ１４２において、前進消去によりｉ番目に保持した行の方程式を解く。なお、後述するように、行列式演算部１５７は、それ以前に求められた解を方程式の変数（元データ）に代入して方程式を解く。
【０２３７】
ステップＳ１４２の処理を終了した、行列式演算部１５７は、ステップＳ１４３に処理を進め、変数ｉの値を「１」減算し、ステップＳ１４４において、全ての解（元データ）を求めたか否かを判定する。未知の変数（元データ）が存在し、全ての解を求めていないと判定した場合、行列式演算部１５７は、ステップＳ１４１に処理を戻し、全ての解が求まるまで、それ以降の処理を繰り返す。
【０２３８】
ステップＳ１４４において、全ての解を求めたと判定した場合、行列式演算部１５７は、求解処理を終了する。
【０２３９】
また、図２２のステップＳ１３１において、全ての列に値が「１」の成分が存在しないと判定した場合、上述したように、全ての解を求めることができないので、行列式演算部１５７は、図２３のステップＳ１４５に処理を進め、エラー処理を行い、ロスしたパケットを復元できない旨のメッセージを出力する等して、求解処理を終了する。
【０２４０】
以上のように行列式演算部１５７が、ガウスの消去法を用いて行列式を解くことにより、パケットデータ復元部１３５は、容易にロスした元データを復元することができる。これにより、受信装置１１は、高速な復元処理を、製造コストを増大せずに実現し、より容易、かつより正確にデータを受信することができる。
【０２４１】
次に、図２４乃至図２７を参照して、上述したガウスの消去法の具体的な例について説明する。なお、ここでは、説明の簡略化のため、５個のEOR変換データＸ１乃至Ｘ５を用いて、４個の元データＤ１乃至Ｄ４を求める場合について説明する。このとき、行列式の係数行列を、図２４に示されるような成分の５行×４列の行列とし、行列式作成部１５３が図２４に示されるような行列式を作成したとする。
【０２４２】
図２４に示される行列式を取得すると、行列式演算部１５７は、最初に、図２２のステップＳ１３１の処理を実行し、係数行列（図２４において左辺第１項）の各列に値が「１」の成分が存在するか否かを判定する。図２４の係数行列においては、全ての列に、値が「１」の成分が存在するので、元データＤ１乃至Ｄ４を求めることができる。
【０２４３】
次に、行列式演算部１５７は、前進消去を開始し、１回目の処理として、１列目（ｉ＝１）を処理の対象とする。そして、行列式演算部１５７は、全ての行を対象行として、１列目に注目し、値が「１」の成分が存在する行を対象行の１行目から順次検出する。図２４の場合、点線枠１７１で示される１列目の成分の値が「１」である行が検出され、点線枠１８１乃至１８３で示される１行目、３行目、および５行目がその順番で検出される。
【０２４４】
１列目の成分の値が「１」である行を検出した行列式演算部１５７は、次に、１番目に検出した行と、２番目以降に検出した行の各成分同士をEOR演算する。図２４の場合、行列式演算部１５７は、点線枠１８１で示される１行目と、点線枠１８２で示される３行目とを成分ごとにEOR演算する。同様に、行列式演算部１５７は、点線枠１８１で示される１行目と、点線枠１８３で示される５行目とを成分ごとにEOR演算する。このEOR演算により、係数行列の各成分の値は、図２４に示される係数行列（左辺第１項）のようになる。
【０２４５】
また、このとき、行列式演算部１５７は、行列式が成立するように、右辺の行列においても係数行列に対応するようにEOR演算を行う。図２４の場合、行列式演算部１５７は、右辺のEOR変換データの行列に対して、点線枠１９１で示される１行目（Ｘ１）と、点線枠１９２で示される３行目（Ｘ３）とをEOR演算し、さらに、点線枠１９１で示される１行目（Ｘ１）と、点線枠１９３で示される５行目（Ｘ５）とをEOR演算する。このEOR演算により、EOR変換データの行列の各成分の値は、図２５に示されるEOR変換データの行列（右辺）のようになる。
【０２４６】
以上のようにして、対象行における第１列目の成分の値が「１」である行を第１行目のみにすると、行列式演算部１５７は、次に、２回目の処理に移行し、係数行列の第２列目を処理の対象とし（ｉ＝２）、第１行目は保持し、第２行目乃至第５行目を対象行とする。そして、行列式演算部１５７は、１回目の場合と同様に、係数行列の第２列目について、値が「１」の成分が存在する行を対象行の１行目（図２５の場合、係数行列の第２行目）から順次検出する。図２５の場合、点線枠２０１で示される第２列目の成分の値が「１」である行が検出され、点線枠２１１および１１２で示される、係数行列の第２行目および第５行目がその順番で検出される。
【０２４７】
第２列目の成分の値が「１」である行を検出した行列式演算部１５７は、１回目の場合と同様に、１番目に検出した行と、２番目以降に検出した行の各成分同士をEOR演算する。図２５の場合、行列式演算部１５７は、点線枠２１１で示される第１行目と、点線枠２１２で示される第５行目とを成分ごとにEOR演算する。このEOR演算により、係数行列の各成分の値は、図２６に示される係数行列（左辺第１項）のようになる。
【０２４８】
また、このとき、行列式演算部１５７は、１回目の場合と同様に、行列式が成立するように、右辺の行列においても係数行列に対応するようにEOR演算を行う。図２５の場合、行列式演算部１５７は、右辺のEOR変換データの行列に対して、点線枠２２１で示される第２行目（Ｘ２）と、点線枠２２２で示される第５行目（Ｘ５＋Ｘ１）とをEOR演算する。このEOR演算により、EOR変換データの行列の各成分の値は、図２６に示されるEOR演算データの行列（右辺）のようになる。
【０２４９】
以上のようにして、対象行における第２列目の成分の値が「１」である行を第２行目のみにすると、行列式演算部１５７は、次に、３回目の処理に移行し、係数行列の第３列目を処理の対象とし（ｉ＝３）、第２行目をさらに保持し、第３行目乃至第５行目を対象行とする。そして、行列式演算部１５７は、１回目の場合と同様に、係数行列の第３列目について、値が「１」の成分が存在する行を対象行の１行目（図２６の場合、係数行列の第３行目）から順次検出する。図２６の場合、点線枠２３１で示される第３列目の成分の値が「１」である行が検出され、点線枠２４１で示される、係数行列の第４行目のみが検出される。
【０２５０】
従って、この場合、行列式演算部１５７は、EOR演算を省略する。また、このとき、行列式演算部１５７は、EOR演算を省略したので、右辺の行列においてもEOR演算を省略する。図２６の場合、右辺のEOR変換データの行列において、点線枠２５１で示される第４行目（Ｘ４）が係数行列の第４行目に対応するが、EOR演算は省略される。従って、この３回目の処理により行列式の各項の行列の各成分の値は、図２６に示されるように変化せず、図２５の場合と同様になる。
【０２５１】
行列式演算部１５７は、次に、４回目の処理に移行し、係数行列の第４列目を処理の対象とし（ｉ＝４）、前回検出した第４行目をさらに保持し、第３行目および第５行目を対象行とする。そして、行列式演算部１５７は、１回目の場合と同様に、係数行列の第４列目について、値が「１」の成分が存在する行を対象行の１行目（図２７の場合、係数行列の第３行目）から順次検出する。図２７の場合、点線枠２６１で示される第４列目の成分の値が「１」である行が検出され、点線枠２７１で示される、係数行列の第３行目のみが検出される（第５行目第４列目の成分の値は「０」である）。
【０２５２】
従って、この場合も、３回目の処理と同様に、行列式演算部１５７は、EOR演算を省略する。また、このとき、行列式演算部１５７は、EOR演算を省略したので、右辺の行列においてもEOR演算を省略する。図２７の場合、右辺の演算用冗長データの行列において、点線枠２８１で示される第３行目（Ｘ３＋Ｘ１）が係数行列の第３行目に対応するが、EOR演算は省略される。従って、この４回目の処理によっても行列式の各項の値は変化しない。行列式演算部１５７は、この４回目の処理において検出された第３行目をさらに保持する。
【０２５３】
以上のように、全列に対して前進消去を行うと行列式演算部１５７は、前進消去を終了し、次に後退代入を開始する。前進消去により、最後に保持した行には、値が「１」の成分が最後の列の１つしか存在しない。その他の列の成分の値は、それまでのEOR演算により「０」に変換されている。同様に、最後から２番目に保持した行の、値が「１」の成分は２個以下であり、その前に保持した行は３個以下である。このように、最後からＹ番目に保持した行には、値が「１」の成分がＹ個以下となる。
【０２５４】
従って、行列式演算部１５７は、後退代入により、最後に保持した行から解を１つ求め、保持した順番と逆順にその解を代入していき、全ての解を求める。
【０２５５】
このように、ガウスの消去法を用いることにより、行列式演算部１５７は、EOR演算等の単純な演算により行列式を解くことができるので、ロスパケット復元部２２８は、ロスした元データを容易にかつ高速に復元することができる。
【０２５６】
図２８は、パケットロスの発生とコンテンツの受信時間との関係の例を示す図である。
【０２５７】
図２８Ａには、図１において説明したかルーセル方式の場合の、パケットロスと受信時間の関係の例が示されている。例えば、上述したように、カルーセル方式の送信の場合、コンテンツは、コンテンツ２９１、コンテンツ２９２、コンテンツ２９３のように、1つのデータがそのまま繰り返し送信されているので、例えば、１回目に配信されるコンテンツ２９１の各パケットを受信中に、パケットロス発生期間２９１Ａで示される期間のパケットをロスしたとすると、受信装置は、２回目の配信であるコンテンツ２９２における、パケットロス発生期間２９１Ａに対応する期間２９２Ａを受信するまで待機しなければならない。すなわち、この場合、受信装置による受信時間が、パケットロスにより、コンテンツ２９１の１周期分増大してしまう。
【０２５８】
これに対して、上述したように、送信装置１１が、コンテンツをEOR変換データ３０１に変換してから繰り返し送信することにより、受信装置１３は、図２８Ｂに示されるように、EOR変換データ３０１においてパケットロス発生期間３０１Ａが発生しても、ロスしたパケット数と同じ数の任意のパケットを受信すれば元データ（コンテンツ）を復元することができる。従って、図２の通信システム１０の受信装置１３は、パケットロスが発生した場合における受信時間の増大を、カルーセル方式の場合と比較して抑制することができる。
【０２５９】
また、図２９は、各条件における復元処理の負荷について説明する図である。
【０２６０】
図２９Ａにおいて、表３１１は、上述したように、係数行列における有効係数の存在可能領域を設けるようにした場合の、受信装置１３による復元処理の処理時間と復元処理の負荷の大きさを示している。なお、ここでは、復元処理の負荷の大きさを示すために、復元処理をCPUで行うものとし、その復元処理によるCPUの占有率を示している。また、表３１１においては、ブロックサイズが1000パケット、2000パケット、および4000パケットの場合を示している。ただし、パケットサイズは１KB（キロバイト）とし、有効係数の存在可能領域における有効係数の生成確率を１／４とする。また、各条件における有効係数の存在可能領域のバンド幅は400列（400パケット）とする。
【０２６１】
図２９Ｂにおいて、表３１２は、図２９Ａの表３１１に対応する表であり、送信装置１１が有効係数の存在可能領域を設けない場合の、受信装置１３による復元処理の処理時間と復元処理の負荷の大きさを示している。なお、ここでは、ブロックサイズが500パケット、1000パケット、および2000パケットの場合を示している。その他の各種条件は、表３１１と同様である。
【０２６２】
図２９Ａの表３１１と図２９Ｂの表３１２を比較して明らかなように、ブロックサイズが同じである場合、有効係数の存在可能領域を設定するときのほうが、設定しないときよりも、処理時間が１／１０程度以上短く、CPU占有率も１／１０以下である。すなわち、係数行列において有効係数の存在可能領域を設定する場合のほうが、設定しない場合よりも、復元処理の負荷を軽減させることができる。
【０２６３】
なお、以上においては、受信装置１３のパケットデータ復元部１３５において、図１３を用いて説明したように、行列式作成部１５３により生成された行列式を行列式保持部１５４が保持し、その行列式を行列式整列部１５５が行を並べ替えて整列し、その行が整列された行列式に対してタイル処理部１５６が処理を行うように説明したが、タイル処理部が、行列式を行が整列された状態で処理することができればよく、実際に整列されていない行列式を処理するようにしてももよい。
【０２６４】
例えば、図３０に示されるように、タイル処理部３２１が図１３に説明した行列式整列部１５５と同様の行列式生成部３２２を内蔵しており、行列式作成部１５３が供給するアプリケーションデータに含まれる先頭情報を取得するようにしてもよい。このとき、例えば、タイル処理部３２１は、行列式保持部１５４より取得した、行が整列されていない行列式に対して、行列式整列部３２２により、先頭情報に基づいて行列式の行を整列させた情報（整列情報）を生成し、その整列情報に基づいて処理を行うようにしてもよいし、行列式保持部１５４より行列式を行毎に取得するようにし、行列式整列部３２２により生成された整列情報に基づいて、その取得する順番を制御するようにしてもよい。
【０２６５】
以上のように、図２に示される通信システム１０においては、送信装置１１が、送信用データを分割して生成した複数の元データを、EOR演算を用いてブロック毎に合成して変換し、各ブロックに対して複数の（元データの数より多くの）変換データを生成し、それらを受信装置１３に送信する。受信装置１３は、そのように送信された複数の変換データを、ブロック毎に、少なくとも元データの数以上受信し、受信した元データの数以上の変換データを用いて、元データを復元する。このようにすることにより、送信装置１１および受信装置１３は、より容易、かつ、より正確にデータを送受信することができる。
【０２６６】
なお、このような変換データを元データの冗長データとし（各変換データが元データの内容を含んでいるため）、送信装置１１がその冗長データ元データとともに送信し、受信装置１３がそれらを受信して、元データをロスした場合のみ、受信した冗長データを用いて、そのロスした元データを復元するようにしてもよい。この方法の場合、受信装置１３がロスした元データのみを復元することができれば良いので、送信装置１１は、送信する冗長データ（変換データ）の数を削減することができるとともに、受信装置１３は、元データをロスしていない場合、元データの復元処理を省略することもできる。
【０２６７】
しかしながら、実際の通信において、パケットロス（元データのロス）が発生しないことは稀であり、さらに、この方法の場合、例えば、送信装置１１は、元データの場合と冗長データの場合とで互いに異なる内容を含むヘッダを付加し、２種類のアプリケーションデータを生成して送信しなければならず、また、受信装置１３は、受信したパケットが元データのパケットであるか冗長データのパケットであるかを判別してそれぞれを別のデータとして処理したり、元データをロスしたか否かを判定したり、元データをロスした場合のみ、受信した冗長データを用いてそのロスした元データを復元するための行列式を作成して演算を行い、元データを復元したりしなければならない等、複雑な処理を必要とし、かえって送信装置１１や受信装置１３の製造コストが増大してしまう恐れもある。
【０２６８】
以上に説明した図２に示される通信システム１０における通信方法の場合、このような複雑な処理を必要とせずに、容易に、データの送受信を行うことができ、かつ、上述したように元データを任意の変換データより復元することができるので、より正確にデータの送受信を行うことができる。
【０２６９】
さらに、図２に示される通信システム１０における通信方法の場合、受信装置１３は、元データを任意の変換データより復元することができるので、例えば、送信装置１１が変換データを含むパケット群を送信中に、その送信の途中から、パケットの受信を開始しても、全ブロックについて元データの数より多くの変換データを受信することができれば、元データを復元することができる。これは、例えば、マルチキャストやブロードキャスト等のように、１対多の通信においてより効果的である。
【０２７０】
以上においては、通信システム１０が、データを送信する送信装置１１およびデータを受信する受信装置１３により構成されるように説明したが、通信システムの構成は、これに限らず、通信システムは、例えば、図３１に示されるように、図１の送信装置１１および受信装置１３を、それぞれモジュールとし、送信部および受信部とし、それらの両方を含む２台の送受信装置により構成されるようにしてもよい。
【０２７１】
図３１において、通信システム４０１は、図２のネットワーク１２と同様の、ネットワーク４１２に接続された送受信装置４１１および送受信装置４１３により構成される。送受信装置４１１は、送信部４２１および受信部４２２を含み、送受信装置４１３は、送信部４３１および受信部４３２を含む。送信部４２１および送信部４３１は、図２の送信装置１１と基本的に同様の構成であり、同様に動作するのでその詳細な説明は省略する。
【０２７２】
また、図３１において、受信部４２２および受信部４３２は、図２の受信装置１３と基本的に同様の構成であり、同様に動作するのでその詳細な説明は省略する。
【０２７３】
すなわち、図３１の通信システム４０１は、内蔵する送信部および受信部をそれぞれ有する送受信装置４１１および送受信装置４１３により構成され、それらが互いに上述したような演算を用いて元データを変換した変換データを利用して、再送制御なしに、通信処理を行う。
【０２７４】
このようにすることにより、双方向の通信においても、受信部は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。従って、送受信装置４１１および送受信装置４１３は、より容易、かつ、より正確にデータを送受信することができる。
【０２７５】
なお、図２においては、通信システム１０は、１台の送信装置１１および１台の受信装置１３により構成されるように説明したが、これに限らず、複数台の送信装置または複数台の受信装置を含むようにしてもよい。
【０２７６】
図３２は、本発明を適用したコンテンツ配信システムの構成例を示す図である。コンテンツ配信システム５０１のサーバ５１１は、図２のネットワークと同等のネットワーク５１２に接続され、同様にネットワーク５１２に接続された複数の端末装置５１３および５１４により構成される。
【０２７７】
図３２において、サーバ５１１は、送信装置１１と同様の機能を有しており、ネットワーク５１２を介して、端末装置５１３および端末装置５１４のそれぞれに対して、画像データや音声データ等のコンテンツデータを分割し、その元データに対して上述したような演算を行い、元データを変換して得られた変換データをパケット化してマルチキャストに送信する。
【０２７８】
端末装置５１３および端末装置５１４は、それぞれ、受信装置１３と同様の機能を有しており、サーバ５１１より供給されるパケットをそれぞれ受信し、上述したように元データを復元する等して、コンテンツデータを復元し、再生する。
【０２７９】
なお、サーバ５１１は、コンテンツデータをダウンロード配信するようにしてもよいし、ストリーミング配信するようにしてもよい。
【０２８０】
以上のように、サーバ５１１が複数台の端末装置５１３および５１４に対してパケットを配信する場合、端末装置５１３および端末装置５１４がパケットをロスしたときに、そのパケットの再送要求をサーバ５１１にするようにすると、サーバ５１１に再生要求が集中し、サーバ５１１の負荷が大きくなり、ダウンしてしまう恐れがある。従って、サーバ５１１が、上述したように、変換データを生成し、それを配信することにより、端末装置５１３および端末装置５１４は、パケットをロスしても、再生要求をせずに、コンテンツデータを復元することができる。従って、サーバ５１１における負荷の増大を抑制することができ、安定したコンテンツデータの配信サービスを提供することができる。
【０２８１】
以上においては、送信用データを分割したブロックのデータサイズ（ブロックサイズ）は、互いに共通であるように説明したが、これに限らず、各ブロックで互いに異なるブロックサイズとなるようにしてももちろんよい。その場合、例えば、送信装置１１が、アプリケーションデータのヘッダに、ブロック番号とともに、そのブロックのブロックサイズの情報を付加し、受信装置１３がそのブロックサイズの情報に基づいて、そのブロックの、受信するパケット数を決定するようにしてもよい。
【０２８２】
また、以上においては、コンテンツデータである送信用データを、データの先頭から終了に向かって、順番に切り出すように説明したが、ブロックの切り出し方はどのようなものであってもよい。ただし、そのブロックの生成方法は、通信システム１０の各装置において予め決められているか、送信装置１１が受信装置１３にその方法に関する情報を供給する等して、送信装置１１と受信装置１３とで共有しておく必要がある。受信装置１３は、その情報に基づいて、送信装置１１によるブロックの生成方法に対応する方法で、ブロックより送信用データを復元する。
【０２８３】
なお、ブロックは処理の単位であるので、実際には、送信装置１１は、その処理の流れに応じてコンテンツデータを分割し、ブロックを生成するようにするのが望ましい。従って、送信装置１１が、その処理の順番によって、例えば、コンテンツデータより一定の規則で離散的に抜き出して１つのブロックとするようにしてもよい。
【０２８４】
また、上述した変換データを送信する方法と、再送要求を用いる方法とを組み合わせて利用するようにしてももちろんよい。その場合、受信側の装置は、パケットロスが発生した場合、まず、受信した変換データにより元データの復元を試み、復元不能であった場合に、送信元に対してロスしたパケットの再送要求を行うようにする。このようにすることにより、再送要求の回数を削減することができるので、送信側と受信側の両方の装置において、再送要求による処理の負荷を軽減させることができる。すなわち、システム全体の負荷を削減することができる。
【０２８５】
以上においては、送信装置１１が、変換データの生成処理とデータ送信処理とを同時に行うように説明したが、これに限らず、例えば、送信装置１１が予め送信用データを取得し、それを上述したように変換データに変換して蓄積しておき、受信装置１３の要求に基づいて、その蓄積してある変換データを供給するようにしてももちろんよい。
【０２８６】
図２の通信システム１０において、送信装置１１と受信装置１３が接続されるネットワーク１２は、その一部または全部が有線により構成されるようにしてもよいし，無線により構成されるようにしてもよい。またネットワーク１２が複数のネットワークにより構成されるようにしてもよい。すなわち、送信装置１１と受信装置１３とが複数のルータ等を介して接続されるようにしても良い。
【０２８７】
さらに、送信装置１１および受信装置１３は、上述した構成以外の構成を含むようにしてもよい。例えば、モニタ等の表示部を設けるようにしても良いし、キーボードやボタン等の入力部を設けるようにしてもよい。
【０２８８】
以上において、送信装置１１は、係数情報、先頭情報、およびブロック番号等をEOR変換データに付加し、アプリケーションデータとして送信するように説明したが、これに限らず、例えば、これらの情報を、EOR変換データとは異なるデータとして送信するようにしてもよい。さらに、送信装置１１は、これらの情報を、例えば、磁気ディスクや書き込み可能な光ディスク等のような記録媒体等を用いて受信装置１３に供給するようにしてもよい。すなわち、送信装置１１は、EOR変換データと異なる方法で、係数情報、先頭情報、およびブロック番号等の情報を受信装置１３に供給するようにしてもよい。
【０２８９】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図２の送信装置１１や受信装置１３には、図３３に示されるようなパーソナルコンピュータが含まれる。
【０２９０】
図３３において、パーソナルコンピュータ６０１のCPU６１１は、ROM（Read Only Memory）６１２に記憶されているプログラム、または記憶部６２３からRAM６１３にロードされたプログラムに従って各種の処理を実行する。RAM６１３にはまた、CPU６１１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２９１】
CPU６１１、ROM６１２、およびRAM６１３は、バス６１４を介して相互に接続されている。このバス６１４にはまた、入出力インタフェース６２０も接続されている。
【０２９２】
入出力インタフェース６２０には、キーボード、マウスなどよりなる入力部６２１、CRT、LCDなどよりなるディスプレイ、並びにスピーカなどよりなる出力部６２２、ハードディスクなどより構成される記憶部６２３、モデムなどより構成される通信部６２４が接続されている。通信部６２４は、インターネットを含むネットワークを介しての通信処理を行う。
【０２９３】
入出力インタフェース６２０にはまた、必要に応じてドライブ６２５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア６２６が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部６２３にインストールされる。
【０２９４】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０２９５】
この記録媒体は、例えば、図３３に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア６２６により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM６１２や、記憶部６２３に含まれるハードディスクなどで構成される。
【０２９６】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２９７】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２９８】
【図１】従来のカルーセル方式によるデータの送信方法を説明する図である。
【図２】本発明を適用した通信システムの構成例を示す図である。
【図３】図２の送信装置の構成例を示すブロック図である。
【図４】図３の送信装置におけるデータの処理の流れを示す図である。
【図５】UDPパケットの構成例を示す模式図である。
【図６】図３のEOR変換データ生成部の詳細な構成例を示すブロック図である。
【図７】EOR変換データの生成の様子を説明する模式図である。
【図８】図２の送信装置における有効係数の存在可能範囲の位置を示す模式図である。
【図９】図３のアプリケーションデータ生成部の詳細な構成例を示すブロック図である。
【図１０】アプリケーションデータの構成例を示す模式図である。
【図１１】図２の受信装置の構成例を示すブロック図である。
【図１２】パケットをロスする様子の例を示す図である。
【図１３】図１１のパケットデータ復元部の詳細な構成例を示すブロック図である。
【図１４】図２の受信装置における有効係数の存在可能範囲の位置を示す模式図である。
【図１５】係数行列における有効係数の分布の例を示す模式図である。
【図１６】タイルの構成例を説明する模式図である。
【図１７】データ送信処理の例を説明するフローチャートである。
【図１８】EOR変換データ生成処理の例を説明するフローチャートである。
【図１９】アプリケーションデータ生成処理の例を説明するフローチャートである。
【図２０】データ受信処理の例を説明するフローチャートである。
【図２１】元データ復元処理の例を説明するフローチャートである。
【図２２】求解処理の例を説明するフローチャートである。
【図２３】求解処理の例を説明する、図２１に続くフローチャートである。
【図２４】ガウス消去法の手順の例を説明する図である。
【図２５】ガウス消去法の手順の例を説明する図である。
【図２６】ガウス消去法の手順の例を説明する図である。
【図２７】ガウス消去法の手順の例を説明する図である。
【図２８】パケットロスと受信処理時間の関係の例を説明する図である。
【図２９】復元処理の処理時間と負荷の大きさの例を示す図である。
【図３０】図１１のパケットデータ復元部の、他の詳細な構成例を示すブロック図である。
【図３１】本発明を適用した通信システムの、他の構成例を示す図である。
【図３２】本発明を適用したコンテンツ配信システムの構成例を示す図である。
【図３３】パーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【０２９９】
１０  通信システム，  １１  送信装置  １２  ネットワーク，  １３  受信装置，  ２１  データ分割部，  ２２  ブロック分割部，  ２３  パケットデータ保持部，  ２４  EOR変換データ生成部，  ２５  アプリケーションデータ生成部，  ２６  データ変換制御部，  ２７  UDPパケット化部，  ２８  バッファ，  ２９  出力制御部，  ３０  IP処理部，  ３１  イーサネット(R)処理部，  ３２  ケーブル，  ４１  送信データ，  ４２  ブロック，  ４３  元データ，  ４４  EOR変換データ，  ４５  送信パケット，  ６１  行列式生成部，  ６２  行列式演算部，  ６３  解出力部，  ７１  係数行列保持部，  ８１  擬似乱数生成部，  ８２  先頭位置決定部，  ８３  幅設定部，  ８４  範囲制御部，  ８５  係数判定部，  ８６  係数生成確率保持部，  １０１  係数情報付加部１０１，  １０２  先頭情報付加部，  １０３  ブロック番号付加部，  １０４  ブロックカウンタ，  １０５  アプリケーションデータ出力部，  １１０  アプリケーションデータ，  １１１  ヘッダ，  １１２  EOR変換データ，  １２１  ブロック番号，  １２２  先頭情報，  １２３  係数情報，  １３０  ケーブル，  １３１  イーサネット(R)処理部，  １３２  IP処理部，  １３３  アプリケーションデータ抽出部，  １３４  バッファ部，  １３５  パケットデータ復元部，  １３６  ブロックデータ復元部，  １３７  受信データ生成部，  １５１  復元制御部，  １５２  係数行列作成部，  １５３  行列式作成部，  １５４  行列式保持部，  １５５  行列式整列部，  １５６  タイル処理部，  １５７  行列式演算部，  １５８  解出力部，  ３２１  タイル処理部，  ３２２  行列式整列部，  ４０１  通信システム，  ４１１  送受信装置，  ４１２  ネットワーク，  ４１３  送受信装置，  ４２１  送信部，  ４２２  受信部，  ４３１  送信部，  ４３２  受信部，  ５０１  コンテンツ配信システム，  ５１１  サーバ，  ５１２  ネットワーク，  ５１３  端末装置，  ５１４  端末装置，  ６０１  パーソナルコンピュータ，  ６１１  CPU，  ６１２  ROM，  ６１３  RAM，  ６１４  バス，  ６２０  入出力インタフェース，  ６２１  入力部，  ６２２  出力部，  ６２３  記憶部，  ６２４  通信部，  ６２５  ドライブ，  ６２６  リムーバブルメディア
【図１】
2005223683.tif 000007
【図２】
2005223683.tif 000008
【図３】
2005223683.tif 000009
【図４】
2005223683.tif 000010
【図５】
2005223683.tif 000011
【図６】
2005223683.tif 000012
【図７】
2005223683.tif 000013
【図８】
2005223683.tif 000014
【図９】
2005223683.tif 000015
【図１０】
2005223683.tif 000016
【図１１】
2005223683.tif 000017
【図１２】
2005223683.tif 000018
【図１３】
2005223683.tif 000019
【図１４】
2005223683.tif 000020
【図１５】
2005223683.tif 000021
【図１６】
2005223683.tif 000022
【図１７】
2005223683.tif 000023
【図１８】
2005223683.tif 000024
【図１９】
2005223683.tif 000025
【図２０】
2005223683.tif 000026
【図２１】
2005223683.tif 000027
【図２２】
2005223683.tif 000028
【図２３】
2005223683.tif 000029
【図２４】
2005223683.tif 000030
【図２５】
2005223683.tif 000031
【図２６】
2005223683.tif 000032
【図２７】
2005223683.tif 000033
【図２８】
2005223683.tif 000034
【図２９】
2005223683.tif 000035
【図３０】
2005223683.tif 000036
【図３１】
2005223683.tif 000037
【図３２】
2005223683.tif 000038
【図３３】
2005223683.tif 000039