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

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

Info

Publication number
WO2015049756A1
WO2015049756A1 PCT/JP2013/076907 JP2013076907W WO2015049756A1 WO 2015049756 A1 WO2015049756 A1 WO 2015049756A1 JP 2013076907 W JP2013076907 W JP 2013076907W WO 2015049756 A1 WO2015049756 A1 WO 2015049756A1
Authority
WO
WIPO (PCT)
Prior art keywords
encoding
pattern
data
divided data
encoded data
Prior art date
Application number
PCT/JP2013/076907
Other languages
English (en)
French (fr)
Inventor
裕亮 亀山
真一 佐沢
博之 樋口
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to CN201380080051.3A priority Critical patent/CN105594129A/zh
Priority to PCT/JP2013/076907 priority patent/WO2015049756A1/ja
Priority to JP2015540315A priority patent/JP6197876B2/ja
Priority to EP13895088.6A priority patent/EP3054600A4/en
Publication of WO2015049756A1 publication Critical patent/WO2015049756A1/ja
Priority to US15/080,760 priority patent/US9876608B2/en

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

Definitions

  • the present invention relates to a program, an encoding device, and an encoding method.
  • a transport layer protocol is used to control end-to-end communication between a transmitting device and a receiving device and appropriately pass data to an application layer.
  • the transport layer protocol for example, there are connection type TCP (Transmission Control Protocol) and connectionless UDP (User Datagram Protocol).
  • TCP stipulates a mechanism for returning an ACK (ACKnowledgement) to a transmitting apparatus when the receiving apparatus normally receives the data packet in order to guarantee that the data packet has reached the receiving apparatus.
  • TCP defines a mechanism for retransmitting a data packet when the transmitting apparatus cannot receive the expected ACK within a certain time after transmitting the data packet.
  • TCP having such a mechanism is a reliable transport layer protocol.
  • UDP can independently implement a function for improving reliability in an upper layer protocol.
  • UDP can be combined with functions such as forward error correction (FEC: Forward Error Correction) coding and retransmission control. By implementing such a combination, it is possible to achieve both high speed and reliability of data transmission.
  • FEC Forward Error Correction
  • the error correction code includes, for example, a Reed-Solomon code and a low-density parity check code (LDPC).
  • LDPC low-density parity check code
  • RPS Random Parity Stream
  • a data transmission method that realizes high-speed data transmission by combining UDP and RPS encoding has been proposed. In this data transmission method, the transmission side generates encoded data from the divided data obtained by dividing the transmission data by exclusive OR operation, and the reception side uses the exclusive OR operation to generate transmission data from the encoded data. Processing to restore is performed.
  • the probability that the transmission data can be restored on the receiving side increases as the number of divisions of the transmission data is increased. That is, the reliability increases as the number of divided data increases.
  • the number of exclusive OR operations executed when generating encoded data also increases.
  • the encoding method that generates the encoded data by performing a logical operation on the combination of the divided data if the same encoded data can be generated by a smaller number of logical operations, the encoding can be performed without impairing the reliability. It becomes possible to reduce the calculation load at the time of conversion.
  • an object of the present invention is to provide a program, an encoding device, and an encoding method capable of reducing a calculation load during encoding.
  • encoding is performed on a computer having a memory in which a plurality of divided data obtained by dividing transmission data and coding information including a plurality of coding patterns representing combinations of the divided data are stored. For each of the coding patterns included in the information, a set operation is executed for a plurality of divided data corresponding to the coding pattern to generate the coded data, and the process of storing the coded data in the memory is executed.
  • a program is provided. Further, the program compares the first pattern, which is the coding pattern corresponding to the coded data stored in the memory, with the second pattern, which is the coding pattern corresponding to the operation target, and represents the second pattern.
  • the encoded data corresponding to the first pattern is used in the process of generating the encoded data. To cause the computer to execute processing for executing the calculation.
  • a storage unit that stores a plurality of divided data obtained by dividing transmission data, and encoding information including a plurality of encoding patterns that represent combinations of the divided data, For each of the coding patterns included in the coding information, a set operation is performed on a plurality of divided data corresponding to the coding pattern to generate the coded data, and the coded data is stored in the storage unit An arithmetic unit, and the arithmetic unit compares the first pattern, which is an encoding pattern corresponding to the encoded data stored in the storage unit, with the second pattern, which is an encoding pattern corresponding to the target of the operation. However, when the combination of the divided data represented by the first pattern is included in a part of the combination of the divided data represented by the second pattern, the encoded data corresponding to the first pattern is used.
  • Encoding apparatus is provided for execution.
  • a computer having a memory in which a plurality of divided data obtained by dividing transmission data and encoded information including a plurality of encoded patterns representing combinations of divided data are stored.
  • a set operation is performed on a plurality of divided data corresponding to the coding pattern to generate the coded data, and the coded data is stored in the memory.
  • the first pattern which is the coding pattern corresponding to the coded data stored in the memory
  • the second pattern which is the coding pattern corresponding to the operation target
  • the combination of the divided data represented by the second pattern When a combination of divided data represented by the first pattern is included in a part of the first pattern, the first pattern is included in the process of generating the encoded data. Coding method for performing operations by using the corresponding coded data is provided.
  • FIG. 1 is a diagram illustrating an example of a communication system according to the first embodiment.
  • the communication system shown in FIG. 1 is an example, and the application range of the technology according to the first embodiment is not limited to this.
  • the communication system includes computers 10 and 20.
  • the computer 10 is connected to the computer 20 via the network NW.
  • the computer 10 has a memory 11 and a processor 12.
  • the memory 11 is, for example, a volatile storage device such as a RAM (Random Access Memory) or a nonvolatile storage device such as an HDD (Hard Disk Drive) or a flash memory.
  • the processor 12 is, for example, a processor such as a CPU (Central Processing Unit) or a DSP (Digital Signal Processor). However, the processor 12 may be an electronic circuit such as ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array). For example, the processor 12 executes processing according to a program stored in the memory 11 or another storage device.
  • the memory 11 is encoded information including a plurality of divided data 31-A, ..., 31-D obtained by dividing the transmission data 31, and a plurality of encoding patterns 32-1, ..., 32-6 representing combinations of the divided data. 32 are stored.
  • the divided data 31-A,..., 31-D are represented by blocks denoted as “A”, “B”, “C”, and “D”, respectively.
  • the transmission data 31 is an example of data transmitted from the computer 10 to the computer 20 via the network NW.
  • the divided data 31-A,..., 31-D is an example of divided data obtained by dividing the transmission data 31 with a preset data size.
  • the encoding information 32 includes encoding patterns 32-1,..., 32-6.
  • Each of the coding patterns 32-1,..., 32-6 represents a combination of the divided data 31-A,.
  • the encoding patterns 32-1,..., 32-6 are each represented by a bit string, for example.
  • the encoding information 32 is a matrix of bit values having the bit string of the encoding pattern 32-1 as the first row,..., And the bit string of the encoding pattern 32-6 as the sixth row, as shown in FIG. Expressed.
  • the encoding patterns 32-1,..., 32-6 correspond to the encoded data 34-1,..., 34-6, respectively, and are used for calculation of the corresponding encoded data.
  • the encoded data 34-1 to 34-6 are represented by blocks denoted as “X1”,.
  • the processor 12 executes the set operation 33 for each of the plurality of pieces of divided data corresponding to the encoding pattern for each of the encoding patterns 32-1,..., 32-6 included in the encoding information 32, and performs encoding. , 34-6 are generated. Further, the processor 12 stores the encoded data 34-1 to 34-6 in the memory 11.
  • the bit string of the coding pattern 32-2 is set to 0110.
  • the processor 12 selects the divided data (in this case, the divided data 31-B and 31-C) corresponding to the position where the bit value is 1. Then, the processor 12 performs a preset operation 33 on the divided data 31-B and 31-C to generate encoded data 34-2.
  • the operation 33 is a logical operation such as an exclusive OR (hereinafter sometimes referred to as XOR) operation.
  • the processor 12 stores the encoded data 34-2 in the memory 11.
  • the bit string of the coding pattern 32-5 is set to 0111.
  • the processor 12 selects the divided data (in this case, the divided data 31-B, 31-C, 31-D) corresponding to the position where the bit value is 1. Then, the processor 12 performs a preset operation 33 on the divided data 31-B, 31-C, and 31-D to generate encoded data 34-5. At this time, the processor 12 uses the encoded data 34-2 stored in the memory 11 to generate the encoded data 34-5.
  • the usage method is as follows.
  • the processor 12 includes a first pattern that is an encoding pattern 32-2 corresponding to the encoded data 34-2 stored in the memory 11, and a second pattern that is an encoding pattern 32-5 corresponding to the target of the operation 33. Compare Then, the processor 12 determines whether or not the part 35 of the combination of divided data represented by the second pattern includes the combination of the divided data represented by the first pattern. This determination can be realized, for example, by comparing the coding patterns 32-2 and 32-5 included in the coding information 32.
  • the combination of the divided data corresponding to the first pattern is the divided data 31-B and 31-C.
  • the combination of the divided data corresponding to the second pattern is the divided data 31-B, 31-C, and 31-D.
  • a part 35 of the combination of divided data represented by the second pattern matches the combination of divided data (divided data 31-B, 31-C) corresponding to the first pattern. Therefore, the processor 12 executes the operation 33 using the encoded data 34-2 corresponding to the first pattern.
  • the processor 12 generates the encoded data 34-5 by executing the operation 33 on the encoded data 34-2 and the divided data 31-D.
  • the encoded data 34-1 to 34-6 are transmitted to the computer 20 via the network NW.
  • the computer 20 restores the transmission data 31 using the received encoded data 34-1 to 34-6.
  • the encoded data 34-1,..., 34-6 are generated using combinations of the divided data 31-A,.
  • the encoded data 34-1 to 34-6 have redundancy. Therefore, even if a part of the encoded data 34-1 ... 34-6 is lost, the computer 20 restores the divided data 31-A, ..., 31-D with high probability based on the encoded information 32. can do.
  • FIG. 2 is a diagram illustrating an example of a system according to the second embodiment.
  • the scope of application of the technology according to the second embodiment is not limited to this, and can be applied to a system in which different types of apparatuses are combined from the system illustrated in FIG.
  • a system including a terminal apparatus such as a mobile phone or a smartphone, or a communication apparatus such as a relay station.
  • a terminal apparatus such as a mobile phone or a smartphone
  • a communication apparatus such as a relay station
  • the system according to the second embodiment includes an encoding device 100 and a decoding device 200.
  • the encoding device 100 is connected to the decoding device 200 via a network NW.
  • Examples of applicable network NW include various networks such as LAN, WAN, mobile phone network, satellite communication network, and optical fiber network, and combinations thereof.
  • the encoding device 100 transmits data (hereinafter, target data) to the decoding device 200 via the network NW.
  • target data data
  • the encoding apparatus 100 divides the target data to generate a plurality of divided data.
  • the encoding apparatus 100 performs an encoding process based on a plurality of divided data and generates a plurality of encoded data.
  • the encoding device 100 transmits the generated plurality of encoded data to the decoding device 200.
  • the decoding apparatus 200 performs a decoding process based on the received plurality of encoded data and restores the plurality of divided data. Then, the decoding device 200 combines the plurality of restored divided data to restore the target data.
  • FIG. 3 is a first diagram for explaining the RPS encoding method.
  • FIG. 4 is a second diagram for explaining the RPS encoding method.
  • FIG. 5 is a third diagram for explaining the RPS encoding method.
  • the target data is divided into a plurality of divided data on the transmission side.
  • the target data is divided so that the data sizes of the divided data are the same.
  • the target data is divided into divided data A, B, C, and D.
  • an encoding process is performed using the divided data A, B, C, and D.
  • An encoding matrix is used for this encoding process. Each row of the encoding matrix represents a combination of divided data A, B, C, and D.
  • the first column of the encoding matrix is associated with the divided data A
  • the second column is the divided data B
  • the third column is associated with the divided data C
  • the fourth column is associated with the divided data D.
  • the divided data corresponding to the bit having the bit value 1 is used as the divided data to be combined.
  • the bit string 1010 represents a combination of the divided data A and C.
  • bit string 0110 described in the second row represents a combination of the divided data B and C.
  • the bit string 0110 described in the second row represents a combination of the divided data B and C.
  • encoded data X1, X2,..., X6 are generated from the divided data A, B, C, and D.
  • the encoded data X1 corresponds to the first row of the encoding matrix.
  • the encoded data X2 corresponds to the second row of the encoding matrix.
  • the encoded data X3,..., X6 correspond to the third row,.
  • the encoded data X1, X2,..., X6 are transmitted from the transmission side to the reception side. At this time, part of the encoded data X1, X2,..., X6 may not be normally received due to a transmission path loss or the like.
  • FIG. 3 illustrates a case where the encoded data X3 and X6 are not normally received.
  • the encoded data X1, X2,..., X6 are generated based on combinations of the divided data A, B, C, and D, respectively.
  • the encoded data X1, X2,..., X6 have redundancy. Therefore, even if a part of the encoded data X1, X2,..., X6 is not normally received, the divided data A, B, C, D can be restored with high probability.
  • the decoding process the same information as the encoding matrix used at the time of encoding on the transmission side is used.
  • the divided data A, B, C, and D are restored by the decoding process, and the divided data A, B, C, and D are combined to restore the target data.
  • processing such as division of target data, encoding processing, decoding processing, and combination of divided data are performed.
  • encoded data is generated using an exclusive OR (XOR) operation on the divided data.
  • XOR exclusive OR
  • the encoded data X1 is a result of an exclusive OR operation on the divided data A and C.
  • the combination of the divided data that is the target of the exclusive OR operation is set by the encoding matrix.
  • the encoded data X1 corresponds to the first row of the encoding matrix. Therefore, the encoded data X1 is obtained by exclusive OR operation on the divided data A and C indicated by the bit string 1010 described in the first row of the encoding matrix.
  • encoded data X2,..., X6 are obtained by exclusive OR operation on combinations of divided data indicated by bit strings described in the second row,.
  • the decoding process for restoring the divided data A, B, C, and D is performed by a method as shown in FIG. It is assumed that information indicating the relationship between the encoded data and the row of the encoding matrix used when generating the encoded data is transmitted from the transmission side to the reception side. Further, it is assumed that the encoded data X3 and X6 are lost in the process of transmission from the transmission side to the reception side. In this case, on the receiving side, as shown in FIG. 5, the divided data A, B, C, and D are restored by combining the normally received encoded data X1, X2, X4, and X5.
  • the encoded data X2 is a result of an exclusive OR operation on the divided data B and C.
  • the encoded data X5 is the result of an exclusive OR operation on the divided data B, C, and D. Therefore, the operation result Y1 of the exclusive OR operation on the encoded data X2 and X5 is data obtained by restoring the divided data D.
  • the operation result Y2 of the exclusive OR operation on the encoded data X4 and the operation result Y1 is data obtained by restoring the divided data B.
  • the operation result Y3 of the exclusive OR operation on the encoded data X2 and the operation result Y2 is data obtained by restoring the divided data C.
  • the operation result Y4 of the exclusive OR operation on the encoded data X1 and the operation result Y3 is data obtained by restoring the divided data A. In this way, the divided data A, B, C, and D are restored by combining the normally received encoded data X1, X2, X4, and X5.
  • the method of combining the encoded data to be subjected to the exclusive OR operation, the execution order of the exclusive OR operation, and the like are not limited to the example in FIG. Further, by referring to the information of the encoding matrix, it is determined whether or not all of the divided data A, B, C, and D can be recovered from the normally received encoded data, and transmitted to recover all It is possible to determine the encoded data to be retransmitted to the side.
  • FIGS. 3 to 5 show examples in which the number of divisions and the number of columns of the encoding matrix are small and the redundancy is low. However, the resistance to loss of encoded data is enhanced by increasing the redundancy. . However, if the redundancy is increased, the number of exclusive OR operations executed during the encoding process increases. In the second embodiment, a mechanism capable of reducing the number of exclusive OR operations is proposed.
  • FIG. 6 is a diagram illustrating an example of hardware capable of realizing the function of the encoding device according to the second embodiment.
  • the functions of the encoding apparatus 100 can be realized using, for example, hardware resources of the information processing apparatus illustrated in FIG. That is, the functions of the encoding device 100 are realized by controlling the hardware shown in FIG. 6 using a computer program.
  • this hardware mainly includes a CPU 902, a ROM (Read Only Memory) 904, a RAM 906, a host bus 908, and a bridge 910. Further, this hardware includes an external bus 912, an interface 914, an input unit 916, an output unit 918, a storage unit 920, a drive 922, a connection port 924, and a communication unit 926.
  • the CPU 902 functions as, for example, an arithmetic processing unit or a control unit, and controls the overall operation of each component or a part thereof based on various programs recorded in the ROM 904, the RAM 906, the storage unit 920, or the removable recording medium 928.
  • the ROM 904 is an example of a storage device that stores a program read by the CPU 902, data used for calculation, and the like.
  • the RAM 906 temporarily or permanently stores, for example, a program read by the CPU 902 and various parameters that change when the program is executed.
  • a host bus 908 capable of high-speed data transmission, for example.
  • the host bus 908 is connected to an external bus 912 having a relatively low data transmission speed via a bridge 910, for example.
  • the input unit 916 for example, a mouse, a keyboard, a touch panel, a touch pad, a button, a switch, a lever, or the like is used.
  • a remote controller capable of transmitting a control signal using infrared rays or other radio waves may be used.
  • the output unit 918 for example, a display device such as CRT (Cathode Ray Tube), LCD (Liquid Crystal Display), PDP (Plasma Display Panel), or ELD (Electro-Luminescence Display) is used.
  • a display device such as CRT (Cathode Ray Tube), LCD (Liquid Crystal Display), PDP (Plasma Display Panel), or ELD (Electro-Luminescence Display) is used.
  • an audio output device such as a speaker or headphones, or a printer may be used.
  • the output unit 918 is a device that can output information visually or audibly.
  • the storage unit 920 is a device for storing various data.
  • a magnetic storage device such as an HDD is used.
  • a semiconductor storage device such as an SSD (Solid State Drive) or a RAM disk, an optical storage device, or a magneto-optical storage device may be used.
  • the drive 922 is a device that reads information recorded on a removable recording medium 928 that is a removable recording medium or writes information to the removable recording medium 928.
  • a removable recording medium 928 for example, a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory is used.
  • the connection port 924 is a port for connecting an external connection device 930 such as a USB (Universal Serial Bus) port, an IEEE 1394 port, a SCSI (Small Computer System Interface), an RS-232C port, or an optical audio terminal.
  • an external connection device 930 such as a USB (Universal Serial Bus) port, an IEEE 1394 port, a SCSI (Small Computer System Interface), an RS-232C port, or an optical audio terminal.
  • a printer or the like is used as the external connection device 930.
  • the communication unit 926 is a communication device for connecting to the network 932.
  • a communication circuit for wired or wireless LAN Local Area Network
  • a communication circuit for WUSB Wireless USB
  • a communication circuit or router for optical communication an ADSL (Asymmetric Digital Subscriber Line) Communication circuits, routers, communication circuits for mobile phone networks, and the like are used.
  • a network 932 connected to the communication unit 926 is a wired or wireless network, and includes, for example, the Internet, a LAN, a broadcast network, a satellite communication line, and the like.
  • FIG. 7 is a block diagram illustrating an example of the functions of the encoding apparatus according to the second embodiment.
  • FIGS. 8 and 9 will be referred to as appropriate.
  • FIG. 8 is a diagram illustrating an example of a Hamming distance table according to the second embodiment.
  • FIG. 9 is a diagram for explaining the encoding process according to the second embodiment.
  • the encoding device 100 includes a storage unit 101, an encoding unit 102, and a communication control unit 103.
  • the function of the storage unit 101 can be realized using the above-described RAM 906, the storage unit 920, or the like.
  • the function of the encoding unit 102 can be realized using the above-described CPU 902 or the like.
  • the communication control unit 103 realizes the communication function of the encoding apparatus 100 by controlling the connection port 924, the communication unit 926, and the like described above.
  • the storage unit 101 stores target data 111, an encoding matrix 112, and a Hamming distance 113.
  • the target data 111 is an example of transmission data transmitted to the decoding device 200.
  • the encoding matrix 112 is an example of encoding information expressed by a plurality of bit strings indicating combinations of divided data.
  • the Hamming distance 113 is a Hamming distance between the bit strings included in the encoding matrix 112 (the number of different bits at the corresponding position).
  • the storage unit 101 stores information about the Hamming distance 113 expressed in a table format as shown in FIG.
  • bit strings described in the first row, the second row,..., The sixth row of the encoding matrix are expressed as r1, r2,.
  • Bit strings r1, r2,..., R6 are assigned to the rows and columns of the hamming distance table, and values indicating the hamming distances between the bit strings are described in each box. For example, a value 1 is written in ⁇ H61 corresponding to the Hamming distance of the bit strings r1 and r6. Similarly, a value 1 is written in ⁇ H52 corresponding to the Hamming distance of the bit strings r2 and r5. In FIG. 8, only the lower triangular portion of the Hamming distance table is shown.
  • the encoding unit 102 encodes the target data 111 stored in the storage unit 101 using the encoding matrix 112 and the Hamming distance 113 stored in the storage unit 101.
  • the encoding unit 102 includes a dividing unit 121, a selecting unit 122, and a logic operation unit 123.
  • the dividing unit 121 reads the target data 111 from the storage unit 101. Then, the dividing unit 121 divides the read target data 111 into a plurality of divided data. For example, the dividing unit 121 divides the target data 111 so that the data size of the divided data becomes a preset data size.
  • the selection unit 122 refers to the Hamming distance table stored in the storage unit 101, and selects a bit string corresponding to the minimum value of the Hamming distance 113 (excluding the diagonal component) for each row of the Hamming distance table.
  • the selection unit 122 refers to the row of the bit string r5 and selects the bit string r2 corresponding to ⁇ H52 in which the minimum value 1 of the hamming distance 113 is described. In the example of FIG. 8, since the hamming distance 113 between the bit strings r4 and r5 is also 1, the selection unit 122 may select the bit string r4. Similarly, the selection unit 122 refers to the row of the bit string r6 and selects the bit string r1 corresponding to ⁇ H61 in which the minimum value 1 of the hamming distance 113 is described. In the example of FIG. 8, since the hamming distance 113 between the bit strings r2 and r6 is also 1, the selection unit 122 may select the bit string r1.
  • the selection unit 122 calculates the number of bits having a bit value of 1 in the bit string to be referenced, and does not select a bit string for a row in which the minimum value of the Hamming distance 113 is equal to or greater than the calculated number of bits. For example, since the bit string r2 is 0110, the number of bits of the bit value 1 is 2. On the other hand, the minimum value of the Hamming distance 113 in the row of the bit string r2 is 2. Therefore, for the row of the bit string r2, the bit string corresponding to the minimum value of the Hamming distance 113 is not selected. The same applies to the rows of the bit strings r1, r3, r4.
  • the information of the bit string selected by the selection unit 122 is input to the logic operation unit 123 and used for the encoding process.
  • the information of the bit string r2 selected as the bit string corresponding to the minimum value of the Hamming distance 113 for the row of the bit string r5 is used for the encoding process based on the bit string r5.
  • the information of the bit string r1 selected as the bit string corresponding to the minimum value of the Hamming distance 113 for the row of the bit string r6 is used for the encoding process based on the bit string r6.
  • the logical operation unit 123 generates encoded data using the encoding matrix 112 stored in the storage unit 101, the information on the bit string selected by the selection unit 122, and the plurality of pieces of divided data generated by the dividing unit 121. For example, the logical operation unit 123 generates encoded data X1, X2,..., X6 from the divided data A, B, C, D by a method as shown in FIG.
  • the logical operation unit 123 refers to the bit string r1 (1010) described in the first row of the encoding matrix 112, and determines the divided data A and C corresponding to the bit string r1 as the subject of the exclusive OR operation. Next, the logical operation unit 123 performs an exclusive OR operation on the divided data A and C to generate encoded data X1. Next, the logical operation unit 123 stores the encoded data X1 in the storage unit 101.
  • the logical operation unit 123 refers to the bit string r2 (0110) described in the second row of the encoding matrix 112, and determines the divided data B and C corresponding to the bit string r2 as the target of the exclusive OR operation. Next, the logical operation unit 123 performs an exclusive OR operation on the divided data B and C to generate encoded data X2. Next, the logical operation unit 123 stores the encoded data X2 in the storage unit 101.
  • the logical operation unit 123 refers to the bit string r3 (1001) described in the third row of the encoding matrix 112, and determines the divided data A and D corresponding to the bit string r3 as the target of the exclusive OR operation. Next, the logical operation unit 123 performs an exclusive OR operation on the divided data A and D to generate encoded data X3. Next, the logical operation unit 123 stores the encoded data X3 in the storage unit 101.
  • the logical operation unit 123 refers to the bit string r4 (0101) described in the fourth row of the encoding matrix 112, and determines the divided data B and D corresponding to the bit string r4 as the subject of the exclusive OR operation. Next, the logical operation unit 123 performs an exclusive OR operation on the divided data B and D to generate encoded data X4. Next, the logical operation unit 123 stores the encoded data X4 in the storage unit 101. At this time, the encoded data X1, X2, X3, and X4 are stored in the storage unit 101.
  • the logical operation unit 123 refers to the bit string r5 (0111) described in the fifth row of the encoding matrix 112. As for the bit string r5, information of the bit string r2 corresponding to the minimum value of the Hamming distance 113 is input. Therefore, the logical operation unit 123 checks whether or not the encoded data X2 corresponding to the bit string r2 is stored in the storage unit 101. In the example of FIG. 9, the encoded data X2 has already been calculated and stored in the storage unit 101. Therefore, the logical operation unit 123 reads the encoded data X2 from the storage unit 101.
  • the logical operation unit 123 that has read the encoded data X2 extracts a bit different from the bit string r2 in the bit string r5. In the example of FIG. 9, the fourth bit (corresponding to the divided data D) of the bit string r5 is extracted. Next, the logical operation unit 123 performs an exclusive OR operation on the encoded data X2 and the divided data D to generate encoded data X5. Next, the logical operation unit 123 stores the encoded data X5 in the storage unit 101.
  • the logical operation unit 123 refers to the bit string r6 (1110) described in the sixth row of the encoding matrix 112. For the bit string r6, the information of the bit string r1 corresponding to the minimum value of the Hamming distance 113 is input. Therefore, the logical operation unit 123 checks whether or not the encoded data X1 corresponding to the bit string r1 is stored in the storage unit 101. In the example of FIG. 9, the encoded data X1 has already been calculated and stored in the storage unit 101. Therefore, the logical operation unit 123 reads the encoded data X1 from the storage unit 101.
  • the logical operation unit 123 that has read the encoded data X1 extracts bits different from the bit string r1 in the bit string r6. In the example of FIG. 9, the second bit (corresponding to the divided data B) of the bit string r6 is extracted. Next, the logical operation unit 123 performs an exclusive OR operation on the encoded data X1 and the divided data B to generate encoded data X6. Next, the logical operation unit 123 stores the encoded data X6 in the storage unit 101.
  • the same calculation results as the encoded data X1, X2,..., X6 obtained by the encoding process shown in FIG. 4 are obtained by the encoding process shown in FIG.
  • the encoding process shown in FIG. 9 has a smaller number of exclusive OR operations. This difference is caused by the generation method of the encoded data X5 and X6.
  • the logical operation unit 123 uses the already calculated encoded data X2 for generating the encoded data X5, and uses the encoded data X1 for generating the encoded data X6. Therefore, duplicate processing included in a series of calculations is omitted, and the number of exclusive OR operations is reduced.
  • the communication control unit 103 transmits the encoded data generated by the logic operation unit 123 to the decoding device 200. At this time, the communication control unit 103 communicates with the decoding device 200 according to UDP. In addition, when receiving a retransmission request from the decoding apparatus 200, the communication control unit 103 retransmits the encoded data designated by the retransmission request to the decoding apparatus 200.
  • FIG. 10 is a block diagram illustrating an example of the functions of the decoding device according to the second embodiment.
  • the decoding device 200 includes a storage unit 201, a communication control unit 202, and a decoding unit 203.
  • the function of the storage unit 201 can be realized using the above-described RAM 906, the storage unit 920, or the like.
  • the communication control unit 202 realizes the communication function of the encoding apparatus 100 by controlling the connection port 924, the communication unit 926, and the like described above.
  • the function of the decoding unit 203 can be realized by using the above-described CPU 902 or the like.
  • the storage unit 201 stores an encoding matrix 211.
  • the encoding matrix 211 is the same as the encoding matrix 112 stored in the storage unit 101 of the encoding device 100. Also, the encoding matrix 211 is used for a decoding process described later.
  • the communication control unit 202 receives the encoded data transmitted from the encoding device 100. At this time, the communication control unit 202 communicates with the encoding apparatus 100 according to UDP. In addition, when all the divided data cannot be restored by the decoding process described later, the communication control unit 202 requests the encoding apparatus 100 to retransmit the encoded data used for the decoding process of the divided data that cannot be restored.
  • the decoding unit 203 restores the divided data using the normally received encoded data. Next, the decoding unit 203 combines the restored divided data to restore the target data 111.
  • the decryption unit 203 includes a logical operation unit 231 and a combining unit 232. For example, the logical operation unit 231 restores the divided data from the encoded data by executing the decoding process illustrated in FIG.
  • the encoded data X3 and X6 are lost in the transmission process from the encoding device 100 to the decoding device 200.
  • the logical operation unit 231 generates divided data A, B, C, and D by combining the normally received encoded data X1, X2, X4, and X5.
  • the logical operation unit 231 restores the divided data D (operation result Y1) by performing an exclusive OR operation on the encoded data X2 and X5.
  • the logical operation unit 231 performs an exclusive OR operation on the encoded data X4 and the operation result Y1 to restore the divided data B (operation result Y2). In addition, the logical operation unit 231 performs an exclusive OR operation on the encoded data X2 and the operation result Y2 to restore the divided data C (operation result Y3). In addition, the logical operation unit 231 performs an exclusive OR operation on the encoded data X1 and the operation result Y3 to restore the divided data A (operation result Y4). In this way, the logical operation unit 231 restores the divided data A, B, C, and D by combining the normally received encoded data X1, X2, X4, and X5.
  • the combining unit 232 combines the divided data restored by the logical operation unit 231 to restore the target data 111. For example, the combining unit 232 recovers the target data 111 by combining the divided data A, B, C, and D.
  • FIG. 11 is a first flowchart showing a flow of processing executed by the encoding apparatus according to the second embodiment.
  • FIG. 12 is a second flowchart showing a flow of processing executed by the encoding apparatus according to the second embodiment.
  • FIG. 13 is a third flowchart showing the flow of processing executed by the encoding apparatus according to the second embodiment.
  • the encoding unit 102 reads the target data 111 from the storage unit 101. Then, the encoding unit 102 divides the read target data 111 into a plurality of divided data. For example, the encoding unit 102 divides the target data 111 so that the data size of the divided data becomes a preset data size.
  • the encoding unit 102 generates encoded data using the encoding matrix 112 stored in the storage unit 101 and a plurality of pieces of divided data. Then, the encoding unit 102 stores (saves) the generated encoded data in the storage unit 101. The process flow for generating encoded data will be described in detail later.
  • the communication control unit 103 transmits the encoded data generated by the encoding unit 102 to the decoding device 200. At this time, the communication control unit 103 communicates with the decoding device 200 according to UDP. In addition, when receiving a retransmission request from the decoding apparatus 200, the communication control unit 103 retransmits the encoded data designated by the retransmission request to the decoding apparatus 200.
  • the encoding unit 102 refers to the encoding matrix 112 stored in the storage unit 101, and selects the j-th bit string rj from the encoding matrix 112.
  • the index j is initialized to 1 when the process of S102 is started.
  • the encoding unit 102 refers to the Hamming distance table stored in the storage unit 101. Then, the encoding unit 102 selects a bit string rm that minimizes the Hamming distance 113 with the bit string rj.
  • the encoding unit 102 determines whether or not the encoded data Xm corresponding to the bit string rm is stored (saved) in the storage unit 101. If the encoded data Xm corresponding to the bit string rm is stored in the storage unit 101, the process proceeds to S114. On the other hand, if the encoded data Xm corresponding to the bit string rm is not stored in the storage unit 101, the process proceeds to S116.
  • the encoding unit 102 performs an exclusive OR operation (XOR operation) on the bit strings rj and rm to generate the bit string V. Then, the encoding unit 102 acquires a set of divided data corresponding to the bit having a bit value of 1 in the bit string V. When the processes of S114 and S115 are completed, the process proceeds to S118 of FIG.
  • the encoding unit 102 acquires a set of divided data corresponding to the bit having a bit value of 1 in the bit string rm. Then, the encoding unit 102 performs an exclusive OR operation on the acquired set of divided data to generate encoded data Xj. When the processes of S116 and S117 are completed, the process proceeds to S120 of FIG.
  • the encoding unit 102 acquires the encoded data Xm corresponding to the acquired set of divided data from the storage unit 101. Then, the encoding unit 102 performs an exclusive OR operation on the acquired set of divided data and the encoded data Xm to generate encoded data Xj.
  • the encoding unit 102 stores (saves) the encoded data Xj in the storage unit 101. Then, the encoding unit 102 increments the index j by 1 (that is, updates the index j to a value added by 1).
  • the encoding unit 102 compares the index j with the total number of rows M of the encoding matrix 112. When the index j is smaller than the total number M of rows in the encoding matrix 112 (j ⁇ M), the process proceeds to S111 in FIG. On the other hand, when the index j is larger than the total number M of rows of the encoding matrix 112 (j ⁇ M), the series of processes shown in FIGS.
  • FIG. 14 is a flowchart showing the flow of processing executed by the decoding apparatus according to the second embodiment.
  • the communication control unit 202 receives the encoded data transmitted by the encoding device 100. At this time, the communication control unit 202 communicates with the encoding apparatus 100 according to UDP. In addition, when all the divided data cannot be restored by the decoding process described later, the communication control unit 202 requests the encoding apparatus 100 to retransmit the encoded data used for the decoding process of the divided data that cannot be restored.
  • the decoding unit 203 restores the divided data using the normally received encoded data. Then, the decoding unit 203 restores the target data 111 by combining the restored divided data.
  • the flow of the decoding process executed by the decoding device 200 has been described above.
  • the already generated encoded data is stored, and when generating other encoded data, the number of exclusive OR operations is reduced by using the stored encoded data. be able to. As a result, it is possible to suppress the calculation load during encoding.
  • the second embodiment has been described above. ⁇ 3. Modification (Application of BDD)> Next, a modification of the second embodiment will be described. In this modification, a process for calculating the Hamming distance 113 and a process for selecting a bit string corresponding to the minimum value of the Hamming distance 113 are expressed by a binary decision diagram (BDD) to further reduce the processing load. Propose.
  • FIG. 15 is a first diagram for describing the representation of the binary decision graph according to a modification of the second embodiment.
  • FIG. 16 is a second diagram for describing the representation of the binary decision graph according to a variation of the second embodiment.
  • FIG. 17 is a third diagram for describing the representation of the binary decision graph according to a variation of the second embodiment.
  • the function f illustrated in FIG. 15 is a function that outputs a 1-bit bit value in response to input of three bit values z1, z2, and z3 (hereinafter, sometimes referred to as a bit string z). For example, when the bit string 000 is input, the function f outputs a bit value 0. Similarly, when the bit string 001 is input, the function f outputs a bit value 0. Bit values as shown in FIG. 15 are also output for other input bit strings.
  • the binary decision graph includes a root node Nrt, branch nodes Nb11,..., Nb24, and leaf nodes Nrf1,. Further, any of the bit values z1, z2, and z3 is assigned to the root node Nrt and the branch nodes Nb11,..., Nb24, respectively. Further, a value of 0 or 1 is assigned to each of the leaf nodes Nrf1, ..., Nrf8. A straight line connecting nodes is called a branch.
  • the leaf node Nrf6 ahead of the selected branch represents the output value. In the example of FIG. 16, the leaf node Nrf6 is 1.
  • the binary tree illustrated in FIG. 16 is constructed so that the combination of the input value, conditional branch, and output value matches the function f shown in FIG. Therefore, the output value of the function f corresponding to the input value can be obtained by tracing the nodes and branches in the same manner as described above. That is, the table representation of the function f shown in FIG. 15 and the binary tree representation shown in FIG. 16 are equivalent. However, the binary tree can be transformed into a binary decision graph which is a compressed expression as shown in FIG.
  • the branch node Nb24 represents a conditional branch related to the bit value z3.
  • the bit value 1 is assigned to both. That is, the output value is the same 1 regardless of whether there is a conditional branch of the branch node Nb24.
  • branch node Nb24 is omitted and the output value is 1 when the bit value z2 is 1 in the conditional branch of the branch node Nb12. That is, the binary tree can be compressed.
  • branch nodes Nb21 and Nb22 are both conditional branches related to the bit value z3.
  • the branch node Nb21 and the leaf nodes Nrf1 and Nrf2 are compared with the combination of the branch node Nb22 and the leaf nodes Nrf3 and Nrf4, it can be seen that both express the same condition and the same output result. Accordingly, the same logic is expanded in the lower order whether the conditional branch of the branch node Nb11 exists or not. Therefore, the branch nodes Nb11 and Nb22, and the leaf nodes Nrf3 and Nrf4 can be omitted, and the binary tree can be transformed so that the branch to which the value 0 extending from the root node Nrt is assigned is connected to the branch node Nb21.
  • the branch node Nb23 and the leaf nodes Nrf5 and Nrf6 are the same as the structure of the branch node Nb21 and the leaf nodes Nrf1 and Nrf2, the branch node Nb23 and the leaf nodes Nrf5 and Nrf6 can be omitted. If the nodes are omitted in this way and the connection relations of the branches are arranged, a binary decision graph as shown in FIG. 17 is obtained.
  • the binary tree shown in FIG. 16 and the binary decision graph shown in FIG. 17 express the same contents.
  • the binary decision graph shown in FIG. 17 has fewer nodes than the binary tree shown in FIG. Therefore, if the compressed binary decision graph is used, the number of conditional branch processes can be reduced, and the processing load can be reduced.
  • the binary decision graph can reduce the processing load by using the compressed expression. Further, when a plurality of logical functions are connected by a logical operation, the binary decision graph can be transformed with the compressed expression to generate a binary decision graph after the logical operation. By using such a property of the binary decision graph, the encoding process according to the second embodiment can be further improved in efficiency.
  • a method for applying the binary decision graph will be described.
  • FIG. 18 is a first diagram for describing a Hamming distance calculation method according to a modification of the second embodiment.
  • FIG. 19 is a second diagram for describing the Hamming distance calculation method according to a modification of the second embodiment.
  • FIG. 20 is a third diagram for describing the Hamming distance calculation method according to a modification of the second embodiment.
  • a bit value positioned at the k-th bit of the bit string rj is expressed as Rjk.
  • a logical operation is considered in which bit values Ri1,..., Ri4, Rj1,..., Rj4 are input and three bit values f1, f2, and f3 representing the Hamming distance are output.
  • the first bit of the bit string representing the Hamming distance is f1
  • the second bit is f2
  • the third bit is f3.
  • the bit values Ri1,..., Ri4 are sequentially set to the bit value of the first bit
  • the bit values Rj1,..., Rj4 are sequentially set as the bit values of the first bit,.
  • the logical operation for calculating the bit values f1, f2, and f3 representing the Hamming distance 113 can be expressed by combining basic logical operations L1,..., L12 as shown in FIG.
  • the logical operations L1, L2, L3, L4, L6, L8, L10, L12, and L13 represent XOR operations.
  • logical operations L5, L7, L9, and L11 represent AND operations.
  • the logical operation L1 representing the XOR operation can be expressed by the binary decision graph illustrated in FIG.
  • the logical operations L1,..., L12 are expressed by a binary decision graph and all the binary decision graphs are integrated and then compressed, a binary decision graph for calculating the bit values f1, f2, and f3, respectively, is generated. Can do.
  • the processing for replacing the output value corresponding to the diagonal component of the Hamming distance table with the Hamming weight is as shown in FIG. 20, for example.
  • the flow of the processing shown in FIG. 20 will be described. Note that the processing illustrated in FIG. 20 is executed by, for example, the encoding unit 102 included in the encoding device 100.
  • the encoding unit 102 initializes the index i. By this processing, the index i is set to 1. (S302) The encoding unit 102 determines whether or not the index i is equal to or less than the total number of rows M of the encoding matrix 112. If the index i is less than or equal to the total number of rows M, the process proceeds to S303. On the other hand, when the index i is not less than the total number of rows M, the series of processes shown in FIG.
  • “ ⁇ ” Represents an AND operation. That is, the product term function h is a logic function that inverts a logical variable corresponding to a bit having a bit value 0 in the bit string ri and performs an AND operation on the logical variable of each input bit.
  • the encoding unit 102 increments the index i by 1 (that is, updates the index i to a value added by 1).
  • the process proceeds to S302.
  • the method of applying the binary decision graph expression to the calculation of the Hamming distance 113 has been described above. As described above, since the Hamming distance can be expressed by a logical operation, the Hamming distance can be calculated using the binary decision graph by expressing the logical operation by a binary decision graph. And the load reduction by compression of a binary decision graph is implement
  • FIG. 21 is a first diagram for explaining a method for selecting a minimum hamming distance according to a modification of the second embodiment.
  • FIG. 22 is a second diagram for explaining the minimum hamming distance selection method according to a modification of the second embodiment.
  • FIG. 23 is a third diagram for explaining the minimum hamming distance selection method according to a modification of the second embodiment.
  • FIG. 24 is a fourth diagram for explaining the minimum hamming distance selection method according to a modification of the second embodiment.
  • FIG. 25 is a fifth diagram for explaining the minimum hamming distance selection method according to the modification of the second embodiment.
  • FIG. 26 is a sixth diagram for explaining the minimum hamming distance selection method according to a modification of the second embodiment.
  • FIG. 27 is a seventh diagram for describing the minimum hamming distance selection method according to a variation of the second embodiment.
  • FIG. 28 is an eighth diagram for describing a minimum hamming distance selection method according to a variation of the second embodiment.
  • the selection process of the bit string corresponding to the minimum value of the Hamming distance 113 includes the processes of S311 and S312 shown in FIG. These processes are mainly executed by the encoding unit 102 included in the encoding apparatus 100.
  • the encoding unit 102 inverts the bit value of the bit string (f1, f2, f3) representing the Hamming distance 113.
  • the binary decision graph for calculating each of the bit values f1, f2, and f3 representing the Hamming distance 113 is converted into a binary decision graph obtained by taking the respective negative operations.
  • the process of selecting the minimum value of the bit string representing the Hamming distance 113 is converted into the process of selecting the maximum value of the inverted value of the bit string representing the Hamming distance 113.
  • a binary decision graph for calculating the inverted values of the bit values f1, f2, and f3 may be prepared in advance.
  • the encoding unit 102 selects a bit string having the minimum Hamming distance 113 (the value indicated by the inverted bit string is the maximum).
  • the process of S312 will be described in detail later. When the process of S312 is completed, the series of processes illustrated in FIG.
  • the encoding unit 102 initializes the index i.
  • the index i is set to 1.
  • the encoding unit 102 determines whether or not the index i is equal to or less than the total number M of rows of the encoding matrix 112. If the index i is equal to or less than the total number M of rows, the process proceeds to S333. On the other hand, when the index i is not less than the total number of rows M, the series of processes shown in FIG.
  • the encoding unit 102 creates the logical function g. Then, the encoding unit 102 sets the logical function g to the logical function F.
  • the logical function g is a logical function corresponding to the bit string ri of the index i set in the process and having the bit string rj (that is, Rj1,..., Rj4) as an input.
  • the logical function g is a logical function that expresses a logical operation for extracting the lower triangular portion of the Hamming distance table to be selected.
  • the logical function g is expressed by a binary decision graph. A method for creating the logical function g will be described later with reference to FIG.
  • the encoding unit 102 determines whether or not the index l exceeds 0 (l> 0). If the index l exceeds 0, the process proceeds to S337. On the other hand, when the index l does not exceed 0 (that is, when the index l becomes 0), the process proceeds to S341 in FIG.
  • the encoding unit 102 creates a logical function T.
  • the logical function T is defined by (frl
  • the logical function T is expressed by a binary decision graph.
  • the bit value frl is an inversion of the bit value fl.
  • ri) is Rj1,... Obtained when the value of the bit string ri (that is, Ri1,..., Ri4) corresponding to the index i set in the process is input to the binary decision graph of the bit value fr1.
  • Rj4 represents a binary decision graph.
  • ri) ⁇ F represents the result of ANDing (frl
  • the logic function F is set to the logic function g representing the lower triangular part of the Hamming distance table. Therefore, the logical function T is expressed by a binary decision graph that outputs the bit value fr3 for the bit string described in the row corresponding to the bit string r3 of the Hamming distance table (but only in the lower triangular part).
  • the logical function F is updated. For example, when there is a bit string whose bit value fr3 is 1 in the row corresponding to the bit string r3, the logical function F is the lower triangular portion of the Hamming distance table, and the bit value fr3 is present in the row corresponding to the bit string r3. It is updated to a logical function expressing a bit string that becomes 1.
  • the logical function T calculates the bit value fr2 for the bit string in which the bit value fr3 is 1 among the bit strings described in the row corresponding to the bit string r3 of the Hamming distance table (but only in the lower triangular part). It is expressed by the binary decision graph to be output. As described above, the binary decision graph representing the logical function T is used for processing of extracting a bit string having a bit value frl of 1 positioned at a higher level.
  • the encoding unit 102 sets the logical function T to the logical function F.
  • the condition expressed by the current logical function T is added when the logical function T is created in the next processing of S337.
  • the encoding unit 102 updates the index l to a value obtained by subtracting one.
  • the encoding unit 102 outputs a bit string rj in which the logical function F is 1.
  • the logical function F is expressed by a binary decision graph having a bit string rj (that is, Rj1,..., Rj4) as an input. By searching for Rj1,..., Rj4 in which the leaf node of this binary decision graph is 1, a bit string rj in which the logical function F is 1 is obtained.
  • the encoding unit 102 updates the index i to a value obtained by adding 1.
  • the process of S342 proceeds to S332 of FIG.
  • a bit string rj that minimizes the Hamming distance between the bit strings ri and rj is obtained for each bit string ri.
  • the logical function g is a logical operation that represents a condition for limiting the operation target to the lower triangular portion of the Hamming distance table (that is, a logical operation that masks the upper triangular portion).
  • the encoding unit 102 creates a false logic function g. (S352) The encoding unit 102 initializes the index j to 1. (S353) The encoding unit 102 determines whether the index j is less than i (j ⁇ i). If the index j is less than i, the process proceeds to S354. On the other hand, if the index j is not less than i, the series of processes shown in FIG.
  • the encoding unit 102 creates a product term function gj corresponding to the bit string rj.
  • the logical function g corresponding to the bit string r3 is expressed as the following equation (1).
  • “ ⁇ ” represents an AND operation
  • “+” represents an OR operation.
  • Fr3 is expressed as in the following equation (2). Therefore, (fr3
  • the logical function T (T (fr3
  • r3) ⁇ F) is represented by the following formula (4).
  • Rj1, Rj2, Rj3, Rj4) (Rj4 ⁇ Rrj3 + Rrj4 ⁇ Rj3) ⁇ Rj2 ⁇ Rrj1 + Rj4 ⁇ Rrj3 ⁇ Rrj2 ⁇ Rj1 ...
  • r3) Rj4 + Rrj3 + Rrj2 + Rj1 ...
  • T Rj4, Rrj3, Rj2, Rrj1 + Rj4, Rrj3, Rrj2, Rj1 (4) (Fr3
  • the logical function g described in the above equation (1) is expressed by the binary decision graph Gg shown in FIG.
  • the encoding unit 102 creates a binary decision graph Gfg representing the logical function T by performing an AND operation on the binary decision graphs Gf and Gg, as shown in FIG.
  • the generation of the binary decision graph Gfg is performed according to the procedure shown in FIG. In order to avoid complication of the notation, the compression of the binary decision graph is partially omitted.
  • the binary decision graph shown in FIG. 27 represents a binary decision graph Gfg.
  • Rj4 When Rj4 is 1, (fr3
  • the contents of the conditional branch are sequentially examined until the leaf node appears, and the structure of the binary decision graph Gfg is determined.
  • a binary decision graph Gfg as shown in FIG. 28 is finally obtained.
  • a part of the compression of the binary decision graph is omitted, but it is desirable to determine the structure of the binary decision graph Gfg so that a shared node and a redundant node cannot actually be formed.
  • the number of operations of the logical functions (mainly g and T) expressed by the binary decision graph does not change regardless of the number of columns in the Hamming distance table. This is an advantageous point compared to the case where the Hamming distance is calculated by the number of rows ⁇ the number of columns of the Hamming distance table (or the area of the lower triangular matrix of the table). Therefore, it is possible to efficiently search for a bit string that minimizes the Hamming distance by using the representation by the binary decision graph.
  • the search processing load can be further reduced by using the compressed binary representation graph.

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)

Abstract

 符号化時の演算負荷を低減すること。 送信データ(31)を分割した複数の分割データ(31-A、…)と、分割データの組み合わせを表す複数の符号化パターン(32-1、…)を含む符号化情報(32)とが格納されたメモリ(11)を有するコンピュータ(10)に、符号化パターンに対応する複数の分割データを対象に、設定した演算(33)を実行して符号化データ(34-1、…)を生成し、符号化データ(34-1、…)をメモリ(11)に格納し、演算(33)の対象に対応する符号化パターンである第2パターンが表す分割データの組み合わせの一部(35)に、メモリ(11)に格納した符号化データ(34-2)に対応する符号化パターンである第1パターンが表す分割データの組み合わせが含まれる場合には、当該第1パターンに対応する符号化データ(34-2)を利用して演算(33)を実行する、処理を実行させるプログラムが提供される。

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は、ビット列r1を選択してもよい。
 但し、選択部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などを制御して符号化装置100の通信機能を実現する。復号部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はビット値0を出力する。その他の入力ビット列に対しても、図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、…、L12を組み合わせて表現することができる。なお、論理演算L1、L2、L3、L4、L6、L8、L10、L12、L13はXOR演算を表す。また、論理演算L5、L7、L9、L11はAND演算を表す。
 例えば、XOR演算を表す論理演算L1は、図19に例示した二分決定グラフで表現することができる。同様に、論理演算L1、…、L12を二分決定グラフで表現し、全ての二分決定グラフを統合した上で圧縮すれば、ビット値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 (9)

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

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201380080051.3A CN105594129A (zh) 2013-10-03 2013-10-03 程序、编码装置以及编码方法
PCT/JP2013/076907 WO2015049756A1 (ja) 2013-10-03 2013-10-03 プログラム、符号化装置、及び符号化方法
JP2015540315A JP6197876B2 (ja) 2013-10-03 2013-10-03 プログラム、符号化装置、及び符号化方法
EP13895088.6A EP3054600A4 (en) 2013-10-03 2013-10-03 PROGRAM, CODING DEVICE AND CODING METHOD
US15/080,760 US9876608B2 (en) 2013-10-03 2016-03-25 Encoding apparatus and encoding method

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/080,760 Continuation US9876608B2 (en) 2013-10-03 2016-03-25 Encoding apparatus and encoding method

Publications (1)

Publication Number Publication Date
WO2015049756A1 true WO2015049756A1 (ja) 2015-04-09

Family

ID=52778367

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/076907 WO2015049756A1 (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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022039095A1 (ja) * 2020-08-17 2022-02-24 株式会社Gdi 復元端末、通信システム、復元方法、通信方法、及びプログラム
JP7488798B2 (ja) 2017-06-26 2024-05-22 タリン,スティーヴン 大きなデータをより小さな表現に変換する、およびより小さな表現を当初の大きなデータに戻して再変換するためのシステムおよび方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10727872B2 (en) * 2018-01-10 2020-07-28 Western Digital Technologies, Inc. Encoding and decoding of hamming distance-based binary representations of numbers
CN113704139A (zh) * 2021-08-24 2021-11-26 复旦大学 一种用于存内计算的数据编码方法和存内计算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004274709A (ja) * 2002-09-30 2004-09-30 Mitsubishi Electric Research Laboratories Inc 汎用パリティチェック行列を変換する方法
JP2006067072A (ja) * 2004-08-25 2006-03-09 Fujitsu Ltd エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP4318317B2 (ja) 2006-06-12 2009-08-19 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
JP4476898B2 (ja) * 2005-08-16 2010-06-09 Kddi株式会社 通信システム、通信端末装置及びデータ要求方法
JP5076539B2 (ja) * 2007-02-16 2012-11-21 富士通株式会社 符号化装置および符号化方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3474794B2 (ja) 1999-02-03 2003-12-08 日本電信電話株式会社 符号変換回路及び符号変換多重化回路
JP4696008B2 (ja) 2006-03-20 2011-06-08 富士通株式会社 Ip送信装置およびip送信方法
CN100536350C (zh) * 2007-02-08 2009-09-02 华为技术有限公司 一种实现编码的电路和方法
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004274709A (ja) * 2002-09-30 2004-09-30 Mitsubishi Electric Research Laboratories Inc 汎用パリティチェック行列を変換する方法
JP2006067072A (ja) * 2004-08-25 2006-03-09 Fujitsu Ltd エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP4476898B2 (ja) * 2005-08-16 2010-06-09 Kddi株式会社 通信システム、通信端末装置及びデータ要求方法
JP4318317B2 (ja) 2006-06-12 2009-08-19 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
JP5076539B2 (ja) * 2007-02-16 2012-11-21 富士通株式会社 符号化装置および符号化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HIROAKI KAMEYAMA ET AL.: "Erasure Codes with Small Overhead Factor and their data transfer systems", IEICE TECHNICAL REPORT. CS , COMMUNICATION SYSTEMS, vol. 109, no. 190, 3 September 2009 (2009-09-03), pages 47 - 52, XP031131830 *
See also references of EP3054600A4

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7488798B2 (ja) 2017-06-26 2024-05-22 タリン,スティーヴン 大きなデータをより小さな表現に変換する、およびより小さな表現を当初の大きなデータに戻して再変換するためのシステムおよび方法
WO2022039095A1 (ja) * 2020-08-17 2022-02-24 株式会社Gdi 復元端末、通信システム、復元方法、通信方法、及びプログラム
JPWO2022039095A1 (ja) * 2020-08-17 2022-02-24
JP7126303B2 (ja) 2020-08-17 2022-08-26 株式会社ポリテック 復元端末、通信システム、復元方法、通信方法、及びプログラム

Also Published As

Publication number Publication date
JP6197876B2 (ja) 2017-09-20
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

Similar Documents

Publication Publication Date Title
JP5675876B2 (ja) 連鎖的暗号化反応の系統的記号化および復号化
US7711068B2 (en) Multi-stage code generator and decoder for communication systems
JP5329239B2 (ja) 通信システムのための多体ベース符号の生成器および復号化器
JP6197876B2 (ja) プログラム、符号化装置、及び符号化方法
KR20120058556A (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
KR20060116022A (ko) 패리티 체크 행렬 생성 방법, 데이터 전송 시스템, 부호화장치, 복호 장치 및 패리티 체크 행렬 생성 프로그램
CN103650399A (zh) 纠正数据单元的自适应生成
US20130254620A1 (en) Improved error correction coding for recovering multiple packets in a group in view of limited bandwidth
TWI580197B (zh) 低密度奇偶檢查碼之編解碼方法
JP5600774B1 (ja) データ伝送装置及び方法
US8386877B2 (en) Communication system, transmitter, error correcting code retransmitting method, and communication program
JP6064593B2 (ja) プログラム、情報処理装置、及び通信方法
Zhao et al. Scale-free Luby transform codes
KR102021872B1 (ko) 인코딩 지연 시간이 개선된 랩터q 인코딩 장치 및 방법
JP2011199647A (ja) 誤り訂正符号化装置及び方法及びプログラム及び誤り訂正復号化装置及び方法及びプログラム
Zhang et al. Distributed LT Codes on Multi-hop Networks
CN103138878B (zh) 通过网络进行数据传输的方法和装置
Zhang Practical LDGM-based Multiple Description Coding
Chunping et al. Real-time Error Control Research Over Internet Communications
JP2015041863A (ja) 伝送システム、伝送方法及び伝送プログラム
JP2010041677A (ja) 復号装置、復号方法および復号プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13895088

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015540315

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2013895088

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2013895088

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE