(57)【要約】  ネットワークにおいてデータ・ファイルを送信するための方法は、データ・ファイルのパケットについての、宛先デバイスからの要求を受信するステップを含む。本方法は、各宛先デバイスによって要求される各パケットが、競合グラフの、宛先デバイスに関連している複数の頂点の中の異なる頂点によって表されるように、競合グラフを構築するステップを含む。本方法は、ラベルを複数の頂点に割り当てるステップを含む。本方法は、レベルを複数の頂点に割り当てるステップを含む。本方法は、最高のレベルを有する頂点から最低のレベルを有する頂点まで、複数の頂点を順序付けるステップを含む。本方法は、その順序付けに基づいて、複数の頂点を着色するステップを含む。本方法は、同じカラーを有する複数の頂点の中の頂点によって表されるパケットを結合するステップを含む。本方法は、結合されたパケットを送信するステップを含む。
2017505581.tif 000002
【特許請求の範囲】
【請求項１】
データ・ファイルのパケットについての、宛先デバイスからの要求を受信し、
各宛先デバイスによって要求される各パケットが、競合グラフの、前記宛先デバイスに関連している複数の頂点の中の異なる頂点によって表されるように、前記競合グラフを構築し、
各ラベルが、パケットを要求する前記宛先デバイスと、前記パケットを記憶する宛先デバイス・キャッシュとを示すインデックスの集合であるラベルを前記複数の頂点に割り当て、
各レベルが、前記パケットを要求する前記宛先デバイスの数と、前記パケットを記憶する宛先デバイス・キャッシュの数と、を示すレベルを前記複数の頂点に割り当て、
最高のレベルを有する頂点から最低のレベルを有する頂点まで、前記複数の頂点を順序付け、
前記順序付けに基づいて、前記複数の頂点を着色し、
同じカラーを有する前記複数の頂点の中の頂点によって表される前記パケットを結合し、また
前記結合されたパケットを送信する、
ように構成された、プロセッサ、
を備えている、ネットワーク要素。
【請求項２】
各レベルは、パケットを要求する前記宛先デバイスの数と、前記要求されたパケットを記憶する前記宛先デバイス・キャッシュの数との合計である、請求項１に記載のネットワーク要素。
【請求項３】
前記プロセッサは、前記同じカラーを有する前記頂点によって表される前記パケットに対して有限フィールドの上の線形結合オペレーションを実行することにより前記パケットを結合するように構成されている、請求項１に記載のネットワーク要素。
【請求項４】
（ｉ）第１の頂点と、第２の頂点とが、同じパケットを表しておらず、また（ｉｉ）前記第１の頂点によって表されるパケットが、前記第２の頂点に関連する前記宛先デバイスの前記キャッシュに記憶されず、または前記第２の頂点によって表される前記パケットが、前記第１の頂点に関連する前記宛先デバイスの前記キャッシュに記憶されない場合に、前記プロセッサは、前記複数の頂点のうちの前記第１の頂点と前記第２の頂点との間のリンクを作り出すことにより、前記競合グラフを構築するように構成されている、請求項１に記載のネットワーク要素。
【請求項５】
前記プロセッサは、
前記最高のレベルに等しいラベルの長さを有する着色されていない頂点を選択すること、および
（ｉ）部分集合の中の前記頂点が、入力パラメータに基づいており、また前記選択された頂点の前記レベルに基づいている望ましいラベルの長さを有しており、（ｉｉ）前記部分集合の中の前記頂点は、前記選択された頂点に対するリンクを有しておらず、（ｉｉｉ）前記部分集合の中の前記頂点は、互いの間にリンクを有しておらず、また（ｉｖ）前記部分集合の濃度が、前記レベルから１を差し引いた値に等しい場合に、前記選択された頂点に対して、また前記複数の頂点の中の着色されていない頂点の前記部分集合に対して、同じカラーを割り当てること
により、前記複数の頂点に着色するように構成されている、請求項４に記載のネットワーク要素。
【請求項６】
前記プロセッサは、
前記最高のレベルのすべての頂点が選択されるまで、反復して、前記選択するためのオペレーションおよび同じカラーを前記割り当てるためのオペレーションを実行し、また
依然として着色されていない前記最高のレベルの頂点のレベルを前記最高のレベルの下の次のレベルへとアップデートする
ように構成されている、請求項５に記載のネットワーク要素。
【請求項７】
前記プロセッサは、前記複数の頂点が着色されることを示す最低のレベルが到達されるまで、前記レベルをアップデートするように構成されている、請求項６に記載のネットワーク要素。
【請求項８】
前記プロセッサは、前記競合グラフのために使用されるカラーの数を低減させるために、前記複数の着色された頂点に対してローカル・サーチを実行するように構成されている、請求項７に記載のネットワーク要素。
【請求項９】
前記プロセッサは、
前記競合グラフの既存のカラーからあるカラーを選択すること、
前記選択されたカラーを用いて頂点を識別すること、および
前記識別された頂点にリンクされる頂点が異なるカラーで着色されていない場合に、前記既存のカラーから選択される前記異なるカラーで前記選択されたカラーを置換すること
により、前記ローカル・サーチを実行するように構成されている、請求項８に記載のネットワーク要素。
【請求項１０】
ネットワークにおいてデータ・ファイルを送信するための方法であって、
前記データ・ファイルのパケットについての、宛先デバイスからの要求を受信するステップと、
各宛先デバイスによって要求される各パケットが、競合グラフの、前記宛先デバイスに関連している複数の頂点の中の異なる頂点によって表されるように、前記競合グラフを構築するステップと、
各ラベルが、パケットを要求する前記宛先デバイスと、前記パケットを記憶する宛先デバイス・キャッシュとを示すインデックスの集合であるラベルを前記複数の頂点に割り当てるステップと、
各レベルが、前記パケットを要求する前記宛先デバイスの数と、前記パケットを記憶する宛先デバイス・キャッシュの数とを示すレベルを前記複数の頂点に割り当てるステップと、
最高のレベルを有する頂点から最低のレベルを有する頂点まで、前記複数の頂点を順序付けるステップと、
前記順序付けに基づいて、前記複数の頂点を着色するステップと、
同じカラーを有する前記複数の頂点の中の頂点によって表される前記パケットを結合するステップと、
前記結合されたパケットを送信するステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全体の内容が、参照により本明細書に組み込まれている、２０１４年１月２２日に出願した米国仮出願第６１／９３０，０７２号の３５Ｕ．Ｓ．Ｃ．§１１９（ｅ）の下の優先権を主張するものである。
【背景技術】
【０００２】
現在では、コンテンツ配信ネットワーク（ＣＤＮ：ｃｏｎｔｅｎｔ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｎｅｔｗｏｒｋｓ）は、オンデマンドのオーディオ／ビデオ・ストリーミングの人気の増大に関連する容量問題及び効率問題に直面している。これらの問題に対処するための１つのやり方は、ネットワーク・キャッシングと、ネットワーク符号化とによるものである。例えば、従来のコンテンツ配信ネットワーク（ＣＤＮ）の問題解決手法は、ネットワークの内部のキャッシング・ロケーションの間のコンテンツ・コピーの配置のための中央集中されたアルゴリズムを使用している。従来の問題解決手法はまた、ＬＲＵ（最も長い間使用されていない（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）ポリシー）やＬＦＵ（使用頻度が最も低い（ｌｅａｓｔ  ｆｒｅｑｕｅｎｔｌｙ  ｕｓｅｄ）ポリシー）などのキャッシュ置換ポリシーを含んでいて、キャッシュ・ヒット率を改善するために分散型キャッシュをローカルに管理している。他の従来の問題解決手法は、ランダム線形ネットワーク符号化を使用して、グループの中でパケットを転送しており、これは、容量の限られたネットワークの中でスループットを改善することができる。
【０００３】
しかしながら、従来のネットワーク・キャッシング問題解決手法と、ネットワーク符号化問題解決手法とは、キャッシング・リソースと、送信リソースとの相対的な効率を考慮してはいない。これは、配信されたオブジェクトまたはファイル当たりの準最適なコストをもたらす。さらに、従来のコンテンツ配信問題解決手法は、ネットワーク・キャッシングと、ネットワーク符号化との可能性のある組み合わされた利点を活用してはいない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
少なくとも１つの例示の実施形態は、キャッシング・フェーズと、配信フェーズとを含むコンテンツ配信のための方法および／またはデバイスを対象としている。
【課題を解決するための手段】
【０００５】
少なくとも１つの例示の実施形態によれば、ネットワークの中でデータ・ファイルを送信するための方法は、データ・ファイルのパケットについての宛先デバイスからの要求を受信するステップを含んでいる。本方法は、各宛先デバイスによって要求される各パケットが、競合グラフの、宛先デバイスに関連づけられている複数の頂点の中の異なる頂点によって表されるように、競合グラフを構築するステップを含んでいる。本方法は、各ラベルが、パケットを要求する宛先デバイスと、パケットを記憶する宛先デバイス・キャッシュとを示すインデックスの集合であるラベルを複数の頂点に割り当てるステップを含んでいる。本方法は、各レベルが、パケットを要求する宛先デバイスの数と、パケットを記憶する宛先デバイス・キャッシュの数とを示すレベルを複数の頂点に割り当てるステップを含んでいる。本方法は、最高のレベルを有する頂点から、最低のレベルを有する頂点へと、複数の頂点を順序付けるステップを含んでいる。本方法は、その順序付けに基づいて、複数の頂点を着色するステップを含んでいる。本方法は、同じカラーを有する複数の頂点の中で頂点によって表されるパケットを結合するステップを含んでいる。本方法は、結合されたパケットを送信するステップを含んでいる。
【０００６】
少なくとも１つの例示の実施形態によれば、各レベルは、パケットを要求する宛先デバイスの数と、要求されたパケットを記憶する宛先デバイス・キャッシュの数との合計である。
【０００７】
少なくとも１つの例示の実施形態によれば、結合するステップは、同じカラーを有する頂点によって表されるパケットに対して有限フィールドの上の線形結合オペレーションを実行する。
【０００８】
少なくとも１つの例示の実施形態によれば、構築するステップは、（ｉ）第１の頂点と、第２の頂点とが、同じパケットを表しておらず、また（ｉｉ）第１の頂点によって表されるパケットが、第２の頂点に関連する宛先デバイスのキャッシュに記憶されず、または第２の頂点によって表されるパケットが、第１の頂点に関連する宛先デバイスのキャッシュに記憶されない場合に、複数の頂点のうちの第１の頂点と、第２の頂点との間でリンクを作り出すステップを含んでいる。
【０００９】
少なくとも１つの例示の実施形態によれば、着色するステップは、最高のレベルを有する着色されていない頂点を選択するステップと、（ｉ）部分集合の中の頂点が、入力パラメータに基づいており、また選択された頂点のラベルに基づいている望ましいラベルを有しており、（ｉｉ）部分集合の中の頂点は、選択された頂点に対するリンクを有しておらず、（ｉｉｉ）部分集合の中の頂点は、互いの間にリンクを有しておらず、また（ｉｖ）部分集合の濃度が、レベルから１を差し引いた値に等しい場合に、選択された頂点に対して、また複数の頂点の中の着色されていない頂点の部分集合に対して、同じカラーを割り当てるステップと、を含む。
【００１０】
少なくとも１つの例示の実施形態によれば、着色するステップは、最高のレベルのすべての頂点が選択されるまで、選択するステップと同じカラーを割り当てるステップのオペレーションを反復して実行するステップを含む。
【００１１】
少なくとも１つの例示の実施形態によれば、着色するステップは、着色されていない頂点の数が最高のレベル以上である場合に、着色されていない最高のレベルにおける頂点に対して追加の着色するオペレーションを実行するステップを含んでいる。着色するステップは、追加の着色するオペレーションの後に、依然として着色されていない最高のレベルの頂点のレベルを最高のレベルの下の次のレベルへとアップデートするステップを含んでいる。
【００１２】
少なくとも１つの例示の実施形態によれば、着色するステップは、競合グラフの複数の頂点か着色されるまで、実行される。
【００１３】
少なくとも１つの例示の実施形態によれば、本方法は、競合グラフのために使用されるカラーの数を減少させるために、複数の着色された頂点に対するローカル・サーチを実行するステップを含んでいる。
【００１４】
少なくとも１つの例示の実施形態によれば、ローカル・サーチを実行するステップは、競合グラフの既存のカラーからあるカラーを選択するステップと、選択されたカラーを用いて頂点を識別するステップと、識別された頂点にリンクされる頂点が、異なるカラーで着色されない場合に、既存のカラーから選択される異なるカラーで選択されたカラーを置換するステップとを含む。
【００１５】
上記の方法は、通信ネットワークの内部のネットワーク要素（例えば、コンテンツ・ソース）によって実行され得ることを理解すべきである。
【００１６】
例示の実施形態は、以下で本明細書において与えられる詳細な説明と、添付の図面とから、より十分に理解されることになり、そこでは、同様な要素は、同様な参照番号によって表され、この参照番号は、例証としてだけ与えられ、またこのようにして例示の実施形態を限定するものではない。
【図面の簡単な説明】
【００１７】
【図１】少なくとも１つの例示の実施形態によるコンテンツ配信ネットワークを示す図である。
【図２】例示の一実施形態によるネットワーク要素の例示の構造を示す図である。
【図３Ａ】図２におけるネットワーク要素の例示のオペレーションを示すフロー・チャートである。
【図３Ｂ】図２におけるネットワーク要素の例示のオペレーションを示すフロー・チャートである。
【図４】少なくとも１つの例示の実施形態による、配信フェーズについての例示のオペレーションを示す図である。
【図５】少なくとも１つの例示の実施形態による、方向づけのない競合グラフを構築するための例示のオペレーションを示す図である。
【図６Ａ】少なくとも１つの例示の実施形態による、競合グラフを着色するための例示のオペレーションを示す図である。
【図６Ｂ】少なくとも１つの例示の実施形態による、競合グラフを着色するための例示のオペレーションを示す図である。
【図７】少なくとも１つの例示の実施形態による、着色された競合グラフを示す図である。
【発明を実施するための形態】
【００１８】
様々な例示の実施形態が、次に、いくつかの例示の実施形態が示される添付の図面を参照して、より十分に説明されるであろう。
【００１９】
詳細な実例となる実施形態が、本明細書において、開示される。しかしながら、本明細書において開示される特定の構造的詳細および機能的詳細は、例示の実施形態を説明する目的のための、単に、代表的なものにすぎない。しかしながら、本発明は、多数の代替的な形態で実施されることもあり、また本明細書において説明される実施形態だけに限定されるように解釈されるべきではない。
【００２０】
それに応じて、例示の実施形態は、様々な修正形態および代替形態とすることができるが、それらの実施形態は、図面において例として示され、また本明細書において詳細に説明されるであろう。しかしながら、開示される特定の形態だけに例示の実施形態を限定する意図は存在していないことを理解すべきである。それとは反対に、例示の実施形態は、本開示の範囲内に含まれるすべての修正形態と、同等形態と、代替形態とを対象として含むべきである。同様な番号は、図面の説明の全体を通して、同様な要素のことを意味している。
【００２１】
第１の、第２の、などの用語を本明細書において使用して、様々な要素を説明することができるが、これらの要素は、これらの用語によって限定されるべきではない。これらの用語を使用して、１つの要素を別の要素から区別するだけである。例えば、本開示の範囲を逸脱することなく、第１の要素は、第２の要素と命名される可能性があり、また同様に、第２の要素は、第１の要素と命名される可能性がある。本明細書において使用されるように、用語「および／または」は、１つまたは複数の関連するリストアップされた項目の任意の組合せ、およびすべての組合せを含んでいる。
【００２２】
ある要素が、別の要素に「接続され（ｃｏｎｎｅｃｔｅｄ）」ている、または「結合され（ｃｏｕｐｌｅｄ）」ていると称されるときに、その要素は、他の要素に直接に接続され、または結合される可能性もあり、あるいは介在する要素が存在していてもよい。対照的に、ある要素が、別の要素に「直接に（ｄｉｒｅｃｔｌｙ）接続され」ている、または「直接に結合され」ていると称されるときには、介在する要素は存在していない。要素の間の関係を説明するために使用される他の言葉も、同様なやり方（例えば、「間に（ｂｅｔｗｅｅｎ）」に対して「直接に間に（ｄｉｒｅｃｔｌｙ  ｂｅｔｗｅｅｎ）」、「隣接する（ａｄｊａｃｅｎｔ）」に対して「直接に隣接する（ｄｉｒｅｃｔｌｙ  ａｄｊａｃｅｎｔ）」など）で解釈されるべきである。
【００２３】
本明細書において使用される専門用語は、特定の実施形態を説明する目的のためだけであり、限定することを意図してはいない。本明細書において使用されるように、単数形の形式「１つの（ａ）」、「１つの（ａｎ）」、および「その（ｔｈｅ）」は、文脈が、明らかにそうでない場合を示していない限り、同様に複数形の形式を含むことを意図している。用語「備える／含む（ｃｏｍｐｒｉｓｅｓ）」、「備えている／含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）」、および／または「含んでいる（ｉｎｃｌｕｄｉｎｇ）」は、本明細書において使用されるときに、述べられた特徴、整数、ステップ、オペレーション、要素、および／またはコンポーネントの存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、および／またはそれらのグループの存在もしくは追加を除外するものではないことが、さらに理解されるであろう。
【００２４】
いくつかの代替的な実装形態においては、指摘される機能／動作は、図面の中で指摘される順序を外れて、起きることができることにも注意すべきでもある。例えば、連続して示される２つの図は、必要とされる機能／動作に依存して、実際には、実質的に同時に実行されることもあり、または時には、逆の順序で実行されることもある。
【００２５】
特定の詳細が、以下の説明において提供されて、例示の実施形態の完全な理解を提供している。しかしながら、例示の実施形態は、これらの特定の詳細なしに、実行され得ることが、当業者によって理解されるであろう。例えば、システムは、不必要な詳細の中で例示の実施形態をあいまいにしないようにするために、ブロック図の形で示されることもある。他の例においては、よく知られているプロセス、構造、および技法は、例示の実施形態をあいまいにすることを回避するために、不必要な詳細なしに示されることもある。
【００２６】
以下の説明においては、実例となる実施形態は、プログラム・モジュールまたは機能プロセスが、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むように実施され得る、特定のタスクを実行し、または特定の抽象データ型を実施し、また既存のネットワーク要素（例えば、基地局、基地局制御装置、ノードＢ（ＮｏｄｅＢ）、ｅノードＢ（ｅＮｏｄｅＢ）など）における既存のハードウェアを使用して実施され得るオペレーションの動作およびシンボリック表現（例えば、フロー・チャート、流れ図、データ・フロー図、構造図、ブロック図などの形式で）を参照して、説明されるであろう。そのような既存のハードウェアは、１つまたは複数の中央演算処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒｓ）、デジタル信号プロセッサ（ＤＳＰ：ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒｓ）、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ−ｉｎｔｅｇｒａｔｅｄ−ｃｉｒｃｕｉｔｓ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙｓ）コンピュータなどを含むことができる。
【００２７】
フロー・チャートは、逐次的プロセスとしてオペレーションを説明することができるが、オペレーションの多くは、並列に、同時に、または並行して実行されることもある。さらに、オペレーションの順序は、配列し直されることもある。プロセスは、そのオペレーションが完了されるときに終了されることもあるが、図面の中に含まれていない追加のステップを有することもできる。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが、ある関数に対応するときに、その終了は、呼び出し関数、またはメイン関数に対する、関数のリターンに対応することができる。
【００２８】
本明細書において開示されるように、用語「ストレージ媒体」または「コンピュータ読取り可能ストレージ媒体」は、リード・オンリー・メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、磁気ＲＡＭ、コア・メモリ、磁気ディスク・ストレージ媒体、光ストレージ媒体、フラッシュ・メモリ・デバイス、および／または情報を記憶するための他の有形マシン読取り可能媒体を含めて、データを記憶するための１つまたは複数のデバイスを表すことができる。用語「コンピュータ読取り可能媒体」は、それだけには限定されないが、ポータブル・ストレージ・デバイスもしくは固定ストレージ・デバイスと、光ストレージ・デバイスと、命令（単数または複数）および／またはデータを記憶し、含み、あるいは搬送することができる様々な他の媒体とを含むことができる。
【００２９】
さらに、例示の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実施されることもある。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードの形で実施されるときに、必要なタスクを実行するプログラム・コードまたはコード・セグメントは、コンピュータ読取り可能ストレージ媒体など、マシン読取り可能媒体またはコンピュータ読取り可能媒体に記憶されることもある。ソフトウェアの形で実施されるときに、１つまたは複数の専用プロセッサが、必要なタスクを実行するであろう。
【００３０】
コード・セグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェア・パッケージ、クラス、または命令、データ構造もしくはプログラム・ステートメントの任意の組合せを表すことができる。コード・セグメントは、情報、データ、引き数、パラメータ、またはメモリ・コンテンツを渡すこと、および／または受信することにより、別のコード・セグメントまたはハードウェア回路に結合されることもある。情報、引き数、パラメータ、データなどは、メモリ共有化、メッセージ・パッシング、トークン・パッシング、ネットワーク送信などを含む任意の適切な手段を経由して、渡され、転送され、または送信されることもある。
【００３１】
図１は、少なくとも１つの例示の実施形態によるコンテンツ配信ネットワークを示すものである。
【００３２】
図１に示されるように、コンテンツ配信ネットワーク（ＣＤＮ）は、複数の宛先デバイス（またはユーザ・デバイス）２００に接続されたネットワーク要素１５１を含むことができる。ネットワーク要素１５１は、データ・ファイル（例えば、映画ファイル）を配信するためのコンテンツ・ソース（例えば、マルチキャスト・ソース）とすることができる。宛先デバイス２００は、コンテンツ・ソースからデータを要求するエンド・ユーザ・デバイスとすることができる。例えば、各宛先デバイス２００は、ユーザが要求されたデータにアクセスすることができるようにするデバイスの一部分とすることができ、またはそのデバイスに関連づけられることもある。例えば、各宛先デバイス２００は、セット・トップ・ボックス、パーソナル・コンピュータ、タブレット、モバイル電話、あるいはオーディオまたはビデオをストリーミングするために使用される関連する任意の他のデバイスとすることができる。宛先デバイス２００のそれぞれは、ネットワーク要素１５１から受信されるデータを記憶するためのメモリを含むことができる。ネットワーク要素１５１と、宛先デバイス２００との構造およびオペレーションは、図２および３を参照して以下でより詳細に説明されるであろう。
【００３３】
図２は、例示の実施形態によるネットワーク要素の例示の構造を示す図である。少なくとも１つの例示の実施形態によれば、ネットワーク要素１５１は、通信ネットワーク（例えば、図１のコンテンツ配信ネットワーク（ＣＤＮ））における使用のために構成されていることもある。図２を参照すると、ネットワーク要素１５１は、例えば、データ・バス１５９と、トランスミッタ１５２と、レシーバ１５４と、メモリ１５６と、プロセッサ１５８とを含むことができる。簡潔にするために、別個の説明が、ここで含められていないが、各宛先デバイス２００は、ネットワーク要素１５１と同じ、または類似した構造を有することができることが、理解されるべきである。
【００３４】
トランスミッタ１５２と、レシーバ１５４と、メモリ１５６と、プロセッサ１５８とは、データ・バス１５９を使用して互いにデータを送信し、かつ／または互いからのデータを受信することができる。トランスミッタ１５２は、通信ネットワークにおける他のネットワーク要素に対する１つまたは複数のワイヤレス接続を経由して、例えば、データ信号と、制御信号と、信号強度／品質情報とを含むワイヤレス信号を送信するためのハードウェアと、任意の必要なソフトウェアとを含むデバイスである。
【００３５】
レシーバ１５４は、通信ネットワークにおける他のネットワーク要素に対する１つまたは複数のワイヤレス接続を経由して、例えば、データ信号と、制御信号と、信号強度／品質情報とを含むワイヤレス信号を受信するためのハードウェアと、任意の必要なソフトウェアとを含むデバイスである。
【００３６】
メモリ１５６は、磁気ストレージ、フラッシュ・ストレージなどを含む、データを記憶することができる任意のデバイスとすることができる。
【００３７】
プロセッサ１５８は、例えば、入力データに基づいて、特定のオペレーションを実行するように構成された、またはコンピュータ読取り可能コードに含まれる命令を実行することができる、専用プロセッサを含めて、データを処理することができる任意のデバイスとすることができる。例えば、以下で説明される修正形態と、方法とは、メモリ１５６の上に記憶され、またネットワーク要素１５１の内部のプロセッサ１５８によって実施されることもあることを理解すべきである。
【００３８】
さらに、以下の修正形態と、方法とは、ネットワーク要素１５１の１つまたは複数の上記で説明された要素によって実行され得ることを理解すべきである。例えば、レシーバ１５４は、「受信するステップ」と、「獲得するステップ」などとを実行することができ、トランスミッタ１５２は、「送信するステップ」と、「出力するステップ」と、「送るステップ」などとを実行することができ、プロセッサ１５８は、「決定するステップ」と、「生成するステップ」と、「相互に関連づけるステップ」と、「算出するステップ」などとを実行することができ、またメモリ１５６は、「記憶するステップ」と、「保存するステップ」などとを実行することができる。
【００３９】
例示の実施形態は、キャッシング・フェーズ（図３Ａおよび３Ｂを参照して以下で説明される）と、配信フェーズ（図４〜図７を参照して以下で説明される）とを対象としていることを理解すべきである。図３〜図６は、図２におけるネットワーク要素の例示のオペレーションを示すフロー・チャートである。例えば、図３Ａおよび図３Ｂは、通信ネットワークにおいて、キャッシングの方法を実行するための例示のオペレーションを示すものである。図４〜図６は、キャッシング方法が実行された後に、データ・ファイルを配信するための例示のオペレーションを示すものである。
【００４０】
図３Ａおよび図３Ｂは、以下のアルゴリズム１に関連したキャッシング配信方法を実行するためのものであり、ここで、各データ・ファイル「ｆ」は、有限フィールドのシンボルとして表される「Ｂ」個の等しいサイズのパケットへと分割され、またライブラリ「Ｆ」に属することを理解すべきである。
【００４１】
【表１】
2017505581.tif 000003
【００４２】
アルゴリズム１において、
【数１】
2017505581.tif 000004
は、「ｕ」の宛先デバイス２００のキャッシング分布であり、ここで、ｕ＝１，・・・，ｎを用いた∀ｕに対して、
【数２】
2017505581.tif 000005
であり、また∀ｆ＝１，・・・，ｍ、ｕ＝１，・・・，ｎに対して０≦ｐｆ，ｕ≦１／Ｍｕであり、「ｍ」は、ネットワーク要素１５１によってホストされるファイルの数であり、また「Ｍｕ」は、宛先デバイス「ｕ」（すなわち、宛先デバイス２００）におけるキャッシュのストレージ容量であり、またＭｕ，ｆ＝ｐｆ，ｕＭｕＢは、ユーザｕにおいてキャッシュされるファイルｆのパケットを示している。ネットワーク要素１５１は、宛先「ｕ」のデバイス２００が、ファイル「ｆ」のＭｕ．ｆ＝ｐｆ，ｕＭｕＢ個のパケットをキャッシュするように、アルゴリズム１を実行する。さらに、アルゴリズム１のランダム化された性質は、２つの宛先が、与えられたファイル「ｆ」について同じ数のパケットをキャッシュする場合、そのときには、２つの宛先デバイス２００のうちのそれぞれが、同じファイル「ｆ」の異なるパケットをキャッシュするように、ネットワーク要素１５１が、オペレーションを実行することを可能にする。アルゴリズム１は、以下で図３Ａおよび図３Ｂにおいて説明されるオペレーションに従って、ネットワーク要素１５１によって実施されることもある。
【００４３】
図３Ａを参照すると、オペレーション３００において、ネットワーク要素１５１は、複数のデータ・ファイルについての人気を決定することができる。データ・ファイルは、例えば、ビデオ・ファイルおよび／またはオーディオ・ファイルとすることができる。ネットワーク要素１５１は、宛先デバイス２００のうちの少なくとも１つからの複数のデータ・ファイルについての要求（例えば、ユーザ要求）に基づいて、人気を決定することができる。ユーザ要求は、データ・ファイルについての需要分布を形成することができる。ネットワーク要素１５１は、すべての宛先デバイス２００の需要分布に従って人気を決定することができる。この場合には、需要分布は、ジップ（Ｚｉｐｆ）分布に従うことができる。代わりに、ネットワーク要素１５１は、各宛先デバイスごとの人気を決定することができ、ここでは、各宛先デバイス２００は、関連する需要分布を有している。
【００４４】
ネットワーク要素１５１は、宛先デバイス２００からのデータ・ファイルについての要求の数に基づいて人気を決定することができる。例えば、ネットワーク要素１５１は、宛先デバイス２００によって１００回要求されるデータ・ファイルを５０回要求されるデータ・ファイルよりもより高い人気を有するものとして決定する。したがって、人気は、どのデータ・ファイルが、宛先デバイス２００のユーザによって最も頻繁に要求され、また閲覧されるかに基づいたものとすることができる。
【００４５】
ネットワーク要素１５１は、各データ・ファイルを複数のパケットへと分割することができる。例えば、ネットワーク要素１５１は、各データ・ファイルを同じ数のパケット（例えば、３つのパケット）へと分割することができる。それに応じて、オペレーション３１０においては、ネットワーク要素１５１は、オペレーション３００の中で決定される人気に基づいて、少なくとも１つの宛先デバイスに対して複数のデータ・ファイルのランダム・パケットを送信することができる。例えば、ネットワーク要素１５１は、ランダム・パケットが各宛先デバイス２００に記憶される（またはキャッシュされる）ように各データ・ファイルのランダム・パケットを宛先デバイス２００に対して送信することができる。
【００４６】
ネットワーク要素１５１は、各宛先デバイス２００が、決定された人気と、入力パラメータ（例えば、宛先デバイスの数、人気分布、各宛先デバイスのキャッシュ・サイズ、ネットワーク要素１５１におけるデータ・ファイル・ライブラリのサイズなど）とに基づいて、データ・ファイルのうちの少なくとも１つについての与えられた数のランダム・パケットを受信するように、ランダム・パケットを送信することができる。例えば、宛先デバイス２００が、同じサイズのキャッシュと、同じ需要分布とを有する（例えば、宛先デバイスが、一様である）場合に、ネットワーク要素１５１は、各宛先デバイス２００に対して同じ数のパケットを送信することができる。一例においては、１０個のパケットへと分割される２つの宛先デバイス１および２と、２つのファイルＡおよびＢとが、存在していることを仮定する。（ｉ）宛先デバイス１および２が、同じ頻度でファイルＡおよびファイルＢを要求し、またファイルＡが、ファイルＢよりも多い頻度で両方の宛先によって要求され、また（ｉｉ）２つの宛先デバイス１および２が、同じキャッシュ・サイズを、例えば、パケットの観点から６つのユニットを有する場合、そのときには、ネットワーク要素１５１は、両方の宛先デバイス１および２が、ファイルＡのうちの４つのパケットと、ファイルＢのうちの２つのパケットをキャッシュするように、キャッシングの方法を実行するであろう。
【００４７】
ネットワーク要素１５１が、オペレーション３００において、宛先デバイス当たりに基づいて、人気を決定した場合、そのときには、ネットワーク要素１５１は、オペレーション３１０において、宛先デバイス当たりに基づいて、ランダム・パケットを送信することができる。例えば、宛先デバイス２００が、異なるサイズのキャッシュまたは異なる需要分布を有する場合、ネットワーク要素１５１は、各宛先に対して異なる数のパケットを送信することができる。この場合には、上記の例を参照すると、宛先デバイス１は、ファイルＡのうちの７つのパケットと、ファイルＢのうちの３つのパケットとを受信することができるが、宛先デバイス２は、ファイルＡのうちの２つのパケットと、ファイルＢのうちの５つのパケットとを受信することができる。これは、宛先デバイス１が、ファイルＡをファイルＢよりもずっと多く要求し、またパケットの観点で１０個のユニットの総キャッシュ・サイズを有しているが、宛先２デバイスは、ファイルＢよりもずっと少なくファイルＡを要求し、またパケットの観点で７つのユニットの総キャッシュ・サイズを有していることに起因する可能性がある。
【００４８】
図３Ｂは、必要に応じて、オペレーション３００と、３１０との間で実行され得るネットワーク要素１５１の例示のオペレーションを示すものである。例えば、図３Ａにおけるオペレーション３００に従って、ネットワーク要素１５１は、決定された人気に基づいて、データ・ファイルをランク付けすることができる。例えば、オペレーション３０１において、ネットワーク要素１５１は、オペレーション３００において決定される人気を使用して、最も人気のあるデータ・ファイルから最も人気のないデータ・ファイルまでデータ・ファイルをランク付けすることができる。
【００４９】
オペレーション３０２において、ネットワーク要素１５１は、各データ・ファイルについて、ランキングに基づいて、いくつかのランダム・パケットを選択することができる。例えば、ネットワーク要素１５１は、各データ・ファイルのそれぞれのランクと、ネットワークの入力パラメータ（例えば、宛先デバイスの数、人気分布、各宛先デバイスのキャッシュ・サイズ、ネットワーク要素１５１におけるデータ・ファイル・ライブラリのサイズなど）とのうちの少なくとも１つに従って、各宛先デバイスについて、またデータ・ファイルのそれぞれについて異なる数のランダム・パケットを選択する。オペレーション３０２の後に、ネットワーク要素１５１は、図３Ａにおけるオペレーション３１０へと戻り、各データ・ファイルについての選択された数のランダム・パケットを送信することができる。
【００５０】
オペレーション３０２は、ネットワーク要素１５１が、少なくとも１つのしきい値に基づいて、ランク付けされたデータ・ファイルを少なくとも第１の部分集合と、第２の部分集合とに分割することを含むことができることを理解すべきである。少なくとも１つのしきい値は、経験的証拠に基づいており、かつ／またはユーザ定義されたものとすることができる。第１の部分集合は、第２の部分集合よりも高くランク付けされたデータ・ファイルを含むことができる。このようにして、オペレーション３１０においては、ネットワーク要素１５１は、第１の部分集合の中のデータ・ファイルだけについて、選択された数のランダム・パケットを送信することができる。これは、宛先デバイス２００におけるパケットのより効率の高いキャッシングを可能にすることができる。
【００５１】
図３Ａおよび３Ｂを参照して説明されるオペレーションは、より人気のあるファイルのより多くのパケットをキャッシュし、また宛先デバイス２００によってまとめてキャッシュされる各ファイルの異なるパケットの量を増大させ（または代わりに、最大にし）、また従来のマルチキャスティングに比べて、送信の数を低減させるスキームの能力のために、改善されたネットワークの性能を実現することを理解すべきである。
【００５２】
上記で説明されたキャッシング方法に関連して、本出願は、データ・ファイルの要求されたパケットが、宛先デバイス２００に対して配信される配信フェーズのための例示の方法を開示している。配信フェーズのための例示の方法は、グラフ理論に基づいている。
【００５３】
図４は、少なくとも１つの例示の実施形態による配信フェーズのための例示のオペレーションを示すものである。図４を参照すると、オペレーション４００において、ネットワーク要素１５１は、データ・ファイルのパケットについての、宛先デバイス２００（またはユーザ・デバイス）からの要求を受信する。ネットワーク要素１５１は、上記で説明されるキャッシング方法を既に実行しているので、各宛先デバイス２００は、キャッシング方法の結果として、キャッシュされ（または記憶され）なかったこれらのパケットだけを要求する。したがって、配信フェーズは、各宛先デバイス２００に対して、要求されたファイルのうちの欠けている部分（単数または複数）を、すなわち、その宛先デバイス２００のメモリから失われているパケットを提供することを含んでいる。
【００５４】
オペレーション４１０において、ネットワーク要素１５１は、競合グラフを構築する。例えば、ネットワーク要素１５１は、各宛先デバイス２００によって要求される各パケットが、競合グラフの複数の頂点の中の異なる頂点によって表されるように、複数の頂点を用いて競合グラフに追加する。それゆえに、たとえ同じパケットが、Ｋ人の異なるユーザによって要求されるとしても、パケットは、競合グラフの中のＫ個の異なる頂点として表される。言い換えれば、競合グラフの中の各頂点は、宛先デバイス２００と、要求されたパケットとの固有の対に関連づけられる。したがって、競合グラフの各頂点は、宛先デバイス２００に関連づけられ、また宛先デバイス２００によって要求されるパケットを表す。さらに、ネットワーク要素１５１は、複数の頂点のうちのどれが、同じ要求されたパケットを表すかと、どの要求されたパケットが、宛先デバイス２００に属するキャッシュに記憶されるかと、に基づいて、競合グラフを構築することができる。オペレーション４１０は、図５および６を参照して、以下でさらに詳細に説明される。
【００５５】
依然として図４を参照すると、オペレーション４２０において、ネットワーク要素１５１は、複数の頂点を元のレベルに割り当てることができる。それぞれの元のレベルは、パケットについての要求の数と、パケットを記憶するユーザ宛先２００のキャッシュの数とを示すことができる。例えば、各レベルは、パケットを要求するユーザの宛先の数と、要求されたパケットを記憶するユーザ・デバイス・キャッシュの数との合計とすることができる。したがって、パケットが、４つの宛先デバイス２００によって要求され、また宛先デバイス２００のうちの３つが、パケットを記憶している場合、そのときには、そのパケットに関連する頂点についての元のレベルは、３＋４＝７である。
【００５６】
依然として図４を参照すると、オペレーション４２０において、ネットワーク要素１５１はまた、複数の頂点にラベルを割り当てることもできる。各ラベルは、頂点に対応するパケットを要求する宛先デバイス２００、およびパケットを記憶する宛先デバイス２００のキャッシュを示すことができる。例えば、各ラベルは、宛先デバイス２００がパケットを要求することに対応し、また宛先デバイス２００が、要求されたパケットを記憶することに対応するインデックスの集合とすることができる。例えば、パケットが、４つの宛先デバイス２００（例えば、ユーザ１、ユーザ３、ユーザ５、ユーザ１０）によって要求され、また宛先デバイス２００のうちの３つ（例えば、ユーザ２、ユーザ４、ユーザ８）が、要求されたパケットを記憶している場合、そのときには要求されたパケットに関連する頂点についてのインデックスの集合は、
【数３】
2017505581.tif 000006
である。ここで、ラベルの長さは、７（すなわち、パケットを要求する宛先デバイスの数と、パケットを記憶する宛先デバイス・キャッシュの数との合計）である。
【００５７】
オペレーション４３０において、ネットワーク要素１５１は、割り当てられたレベルに基づいて、頂点を順序付けることができる。例えば、ネットワーク要素１５１は、着色するオペレーションに備えて、最高のレベルから最低のレベルまでの頂点を順序付けることができる。
【００５８】
オペレーション４４５において、ネットワーク要素１５１は、競合グラフの上の要求されたパケットをラベル付けするやり方として、複数の頂点に着色する。例えば、ネットワーク要素１５１は、オペレーション４３０において決定される順序に基づいて、複数の頂点に着色する。オペレーション４５５が、図６に関して、以下でさらに詳細に考察される。
【００５９】
オペレーション４８０において、ネットワーク要素１５１は、同じカラーを有する頂点によって表される要求されたパケットを結合する。例えば、ネットワーク要素１５１は、同じカラーを有する頂点によって表されるパケットに対して排他的論理和（ＸＯＲ：ｅｘｃｌｕｓｉｖｅ−ＯＲ）オペレーション（または有限フィールドの上の他の線形結合オペレーション）を実行する。
【００６０】
オペレーション４９０において、ネットワーク要素１５１は、結合されたパケットを送信する。例えば、ネットワーク要素１５１は、マルチキャスト送信を経由して、結合されたパケットを宛先デバイス２００に対して送信する。送信に先立ってパケットを結合することにより、少なくとも１つの例示の実施形態による配信方法が、ネットワーク要素１５１の送信の数を低減させることができ、これは、消費電力を低減させ、またネットワーク効率を改善させることができることを理解すべきである。宛先デバイス２００は、ＸＯＲオペレーションの組（または他の線形結合オペレーションの組）を使用して、送信された結合されたパケットを受信し、また復号することができることを理解すべきである。例えば、宛先デバイス２００は、そのキャッシュされたパケットをキーとして使用して、結合されたパケットを復号することができる。
【００６１】
図５は、少なくとも１つの例示の実施形態による競合グラフを構築するための例示のオペレーションを示すものである。例えば、図５は、図４からのオペレーション４１０をさらに詳細に考察している。図５は、方向づけのない競合グラフを構築するための例示のオペレーションを示すものである。方向づけのない競合グラフは、本出願において、階層的グリーディ着色（ＨｇＣ：ｈｉｅｒａｒｃｈｉｃａｌ  ｇｒｅｅｄｙ  ｃｏｌｏｒｉｎｇ）スキームと称される着色スキームと組み合わせて使用されることもある。この着色スキームは、図６を参照して、以下でより詳細に説明される。
【００６２】
図５を参照すると、オペレーション５１１において、ネットワーク要素１５１は、オペレーション４１０において追加される複数の頂点からの頂点「Ｖｉ」と、「Ｖｊ」とを分析する。オペレーション５１３において、ネットワーク要素が、頂点ＶｉとＶｊとが同じ要求されたパケットを表すことを決定する場合、そのときにはネットワーク要素１５１は、オペレーション５１５において、２つの頂点の間のリンク（またはエッジ）を作り出さない。次いで、ネットワーク要素１５１は、オペレーション５３１へと進んで、競合グラフの中の頂点のすべてが、分析されているかどうかを決定する。
【００６３】
オペレーション５１３において、ネットワーク要素１５１は、頂点ＶｉとＶｊとが、同じ要求されたパケットを表さないことを決定する場合、そのときにはネットワーク要素１５１は、オペレーション５１７へと進み、また頂点Ｖｉに関連する、すなわち、頂点Ｖｉによって表されるパケットを要求する宛先デバイス２００のキャッシュ（またはメモリ）をチェックする。オペレーション５１９において、ネットワーク要素１５１が、頂点Ｖｊを表すパケットが頂点Ｖｉによって表されるパケットを要求する宛先デバイス２００のキャッシュの中で使用可能ではないことを決定する場合、そのときにはネットワーク要素１５１は、オペレーション５２１において、頂点Ｖｉと頂点Ｖｊとの間にリンクを作り出す。次いで、ネットワーク要素１５１は、オペレーション５３１へと進んで、競合グラフの中の頂点のすべてが、分析されているかどうかを決定する。
【００６４】
オペレーション５１９において、ネットワーク要素１５１が、頂点Ｖｊを表すパケットが頂点Ｖｉに関連する、また頂点Ｖｉによって表されるパケットを要求する宛先デバイス２００のキャッシュにおいて使用可能であることを決定する場合、そのときにはネットワーク要素１５１は、オペレーション５２３において、頂点Ｖｊに関連する、また頂点Ｖｊによって表されるパケットを要求する宛先デバイス２００のキャッシュをチェックする。オペレーション５２５において、頂点Ｖｉを表すパケットが、頂点Ｖｊに関連する、また頂点Ｖｊによって表されるパケットを要求する宛先デバイス２００のキャッシュにおいて使用可能ではない場合、そのときにはネットワーク要素１５１は、競合グラフの中の頂点のすべてが分析されているかどうかを決定するオペレーション５３１へと進む前に、オペレーション５２７において、頂点ＶｉとＶｊとの間にリンクを作り出す。
【００６５】
オペレーション５２５において、ネットワーク要素１５１が、頂点Ｖｉを表すパケットが頂点Ｖｊに関連する、また頂点Ｖｊによって表されるパケットを要求する宛先デバイス２００のキャッシュにおいて使用可能である場合、そのときにはネットワーク要素１５１は、オペレーション５２９において、頂点ＶｉとＶｊとの間のリンクを作り出す。次いで、ネットワーク要素１５１は、オペレーション５３１へと進んで、競合グラフの中の頂点のすべてが分析されているかどうかを決定する。
【００６６】
ひとたびネットワーク要素１５１が、競合グラフの中の頂点のすべてを分析した後に、次いで、ネットワーク要素１５１は、オペレーション５３３において、構築された競合グラフを戻す。
【００６７】
図５を考慮すると、（ｉ）第１の頂点と、第２の頂点とが、同じパケットを表さず、また（ｉｉ）第１の頂点によって表されるパケットが、第２の頂点に関連する、また第２の頂点によって表されるパケットを要求するユーザ・デバイスのキャッシュに記憶されず、または第２の頂点によって表されるパケットが、第１の頂点に関連する、また第１の頂点によって表されるパケットを要求するユーザ・デバイスのキャッシュに記憶されない場合に、図４における構築するオペレーション４１０は、複数の頂点のうちの第１の頂点と第２の頂点との間にリンクを作り出すオペレーションによって要約されることもあることを理解すべきである。
【００６８】
図６は、少なくとも１つの例による、競合グラフを着色するための例示のオペレーションを示すものである。図６のオペレーションは、以下で考察されるアルゴリズムに関連している。
【００６９】
【表２】
2017505581.tif 000007
【００７０】
上記のアルゴリズム（「ＨｇＣアルゴリズム」と称される）において、ｆ（ｖ）は、競合グラフの中の頂点ｖによって表されるパケットとする。Ｕをユーザ宛先デバイスの集合として定義すると、Ｋｖ＝｛∀ｕ∈Ｕ：ｆ（ｖ）∈Ｑｕ∪Ｃｕ｝であり、式中で、Ｑｕは、ユーザ宛先デバイスｕによって要求されるすべてのパケットの集合であり、またＣｕは、ユーザ宛先デバイスｕによる、すべてのキャッシュされたパケットの集合である。本発明者等は、Ｋｖを頂点「ｖ」に関連するラベルと呼ぶ。例えば、パケットＡ１（ｆ（ｖ１）＝Ａ１）を表す頂点ｖ１が、ユーザ宛先デバイス１とユーザ宛先デバイス２とによって要求され、またユーザ宛先デバイス３とユーザ宛先デバイス４とにキャッシュされる場合、そのときには、
【数４】
2017505581.tif 000008
である。
【００７１】
Ｇｉ＝｛ｖ：｜Ｋｖ｜＝ｉ｝とする。本発明者等は、Ｇｉを元の階層（またはレベル）として考える。本発明者等は、階層（またはレベル）ｎから開始し、この階層（またはレベル）ｎは、最高の階層またはレベルである。それらが、同じ｜Ｋｖ｜＝ｎを有しており、またそのような集合の濃度が、ｎに等しく、また競合グラフの中のそのような集合のうちの任意の２つの頂点の間にリンクが存在していない（すなわち、グリーディなやり方で、サイズ「ｎ」を有する独立した集合を検索する）場合に、最初に、本発明者等は、同じカラーを用いてＧｎの中の頂点の部分集合を着色する（同じ｜Ｋｖ｜を有しており、また競合グラフにおいてリンクによって接続されていない２つのノードは、それらが、同じＫｖを有することを述べることと同等であることに注意すべきである。）。次いで、本発明者等は、Ｇｎの中の着色されていない頂点の残りをＧｎ−１とマージ（すなわち、Ｇｎ−１≡Ｇｎ−１∪Ｇｎ、ＨｇＣアルゴリズムのライン３５）して、新しい階層（またはレベル）ｎ−１をもたらす。
【００７２】
階層（またはレベル）ｎ−１において、｜Ｋｖ｜＝ｎ−１となるようなすべてのＫについて、それらが、同じ｜Ｋｖ｜＝ｎ−１を有しており、そのような集合の濃度が、ｎに等しく、またそのような集合のうちの任意の２つの頂点の間にリンクが存在していない場合に、本発明者等は、最初に、同じカラーを用いて、Ｇｎ−１の中の頂点の部分集合を着色する。次いで、本発明者等は、Ｇｎ−１の中の頂点の残りを着色しようと試みる。
【００７３】
Ｇｎ−１の中の頂点の残りを着色するために本発明者等が使用する判断基準は、本発明者等が、第１に、ＨｇＣアルゴリズムのライン１９の中に示されるＷ１∈Ｇｎ−１から頂点ｖをランダムに選択することであり、ここで、Ｗ１は、ＨＣ，Ｑにおいて、「小さな」｜Ｋｖ｜、ｖ∈Ｇｎ−１または「大きな程度」を有する頂点の集合を示しており、またここで値ａ∈［０，１］は、Ｗ１のサイズを制御する。例えば、ａ＝０である場合、そのときにはＷ１は、最小の｜Ｋｖ｜、ｖ∈Ｇｎ−１を有する頂点を示している。
【００７４】
第２に、本発明者等は、同じカラーを用いて、選択された頂点ｖと、頂点ｖ’∈Ｗ２⊆Ｇ１＼｛ｖ｝とに着色しようと試みており、ここでＷ２は、ｖ’∈Ｇｉ＼｛ｖ｝を用いてその｜Ｋｖ’｜が、グリーディなやり方で｜Ｋｖ｜に「近接して」いる「ｉ」レベルにおける着色されていない頂点の集合として規定される。パラメータａ∈［０，１］と同様に、この近さは、アルゴリズムの中のライン２２において示されるように、別のパラメータｂ∈［０，１］によって取り込まれる。例えば、ｂ＝０である場合、そのときには本発明者等は、｜Ｋｖ’｜−｜Ｋｖ｜が最小にされるように、頂点ｖ’から開始する。ここで、本発明者等は、グリーディなやり方で、ｉ番目の階層（またはレベル）において、少なくとも「ｉ」のサイズを有する独立した集合を探している。
【００７５】
この第２の着色するプロシージャの後に、本発明者等は、次の階層（またはレベル）の頂点と着色されていない頂点とを一体化しており、この次の階層（またはレベル）は、この場合には、Ｇｎ−２である。次いで、本発明者等は、すべての階層（またはレベル）について同じプロシージャを反復する。
【００７６】
最後に、本発明者等は、ＬｏｃａｌＳｅａｒｃｈ（ローカル・サーチ）と呼ばれる関数を使用して、ＨｇＣアルゴリズムのライン３９における最後の競合グラフのために使用されるカラーの数をさらに低減させる。ＬｏｃａｌＳｅａｒｃｈの詳細は、以下のアルゴリズムによって与えられる。
【００７７】
【表３】
2017505581.tif 000009
【００７８】
ここで、Ｎ（ｊ）は、頂点「ｊ」の隣接する頂点（頂点「ｊ」を除外する）を示すものとする。明確にするために、本発明者等は、コンマを使用して、Ａ１を要求するユーザ宛先デバイスと、Ａ１をキャッシュするユーザ宛先デバイスとを分離している。さらに、ｃは、着色を示す望ましいベクトルである。ＨｇＣアルゴリズムの複雑度は、Ｏ（ｎ３Ｂ２）である。
【００７９】
図６に示されるオペレーションは、ａ＝０およびｂ＝０についてのＨｇＣアルゴリズムに関連しており、また図４におけるオペレーション４４５の一部分として実行されるオペレーションに対応していることを理解すべきである。最初に、ネットワーク要素１５１は、競合グラフの中の頂点としての「Ｖ」と、着色された頂点の集合としてのＶ＿１と、着色されていない頂点の集合としてのＶ＿２とを規定する。着色するオペレーションが開始される前に、集合Ｖ＿１は空集合であり、またＶ＿２＝Ｖである。
【００８０】
オペレーション６００において、ネットワーク要素１５１は、レベルｊ＝ｎとなるように初期化し、ここでｎは、割り当てられたレベルのうちからの最高のレベルを示している（頂点は、オペレーション４３０において、それらの割り当てられたレベルに基づいて、順序付けられたことを思い出して欲しい）。オペレーション６０５において、ネットワーク要素１５１は、分析のためにレベル「ｊ」を選択する。
【００８１】
オペレーション６１０において、ネットワーク要素１５１は、ラベルの長さがｊに等しいレベルｊに属する頂点「ｖ’」を選択し、また分析されるようにその頂点にマーク付けする。オペレーション６１５において、ネットワーク要素１５１は、頂点の集合「Ｌ」を形成する。ネットワーク要素１５１は、ｉ）頂点ｖと同じラベルの長さを有し（すなわち、同じ｜Ｋｖ｜を有し）、ｉｉ）着色されておらず、ｉｉｉ）互いにリンクされておらず、またｉｖ）頂点ｖにリンクされていないレベルｊにおける頂点を用いて集合Ｌを形成する。オペレーション６２０においては、ネットワーク要素１５１は、（頂点ｖを含む）集合Ｌの中の頂点の数が、レベルｊの数に等しいかどうかを決定する。等しくない場合、そのときにはネットワーク要素１５１は、集合Ｌの中の頂点に対してカラーを割り当てず、またオペレーション６３５へと進んで、レベルｊにおけるすべての頂点が分析されているかどうかをチェックする。集合Ｌの中の頂点の数がｊに等しい場合、そのときにはネットワーク要素１５１は、オペレーション６２５において、新しいカラー（例えば、競合グラフの中でまだ使用されていないカラー）を選択する。オペレーション６３０において、ネットワーク要素１５１は、集合Ｌの中の頂点に新しいカラーを割り当て、集合Ｖ＿１の中に集合Ｌの中の頂点を含んでおり、また集合Ｖ＿２から集合Ｌの中の頂点を取り除く。
【００８２】
次いで、オペレーション６３５において、ネットワーク要素１５１は、ｊというラベルの長さを有しているレベルｊにおける頂点のすべてが分析されているかどうかを決定する。分析されていない場合、そのときにはネットワーク要素１５１は、オペレーション６０５へと戻る。分析されている場合、そのときにはネットワーク要素１５１は、オペレーション６４０へと進む。
【００８３】
オペレーション６４０において、ネットワーク要素１５１は、レベルｊにおけるどの頂点が着色されていないかを決定し、これらの着色されていない頂点を分析されていないとしてマーク付けし、ラベルがレベルｊ以上の長さを有している頂点「ｗ」を選択し、また頂点「ｗ」を分析されるようにマーク付けする。これは、ａ＝０であるときに、Ｇｎ−１の中の頂点のうちの残りに着色することに関して、上記の説明と同等である。
【００８４】
オペレーション６４５において、ネットワーク要素１５１は、集合Ｌを空集合に再設定し、また互いにリンクされておらず、また頂点「ｗ」にリンクされていないｊに最も近い（またはｊ以上の）長さを有するラベルを有するレベルｊの中に依然として着色されていない頂点を含むように、集合Ｌを形成する。オペレーション６５０において、ネットワーク要素１５１は、（頂点「ｗ」を含む）集合Ｌの中の頂点の数が、「ｊ」以上であるかどうかを決定する。「ｊ」以上でない場合、そのときにはネットワーク要素１５１は、どのような頂点にも着色せず、またオペレーション６６５へと進んで、レベルｊにおけるすべての頂点が分析されているかどうかを決定する。
【００８５】
オペレーション６５０において、ネットワーク要素１５１が、集合Ｌの中の頂点の総数がｊ以上であることを決定する場合、そのときにはネットワーク要素１５１は、オペレーション６５５において、新しいカラー（例えば、競合グラフの中でまだ使用されていないカラー）を選択する。オペレーション６６０において、ネットワーク要素１５１は、集合Ｌの中の頂点に新しいカラーを割り当て、集合Ｖ＿１の中に集合Ｌの中の頂点を含んでおり、また集合Ｖ＿２から集合Ｌの中の頂点を取り除く。オペレーション６６５において、ネットワーク要素１５１は、レベルｊにおけるすべての頂点が分析されているかどうかを決定する。分析されていない場合、そのときにはネットワーク要素１５１は、オペレーション６４０へと戻る。分析されている場合、そのときには、オペレーション６６８において、ネットワーク要素１５１は、レベルｊにおけるすべての着色されていない頂点を次により低いレベルへと移動させて、レベルｊ−１にもともと属しているすべての頂点の、レベルｊに属している着色されていない頂点との結合によって与えられる新しいレベルｊ−１を作り出す。次に、オペレーション６７０においては、ネットワーク要素１５１は、レベルｊが、１（または割り当てられたレベルのうちからの最低の割り当てられたレベル）に等しいかどうかを決定する。
【００８６】
レベルｊが、１（または割り当てられたレベルのうちからの最低の割り当てられたレベル）に等しい場合、そのときにはネットワーク要素１５１は、オペレーション６７７へと進む。そうでない場合には、オペレーション６７５において、ネットワーク要素１５１は、レベルｊをｊ−１に設定し、またオペレーション６０５へと戻る。オペレーション６７５において、ネットワーク要素１５１は、レベルｊにとどまっている任意の着色されていない頂点を次の最低のレベル（すなわち、ｊ−１）へと配置して、競合グラフのすべての頂点が、カラーを割り当てられることを保証することを理解すべきである。オペレーション６７７において、ネットワーク要素は、競合グラフにおいて使用されるカラーの総数を低減させる試みの中で、ローカル・サーチを実行する。例えば、ネットワーク要素１５１は、競合グラフの既存のカラーからあるカラーを選択し、選択されたカラーを有する頂点を識別し、また識別された頂点にリンクされる頂点が、異なるカラーを用いて着色されていない場合に、既存のカラーから選択される異なるカラーと、選択されたカラーを置換する。このようにして、選択されたカラーは、既存のカラーの集合から取り除かれる。次いで、ネットワーク要素１５１は、オペレーション６８０において、問題解決手法として着色された競合グラフを戻す。
【００８７】
図６に示されるオペレーションを考慮すると、（ｉ）部分集合の中の頂点が入力パラメータに基づいており、また選択された頂点のラベルの長さに基づいている望ましい長さを有する割り当てられたラベルを有しており、（ｉｉ）部分集合の中の頂点が、選択された頂点に対するリンクを有しておらず、（ｉｉｉ）部分集合の中の頂点が、互いの間にリンクを有しておらず、また（ｉｖ）部分集合の濃度が、そのレベルから１を差し引いた値に等しい場合に、図６のオペレーションは、ネットワーク要素１５１が、最高のレベルを有する着色されていない頂点を選択することと、選択された頂点に、また複数の頂点の中の着色されていない頂点の部分集合に、同じカラーを割り当てることとに対応している可能性があることもまた、理解すべきである。図６のオペレーションは、ネットワーク要素１５１が、最高のレベルのすべての頂点が選択されるまで、反復して、同じカラー・オペレーションを選択すること、および割り当てることを実行することと、依然として着色されていない最高のレベルの頂点を最高のレベルの下の次のレベルへとアップデートすることとに対応していること、をさらに理解すべきである。さらにまた、図６のオペレーションは、競合グラフの頂点のすべてが着色されるまで、ネットワーク要素１５１によって実行されることを理解すべきである。さらにまた、レベルはまた、階層と称されることもあり、またレベル（または階層）「ｊ」に割り当てられる頂点の集合は、Ｇｊを用いて示され、そのようにしてレベルｊにとどまっているすべての着色されていない頂点をレベルｊ−１へと配置するオペレーションは、集合Ｇｊ−１を形成することと同等であることを理解すべきである。Ｇｊ−１を形成するこのオペレーションは、オペレーション６６８と同等であることを理解すべきである。
【００８８】
図７は、少なくとも１つの例示の実施形態による着色された競合グラフを示すものである。例えば、図７は、図５に従って構築され、またＨｇＣスキームと、図６のオペレーションとに従って着色される競合グラフを示すものである。
【００８９】
図７においては、本発明者等は、ｎ＝３の宛先デバイス（またはユーザ・デバイス）２００（すなわち、Ｕ＝｛１，２，３｝）と、ｍ＝３のデータ・ファイルＡ、Ｂ、Ｃ（すなわち、Ｆ＝｛Ａ，Ｂ，Ｃ｝）とを有する共用リンク・ネットワークを考慮している。各データ・ファイルは、４つのパケットへと分割される。例えば、データ・ファイルＡは、｛Ａ１，Ａ２，Ａ３，Ａ４｝という４つのパケットを有する。キャッシング・フェーズ（すなわわち、図３Ａおよび３Ｂと、関連した説明とを参照）では、ユーザ・デバイス１は、｛Ａ１，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｃ２｝をキャッシュし、ユーザ・デバイス２は、｛Ａ１，Ａ２，Ａ３，Ａ４，Ｂ１，Ｃ２，Ｃ３｝をキャッシュし、またユーザ・デバイス３は、｛Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２，Ｂ３｝をキャッシュするものとする。次いで、ユーザ・デバイス｛１，２，３｝は、それぞれデータ・ファイル｛Ａ，Ｂ，Ｃ｝を要求するものとする。同等に、ユーザ・デバイス１は、Ａ２、Ａ３、Ａ４を要求し、ユーザ・デバイス２は、Ｂ２、Ｂ３、Ｂ４を要求し、またユーザ・デバイス３は、Ｃ１、Ｃ２、Ｃ３、Ｃ４を要求する。次いで、本発明者等は、ＫＡ２＝｛１，２，３｝（コンマを使用して、パケットＡ２をキャッシュしているユーザ・デバイスからパケットＡ２を要求するユーザ・デバイスを分離している。ここで、パケットＡ２は、ユーザ・デバイス１によって要求されるが、パケットＡ２は、ユーザ・デバイス２および３によってキャッシュされる）；ＫＡ３＝｛１；２，３｝；ＫＡ４＝｛１；２｝；ＫＢ２＝｛２；１，３｝；ＫＢ２＝｛２；１，３｝；ＫＢ４＝｛２；１｝；ＫＣ２＝｛３；１，２｝；ＫＣ３＝｛３；２｝；ＫＣ４＝｛３｝（ここで、Ｃ４は、ユーザ・デバイス３によって要求され、またどこでもキャッシュされない）を有している。
【００９０】
ＨｇＣスキームは、次のように（ＨｇＣアルゴリズムと、図６とを参照して）機能する。ｊ＝ｎ＝３、Ｇ３＝｛Ａ２，Ａ３，Ｂ２，Ｂ３，Ｃ２｝の場合に、頂点ｖ＝Ａ２とすると、そのときには、Ｂ２およびＣ２が集合Ｌの中にあることになることが見出される可能性があり、それゆえに、集合Ｌ＝｛Ａ２，Ｂ２，Ｃ２｝である。次に、｜Ｌ｜＝ｎ＝３であるので、本発明者等は、Ａ２、Ｂ２、Ｃ２を、黒色を用いて着色する。次いで、３＝Ｇ３＼Ｌ＝｛Ａ３，Ｂ３｝となる。以下のループにおいては、本発明者等は、｜Ｌ｜＝ｎ＝３を伴う集合Ｉを見出すことができないので、本発明者等は、アルゴリズムのライン２１へと移行する。次いで、本発明者等は｜Ｌ｜≧ｎ＝３を伴う集合Ｌを見出すことができないので、次いで、本発明者等は、Ｇ２＝Ｇ２∪｛Ａ３｝を行い、また次いで、Ｇ２＝Ｇ２∪｛Ｂ３｝を行う。それゆえに、本発明者等は、Ｇ２＝｛Ａ３，Ａ４，Ｂ３，Ｂ４，Ｃ３｝を得る。次に、本発明者等は、アルゴリズムのライン３へと進む（すなわち、次のループを開始する）。ｊ＝ｊ−１＝ｎ−１＝２の場合には、このループにおいて、本発明者等は、最初に頂点ｖ＝Ａ４を選び、次いで、本発明者等は、Ｌ＝｛Ａ４，Ｂ４｝を見出す。本発明者等は、青色を用いて｛Ａ４，Ｂ４｝に着色する（図４を参照）。次に、Ｇ２＝Ｇ２＼｛Ａ４，Ｂ４｝＝｛Ａ３，Ｂ３，Ｃ３｝となる。次いで、アルゴリズムのライン２１において、本発明者等は、Ｋｖの最小の長さを有する頂点を見出し、この頂点は、ＫＣ３＝｛３；２｝を有するＣ３であり、次いで本発明者等は、Ｌ＝｛Ｃ３，Ｂ３｝を見出す。本発明者等は、赤色を用いてＬ＝｛Ｃ３，Ｂ３｝に着色する。次に、Ｇ２＝Ｇ２＼｛Ｃ３，Ｂ３｝＝｛Ａ３｝となる。Ｌ≧２となるＬは、存在しないので、次いで本発明者等は、Ｇ１＝Ｇ１∪｛Ａ３｝＝｛Ｃ４，Ａ３｝を行う。次いで、本発明者等は、次のループｊ＝ｊ−１＝ｎ−２＝１へと進む。次いで、本発明者等は、Ｌ＝｛Ｃ４｝であることを知ることができ、また本発明者等は、紫色を用いて｛Ｃ４｝に着色する。次いで、Ｇ１＝Ｇ１＼｛Ｃ４｝＝｛Ａ３｝となる。それゆえに、本発明者等は、Ｌ＝｛Ａ３｝を見出すことができ、また本発明者等は、茶色を用いて｛Ａ３｝に着色する。完全に着色された競合グラフは、図７に示される。
【００９１】
例示の実施形態が、宛先デバイス２００においてより人気のあるファイルのより多くのパケットをキャッシュし、宛先デバイス２００によってまとめてキャッシュされる各ファイルの異なるパケットの量を増大させ（または代わりに、最大にし）、またデータ・ファイルの要求されたパケットの完全な集合の内部の符号化されたマルチキャスト送信を可能にする能力を可能にするので、上記で説明されるオペレーションは、改善されたネットワークの性能を実現可能とすることを理解すべきである。送信に先立ってパケットを結合することにより、少なくとも１つの例示の実施形態による配信の方法および／またはデバイスは、ネットワーク要素１５１の送信の数を低減させることができ、これは、消費電力を低減させ、またネットワーク効率を改善することができることを理解すべきである。例えば、興味のあるいくつかのシナリオにおいては、上記で説明された方法およびデバイスは、１０というファクタまで送信の数を低減させることができる。本発明者等が、制限のない複雑度を有する場合、利得は、制限されない可能性がある。さらに、それぞれのユーザの宛先のメモリ（またはキャッシュ）サイズが、帯域幅乗数（ｂａｎｄｗｉｄｔｈ  ｍｕｌｔｉｐｌｉｅｒ）として使用され得ることを理解すべきである。
【００９２】
例示の実施形態の変形形態は、例示の実施形態の精神および範囲からの逸脱として見なされるべきではない。当業者には明らかになるような、すべてのそのような変形形態は、本開示の範囲内に含まれることを意図している。
【図１】
2017505581.tif 000010
【図２】
2017505581.tif 000011
【図３Ａ】
2017505581.tif 000012
【図３Ｂ】
2017505581.tif 000013
【図４】
2017505581.tif 000014
【図５】
2017505581.tif 000015
【図６Ａ】
2017505581.tif 000016
【図６Ｂ】
2017505581.tif 000017
【図７】
2017505581.tif 000018
【国際調査報告】
2017505581.tif 000019
2017505581.tif 000020