JP6197876B2 - プログラム、符号化装置、及び符号化方法 - Google Patents

プログラム、符号化装置、及び符号化方法 Download PDF

Info

Publication number
JP6197876B2
JP6197876B2 JP2015540315A JP2015540315A JP6197876B2 JP 6197876 B2 JP6197876 B2 JP 6197876B2 JP 2015540315 A JP2015540315 A JP 2015540315A JP 2015540315 A JP2015540315 A JP 2015540315A JP 6197876 B2 JP6197876 B2 JP 6197876B2
Authority
JP
Japan
Prior art keywords
pattern
encoding
data
divided data
coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015540315A
Other languages
English (en)
Other versions
JPWO2015049756A1 (ja
Inventor
裕亮 亀山
裕亮 亀山
真一 佐沢
真一 佐沢
博之 樋口
博之 樋口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2015049756A1 publication Critical patent/JPWO2015049756A1/ja
Application granted granted Critical
Publication of JP6197876B2 publication Critical patent/JP6197876B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6572Implementations using a tree structure, e.g. implementations in which the complexity is reduced by a tree structure from O(n) to O (log(n))
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、プログラム、符号化装置、及び符号化方法に関する。
データ通信には、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、携帯電話網などの様々なネットワークが利用されている。こうしたネットワークを利用したデータ通信の多くでは、送信装置と受信装置との間でエンドツーエンドの通信を制御してアプリケーション層へと適切にデータを渡すため、トランスポート層のプロトコルが利用される。トランスポート層のプロトコルとしては、例えば、コネクション型のTCP(Transmission Control Protocol)やコネクションレス型のUDP(User Datagram Protocol)などがある。
TCPでは、データパケットが受信装置に到達したことを保証するため、データパケットを受信装置が正常に受信した場合にACK(ACKnowledgement)を送信装置へ返信する仕組みについて規定されている。また、TCPでは、送信装置がデータパケットを送信してから一定時間内に期待されるACKを受信できない場合にデータパケットを再送する仕組みについて規定されている。このような仕組みを有するTCPは、信頼性の高いトランスポート層のプロトコルである。
一方、UDPではACKによる到達確認が行われないため、データ伝送の高速性に優れ、通信のスループットやリアルタイム性を重視するデータ通信に用いられることが多い。また、UDPは上位層のプロトコルにおいて信頼性を高めるための機能を独自に実装することが可能である。例えば、UDPに、前方誤り訂正(FEC:Forward Error Correction)符号化や再送制御などの機能を組み合わせることができる。このような組み合わせを実装することで、データ伝送の高速性と信頼性とを両立させることが可能になる。
誤り訂正符号には、例えば、リードソロモン符号や低密度パリティ検査符号(LDPC:Low-Density Parity-check Code)などがある。また、最近では、排他的論理和を用いて生成される高性能な誤り訂正符号であるRPS(Random Parity Stream)符号が提案されている。さらに、UDPにRPS符号化を組み合わせて高速なデータ伝送を実現するデータ伝送方法が提案されている。このデータ伝送方法では、送信側で、送信データを分割した分割データから排他的論理和演算により符号化データを生成し、受信側で、排他的論理和演算を用いて符号化データから送信データを復元する処理が行われる。
特許第4318317号公報
上記のデータ伝送方式では、送信データの分割数を大きくするほど、受信側で送信データを復元できる確率が高まる。つまり、分割データの個数が増加するほど信頼性が高まる。一方で、分割データの個数が増えると、符号化データを生成する際に実行する排他的論理和演算の回数も増加する。この例のように、分割データの組み合わせに論理演算を施して符号化データを生成する符号化方法においては、より少ない回数の論理演算で同じ符号化データが生成できれば、信頼性を損なうことなく符号化時の演算負荷を低減することが可能になる。
そこで、1つの側面によれば、本発明の目的は、符号化時の演算負荷を低減することが可能な、プログラム、符号化装置、及び符号化方法を提供することにある。
本開示の1つの側面によれば、送信データを分割した複数の分割データと、分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータに、符号化情報に含まれる符号化パターンのそれぞれについて、符号化パターンに対応する複数の分割データを対象に、設定した演算を実行して符号化データを生成し、符号化データをメモリに格納する処理を実行させるプログラムが提供される。さらに、当該プログラムは、メモリに格納した符号化データに対応する符号化パターンである第1パターンと、演算の対象に対応する符号化パターンである第2パターンとを比較し、第2パターンが表す分割データの組み合わせの一部に、第1パターンが表す分割データの組み合わせが含まれる場合には、上記符号化データを生成する処理の中で、当該第1パターンに対応する符号化データを利用して演算を実行する処理をコンピュータに実行させる。
また、本開示の他の1つの側面によれば、送信データを分割した複数の分割データと、分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納された記憶部と、符号化情報に含まれる符号化パターンのそれぞれについて、符号化パターンに対応する複数の分割データを対象に、設定した演算を実行して符号化データを生成し、符号化データを記憶部に格納する演算部と、を有し、演算部は、記憶部に格納した符号化データに対応する符号化パターンである第1パターンと、演算の対象に対応する符号化パターンである第2パターンとを比較し、第2パターンが表す分割データの組み合わせの一部に、第1パターンが表す分割データの組み合わせが含まれる場合に、第1パターンに対応する符号化データを利用して演算を実行する符号化装置が提供される。
また、本開示の他の1つの側面によれば、送信データを分割した複数の分割データと、分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータが、符号化情報に含まれる符号化パターンのそれぞれについて、符号化パターンに対応する複数の分割データを対象に、設定した演算を実行して符号化データを生成し、符号化データをメモリに格納し、メモリに格納した符号化データに対応する符号化パターンである第1パターンと、演算の対象に対応する符号化パターンである第2パターンとを比較し、第2パターンが表す分割データの組み合わせの一部に、第1パターンが表す分割データの組み合わせが含まれる場合には、上記符号化データを生成する処理の中で、当該第1パターンに対応する符号化データを利用して演算を実行する符号化方法が提供される。
以上説明したように本発明によれば、符号化時の演算負荷を低減することが可能になる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1実施形態に係る通信システムの一例を示した図である。 第2実施形態に係るシステムの一例を示した図である。 RPS符号化方式について説明するための第1の図である。 RPS符号化方式について説明するための第2の図である。 RPS符号化方式について説明するための第3の図である。 第2実施形態に係る符号化装置の機能を実現することが可能なハードウェアの一例を示した図である。 第2実施形態に係る符号化装置が有する機能の一例を示したブロック図である。 第2実施形態に係るハミング距離テーブルの一例を示した図である。 第2実施形態に係る符号化処理について説明するための図である。 第2実施形態に係る復号装置が有する機能の一例を示したブロック図である。 第2実施形態に係る符号化装置が実行する処理の流れを示した第1のフロー図である。 第2実施形態に係る符号化装置が実行する処理の流れを示した第2のフロー図である。 第2実施形態に係る符号化装置が実行する処理の流れを示した第3のフロー図である。 第2実施形態に係る復号装置が実行する処理の流れを示したフロー図である。 第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第1の図である。 第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第2の図である。 第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第3の図である。 第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第1の図である。 第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第2の図である。 第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第3の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第1の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第2の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第3の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第4の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第5の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第6の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第7の図である。 第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第8の図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係る通信システムの一例を示した図である。なお、図1に示した通信システムは一例であり、第1実施形態に係る技術の適用範囲はこれに限定されない。
図1に示すように、第1実施形態に係る通信システムは、コンピュータ10、20を含む。コンピュータ10は、ネットワークNWを介してコンピュータ20に接続されている。コンピュータ10は、メモリ11、及びプロセッサ12を有する。
メモリ11は、例えば、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置である。プロセッサ12は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、プロセッサ12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。プロセッサ12は、例えば、メモリ11又は他の記憶装置に格納されたプログラムに従って処理を実行する。
メモリ11は、送信データ31を分割した複数の分割データ31−A、…、31−Dと、分割データの組み合わせを表す複数の符号化パターン32−1、…、32−6を含む符号化情報32とが格納されている。なお、図1の例では、分割データ31−A、…、31−Dをそれぞれ「A」、「B」、「C」、「D」と記したブロックで表現している。送信データ31は、ネットワークNWを介してコンピュータ10からコンピュータ20へと送信されるデータの一例である。分割データ31−A、…、31−Dは、予め設定されたデータサイズで送信データ31を分割した分割データの一例である。
符号化情報32は、符号化パターン32−1、…、32−6を含む。符号化パターン32−1、…、32−6のそれぞれは、分割データ31−A、…、31−Dの組み合わせを表す。また、符号化パターン32−1、…、32−6は、例えば、それぞれビット列で表現される。この場合、符号化情報32は、図1に示すように、符号化パターン32−1のビット列を1行目、…、符号化パターン32−6のビット列を6行目とするビット値の行列で表現される。また、符号化パターン32−1、…、32−6は、それぞれ符号化データ34−1、…、34−6に対応し、対応する符号化データの演算に用いられる。なお、図1の例では、符号化データ34−1、…、34−6をそれぞれ「X1」、…、「X6」と記したブロックで表現している。
プロセッサ12は、符号化情報32に含まれる符号化パターン32−1、…、32−6のそれぞれについて、符号化パターンに対応する複数の分割データを対象に、設定した演算33を実行して符号化データ34−1、…、34−6を生成する。また、プロセッサ12は、符号化データ34−1、…、34−6をメモリ11に格納する。
一例として、符号化パターン32−2、32−5から符号化データ34−2、34−5を生成する方法について説明する。
図1の例では、符号化パターン32−2のビット列が0110に設定されている。プロセッサ12は、ビット値が1の位置に対応する分割データ(この場合、分割データ31−B、31−C)を選択する。そして、プロセッサ12は、分割データ31−B、31−Cに対し、予め設定された演算33を施して符号化データ34−2を生成する。演算33は、例えば、排他的論理和(以下、XORと表記する場合がある。)演算などの論理演算である。プロセッサ12は、符号化データ34−2をメモリ11に格納する。
また、図1の例では、符号化パターン32−5のビット列が0111に設定されている。プロセッサ12は、ビット値が1の位置に対応する分割データ(この場合、分割データ31−B、31−C、31−D)を選択する。そして、プロセッサ12は、分割データ31−B、31−C、31−Dに対し、予め設定された演算33を施して符号化データ34−5を生成する。このとき、プロセッサ12は、メモリ11に格納された符号化データ34−2を符号化データ34−5の生成に利用する。利用方法は次の通りである。
プロセッサ12は、メモリ11に格納した符号化データ34−2に対応する符号化パターン32−2である第1パターンと、演算33の対象に対応する符号化パターン32−5である第2パターンとを比較する。そして、プロセッサ12は、第2パターンが表す分割データの組み合わせの一部35に、第1パターンが表す分割データの組み合わせが含まれるか否かを判断する。この判断は、例えば、符号化情報32に含まれる符号化パターン32−2、32−5の比較により実現可能である。
図1の例では、第1パターンに対応する分割データの組み合わせが分割データ31−B、31−Cである。また、第2パターンに対応する分割データの組み合わせは分割データ31−B、31−C、31−Dである。図1の例では、第2パターンが表す分割データの組み合わせの一部35が、第1パターンに対応する分割データの組み合わせ(分割データ31−B、31−C)に一致している。そのため、プロセッサ12は、第1パターンに対応する符号化データ34−2を利用して演算33を実行する。図1の例では、プロセッサ12が、符号化データ34−2及び分割データ31−Dを対象に演算33を実行して符号化データ34−5を生成する。
上記のように、既に保持している符号化データを利用して演算33を実行することで、演算33を実行する際の演算負荷を低減することが可能になる。
符号化データ34−1、…、34−6は、ネットワークNWを介してコンピュータ20へと送信される。コンピュータ20は、受信した符号化データ34−1、…、34−6を用いて送信データ31を復元する。上記のように、符号化データ34−1、…、34−6は、それぞれ分割データ31−A、…、31−Dの組み合わせを用いて生成されたものである。また、符号化データ34−1、…、34−6は冗長性を有する。そのため、符号化データ34−1、…、34−6の一部が欠損しても、コンピュータ20は、符号化情報32に基づいて分割データ31−A、…、31−Dを高い確率で復元することができる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態ではRPS符号化方式に基づく対象データの送受信を想定し、当該対象データの符号化時における演算処理の負荷を低減する技術を提案する。
[2−1.システム]
まず、図2を参照しながら、第2実施形態に係るシステムについて説明する。図2は、第2実施形態に係るシステムの一例を示した図である。
なお、第2実施形態に係る技術の適用範囲はこれに限定されず、図2に例示したシステムとは異なる種類の装置を組み合わせたシステムに適用することも可能である。例えば、図2の例ではサーバ装置を模した装置が記載されているが、携帯電話やスマートフォンなどの端末装置、或いは、中継局などの通信装置を含むシステムに適用することも可能である。但し、説明の都合上、以下では図2に例示したシステムを想定して説明を進める。
図2に示すように、第2実施形態に係るシステムは、符号化装置100、及び復号装置200を含む。符号化装置100は、ネットワークNWを介して復号装置200に接続されている。適用可能なネットワークNWとしては、例えば、LAN、WAN、携帯電話網、衛星通信網、光ファイバネットワークなどの様々なネットワーク及びその組み合わせがある。
符号化装置100は、ネットワークNWを介して復号装置200へとデータ(以下、対象データ)を送信する。このとき、符号化装置100は、対象データを分割して複数の分割データを生成する。さらに、符号化装置100は、複数の分割データに基づく符号化処理を実行して複数の符号化データを生成する。そして、符号化装置100は、生成した複数の符号化データを復号装置200に送信する。復号装置200は、受信した複数の符号化データに基づく復号処理を実行して複数の分割データを復元する。そして、復号装置200は、復元した複数の分割データを結合して対象データを復元する。
[2−2.RPS符号化方式について]
第2実施形態に係るシステムでは、符号化装置100によりRPS符号化方式に基づく符号化処理が実行され、復号装置200によりRPS符号化方式に基づく復号処理が実行される。そこで、図3〜図5を参照しながら、RPS符号化方式について説明する。なお、図3は、RPS符号化方式について説明するための第1の図である。図4は、RPS符号化方式について説明するための第2の図である。図5は、RPS符号化方式について説明するための第3の図である。
図3に示すように、RPS符号化方式では、送信側において対象データが複数の分割データに分割される。例えば、各分割データのデータサイズが同じになるように対象データが分割される。ここでは説明の都合上、対象データが分割データA、B、C、Dに分割されたものとする。次いで、分割データA、B、C、Dを利用して符号化処理が行われる。この符号化処理には符号化行列が利用される。この符号化行列の各行は、分割データA、B、C、Dの組み合わせを表している。
例えば、図3に例示した符号化行列の1行目はビット列1010である。この例では、符号化行列の1列目が分割データA、2列目が分割データB、3列目が分割データC、4列目が分割データDに対応付けられている。そして、ビット値1のビットに対応する分割データが組み合わせ対象の分割データとされる。従って、ビット列1010は、分割データA、Cの組み合わせを表現している。
同様に、2行目に記載されたビット列0110は、分割データB、Cの組み合わせを表現している。3〜6行目についても同様である。なお、符号化行列の行数や組み合わせのパターンは予め設定することが可能であり、図3に示した例に限定されない。
図3に例示した符号化処理においては、分割データA、B、C、Dから6つの符号化データX1、X2、…、X6が生成される。符号化データX1は、符号化行列の1行目に対応する。符号化データX2は、符号化行列の2行目に対応する。
同様に、符号化データX3、…、X6は、それぞれ符号化行列の3行目、…、6行目に対応する。符号化データX1、X2、…、X6は、送信側から受信側へと送信される。このとき、伝送路損失などにより符号化データX1、X2、…、X6の一部が正常に受信されないことがある。図3には、符号化データX3、X6が正常に受信されなかった場合が例示されている。
上記の通り、符号化データX1、X2、…、X6は、それぞれ分割データA、B、C、Dの組み合わせに基づいて生成されている。また、符号化データX1、X2、…、X6は、それぞれ冗長性を有する。そのため、符号化データX1、X2、…、X6の一部が正常に受信されなくても、分割データA、B、C、Dを高い確率で復元することができる。
復号処理には、送信側で符号化時に利用した符号化行列と同じ情報が利用される。図3の例では、復号処理により分割データA、B、C、Dが復元され、分割データA、B、C、Dが結合されて対象データが復元されている。このように、RPS符号化方式では、対象データの分割、符号化処理、復号処理、分割データの結合などの処理が行われる。
ここで、図4を参照しながら、RPS符号化方式に基づく符号化処理について、さらに説明する。なお、図4に例示した符号化処理の内容は図3の例に対応する。
図4に示すように、RPS符号化方式では、分割データに対する排他的論理和(XOR)演算を利用して符号化データが生成される。例えば、符号化データX1は、分割データA、Cに対する排他的論理和演算の結果である。
排他的論理和演算の対象となる分割データの組み合わせは符号化行列により設定される。符号化データX1は符号化行列の1行目に対応する。従って、符号化データX1は、符号化行列の1行目に記載のビット列1010が示す分割データA、Cに対する排他的論理和演算により得られる。同様に、符号化データX2、…、X6は、それぞれ符号化行列の2行目、…、6行目に記載のビット列が示す分割データの組み合わせに対する排他的論理和演算により得られる。
一方、分割データA、B、C、Dを復元するための復号処理は、図5に示すような方法で行われる。なお、符号化データと、その符号化データの生成時に利用された符号化行列の行との関係を示す情報は送信側から受信側へと伝送されているものとする。また、送信側から受信側へと伝送する過程で符号化データX3、X6が失われたものとする。この場合、受信側では、図5に示すように、正常に受信された符号化データX1、X2、X4、X5を組み合わせて分割データA、B、C、Dが復元される。
例えば、符号化データX2は、分割データB、Cに対する排他的論理和演算の結果である。また、符号化データX5は、分割データB、C、Dに対する排他的論理和演算の結果である。従って、符号化データX2、X5に対する排他的論理和演算の演算結果Y1は、分割データDを復元したデータとなる。
同様に、符号化データX4及び演算結果Y1に対する排他的論理和演算の演算結果Y2は、分割データBを復元したデータとなる。また、符号化データX2及び演算結果Y2に対する排他的論理和演算の演算結果Y3は、分割データCを復元したデータとなる。そして、符号化データX1及び演算結果Y3に対する排他的論理和演算の演算結果Y4は、分割データAを復元したデータとなる。このように、正常に受信された符号化データX1、X2、X4、X5を組み合わせることで分割データA、B、C、Dが復元される。
なお、排他的論理和演算の対象とする符号化データの組み合わせ方や、排他的論理和演算の実行順序などは図5の例に限定されない。また、符号化行列の情報を参照することで、正常に受信された符号化データから分割データA、B、C、Dが全て復元可能であるかを判断したり、全てを復元するために送信側へ再送要求する符号化データを決定することができる。
図3〜図5には説明の都合上、分割数及び符号化行列の列数が少なく、冗長性が低い例を挙げたが、より冗長性を高めることで符号化データの消失に対する耐性が高まる。但し、冗長性を高めると符号化処理の際に実行される排他的論理和演算の回数が増加する。第2実施形態では、排他的論理和演算の回数を低減することが可能な仕組みを提案する。
[2−3.ハードウェア]
次に、図6を参照しながら、符号化装置100のハードウェアについて説明する。図6は、第2実施形態に係る符号化装置の機能を実現することが可能なハードウェアの一例を示した図である。符号化装置100が有する機能は、例えば、図6に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、符号化装置100が有する機能は、コンピュータプログラムを用いて図6に示すハードウェアを制御することにより実現される。
図6に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、符号化装置100の機能を実現することが可能なハードウェアについて説明した。なお、復号装置200の機能も図6に示したハードウェアを用いて実現可能である。
[2−4.符号化装置の機能]
次に、図7を参照しながら、符号化装置100の機能について説明する。図7は、第2実施形態に係る符号化装置が有する機能の一例を示したブロック図である。なお、説明の中で、適宜、図8及び図9を参照する。図8は、第2実施形態に係るハミング距離テーブルの一例を示した図である。図9は、第2実施形態に係る符号化処理について説明するための図である。
図7に示すように、符号化装置100は、記憶部101、符号化部102、及び通信制御部103を有する。記憶部101の機能は、上述したRAM906や記憶部920などを用いて実現できる。符号化部102の機能は、上述したCPU902などを用いて実現できる。通信制御部103は、上述した接続ポート924や通信部926などを制御して符号化装置100の通信機能を実現する。
(記憶部101)
記憶部101は、対象データ111、符号化行列112、及びハミング距離113を記憶する。対象データ111は、復号装置200へと送信される送信データの一例である。符号化行列112は、分割データの組み合わせを示す複数のビット列で表現された符号化情報の一例である。ハミング距離113は、符号化行列112に含まれるビット列間のハミング距離(対応する位置にある異なったビットの個数)である。例えば、記憶部101には、図8に示すようなテーブル形式で表現されたハミング距離113の情報(以下、ハミング距離テーブル)が格納される。
ここで、図8を参照しながら、ハミング距離テーブルについて説明する。以下、符号化行列の1行目、2行目、…、6行目に記載のビット列をそれぞれr1、r2、…、r6と表現する。ハミング距離テーブルの行及び列にはそれぞれビット列r1、r2、…、r6が割り当てられ、各枡にはビット列間のハミング距離を示す値が記載されている。例えば、ビット列r1、r6のハミング距離に対応する枡H61には値1が記載されている。同様に、ビット列r2、r5のハミング距離に対応する枡H52には値1が記載されている。なお、図8にはハミング距離テーブルの下三角部分だけを表記している。
(符号化部102)
符号化部102は、記憶部101が記憶する符号化行列112及びハミング距離113を利用して、記憶部101が記憶する対象データ111を符号化する。符号化部102は、分割部121、選択部122、及び論理演算部123を有する。分割部121は、記憶部101から対象データ111を読み出す。そして、分割部121は、読み出した対象データ111を複数の分割データに分割する。例えば、分割部121は、分割データのデータサイズが予め設定したデータサイズになるように対象データ111を分割する。
選択部122は、記憶部101に格納されたハミング距離テーブルを参照し、ハミング距離テーブルの行毎にハミング距離113の最小値(但し、対角成分を除く。)に対応するビット列を選択する。
例えば、選択部122は、ビット列r5の行を参照し、ハミング距離113の最小値1が記載された枡H52に対応するビット列r2を選択する。なお、図8の例ではビット列r4、r5間のハミング距離113も1となるため、選択部122は、ビット列r4を選択してもよい。同様に、選択部122は、ビット列r6の行を参照し、ハミング距離113の最小値1が記載された枡H61に対応するビット列r1を選択する。なお、図8の例ではビット列r2、r6間のハミング距離113も1となるため、選択部122は、ビット列r2を選択してもよい。
但し、選択部122は、参照するビット列の中でビット値が1のビットの数を計算し、ハミング距離113の最小値が、計算したビットの数以上となる行についてはビット列を選択しない。例えば、ビット列r2は0110であるから、ビット値1のビット数は2である。一方、ビット列r2の行におけるハミング距離113の最小値は2である。従って、ビット列r2の行については、ハミング距離113の最小値に対応するビット列の選択が行われない。ビット列r1、r3、r4の行についても同様である。
選択部122により選択されたビット列の情報は、論理演算部123に入力され、符号化処理に利用される。例えば、ビット列r5の行についてハミング距離113の最小値に対応するビット列として選択されたビット列r2の情報は、ビット列r5に基づく符号化処理に利用される。また、ビット列r6の行についてハミング距離113の最小値に対応するビット列として選択されたビット列r1の情報は、ビット列r6に基づく符号化処理に利用される。
論理演算部123は、記憶部101が記憶する符号化行列112、選択部122が選択したビット列の情報、分割部121により生成された複数の分割データを利用して符号化データを生成する。例えば、論理演算部123は、図9に示すような方法で、分割データA、B、C、Dから符号化データX1、X2、…、X6を生成する。
論理演算部123は、符号化行列112の1行目に記載のビット列r1(1010)を参照し、ビット列r1に対応する分割データA、Cを排他的論理和演算の対象に決める。次いで、論理演算部123は、分割データA、Cに対する排他的論理和演算を実行して符号化データX1を生成する。次いで、論理演算部123は、符号化データX1を記憶部101に格納する。
次に、論理演算部123は、符号化行列112の2行目に記載のビット列r2(0110)を参照し、ビット列r2に対応する分割データB、Cを排他的論理和演算の対象に決める。次いで、論理演算部123は、分割データB、Cに対する排他的論理和演算を実行して符号化データX2を生成する。次いで、論理演算部123は、符号化データX2を記憶部101に格納する。
次に、論理演算部123は、符号化行列112の3行目に記載のビット列r3(1001)を参照し、ビット列r3に対応する分割データA、Dを排他的論理和演算の対象に決める。次いで、論理演算部123は、分割データA、Dに対する排他的論理和演算を実行して符号化データX3を生成する。次いで、論理演算部123は、符号化データX3を記憶部101に格納する。
次に、論理演算部123は、符号化行列112の4行目に記載のビット列r4(0101)を参照し、ビット列r4に対応する分割データB、Dを排他的論理和演算の対象に決める。次いで、論理演算部123は、分割データB、Dに対する排他的論理和演算を実行して符号化データX4を生成する。次いで、論理演算部123は、符号化データX4を記憶部101に格納する。この時点で、符号化データX1、X2、X3、X4が記憶部101に格納されている。
次に、論理演算部123は、符号化行列112の5行目に記載のビット列r5(0111)を参照する。ビット列r5については、ハミング距離113の最小値に対応するビット列r2の情報が入力されている。そのため、論理演算部123は、ビット列r2に対応する符号化データX2が記憶部101に格納されているか否かを確認する。図9の例では、既に符号化データX2が計算され、記憶部101に格納されている。そのため、論理演算部123は、記憶部101から符号化データX2を読み出す。
符号化データX2を読み出した論理演算部123は、ビット列r5の中でビット列r2と異なるビットを抽出する。図9の例では、ビット列r5の4ビット目(分割データDに対応)が抽出される。次いで、論理演算部123は、符号化データX2及び分割データDに対する排他的論理和演算を実行して符号化データX5を生成する。次いで、論理演算部123は、符号化データX5を記憶部101に格納する。
次に、論理演算部123は、符号化行列112の6行目に記載のビット列r6(1110)を参照する。ビット列r6については、ハミング距離113の最小値に対応するビット列r1の情報が入力されている。そのため、論理演算部123は、ビット列r1に対応する符号化データX1が記憶部101に格納されているか否かを確認する。図9の例では、既に符号化データX1が計算され、記憶部101に格納されている。そのため、論理演算部123は、記憶部101から符号化データX1を読み出す。
符号化データX1を読み出した論理演算部123は、ビット列r6の中でビット列r1と異なるビットを抽出する。図9の例では、ビット列r6の2ビット目(分割データBに対応)が抽出される。次いで、論理演算部123は、符号化データX1及び分割データBに対する排他的論理和演算を実行して符号化データX6を生成する。次いで、論理演算部123は、符号化データX6を記憶部101に格納する。
図9に示した符号化処理により、図4に示した符号化処理で得られる符号化データX1、X2、…、X6と同じ演算結果が得られる。但し、図4に示した符号化処理と図9に示した符号化処理とを比較すると、図9に示した符号化処理の方が排他的論理和演算の回数が少ない。この違いは、符号化データX5、X6の生成方法に起因する。上記のように、論理演算部123は、既に計算済みの符号化データX2を符号化データX5の生成に利用し、符号化データX1を符号化データX6の生成に利用している。そのため、一連の計算に含まれる重複した処理が省略され、排他的論理和演算の回数低減が実現される。
(通信制御部103)
通信制御部103は、論理演算部123により生成された符号化データを復号装置200に送信する。このとき、通信制御部103は、UDPに従って復号装置200と通信する。また、通信制御部103は、復号装置200から再送要求を受けた場合に、再送要求で指定された符号化データを復号装置200に再送する。
以上、符号化装置100の機能について説明した。
[2−5.復号装置の機能]
次に、図10を参照しながら、復号装置200の機能について説明する。図10は、第2実施形態に係る復号装置が有する機能の一例を示したブロック図である。
図10に示すように、復号装置200は、記憶部201、通信制御部202、及び復号部203を有する。記憶部201の機能は、上述したRAM906や記憶部920などを用いて実現できる。通信制御部202は、上述した接続ポート924や通信部926などを制御して復号装置200の通信機能を実現する。復号部203の機能は、上述したCPU902などを用いて実現できる。
(記憶部201)
記憶部201は、符号化行列211を記憶する。符号化行列211は、符号化装置100の記憶部101が記憶している符号化行列112と同じである。また、符号化行列211は、後述する復号処理に利用される。
(通信制御部202)
通信制御部202は、符号化装置100が送信した符号化データを受信する。このとき、通信制御部202は、UDPに従って符号化装置100と通信する。また、通信制御部202は、後述する復号処理により全ての分割データが復元できなかった場合に、復元できなかった分割データの復号処理に用いる符号化データの再送を符号化装置100に要求する。
(復号部203)
復号部203は、正常に受信した符号化データを利用して分割データを復元する。次いで、復号部203は、復元した分割データを結合して対象データ111を復元する。復号部203は、論理演算部231、及び結合部232を有する。論理演算部231は、例えば、図5に示した復号処理を実行して符号化データから分割データを復元する。
図5の例では、符号化装置100から復号装置200への伝送過程で符号化データX3、X6が失われている。この場合、論理演算部231は、図5に示すように、正常に受信された符号化データX1、X2、X4、X5を組み合わせて分割データA、B、C、Dを生成する。例えば、論理演算部231は、符号化データX2、X5に対する排他的論理和演算を実行して分割データD(演算結果Y1)を復元する。
同様に、論理演算部231は、符号化データX4及び演算結果Y1に対する排他的論理和演算を実行して分割データB(演算結果Y2)を復元する。また、論理演算部231は、符号化データX2及び演算結果Y2に対する排他的論理和演算を実行して分割データC(演算結果Y3)を復元する。また、論理演算部231は、符号化データX1及び演算結果Y3に対する排他的論理和演算を実行して分割データA(演算結果Y4)を復元する。このように、論理演算部231は、正常に受信された符号化データX1、X2、X4、X5を組み合わせて分割データA、B、C、Dを復元する。
結合部232は、論理演算部231が復元した分割データを結合して対象データ111を復元する。例えば、結合部232は、分割データA、B、C、Dを結合して対象データ111を復元する。
以上、復号装置200の機能について説明した。
[2−6.符号化処理の流れ]
次に、図11〜図13を参照しながら、符号化装置100が実行する符号化処理の流れについて説明する。図11は、第2実施形態に係る符号化装置が実行する処理の流れを示した第1のフロー図である。図12は、第2実施形態に係る符号化装置が実行する処理の流れを示した第2のフロー図である。図13は、第2実施形態に係る符号化装置が実行する処理の流れを示した第3のフロー図である。
まず、図11を参照しながら、符号化処理の全体的な流れについて説明する。
(S101)符号化部102は、記憶部101から対象データ111を読み出す。そして、符号化部102は、読み出した対象データ111を複数の分割データに分割する。例えば、符号化部102は、分割データのデータサイズが予め設定したデータサイズになるように対象データ111を分割する。
(S102)符号化部102は、記憶部101が記憶する符号化行列112、及び複数の分割データを利用して符号化データを生成する。そして、符号化部102は、生成した符号化データを記憶部101に格納(保存)する。なお、符号化データを生成する処理の流れについては後段において詳述する。
(S103)通信制御部103は、符号化部102により生成された符号化データを復号装置200に送信する。このとき、通信制御部103は、UDPに従って復号装置200と通信する。また、通信制御部103は、復号装置200から再送要求を受けた場合に、再送要求で指定された符号化データを復号装置200に再送する。
以上、符号化処理の全体的な流れについて説明した。
次に、図12及び図13を参照しながら、符号化データの生成及び保存(S102)に係る処理の流れについて、さらに説明する。
(S111)符号化部102は、記憶部101が記憶する符号化行列112を参照し、符号化行列112からj行目のビット列rjを選択する。なお、インデックスjは、S102の処理が開始した時点で1に初期化される。
(S112)符号化部102は、記憶部101が記憶するハミング距離テーブルを参照する。そして、符号化部102は、ビット列rjとの間のハミング距離113が最小となるビット列rmを選択する。
(S113)符号化部102は、ビット列rmに対応する符号化データXmが記憶部101に格納(保存)されているか否かを判定する。ビット列rmに対応する符号化データXmが記憶部101に格納されている場合、処理はS114に進む。一方、ビット列rmに対応する符号化データXmが記憶部101に格納されていない場合、処理はS116に進む。
(S114、S115)符号化部102は、ビット列rj、rmに対する排他的論理和演算(XOR演算)を実行し、ビット列Vを生成する。そして、符号化部102は、ビット列Vの中でビット値が1のビットに対応する分割データの組を取得する。S114及びS115の処理が完了すると、処理は図13のS118に進む。
(S116、S117)符号化部102は、ビット列rmの中でビット値が1のビットに対応する分割データの組を取得する。そして、符号化部102は、取得した分割データの組に対する排他的論理和演算を実行して符号化データXjを生成する。S116及びS117の処理が完了すると、処理は図13のS120に進む。
(S118、S119)符号化部102は、取得した分割データの組に対応する符号化データXmを記憶部101から取得する。そして、符号化部102は、取得した分割データの組と符号化データXmとに対する排他的論理和演算を実行し、符号化データXjを生成する。
(S120、S121)符号化部102は、符号化データXjを記憶部101に格納(保存)する。そして、符号化部102は、インデックスjを1インクリメントする(つまり、1加えた値に更新する。)。
(S122)符号化部102は、インデックスjと、符号化行列112の全行数Mとを比較する。インデックスjが符号化行列112の全行数Mよりも小さい場合(j<M)、処理は図12のS111に進む。一方、インデックスjが符号化行列112の全行数M以上の場合(j≧M)、図11及び図12に示した一連の処理が終了する。
以上、符号化装置100が実行する符号化処理の流れについて説明した。
[2−7.復号処理の流れ]
次に、図14を参照しながら、復号装置200が実行する復号処理の流れについて説明する。図14は、第2実施形態に係る復号装置が実行する処理の流れを示したフロー図である。
(S201)通信制御部202は、符号化装置100が送信した符号化データを受信する。このとき、通信制御部202は、UDPに従って符号化装置100と通信する。また、通信制御部202は、後述する復号処理により全ての分割データが復元できなかった場合に、復元できなかった分割データの復号処理に用いる符号化データの再送を符号化装置100に要求する。
(S202、S203)復号部203は、正常に受信した符号化データを利用して分割データを復元する。そして、復号部203は、復元した分割データを結合して対象データ111を復元する。S202及びS203の処理が完了すると、図14に示した一連の処理が終了する。
以上、復号装置200が実行する復号処理の流れについて説明した。
上記のように、既に生成した符号化データを保存しておき、他の符号化データを生成する際に、保存しておいた符号化データを利用することで排他的論理和演算の回数を減らすことができる。その結果、符号化時の演算負荷を抑制することが可能になる。
以上、第2実施形態について説明した。
<3.変形例(BDDの適用)>
次に、第2実施形態の一変形例について説明する。本変形例では、ハミング距離113を計算する処理、及びハミング距離113の最小値に対応するビット列を選択する処理を二分決定グラフ(BDD:Binary Decision Diagram)で表現し、処理負荷をさらに低減する仕組みを提案する。
[3−1.BDDについて]
まず、図15〜図17を参照しながら、二分決定グラフの表現について説明する。図15は、第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第1の図である。図16は、第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第2の図である。図17は、第2実施形態の一変形例に係る二分決定グラフの表現について説明するための第3の図である。
ここでは、簡単のために図15に例示した関数fを二分決定グラフで表現する方法について説明する。図15に例示した関数fは、3つのビット値z1、z2、z3(以下、ビット列zと表記する場合がある。)の入力に応じて1ビットのビット値を出力する関数である。例えば、ビット列000が入力されると、関数fはビット値0を出力する。同様に、ビット列001が入力されると、関数fはビット値を出力する。その他の入力ビット列に対しても、図15に示すようなビット値が出力される。
図15に例示した関数fを二分木で表現すると、図16のようになる。図16に示すように、二分決定グラフは、ルートノードNrt、ブランチノードNb11、…、Nb24、及びリーフノードNrf1、…、Nrf8を有する。また、ルートノードNrt、及びブランチノードNb11、…、Nb24には、それぞれビット値z1、z2、z3のいずれかが割り当てられている。さらに、リーフノードNrf1、…、Nrf8には、それぞれ0又は1の値が割り当てられている。また、ノード間を接続する直線は、ブランチと呼ばれる。
ルートノードNrt、及びブランチノードNb11、…、Nb24は、それぞれ条件分岐を表している。そして、条件分岐の結果に応じて下位のノードへと伸びるブランチが選択される。例えば、ビット列zが101の場合(z1=1、z2=0、z3=1の場合)について考える。この場合、z1が1であるから、ルートノードNrtの条件分岐では、1と記載されたブランチが選択される。
また、z2が0であるから、選択されたブランチの先にあるブランチノードNb12の条件分岐では、0と記載されたブランチが選択される。さらに、z3が1であるから、選択されたブランチの先にあるブランチノードNb23の条件分岐では、1と記載されたブランチが選択される。そして、選択されたブランチの先にあるリーフノードNrf6が出力値を表している。図16の例ではリーフノードNrf6は1である。
図16に例示した二分木は、入力値、条件分岐、出力値の組み合わせが図15に示した関数fと整合するように構築されている。そのため、上記と同様にノード及びブランチを辿ることで、入力値に応じた関数fの出力値が得られる。つまり、図15に示した関数fのテーブル表現と、図16に示した二分木の表現とは等価である。但し、二分木は、図17に示すように圧縮した表現である二分決定グラフに変形することができる。
ここで、図16及び図17を参照しながら、二分木の圧縮方法について説明する。まず、図16に示した二分木の中で、ブランチノードNb24に注目する。ブランチノードNb24は、ビット値z3に関する条件分岐を表している。但し、ブランチノードNb24から伸びたブランチの先にあるリーフノードNrf7、Nrf8を参照すると、いずれもビット値1が割り当てられている。つまり、ブランチノードNb24の条件分岐が存在しても、存在しなくても、出力値は同じ1となる。
従って、ブランチノードNb24を省略し、ブランチノードNb12の条件分岐でビット値z2が1の場合には出力値が1になるように、二分木を変形することができる。つまり、二分木を圧縮することができる。同様に、ブランチノードNb11から伸びる2本のブランチの先に注目する。一方のブランチはブランチノードNb21に接続され、他方のブランチはブランチノードNb22に接続されている。ブランチノードNb21、Nb22は、いずれもビット値z3に関する条件分岐である。
また、ブランチノードNb21及びリーフノードNrf1、Nrf2の組み合わせと、ブランチノードNb22及びリーフノードNrf3、Nrf4の組み合わせとを比較すると、いずれも同じ条件及び同じ出力結果を表現していることが分かる。従って、ブランチノードNb11の条件分岐が存在しても、存在しなくても、同じ論理が下位で展開される。従って、ブランチノードNb11、Nb22、リーフノードNrf3、Nrf4を省略し、ルートノードNrtから伸びる値0が割り当てられたブランチの先をブランチノードNb21に接続する形に二分木を変形することができる。
さらに、ブランチノードNb23及びリーフノードNrf5、Nrf6の構造と、ブランチノードNb21及びリーフノードNrf1、Nrf2の構造とが同じであるため、ブランチノードNb23及びリーフノードNrf5、Nrf6も省略可能である。このようにしてノードを省略し、ブランチの接続関係を整理すると、図17に示すような二分決定グラフが得られる。もちろん、図16に示した二分木及び図17に示した二分決定グラフは同じ内容を表現している。図17に示した二分決定グラフは、図16に示した二分木に比べてノードの数が少ない。そのため、圧縮後の二分決定グラフを利用すれば条件分岐の処理回数が少なくて済み、処理負荷を低減することができる。
上記のように、二分決定グラフは、圧縮表現を利用することで処理負荷の低減を図ることができる。また、複数の論理関数を論理演算で接続する場合に、圧縮表現のまま二分決定グラフを変形して論理演算後の二分決定グラフを生成することなどもできる。こうした二分決定グラフの性質を利用することで、第2実施形態に係る符号化処理をさらに効率化することができる。以下、二分決定グラフの適用方法などについて説明する。
[3−2.ハミング距離の計算]
まず、図18〜図20を参照しながら、ハミング距離113の計算に二分決定グラフの表現を適用する方法について説明する。図18は、第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第1の図である。図19は、第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第2の図である。図20は、第2実施形態の一変形例に係るハミング距離の計算方法について説明するための第3の図である。
まず、符号化行列112のi行目(i=1〜M)に対応するビット列riと、符号化行列112のj行目(j=1〜M)に対応するビット列rjとの間のハミング距離を計算する論理演算について考える。ハミング距離の計算を論理演算で表現できれば、二分決定グラフによる表現を適用することができる。
なお、ビット列riのkビット目(k=1〜4)に位置するビット値をRikと表現し、ビット列rjのkビット目に位置するビット値をRjkと表現する。また、図18に示すように、ビット値Ri1、…、Ri4、Rj1、…、Rj4を入力とし、ハミング距離を表す3つのビット値f1、f2、f3を出力とする論理演算について考える。なお、ハミング距離を表すビット列の1ビット目をf1、2ビット目をf2、3ビット目をf3とする。また、ビット値Ri1、…、Ri4を順にビット列riの1ビット目、…、4ビット目のビット値とする。また、ビット値Rj1、…、Rj4を順にビット列rjの1ビット目、…、4ビット目のビット値とする。
また、(1)ハミング距離テーブルの下三角部分に相当する出力値だけを考慮する論理演算(後述する論理演算gに対応)を組み込む。また、(2)ハミング距離テーブルの対角成分に相当する出力値をハミング重みで置き換える論理演算を組み込む。ハミング重みは、対象とするビット列の中でビット値が1のビット数である。また、(3)出力値を3ビットの二進数で表現し、3つのビット値f1、f2、f3のそれぞれを出力する論理演算を考える。
ハミング距離113を表すビット値f1、f2、f3を計算する論理演算は、例えば、図19に示すように、基本的な論理演算L1、…、L13を組み合わせて表現することができる。なお、論理演算L1、L2、L3、L4、L6、L8、L10、L12、L13はXOR演算を表す。また、論理演算L5、L7、L9、L11はAND演算を表す。
例えば、XOR演算を表す論理演算L1は、図19に例示した二分決定グラフで表現することができる。同様に、論理演算L1、…、L13を二分決定グラフで表現し、全ての二分決定グラフを統合した上で圧縮すれば、ビット値f1、f2、f3をそれぞれ計算する二分決定グラフを生成することができる。
また、ハミング距離テーブルの対角成分に相当する出力値をハミング重みで置き換える処理は、例えば、図20のようになる。ここで、図20に示した処理の流れについて説明する。なお、図20に示した処理は、例えば、符号化装置100が有する符号化部102により実行される。
(S301)符号化部102は、インデックスiを初期化する。この処理によりインデックスiは1に設定される。
(S302)符号化部102は、インデックスiが符号化行列112の全行数M以下であるか否かを判定する。インデックスiが全行数M以下である場合、処理はS303に進む。一方、インデックスiが全行数M以下でない場合、図20に示した一連の処理は終了する。
(S303)符号化部102は、ハミング距離テーブルの対角成分(i=j)に対応する積項関数hを作成する。例えば、ri=rj=1010に対応する積項関数hは、Ri4・Rri3・Ri2・Rri1・Rj4・Rrj3・Rj2・Rrj1となる。但し、Rrjk(k=1〜4)は、変数Rjkに対し否定演算を施したものである。また、「・」はAND演算を表す。つまり、積項関数hは、ビット列riの中でビット値0のビットに対応する論理変数を反転させ、各入力ビットの論理変数のAND演算を行う論理関数である。
(S304)符号化部102は、ビット列riのハミング重みを二進数で表現したビット列のうち、ビット値が1のビットに対応するビット値fq(q=1〜3)を選択する。例えば、ハミング重みの二進数表現が011の場合、ビット値f1、f2が選択される。そして、符号化部102は、ビット値fqを(fq+h)に更新する。但し、論理関数に関する「+」はOR演算を表す。
(S305)符号化部102は、インデックスiを1インクリメントする(つまり、1加えた値に更新する。)。S305の処理が完了すると、処理はS302に進む。
以上、ハミング距離113の計算に二分決定グラフの表現を適用する方法について説明した。上記のように、ハミング距離の計算は論理演算で表現することができるため、この論理演算を二分決定グラフで表現することで、二分決定グラフを利用してハミング距離の計算が可能になる。そして、二分決定グラフの圧縮による負荷の低減が実現される。
[3−3.最小ハミング距離の選択]
次に、図21〜図28を参照しながら、ハミング距離113の最小値に対応するビット列の選択処理に二分決定グラフを適用する方法について説明する。なお、ハミング距離113を表す3つのビット値f1、f2、f3を計算する二分決定グラフは得られているものとする。また、ハミング距離テーブルの対角成分に対応するビット値の処理(図20を参照)は実行済みであるとする。
なお、図21は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第1の図である。図22は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第2の図である。図23は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第3の図である。図24は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第4の図である。
図25は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第5の図である。図26は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第6の図である。図27は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第7の図である。図28は、第2実施形態の一変形例に係る最小ハミング距離の選択方法について説明するための第8の図である。
ハミング距離113の最小値に対応するビット列の選択処理は、図21に示したS311及びS312の処理を含む。これらの処理は、主に符号化装置100が有する符号化部102により実行される。
(S311)符号化部102は、ハミング距離113を表すビット列(f1、f2、f3)のビット値を反転させる。具体的には、ハミング距離113を表す各ビット値f1、f2、f3のそれぞれを計算する二分決定グラフを、それぞれの否定演算をとった二分決定グラフに変換する。このビット反転により、ハミング距離113を表すビット列の最小値を選択する処理が、ハミング距離113を表すビット列の反転値の最大値を選択する処理に変換される。なお、ビット値f1、f2、f3の反転値を計算する二分決定グラフは、予め用意されていてもよい。以下、ビット値fl(l=1、2、3)を反転したビット値をfrlと表現する。
(S312)符号化部102は、ハミング距離113が最小(反転したビット列が示す値が最大)となるビット列を選択する。S312の処理については、後段において詳述する。S312の処理を完了すると、図21に示した一連の処理は終了する。
ここで、図22を参照しながら、S312の処理について、さらに説明する。
(S331)符号化部102は、インデックスiを初期化する。この処理によりインデックスiは1に設定される。
(S332)符号化部102は、インデックスiが符号化行列112の全行数M以下であるか否かを判定する。インデックスiが全行数M以下である場合、処理はS333に進む。一方、インデックスiが全行数M以下でない場合、図22に示した一連の処理は終了する。
(S333、S334)符号化部102は、論理関数gを作成する。そして、符号化部102は、論理関数gを論理関数Fに設定する。論理関数gは、処理の中で設定されたインデックスiのビット列riに対応し、ビット列rj(つまり、Rj1、…、Rj4)を入力とする論理関数である。論理関数gは、選択処理の対象となるハミング距離テーブルの下三角部分を抽出する論理演算を表現した論理関数である。また、論理関数gは、二分決定グラフで表現される。なお、論理関数gの作成方法については、図24を参照しながら後述する。
(S335)符号化部102は、log2Mを下回らない最小の整数pを選択する。例えば、M=6の場合にはp=3が選択される。そして、符号化部102は、インデックスlに整数pを設定する。つまり、ハミング距離を表すビット列の端に位置するビットを示すインデックスの値がlに設定される。
(S336)符号化部102は、インデックスlが0を超過(l>0)しているか否かを判定する。インデックスlが0を超過している場合、処理はS337に進む。一方、インデックスlが0を超過していない場合(つまり、インデックスlが0になった場合)、処理は図23のS341に進む。
(S337)符号化部102は、論理関数Tを作成する。但し、論理関数Tは(frl|ri)・Fで定義される。また、論理関数Tは二分決定グラフで表現される。
ビット列ri、rj間のハミング距離を表すビット値fl(l=1,2,3)は、Ri1、…、Ri4、Rj1、…、Rj4を入力とする二分決定グラフで表現される(例えば、図16を参照)。また、ビット値frlは、ビット値flを反転したものである。
(frl|ri)は、処理の中で設定されたインデックスiに対応するビット列ri(つまり、Ri1、…、Ri4)の値をビット値frlの二分決定グラフに入力した場合に得られるRj1、…、Rj4に関する二分決定グラフを表す。また、(frl|ri)・Fは、(frl|ri)と論理関数FとをAND演算した結果を表す。従って、(frl|ri)の二分決定グラフと論理関数Fの二分決定グラフとをAND演算で接続した二分決定グラフを作成すれば、論理関数Tの二分決定グラフが得られる。
論理関数Tを表現した二分決定グラフは、ハミング距離テーブルのビット値riに対応する行(但し、下三角部分に限る。)に記載されたビット列について、ビット値frlが1となるビットがあるか否かを判定する処理に用いる。
例えば、i=3、l=3の場合(最上位ビット)の場合、論理関数Fにはハミング距離テーブルの下三角部分を表現する論理関数gが設定されている。そのため、論理関数Tは、ハミング距離テーブルのビット列r3に対応する行(但し、下三角部分に限る。)に記載されたビット列について、ビット値fr3を出力する二分決定グラフで表現される。
もし、ビット列r3に対応する行にビット値fr3が1となるビット列が存在しない場合、論理関数Tは恒偽(リーフノードが全て0)となる。一方、ビット列r3に対応する行にビット値fr3が1となるビット列が存在する場合、論理関数Tは値1が割り当てられたリーフノードを有する二分決定グラフで表現される(Tが恒偽でない。)。
また、後述するように、論理関数Tが恒偽でない場合、論理関数Fが更新される。例えば、ビット列r3に対応する行にビット値fr3が1となるビット列が存在する場合、論理関数Fは、ハミング距離テーブルの下三角部分であり、かつ、ビット列r3に対応する行にビット値fr3が1となるビット列を表現する論理関数に更新される。
この場合、論理関数Tは、ハミング距離テーブルのビット列r3に対応する行(但し、下三角部分に限る。)に記載されたビット列のうち、ビット値fr3が1となるビット列について、ビット値fr2を出力する二分決定グラフで表現される。このように、論理関数Tを表現した二分決定グラフは、より上位に位置するビット値frlが1となるビット列を抽出する処理に利用される。
なお、二分決定グラフに基づく論理関数Tの作成方法については、図25〜図28を参照しながら後述する。S337の処理が完了すると、処理はS338に進む。
(S338)符号化部102は、論理関数Tが恒偽でない(T≠0)か否かを判定する。論理関数Tが恒偽でない(T≠0)場合、処理はS339に進む。一方、論理関数Tが恒偽である(T=0)場合、処理はS340に進む。つまり、論理関数Tが恒偽である(T=0)場合には論理関数Fを更新するS339の処理はスキップされる。
(S339)符号化部102は、論理関数Fに論理関数Tを設定する。論理関数Fに論理関数Tを設定することで、現在の論理関数Tで表現される条件が、次回S337の処理で論理関数Tを作成する際に付加される。
(S340)符号化部102は、インデックスlを1減じた値に更新する。S340の処理が完了すると、処理は図22のS336に進む。
(S341)符号化部102は、論理関数Fが1となるビット列rjを出力する。論理関数Fは、ビット値frl(l=1,2,3)のうち、より上位ビットのビット値が1となるビット値の組み合わせを抽出する条件を表す。つまり、論理関数Fは、ハミング距離テーブルのビット列riに対応する行について、ビット値frl(l=1,2,3)で表現される値の最大値を抽出する論理演算である。従って、この論理関数Fが真(1)であるビット値frl(l=1,2,3)に対応するビット列rjは、ビット列riに対するハミング距離が最小のビット列である。
なお、論理関数Fは、ビット列rj(つまり、Rj1、…、Rj4)を入力とする二分決定グラフで表現される。この二分決定グラフのリーフノードが1となるRj1、…、Rj4を探索することで論理関数Fが1となるビット列rjが得られる。
(S342)符号化部102は、インデックスiを1加えた値に更新する。S342の処理が完了すると、処理は図22のS332に進む。
以上の処理により、ビット列ri、rj間のハミング距離が最小となるビット列rjがビット列ri毎に得られる。
(論理関数gの生成方法)
ここで、図24を参照しながら、論理関数gの作成方法について説明する。論理関数gは、演算対象をハミング距離テーブルの下三角部分に制限する条件を表した論理演算(つまり、上三角部分をマスクする論理演算)である。
(S351)符号化部102は、恒偽の論理関数gを作成する。
(S352)符号化部102は、インデックスjを1に初期化する。
(S353)符号化部102は、インデックスjがi未満(j<i)であるか否かを判定する。インデックスjがi未満である場合、処理はS354に進む。一方、インデックスjがi未満でない場合、図24に示した一連の処理は終了する。
(S354)符号化部102は、ビット列rjに対応する積項関数gjを作成する。例えば、rjが1010の場合、Rj1、Rj2、Rj3、Rj4を入力とする関数gjは、Rj4、Rrj3、Rj2、Rrj1を順にAND演算する関数(gj=Rj4・Rrj3・Rj2・Rrj1)となる。但し、Rrjk(k=1〜4)は、ビット値Rjkを反転したものである。つまり、関数gjは、ビット列rjのビット値が0の位置にあるビットを反転させた入力ビット値の組をAND演算する関数である。
(S355、S356)符号化部102は、論理関数gを(g+gj)に更新する。そして、符号化部102は、インデックスjを1加えた値に更新する。S355及びS356の処理が完了すると、処理はS353に進む。
(論理関数Tの生成方法)
ここで、図25〜図28を参照しながら、二分決定グラフに基づく論理関数Tの生成方法について説明する。ここでは、インデックスiが3の場合を例に挙げて説明する。なお、図25に示したハミング距離テーブルに記載の値は、ビット値の反転処理及び対角成分の置き換え処理(後処理)を行った後の値である。
インデックスi(i行目)が3の場合、図25に示すように、riは1001(r3)である。従って、Ri1=1、Ri2=0、Ri3=0、Ri4=1となる。また、インデックスj(j列目)が1の場合、ビット値fr1、fr2、fr3は、それぞれfr1=1、fr2=0、fr3=1となる。同様に、インデックスj(j列目)が2の場合、ビット値fr1、fr2、fr3は、それぞれfr1=0、fr2=1、fr3=1となる。また、インデックスj(j列目)が3の場合、ビット値fr1、fr2、fr3は、それぞれfr1=1、fr2=0、fr3=1となる。
図24に示した処理フローによれば、ビット列r3に対応する論理関数gは、下記の式(1)のように表現される。但し、「・」はAND演算を表し、「+」はOR演算を表す。また、fr3は、下記の式(2)のように表現される。従って、(fr3|r3)は、下記の式(3)のようになる。下記の式(1)及び式(3)により、論理関数T(T=(fr3|r3)・F)は、下記の式(4)のようになる。
g(Rj1,Rj2,Rj3,Rj4)
= (Rj4・Rrj3+Rrj4・Rj3)・Rj2・Rrj1
+ Rj4・Rrj3・Rrj2・Rj1
…(1)
fr3(Ri1,Ri2,Ri3,Ri4,Rj1,Rj2,Rj3,Rj4)
= Ri2+Rj4+Rrj3+Rri4・Rj2
+ Ri4・Rj1+Rri4・Rrj1
…(2)
(fr3|r3) = Rj4+Rrj3+Rrj2+Rj1
…(3)
T = Rj4・Rrj3・Rj2・Rrj1+Rj4・Rrj3・Rrj2・Rj1
…(4)
上記の式(3)に記した(fr3|r3)は、図26に示した二分決定グラフGfで表現される。また、上記の式(1)に記した論理関数gは、図26に示した二分決定グラフGgで表現される。上述したS337の処理で、符号化部102は、図26に示すように、二分決定グラフGf、GgをAND演算して論理関数Tを表す二分決定グラフGfgを作成する。二分決定グラフGfgの作成は、図27に示すような手順で行われる。なお、表記の複雑化を避けるため、二分決定グラフの圧縮を一部省略して表記している。
図27に示した二分決定グラフは、二分決定グラフGfgを表している。まず、Rj4に関する条件分岐について考える。Rj4が1の場合、(fr3|r3)は常に1になる(図26の二分決定グラフGfを参照)。そのため、二分決定グラフGfgの中でRj4が1の場合に対応するブランチの先(N2)は、二分決定グラフGgの中でRj4が1の場合に対応するブランチの先にある二分決定グラフと同じ構造になる。
一方、二分決定グラフGfgの中でRj4が0の場合に対応するブランチの先(N1)については、Rj3に関する条件分岐の検討が行われる。Rj4が0、かつ、Rj3が0の場合、gは常に0になる(図26の二分決定グラフGgを参照)。そのため、二分決定グラフGfgの中でRj4が0、かつ、Rj3が0の場合に対応するブランチの先は、ビット値0を表すリーフノードとなる。一方、二分決定グラフGfgの中でRj4が0、かつ、Rj3が1の場合に対応するブランチの先(N3)については、Rj2に関する条件分岐の検討が行われる。
上記のように、リーフノードが現れるまで順次条件分岐の内容を検討し、二分決定グラフGfgの構造を確定させる。上記の処理を繰り返すことで、最終的に図28に示すような二分決定グラフGfgが得られる。ここでは説明の都合上、二分決定グラフの圧縮を一部省略しているが、実際には共有ノードや冗長ノードができないように二分決定グラフGfgの構造を確定させていくことが望ましい。
以上説明したように、二分決定グラフの表現を適用することで、より効率的な演算処理を実現することができる。例えば、ハミング距離を表すビット値fl(l=1,2,…)を表現した二分決定グラフは、最小のハミング距離を探索する演算の実行前に1度作成するだけでよい。また、ハミング距離テーブルの列数にかかわらず、二分決定グラフで表現される論理関数(主にg、T)の演算回数は変わらない。この点は、ハミング距離をハミング距離テーブルの行数×列数分だけ(又は、それらのうちテーブルの下三角行列の領域の分だけ)計算する場合と比較して、有利な点となる。従って、二分決定グラフによる表現を利用することで、ハミング距離を最小にするビット列を効率的に探索することが可能になる。そして、圧縮表現された二分決定グラフを用いることで、探索処理の負荷をさらに軽減することができる。
以上、第2実施形態に係る一変形例について説明した。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
10、20 コンピュータ
11 メモリ
12 プロセッサ
31 送信データ
31−A、31−B、31−C、31−D 分割データ
32 符号化情報
32−1、32−2、32−3、32−4、32−5、32−6 符号化パターン
33 演算
34−1、34−2、34−3、34−4、34−5、34−6 符号化データ
35 組み合わせの一部

Claims (6)

  1. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータが、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記メモリに格納し、
    前記メモリに格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、前記符号化データを生成する処理の中で、当該第1パターンに対応する前記符号化データを利用して前記演算を実行し、
    前記メモリには、前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を表す距離情報が格納され、
    前記生成する処理では、前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンが前記距離情報に基づいて選択され、当該第1パターンに対応する前記符号化データが前記演算に利用される
    符号化方法。
  2. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータが、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記メモリに格納し、
    前記メモリに格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、前記符号化データを生成する処理の中で、当該第1パターンに対応する前記符号化データを利用して前記演算を実行し、
    前記生成する処理では、
    前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を計算する論理演算が第1の二分決定グラフで表現され、前記第1の二分決定グラフを用いて、前記分割データの数が最大となる前記第1パターンを選択する論理演算が第2の二分決定グラフで表現され、
    前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンが前記第2の二分決定グラフを用いて選択され、当該第1パターンに対応する前記符号化データが前記演算に利用される
    号化方法。
  3. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納された記憶部と、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記記憶部に格納する演算部と、
    を有し、
    前記記憶部には、前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を表す距離情報が格納され、
    前記演算部は、
    前記記憶部に格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、
    前記符号化データを生成する処理の中で、前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンを前記距離情報に基づいて選択し、当該第1パターンに対応する前記符号化データを利用して前記演算を実行する
    符号化装置。
  4. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納された記憶部と、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記記憶部に格納する演算部と、
    を有し、
    前記演算部は、
    前記記憶部に格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、前記符号化データを生成する処理の中で、当該第1パターンに対応する前記符号化データを利用して前記演算を実行し、
    前記符号化データを生成する処理の中では、
    前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を計算する論理演算が第1の二分決定グラフで表現され、前記第1の二分決定グラフを用いて、前記分割データの数が最大となる前記第1パターンを選択する論理演算が第2の二分決定グラフで表現され、
    前記演算部は、
    前記符号化データを生成する処理の中で、前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンを前記第2の二分決定グラフを用いて選択し、当該第1パターンに対応する前記符号化データを前記演算に利用する
    符号化装置。
  5. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータに、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記メモリに格納し、
    前記メモリに格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、前記符号化データを生成する処理の中で、当該第1パターンに対応する前記符号化データを利用して前記演算を実行する
    処理を実行させるプログラムであり、
    前記メモリには、前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を表す距離情報が格納されており、
    前記生成する処理では、前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンが前記距離情報に基づいて選択され、当該第1パターンに対応する前記符号化データが前記演算に利用される、
    ログラム。
  6. 送信データを分割した複数の分割データと、前記分割データの組み合わせを表す複数の符号化パターンを含む符号化情報とが格納されたメモリを有するコンピュータに、
    前記符号化情報に含まれる前記符号化パターンのそれぞれについて、前記符号化パターンに対応する複数の前記分割データを対象に、設定した演算を実行して符号化データを生成し、前記符号化データを前記メモリに格納し、
    前記メモリに格納した前記符号化データに対応する前記符号化パターンである第1パターンと、前記演算の対象に対応する前記符号化パターンである第2パターンとを比較し、前記第2パターンが表す前記分割データの組み合わせの一部に、前記第1パターンが表す前記分割データの組み合わせが含まれる場合には、前記符号化データを生成する処理の中で、当該第1パターンに対応する前記符号化データを利用して前記演算を実行する
    処理を実行させるプログラムであり、
    前記生成する処理では、
    前記符号化情報に含まれる前記符号化パターンから選択可能な2つの前記符号化パターンの組毎に、一の前記符号化パターンと他の前記符号化パターンとの間の相違度を計算する論理演算が第1の二分決定グラフで表現され、前記第1の二分決定グラフを用いて、前記分割データの数が最大となる前記第1パターンを選択する論理演算が第2の二分決定グラフで表現され、
    前記第2パターンが表す前記分割データの組み合わせの一部に前記分割データの組み合わせが含まれる前記第1パターンのうち、前記分割データの数が最大となる前記第1パターンが前記第2の二分決定グラフを用いて選択され、当該第1パターンに対応する前記符号化データが前記演算に利用される、
    プログラム。
JP2015540315A 2013-10-03 2013-10-03 プログラム、符号化装置、及び符号化方法 Active JP6197876B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/076907 WO2015049756A1 (ja) 2013-10-03 2013-10-03 プログラム、符号化装置、及び符号化方法

Publications (2)

Publication Number Publication Date
JPWO2015049756A1 JPWO2015049756A1 (ja) 2017-03-09
JP6197876B2 true JP6197876B2 (ja) 2017-09-20

Family

ID=52778367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015540315A Active JP6197876B2 (ja) 2013-10-03 2013-10-03 プログラム、符号化装置、及び符号化方法

Country Status (5)

Country Link
US (1) US9876608B2 (ja)
EP (1) EP3054600A4 (ja)
JP (1) JP6197876B2 (ja)
CN (1) CN105594129A (ja)
WO (1) WO2015049756A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111357203A (zh) 2017-06-26 2020-06-30 斯蒂芬·泰琳 用于将大数据变换成较小的表示的系统和方法
US10727872B2 (en) * 2018-01-10 2020-07-28 Western Digital Technologies, Inc. Encoding and decoding of hamming distance-based binary representations of numbers
JP7126303B2 (ja) * 2020-08-17 2022-08-26 株式会社ポリテック 復元端末、通信システム、復元方法、通信方法、及びプログラム
CN113704139A (zh) * 2021-08-24 2021-11-26 复旦大学 一种用于存内计算的数据编码方法和存内计算方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3474794B2 (ja) 1999-02-03 2003-12-08 日本電信電話株式会社 符号変換回路及び符号変換多重化回路
US7103818B2 (en) * 2002-09-30 2006-09-05 Mitsubishi Electric Research Laboratories, Inc Transforming generalized parity check matrices for error-correcting codes
JP4405875B2 (ja) 2004-08-25 2010-01-27 富士通株式会社 エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP4476898B2 (ja) * 2005-08-16 2010-06-09 Kddi株式会社 通信システム、通信端末装置及びデータ要求方法
JP4696008B2 (ja) 2006-03-20 2011-06-08 富士通株式会社 Ip送信装置およびip送信方法
JP4318317B2 (ja) 2006-06-12 2009-08-19 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
CN100536350C (zh) * 2007-02-08 2009-09-02 华为技术有限公司 一种实现编码的电路和方法
JP5076539B2 (ja) 2007-02-16 2012-11-21 富士通株式会社 符号化装置および符号化方法
US8209577B2 (en) * 2007-12-20 2012-06-26 Microsoft Corporation Optimizing XOR-based codes
US8347169B1 (en) * 2010-03-01 2013-01-01 Applied Micro Circuits Corporation System and method for encoding using common partial parity products
US8392805B2 (en) * 2010-07-15 2013-03-05 Hewlett-Packard Development Company, L. P. Non-MDS erasure codes for storage systems
US9426517B2 (en) * 2012-06-08 2016-08-23 Ntt Docomo, Inc. Method and apparatus for low delay access to key-value based storage systems using FEC techniques
US9003257B1 (en) * 2013-09-19 2015-04-07 U-Blox Ag Low density parity check encoder and encoding method

Also Published As

Publication number Publication date
US9876608B2 (en) 2018-01-23
EP3054600A1 (en) 2016-08-10
US20160211942A1 (en) 2016-07-21
EP3054600A4 (en) 2016-10-05
CN105594129A (zh) 2016-05-18
JPWO2015049756A1 (ja) 2017-03-09
WO2015049756A1 (ja) 2015-04-09

Similar Documents

Publication Publication Date Title
JP5675876B2 (ja) 連鎖的暗号化反応の系統的記号化および復号化
US7711068B2 (en) Multi-stage code generator and decoder for communication systems
CN101427495B (zh) 用于通信系统的基于多域的码生成器和解码器
JP6197876B2 (ja) プログラム、符号化装置、及び符号化方法
KR20120058556A (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
TW201735553A (zh) 使用硬選取硬解碼模式下的解碼器產生軟資訊的方法
WO2020244327A1 (zh) 数据处理方法及装置
KR20060116022A (ko) 패리티 체크 행렬 생성 방법, 데이터 전송 시스템, 부호화장치, 복호 장치 및 패리티 체크 행렬 생성 프로그램
CN103650399A (zh) 纠正数据单元的自适应生成
TWI580197B (zh) 低密度奇偶檢查碼之編解碼方法
JP5600774B1 (ja) データ伝送装置及び方法
JP5267883B2 (ja) 通信システム、送信装置、誤り訂正符号再送方法、通信プログラム
JP2014127969A (ja) プログラム、情報処理装置、及び通信方法
CN112889221A (zh) 用于非二进制码的消息传递解码的校验节点处理单元中的偏移值确定
Zhao et al. Scale-free Luby transform codes
KR102021872B1 (ko) 인코딩 지연 시간이 개선된 랩터q 인코딩 장치 및 방법
Guttentag et al. Robust Syndrome Extraction via BCH Encoding
JP2011199647A (ja) 誤り訂正符号化装置及び方法及びプログラム及び誤り訂正復号化装置及び方法及びプログラム
CN112286449A (zh) 一种rs纠删处理设备及分布式存储系统
Zhang et al. Distributed LT Codes on Multi-hop Networks
CN103138878B (zh) 通过网络进行数据传输的方法和装置
Sun Loss recovery via erasure coding in packet networks
JP2015041863A (ja) 伝送システム、伝送方法及び伝送プログラム
JP2010041677A (ja) 復号装置、復号方法および復号プログラム
JP2010034887A (ja) 符号化装置、符号化方法および符号化プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170619

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170807

R150 Certificate of patent or registration of utility model

Ref document number: 6197876

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150