KR20100064180A - Maximum likelihood decoding apparatus and method - Google Patents

Maximum likelihood decoding apparatus and method Download PDF

Info

Publication number
KR20100064180A
KR20100064180A KR1020080122630A KR20080122630A KR20100064180A KR 20100064180 A KR20100064180 A KR 20100064180A KR 1020080122630 A KR1020080122630 A KR 1020080122630A KR 20080122630 A KR20080122630 A KR 20080122630A KR 20100064180 A KR20100064180 A KR 20100064180A
Authority
KR
South Korea
Prior art keywords
matrix
score
row
blocked
maximum
Prior art date
Application number
KR1020080122630A
Other languages
Korean (ko)
Other versions
KR101545565B1 (en
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 KR1020080122630A priority Critical patent/KR101545565B1/en
Publication of KR20100064180A publication Critical patent/KR20100064180A/en
Application granted granted Critical
Publication of KR101545565B1 publication Critical patent/KR101545565B1/en

Links

Images

Classifications

    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

PURPOSE: A maximum similarity decryption apparatus and a method are provided to increase a transferring speed of a data by reducing a time to be required in a process of decoding a raptor code through the maximum similarity decryption. CONSTITUTION: A blocked matrix U generator(1010) generates the blocked matrix U by implementing maximum score search about the matrix of a MxL size including a raptor code. A modified matrix generator(1020) generates the modified matrix including only one on each row and column by implementing a Gaussian elimination to the blocked matrix U. A vector calculator(1030) calculates the vector of length L using the vector of length R with the modified matrix. The blocked matrix U generator generates an initial matrix by only storing a location of '1' in each row and column of the matrix of the MxL size.

Description

최대 유사성 복호화 장치 및 방법{Maximum Likelihood Decoding Apparatus and Method}Maximum Likelihood Decoding Apparatus and Method {Maximum Likelihood Decoding Apparatus and Method}

본 발명은 최대 유사성 복호화 장치 및 방법에 관한 것이다. 더욱 상세하게는, 3GPP(The 3rd Generation Partnership Project) MBMS(Multimedia Broadcast and Multicast Service)에 채택된 오류 정정 부호인 랩터 코드(Raptor Code)를 복호화하는 데 있어서, 최대 유사성 복호화(Maximum Likelihood Decoding)를 이용하면서도 복호화에 요구되는 시간을 줄일 수 있는 복호화하는 장치 및 방법에 관한 것이다.The present invention relates to a maximum similarity decoding apparatus and method. More specifically, maximum likelihood decoding is used in decoding the Raptor Code, which is an error correction code adopted in The 3rd Generation Partnership Project (3GPP) Multimedia Broadcast and Multicast Service (MBMS). The present invention relates to an apparatus and method for decoding that can reduce the time required for decoding.

3GPP MBMS에 채택된 오류 정정 부호인 랩터 코드(Raptor Code)는 최대 유사성 복호화(Maximum Likelihood Decoding) 방법에 의해 효율적으로 복호화될 수 있다. 여기서, 최대 유사성 복호화란 원래의 정보를 복원하기 위한 최상의 방법을 의미하는 것으로, 복호화할 때 요구되는 시간과 공간이 매우 적기 때문에 효율적으로랩터 코드를 효율적으로 복호화할 수 있다.Raptor code, which is an error correction code adopted in 3GPP MBMS, can be efficiently decoded by the maximum likelihood decoding method. Here, the maximum similarity decoding means the best method for restoring original information. Since the time and space required for decoding are very small, the raptor code can be efficiently decoded.

3GPP TS 26.346 V7.4.0,"Technical specification group services and system aspects;multimedia broadcast/multicast service;protocols and codecs, June 2007"는 3GPP 표준 문서로서, 랩터 코드(Raptor Code)에 대해 설명하고 있다. 이 표준 문서에서 제안하고 있는 최대 유사성 복호화(Maximum Likelihood Decoding) 방법은 4개의 페이즈(Phase)로 나누어져 있다. 이 표준에서 제안하는 4 개의 페이즈 중에서 첫 번째 페이즈가 가장 핵심적인 부분이라고 할 수 있으며, 첫 번째 페이즈와 두 번째 페이즈에서 소요되는 시간이 전체 복호화 시간의 95% 이상을 차지하는데, 두 개의 페이즈에서 필요 이상으로 많은 시간을 필요로 하여 복호화 시간을 크게 지연시키는 문제점이 있다.3GPP TS 26.346 V7.4.0, "Technical specification group services and system aspects; multimedia broadcast / multicast services; protocols and codecs, June 2007", is a 3GPP standard document that describes the Raptor Code. The maximum likelihood decoding method proposed in this standard document is divided into four phases. Of the four phases proposed by this standard, the first phase is the most important part, and the time spent in the first and second phases accounts for more than 95% of the total decoding time, which is required in two phases. As described above, there is a problem of requiring a large amount of time and greatly delaying the decoding time.

전술한 문제점을 해결하기 위해 본 발명은, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄이는 데 주된 목적이 있다.In order to solve the above problems, the present invention can reduce the time required when decoding the Raptor code using the maximum similarity decoding, thereby increasing the data transmission speed and reducing the power consumption required for decoding. There is a main purpose.

전술한 목적을 달성하기 위해 본 발명은, 랩터 코드의 최대 유사성 복호화 장치에 있어서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기; 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기; 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기를 포함하는 것을 특징으로 하 는 최대 유사성 복호화 장치를 제공한다.According to an aspect of the present invention, there is provided an apparatus for maximum similarity decoding of a raptor code, comprising: a blocked matrix U generator for performing a maximum score search on an MxL sized matrix having a raptor code to generate a blocked matrix U; A modified matrix generator for performing a Gaussian elimination method on the blocked matrix U to generate a modified matrix having only one '1' in each row and each column; And a vector calculator for calculating a vector having a length L using the transform matrix and the vector having a length r.

또한, 본 발명의 다른 목적에 의하면, 랩터 코드의 최대 유사성 복호화 방법에 있어서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성 단계; 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성 단계; 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산 단계를 포함하는 것을 특징으로 하는 최대 유사성 복호화 방법을 제공한다.According to another object of the present invention, there is provided a method of maximum similarity decoding of a raptor code, the method comprising: generating a blocked matrix U by performing a maximum score search on an MxL sized matrix having a raptor code; A modified matrix generation step of performing a Gaussian elimination method on the blocked matrix U to generate a modified matrix having only one '1' in each row and each column; And a vector calculation step of calculating a vector having a length L using the transform matrix and the vector having a length r.

이상에서 설명한 바와 같이 본 발명에 의하면, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄일 수 있다.As described above, according to the present invention, since the time required for decoding the Raptor code using the maximum similarity decoding can be reduced, the data transmission speed can be increased, and the power consumption required for decoding can be reduced. have.

이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Hereinafter, some embodiments of the present invention will be described in detail through exemplary drawings. In adding reference numerals to the components of each drawing, it should be noted that the same reference numerals are used to refer to the same components as much as possible even if displayed on different drawings. In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear.

또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.In addition, in describing the component of this invention, terms, such as 1st, 2nd, A, B, (a), (b), can be used. These terms are only for distinguishing the components from other components, and the nature, order or order of the components are not limited by the terms. If a component is described as being "connected", "coupled" or "connected" to another component, that component may be directly connected or connected to that other component, but between components It will be understood that may be "connected", "coupled" or "connected".

A. 3GPP 표준에 따른 최대 유사성 복호화 방법A. Maximum Similarity Decoding According to 3GPP Standard

3GPP(The 3rd Generation Partnership Project) 표준에 따라 랩터 코드(Raptor Code)를 최대 유사성 복호화(Maximum Likelihood Decoding)하는 방법은 'Ac=r'이라는 방정식의 해를 구하는 것이다. 여기서, A는 MxL(단, M ≥ L) 매트릭스(Matrix)를 나타내고, c는 길이가 L인 벡터, r는 길이가 M인 벡터이다. A와 r은 이미 알고 있으며, 이들을 이용하여 위의 방정식이 유효하게 되는 c를 찾는 것이 최대 유사성 복호화의 문제라고 할 수 있다.According to The 3rd Generation Partnership Project (3GPP) standard, the maximum likelihood decoding of Raptor Code is to solve the equation 'Ac = r'. Here, A represents an MxL (where M? L) matrix, c is a vector of length L, and r is a vector of length M. A and r are already known, and it can be said that the problem of maximum similarity decoding is to find c for which the above equation is valid.

매트릭스 A의 첫 번째 L 행들(Rows)을 대각선화하면(Diagonalize), c를 구할 수 있다. 3GPP 표준에서 제안하는 최대 유사성 복호화 방법은 매트릭스 A의 첫 번째 L 행들을 효율적으로 대각선화하는 방법을 설명한다.Diagonalizing the first L rows of matrix A yields c. The maximum similarity decoding method proposed by the 3GPP standard describes a method of efficiently diagonalizing the first L rows of the matrix A.

도 1은 매트릭스 A에 대해 첫 번째 페이즈를 수행한 결과인 MxL 매트릭스를 나타낸 예시도이다.1 is an exemplary diagram illustrating an MxL matrix that is a result of performing a first phase on matrix A.

우선, 3GPP 표준에 따라 첫 번째 페이즈(Phase)를 수행하면, 원래의 매트릭스 A는 도 1에 도시한 바와 같은 형태의 MxL 매트릭스로 변하게 된다. 도 1에서, I 는 단위 행렬(Identity Matrix)를 나타내고, I 행렬 아래의 'all zero'는 모두 원소가 '0'인 매트릭스를 나타낸다. 오른쪽의 두 개의 서브매트릭스(Submatrices) U1, U2는 각각 왼쪽 서브매트릭스 I 및 all zeros를 생성하면서 얻어진 나머지 매트릭스들이다. 기본 행 연산(Elementary Row Operations)과 컬럼 교환(Column Exchanges)를 통하여 이런 형태의 매트릭스를 얻을 수 있다. 만일, 서브매트릭스 U1과 U2가 u개의 열을 차지한다면, 두 개의 서브매트릭스 U1과 U2가 차지하고 있는 Mxu 서브매트릭스를 서브매트릭스 U라고 가정한다.First, when the first phase is performed according to the 3GPP standard, the original matrix A is changed into an MxL matrix as shown in FIG. 1. In FIG. 1, I represents an identity matrix, and all 'all zero' below the I matrix represent a matrix having elements of '0'. The two submatrices U1 and U2 on the right are the remaining matrices obtained by creating the left submatrix I and all zeros, respectively. You can get this type of matrix through elementary row operations and column exchanges. If the submatrices U1 and U2 occupy u columns, it is assumed that the Mxu submatrix occupied by the two submatrices U1 and U2 is the submatrix U.

도 2는 MxL 매트릭스에 대해 두 번째 페이즈를 수행한 결과인 LxL 매트릭스를 나타낸 예시도이다.2 is an exemplary diagram illustrating an LxL matrix that is a result of performing a second phase on an MxL matrix.

3GPP 표준의 두 번째 페이즈는 서브매트릭스 U2를 일반적인 가우스 소거법(Gaussian Elimination)을 통하여 마지막 M-L 행을 지운 후, 단위 행렬로 변환시킨다. 두 번째 페이즈가 수행되면, 도 1에 도시한 형태의 매트릭스는 도 2에 도시한 바와 같은 LxL 매트릭스로 변형된다.The second phase of the 3GPP standard transforms the submatrix U2 into an identity matrix after erasing the last M-L row through a general Gaussian elimination. When the second phase is performed, the matrix of the form shown in FIG. 1 is transformed into an LxL matrix as shown in FIG.

3GPP 표준의 세 번째 페이즈 및 네 번째 페이즈는 오른쪽 아랫부분의 I 매트릭스를 이용하여 U1을 모든 원소가 '0'인 매트릭스로 변환시킨다. 이러한 변환이 완료되면 원래의 매트릭스 A는 단위 행렬로 변환되며, 결과적으로 c를 구할 수 있다. The third and fourth phases of the 3GPP standard use the I matrix in the lower right corner to convert U1 into a matrix with all elements '0'. Once this conversion is complete, the original matrix A is converted to an identity matrix, resulting in c.

B. 3GPP 표준에 따른 최대 유사성 복호화 방법의 문제점B. Problems of Maximum Similarity Decoding According to 3GPP Standard

3GPP 표준에서 제안하는 최대 유사성 복호화 방법에 따르면, 첫 번째 페이즈 에서 최대 컴포넌트 탐색(MCS: Maximum Component Search)을 실행해야 하는데, 이 작업은 상당한 시간을 소요한다. 또한, 두 번째 페이즈에서 가우스 소거법(Gaussian Elimination)을 이용하여 서브매트릭스 U2를 단위 행렬로 변형하는 과정에서, 구현을 최적화할 수 있는 여지가 있다. 마지막으로, 원래의 매트릭스 A를 단위 행렬로 변형시켜 벡터 c를 찾는데, 이 방법은 시간적인 관점에서 벡터 c를 찾기 위한 최상의 방법이 아니다.According to the maximum similarity decoding method proposed by the 3GPP standard, the maximum component search (MCS) must be executed in the first phase, which takes a considerable time. In addition, in the process of transforming the submatrix U2 into an identity matrix using Gaussian elimination in the second phase, there is room for optimizing the implementation. Finally, the original matrix A is transformed into an identity matrix to find the vector c, which is not the best way to find the vector c in terms of time.

C. 본 발명의 일 실시예에 따른 최대 유사성 복호화 방법C. Maximum similarity decoding method according to an embodiment of the present invention

본 발명에서 제안하는 랩터 코드의 최대 유사성 복호화 방법은 다음과 같은 5 개의 사항을 기반으로 한다.The maximum similarity decoding method of the raptor code proposed in the present invention is based on the following five points.

1. 매트릭스 A는 대체로 '1'의 개수가 상당히 희박한(Sparse) 성질이 있으므로, 매트릭스 자체를 이용하여 복호화하지 않고, 각각의 행/열에 존재하는 '1'의 위치만을 저장하여 복호화한다. 이를 통하여 복호화할 때 필요한 공간의 크기를 상당히 줄일 수 있을 뿐만 아니라, 복호화하는 과정에서 매우 자주 있는 특정 조건을 만족하는 행을 탐색하는 데에 걸리는 시간을 상당히 줄일 수 있기 때문에, 전체적인 복호화 시간을 크게 향상시킬 수 있다.1. Since matrix A has a sparse property of the number of '1's, the matrix A does not decode using the matrix itself, and stores and decodes only the position of' 1 'existing in each row / column. This not only significantly reduces the amount of space required for decoding, but also significantly reduces the time required to search for rows that satisfy certain conditions, which are very frequent during the decoding process, greatly improving the overall decoding time. You can.

도 3은 본 발명의 일 실시예에 따라 표현된 매트릭스 A를 나타낸 예시도이다.3 is an exemplary view showing a matrix A expressed according to an embodiment of the present invention.

도 3을 참조하면, Ac=r 방정식에서 매트릭스 A를 도 3에 도시한 바와 같이, Cidx[1], …, Cidx[L], Ridx[1], …, Ridx[M]로 표현할 수 있다. 여기서 Cidx[i]는 i 번째 열에 있는 '1'의 행의 위치를 나타내며, Ridx[j]는 j 번째 행에 있는 '1'의 열의 위치를 나타낸다. 추가로, Cidx[i].Deg는 i열의 '1'의 개수를 나타내며, Cidx[i].Edge는 i열에 있는 모든 '1'의 행의 위치를 나타내며, Cidx[i].Edge[k]는 i열의 k번째 '1'의 행의 위치를 나타낸다. Ridx[j].Deg는 j행의 '1'의 개수를 나타내며, Ridx[j].iDeg는 복호화를 시작하기 전의 j행의 '1'의 개수를 나타내며, Ridx[j].Edge는 j행에 있는 모든 '1'의 열의 위치를 나타내며, Ridx[j].Edge[l]는 j행의 l 번째 '1'의 열의 위치를 나타내며, Ridx[j].score는 j행의 스코어(Score)에 대한 정보를 나타낸다. 스코어에 대해서는 후술하는 과정에서 설명한다.Referring to FIG. 3, as shown in FIG. 3, the matrix A in the Ac = r equation, Cidx [1],. , Cidx [L], Ridx [1],... , Ridx [M]. Where Cidx [i] represents the position of the row of '1' in the i th column, and Ridx [j] represents the position of the column of '1' in the j th row. In addition, Cidx [i] .Deg represents the number of '1's in column i, Cidx [i] .Edge represents the position of every' 1 'row in column i, and Cidx [i] .Edge [k] Denotes the position of the k th '1' row of the i column. Ridx [j] .Deg represents the number of '1's in j rows, Ridx [j] .iDeg represents the number of' 1's in j rows before decoding starts, and Ridx [j] .Edge represents j rows Ridx [j] .Edge [l] represents the position of the lth '1' column in row j, and Ridx [j] .score represents the score of row j. Represents information about. A score is demonstrated in the process mentioned later.

2. 최대 유사성 복호화의 목적은 벡터 c를 구하는 것이다. 이를 위해 3GPP 표준과 같이, 매트릭스 A를 단위 행렬로 변환하여 c를 구할 수도 있지만, 이 경우 복호화에 많은 시간이 소요된다. 본 발명의 일 실시예에서는 매트릭스 A를 단위 행렬로 변형하지 않고, 각각의 행/열에 정확히 하나의 '1'만이 존재하는 매트릭스로 변형하는 것이다. 이와 같이 매트릭스가 변형되어도 벡터 c를 구할 수 있다.2. The purpose of maximum similarity decoding is to find the vector c. To this end, as in the 3GPP standard, matrix A may be converted into an identity matrix to obtain c, but in this case, decoding takes much time. In an embodiment of the present invention, the matrix A is transformed into a matrix in which only one '1' exists in each row / column. In this manner, even when the matrix is deformed, the vector c can be obtained.

3. Ridx/Cidx를 사용하여 탐색하면 매트릭스 상에서 탐색하는 것보다 많은 시간을 줄일 수 있다. 하지만, Ridx/Cidx에서 삭제가 있을 경우 정렬된 상태의 Ridx/Cidx를 유지하려면 많은 시간이 소요된다. 따라서, Cidx.Eidx와 Ridx.iDeg를 사용한다. Cidx.Eidx는 수학식 1과 같이 정의되며, 복호화를 시작하기 전에 수학식 1과 같이 미리 만들어 둔다.3. Searching with Ridx / Cidx can save you more time than searching on a matrix. However, if there are deletions in Ridx / Cidx, it takes a lot of time to keep the Ridx / Cidx aligned. Therefore, we use Cidx.Eidx and Ridx.iDeg. Cidx.Eidx is defined as in Equation 1, and is made in advance as in Equation 1 before starting decoding.

Cidx[i].Edge[j]=k, Ridx[k].Edge[x]=i → Cidx[i].Eidx[j]=xCidx [i] .Edge [j] = k, Ridx [k] .Edge [x] = i → Cidx [i] .Eidx [j] = x

복호화를 시작하고 Cidx.Eidx를 이용하면, Ridx[k].Edge를 탐색하지 않고 수학식 2와 같이, 상수 시간 안에 행의 인덱스(Index)를 삭제할 수 있다.When decoding starts and Cidx.Eidx is used, an index of a row can be deleted within a constant time as shown in Equation 2 without searching Ridx [k] .Edge.

Cidx[i].Edge[j]=k, Cidx[i].Eidx[j]=x → Ridx[k].Edge[x]=-1Cidx [i] .Edge [j] = k, Cidx [i] .Eidx [j] = x → Ridx [k] .Edge [x] =-1

도 4는 본 발명의 일 실시예에 따라 복호화가 진행된 상태의 임의의 Ridx[k]를 나타낸 예시도이다.4 is an exemplary diagram illustrating an arbitrary Ridx [k] in a state where decoding is performed according to an embodiment of the present invention.

도 4를 참조하면, Ridx[k].Edge에 '-1'이 있는데, 이는 삭제된 인덱스이고, Ridx[k].Deg가 Ridx[k].iDeg보다 작은 것을 알 수 있다. Ridx.Edge를 탐색할 때는 iDeg만큼 탐색하고, '-1'로 해당 인덱스가 유효한지 여부를 검사하여 원하는 인덱스를 찾을 수 있다. 인덱스에서의 탐색 시간은 매트릭스에서의 탐색 시간보다 훨씬 작고, 삭제 시간도 O(1)에 할 수 있기 때문에, 프로그램의 속도를 크게 향상시킬 수 있다. 이 방법은 삭제만 일어나는 부분에서만 사용할 수 있으며, 매트릭스 U에서는 다른 방법을 사용해야 한다.Referring to FIG. 4, there is '-1' in Ridx [k] .Edge, which is a deleted index, and it can be seen that Ridx [k] .Deg is smaller than Ridx [k] .iDeg. When searching Ridx.Edge, you can search as much as iDeg and find the desired index by checking whether the index is valid with '-1'. Since the search time in the index is much smaller than the search time in the matrix, and the deletion time can be made to O (1), the speed of the program can be greatly improved. This method can only be used where the deletion only occurs, and you must use a different method for matrix U.

4. 최대 컴포넌트 탐색 대신 최대 스코어 탐색(LSS: Largest Score Search)를 실행한다. 기존의 최대 컴포넌트 탐색은 매트릭스 U의 크기를 줄이지만, 탐색에 너무 많은 시간이 소요되어, 결과적으로 전체 프로그램의 속도를 저하한다. 최대 스코어 탐색 방법은 최대 컴포넌트 탐색 방법보다 매트릭스 U의 크기를 작게 줄이지만, 디그리(Degree)가 '2'인 행을 탐색하는 속도를 급격히 향상시키므로, 전체 프로그램 속도를 향상시킨다. 최대 스코어 탐색은 크게 세 개의 파트(Part)로 나누어 구현된다.4. Run Largest Score Search (LSS) instead of Maximum Component Search. The existing maximum component search reduces the size of the matrix U, but takes too much time to search, and consequently slows down the overall program. The maximum score search method reduces the size of the matrix U smaller than the maximum component search method, but dramatically improves the speed of searching for rows having a degree of '2', thereby improving the overall program speed. The maximum score search is implemented in three parts.

(1) 파트 1: 초기 스코어(Initial Score)(1) Part 1: Initial Score

파트 1에서는 최대 스코어 탐색을 위한 전 처리 단계로서, 복호화를 시작하기 전에 모든 행의 스코어의 값을 계산하고, 디그리가 '2'인 행에 대하여 스코어를 키(Key)로 가지는 스코어 테이블(Score-Table)을 구성한다.In Part 1, as a preprocessing step for searching for the maximum score, a score table (Score-) that calculates the values of the scores of all the rows before starting decryption, and has the score as the key for the row whose degree is '2'. Table).

1a. 초기 상태(Initial State)에서 각 행의 스코어는 행의 인덱스에 있는 열의 디그리의 합이다.1a. In the initial state, the score for each row is the sum of the degrees of the column at the index of the row.

도 5는 초기 매트릭스의 각 행의 스코어의 값을 계산하는 과정을 설명하기 위한 예시도이다.5 is an exemplary diagram for explaining a process of calculating a value of a score of each row of an initial matrix.

도 5를 참조하면, Ridx[2].Deg=3이고, Ridx[2].Edge[0]=1이고, Ridx[2].Edge[1]=4이고 , Ridx[2].Edge[2]=8이므로, 도 5에 도시한 바와 같은 초기 매트릭스의 세 번째 행의 스코어의 값은 수학식 3에 나타낸 바와 같이, 세 번째 행의 인덱스에 있는 열의 디그리의 합으로 계산된다. 5, Ridx [2] .Deg = 3, Ridx [2] .Edge [0] = 1, Ridx [2] .Edge [1] = 4, Ridx [2] .Edge [2. ] = 8, the value of the score of the third row of the initial matrix as shown in FIG. 5 is calculated as the sum of the degrees of the column at the index of the third row, as shown in equation (3).

Ridx[2].score = Cidx[1].Deg + Cidx[4].Deg + Cidx[8].DegRidx [2] .score = Cidx [1] .Deg + Cidx [4] .Deg + Cidx [8] .Deg

1b. 행의 디그리가 '2'일 때, Ridx.score를 키로 사용하여 스코어 테이블에 행의 인덱스를 삽입한다. 그리고 전체에서 디그리가 '2'인 행 중에서 가장 큰 스코 어를 최대 스코어(Max Score)에 저장한다. 1b. When the row's degree is '2', insert the row's index into the score table using Ridx.score as the key. Then, the largest score among the rows with a degree of '2' is stored in the maximum score.

도 6은 본 발명의 일 실시예에 따른 스코어 테이블을 나타낸 예시도이다.6 is an exemplary view showing a score table according to an embodiment of the present invention.

도 6을 참조하면, 제일 첫 번째 줄의 13(2, 2)에서 '13'은 스코어 또는 키를 뜻하며, 첫 번째 '2'는 행 디그리가 '2'인 행의 수이며, 두 번째 '2'는 첫 번째 줄에 속한 행의 개수이다. 처음으로 스코어 테이블을 생성할 때에는 가로 안의 두 숫자 d1, d2가 같은 값을 가진다. '31'과 '78'은 스코어를 '13'으로 가지는 행과 디그리가 '2'인 행의 인덱스이다. 도 6에서 최대 스코어는 '30'이다.Referring to FIG. 6, in 13 (2, 2) of the first row, '13' means score or key, the first '2' is the number of rows having the row degree '2', and the second '2' 'Is the number of rows in the first line. When generating the score table for the first time, two numbers d1 and d2 in the horizontal direction have the same value. '31' and '78' are the indices of the row having a score of '13' and the row whose degree is '2'. In FIG. 6 the maximum score is '30'.

(2) 파트 2: Ridx.score & 스코어 테이블 업데이트(Score-Table Update)(2) Part 2: Ridx.score & Score-Table Update

첫 번째 페이즈에서 디그리가 '2'인 행을 선택하여 처리할 때, 처리하기 전 디그리가 '2'였던 행들 중 많은 행들의 개수가 처리 후 디그리가 감소한다. 또한, 처리하기 전 디그리가 '2'보다 컸던 행들 중 많은 수가 디그리가 감소하여 디그리가 '2'가 된다. 이 때문에 스코어 테이블에 있는 행의 인덱스 중에는 Ridx[i].Deg가 '2'가 아닌 인덱스가 발생한다.In the first phase, when selecting and processing a row whose degree is '2', the number of rows among the rows whose degree was '2' before processing decreases after processing. Also, many of the rows whose degree was greater than '2' prior to processing reduced the degree, resulting in the degree being '2'. For this reason, an index whose Ridx [i] .Deg is not '2' is generated among the indexes of the rows in the score table.

따라서, 스코어 테이블에 있는 모든 인덱스에 해당하는 행의 디그리가 '2'가 되도록 유지하려면, 삽입 및 삭제에 많은 시간이 소요되는 문제점이 있다. 이 문제점을 해결하기 위해 업데이트할 때, 디그리가 '2'에서 '1'로 변하는 행에 대하여 스코어 테이블에서 인덱스를 삭제하지 않는 대신, 최대 스코어 탐색을 수행할 때, Ridx[i].Deg (여기서, i는 스코어 테이블에 있는 인덱스)가 '2'인지를 확인하면, 스코어 테이블을 유지하는 데 소요되는 시간을 크게 줄일 수 있다.Therefore, in order to keep the degree of rows corresponding to all the indexes in the score table to be '2', there is a problem in that inserting and deleting takes a long time. When updating to solve this problem, when doing the maximum score search instead of deleting the index from the score table for the rows that change from '2' to '1', Ridx [i] .Deg (where , i is an index (2) in the score table) can significantly reduce the time required to maintain the score table.

첫 번째 페이즈에서 i번째 행의 디그리가 감소하였다고 가정하고, 디그리가 감소된 행에 대해 Ridx[i].score를 업데이트한다. Ridx[i].Deg가 감소하여 '2'가 되었을 때, Ridx[i].score를 키로 사용하여 i를 스코어 테이블에 삽입한다. 이때, i는 스코어 테이블에서 배열의 끝에 삽입하여 삽입시간을 줄인다. 이때, 스코어 테이블의 'd1'과 'd2'가 '1' 씩 증가한다. 또한, Ridx[i].score와 최대 스코어를 비교하여 Ridx[i].score가 더 크면, 최대 스코어를 업데이트한다. Ridx[i].Deg가 감소하여 '1'이 되었을 때. Ridx[i].score를 키로 사용하여 스코어 테이블의 'd1'을 '1' 감소시킨다.Assuming that the degree of the i-th row has decreased in the first phase, update Ridx [i] .score for the row that has decreased. When Ridx [i] .Deg decreases to '2', i is inserted into the score table using Ridx [i] .score as the key. In this case, i is inserted into the end of the array in the score table to reduce the insertion time. At this time, 'd1' and 'd2' of the score table increase by '1'. Also, compare the maximum score with Ridx [i] .score and update the maximum score if Ridx [i] .score is larger. When Ridx [i] .Deg decreases to '1'. Decrease 'd1' in the score table by '1' using Ridx [i] .score as the key.

도 7은 본 발명의 일 실시예에 따라 업데이트된 스코어 테이블을 나타낸 예시도이다.7 is an exemplary view showing an updated score table according to an embodiment of the present invention.

도 7을 참조하면, 스코어 테이블에는 삭제가 일어나지 않는다. 더 이상 디그리가 '2'가 아닌 행 인덱스(Row Index)에는 'X' 표시를 하였지만, 실제 구현할 때에는 아무 표시도 하지 않는다. 그리고 스코어 테이블에 새롭게 추가된 인덱스(이 인덱스는 배열의 가장 뒤에 저장된다.)는 이전에 있던 인덱스보다 유효할(디그리가 '2'일) 확률이 높다. 이를 어떻게 이용하는지는 후술하는 파트 3에서 설명한다.Referring to FIG. 7, no deletion occurs in the score table. We no longer have a 'X' in the row index where the degree is not '2', but we don't do anything in the actual implementation. In addition, the newly added index (which is stored at the end of the array) in the score table is more likely to be valid (preferably '2') than the previous index. How to use this is described in Part 3 which will be described later.

(3) 파트 3: 최대 스코어 탐색(3) Part 3: Exploring the Maximum Score

최대 스코어 탐색에서는 U 열의 수를 줄여 속도를 빠르게 하기 위해, 디그리가 '2'인 행을 선택할 때, 스코어가 가장 큰 행을 선택한다. 이때, 최대 스코어의 값과 스코어 테이블을 이용하면, 이른 시간에 스코어가 가장 큰 행을 찾을 수 있다. 단, 최대 스코어 탐색에서 가장 주위 할 점은 첫 번째 페이즈가 진행되면서 업데이트된 최대 스코어에 해당하는 행의 디그리가 감소하는 경우가 있다는 것이다. 이때, 최대 스코어는 '디그리가 2인 행들 중에서 가장 큰 스코어 값'과 일치하지 않는다. 하지만, 최대 스코어는 '디그리가 2인 행들 중에서 가장 큰 스코어 값'보다 항상 크거나 같으므로, 도 8에 도시한 바와 같이, 스코어 테이블을 이용하여 '디그리가 2인 행들 중에서 가장 큰 스코어 값'을 찾을 수 있다.In the maximum score search, to speed up by reducing the number of U columns, when selecting a row with a degree of '2', the row with the highest score is selected. At this time, by using the value of the maximum score and the score table, it is possible to find the row having the largest score at an early time. However, the closest thing to look for in the maximum score search is that the degree of the row corresponding to the updated maximum score decreases as the first phase progresses. In this case, the maximum score does not coincide with the 'largest score value among the rows having the degree 2'. However, since the maximum score is always greater than or equal to 'the largest score value among the rows having a degree of 2', as shown in FIG. 8, the score table is used to determine the 'largest score value among the rows having a degree of 2'. You can find it.

도 8은 본 발명의 일 실시예에 따라 최대 스코어를 탐색하는 과정을 나타낸 예시도이다.8 is an exemplary view illustrating a process of searching for a maximum score according to an embodiment of the present invention.

도 8에서, ①은 최대 스코어에 해당하는 스코어 테이블의 '실제 디그리가 '2'인 인덱스의 수(d1)'을 나타낸다. 스코어가 '28'이고 디그리가 '2'인 행이 없으므로 최대 스코어를 '1'만큼 감소시킨다. 도 8에서, ②는 스코어가 '27'이고 디그리가 '2'인 행이 1개 있다. '인덱스의 총 수(d2)'를 사용하여 배열의 뒤쪽부터 탐색하여 유효한 인덱스 값을 찾는다. 119행이 실제 디그리가 '2'인 행 중에서 스코어가 가장 크다.In Fig. 8,? Indicates the number of indices d1 of which the actual degree is '2' of the score table corresponding to the maximum score. Since there are no rows with a score of '28' and a degree of '2', the maximum score is reduced by '1'. In FIG. 8, ② has one row with a score of '27' and a degree of '2'. Use the total number of indexes (d2) to search from the back of the array to find valid index values. Line 119 has the largest score among rows with the actual degree '2'.

5. 매트릭스 U에서는 인덱스의 삽입과 삭제가 일어나고 복호화를 진행하면 밀도(Density)가 높아지기 때문에, 새로운 자료 구조가 필요하다. 따라서, 매트릭스 U에 대하여 32개의 열들을 합쳐서 표현하는 새로운 자료 구조인 블록화된 매트릭스(Blocked Matrix) U를 사용한다. 블록화된 매트릭스 U의 추가 위치와 추가해야 할 값은 수학식 4 및 수학식 5와 같이, 계산할 수 있다.5. In matrix U, a new data structure is needed because index insertion and deletion occur and decoding increases density. Therefore, we use Blocked Matrix U, a new data structure that represents 32 columns in total for matrix U. The additional position of the blocked matrix U and the value to be added may be calculated as in Equations 4 and 5 below.

추가 위치(블록화된 매트릭스 열) = (현재 매트릭스 U의 열의 수 / 블록의 크기)보다 적은 제일 큰 정수Additional position (blocked matrix columns) = largest integer less than (number of columns in current matrix U / block size)

추가해야 할 값(Blocked Element Variable) = 2(현재 매트릭스 U의 열의 수-1%(블록의 크기)) Blocked Element Variable = 2 (number of columns in current matrix U-1% (block size))

매트릭스의 하나의 원소(Element)는 '0'과 '1'만을 값으로 가지지만, 블록화된 매트릭스의 하나의 원소는 정수 값을 가진다. 따라서, 블록화된 매트릭스의 하나의 원소는 매트릭스의 여러 개의 원소를 표현할 수 있으며, 블록화된 매트릭스의 하나의 원소가 몇 개의 매트릭스의 원소를 표현하는지는 블록의 크기에 의해 정해진다. 블록화된 매트릭스는 블록의 크기가 클수록, 매트릭스 U를 처리하는데 드는 룹(Loop)의 수가 줄어들어 복호화 시간을 줄일 수 있다. 일 예로, 프로그램에서 블록의 크기는 '32'이다. 이는 정수형(Unsigned)에서 쓸 수 있는 가장 큰 크기의 블록이다.One element of the matrix has only '0' and '1' as values, but one element of the blocked matrix has an integer value. Thus, one element of the blocked matrix can represent several elements of the matrix, and how many elements of the matrix each element of the blocked matrix represents is determined by the size of the block. As the size of the block is larger, the number of loops required to process the matrix U may be reduced, thereby reducing the decoding time. For example, the block size of the program is '32'. This is the largest block that can be used in an unsigned type.

본 발명의 일 실시예에 따라 랩터 코드를 최대 유사성 복호화하는 방법을 종합하면 다음과 같다.According to an embodiment of the present invention, the method of decoding the maximum similarity decoding raptor code is as follows.

(1) 첫 번째 페이즈(1) first phase

a. 최소 Ridx.Deg가 '1'일 때,a. When the minimum Ridx.Deg is '1',

우선, Ridx[i](1≤i≤M)를 순차적으로 탐색하여 Ridx[i].Deg가 '1'인 행을 탐색한다. 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 다시 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정한다. 이 때, Ridx.Deg가 감소하는 행에 대해서는 Ridx.score를 계산하고, 감소한 Ridx.Deg의 값이 '1'이면 'DIO(Degree is One)'라는 배열에 넣어준다. DIO를 이용하면, 변경된 Ridx.Deg 값이 '1'인 경우 DIO에 넣음으로써, Ridx.Deg가 '1'인 값을 탐색하는 시간을 줄이는 데에 도움이 된다. 찾은 행에 대한 처리가 끝나면 DIO에서 Ridx,Deg가 '1'인 행을 탐색하여, 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정하는 과정부터 다시 반복한다. 반복하는 과정에서 DIO에 Ridx.Deg가 '1'인 행이 더 이상 없으면, (i+1)행부터 M행까지 다시 Ridx.Deg '1'인 행을 찾아 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정하는 과정부터 다시 반복한다.First, Ridx [i] (1 ≦ i ≦ M) is sequentially searched for rows in which Ridx [i] .Deg is '1'. Search for a valid column in Ridx [i] .Edge that corresponds to the searched row, search Cidx [j] .Edge again, and determine the values of Ridx, Cidx, and the blocked matrix U. At this time, Ridx.score is calculated for the row that Ridx.Deg decreases, and if the value of the reduced Ridx.Deg is '1', it is put in an array called 'DIO (Degree is One)'. When using the DIO, if the changed Ridx.Deg value is '1', the DIO is put in the DIO to help reduce the time for searching for the value of the Ridx.Deg '1'. After processing the found rows, DIO searches for rows with Ridx, Deg equal to '1', searches for valid columns in Ridx [i] .Edge corresponding to the searched rows, searches Cidx [j] .Edge, Repeat the process of determining the values of Ridx, Cidx, and the blocked matrix U. If there are no more rows with Ridx.Deg '1' in the DIO during the iteration, Ridx [i corresponding to the row searched for rows with Ridx.Deg '1' again from rows (i + 1) to M ] .Edge searches for valid columns, Cidx [j] .Edge, and repeats the process of determining the values of Ridx, Cidx, and the blocked matrix U.

b. 최소 Ridx.Deg가 '2'인 경우,b. If at least Ridx.Deg is '2',

최소 Ridx.Deg가 '2'인 경우에는, 최대 스코어 탐색을 통해 선택된 행에 대한 처리가 시작된다. 최대 스코어 탐색은 Ridx.Deg가 '2'인 행이 없을 때까지 계속한다. 최대 스코어 탐색을 통해 선택된 Ridx.Deg가 '2'인 행을 처리하는 과정에서 매트릭스 U가 생성된다. 블록화된 매트릭스 U 부분을 따로 처리야 하는데, 이는 매트릭스 U에서는 삽입, 삭제가 자주 일어나고 복호화가 진행됨에 따라 밀도가 높아져 인덱스를 사용할 수 없기 때문이다. 따라서, 매트릭스 U는 블록화된 매트릭스 U를 사용하여 처리한다. '블록화된 매트릭스 U를 추가'하는 과정에서 Ridx.Deg가 감소하는데, 이때 Ridx.score를 계산하고 감소한 Ridx.Deg가 '1'이면 DIO에 넣어준다. 한편, '블록화된 매트릭스 U의 추가'가 끝나면, 매트릭스 V에서는 최소 Ridx.Deg가 '1'일 때와 같이 처리할 수 있다.If the minimum Ridx.Deg is '2', processing for the selected row is started through the maximum score search. The maximum score search continues until there are no rows with Ridx.Deg equal to '2'. The matrix U is generated in the process of processing the rows where the selected Ridx.Deg is '2' through the maximum score search. Blocked matrix U part needs to be processed separately because matrix insert U is frequently inserted and deleted, and as the decryption proceeds, the density becomes high and index cannot be used. Thus, matrix U is processed using a blocked matrix U. Ridx.Deg decreases during the process of 'adding the blocked matrix U'. At this time, Ridx.score is calculated and if the reduced Ridx.Deg is '1', it is put in the DIO. On the other hand, when the addition of the blocked matrix U is completed, the matrix V may be processed as if the minimum Ridx.Deg is '1'.

(2) 두 번째 페이즈(2) second phase

첫 번째 페이즈를 진행할 때 처리가 끝난 행에 대한 정보를 Ridx에 기억시킨다.At the beginning of the first phase, Ridx stores information about the processed rows.

도 9는 본 발명의 일 실시예에 따라 가우스 제거를 수행하기 전과 후의 블록화된 매트릭스 U를 나타낸 예시도이다.9 is an exemplary diagram illustrating a blocked matrix U before and after performing Gaussian removal according to an embodiment of the present invention.

9A는 가우스 제거를 수행하기 전의 행의 블록화된 매트릭스 U를 나타낸 것이고, 9B는 가우스 제거를 수행한 후의 블록화된 매트릭스 U를 나타낸 것이다. 일반적인 가우스 제거 방법을 수행하면 9A로부터 9B를 쉽게 얻을 수 있다.9A shows the blocked matrix U of the rows before performing Gaussian elimination, and 9B shows the blocked matrix U after performing the Gaussian elimination. You can easily get 9B from 9A by following the usual Gaussian removal method.

도 10은 본 발명의 일 실시예에 따른 랩터 코드의 복호화기를 나타낸 블록 구성도이다.10 is a block diagram illustrating a decoder of a raptor code according to an embodiment of the present invention.

이상에서 전술한 본 발명의 일 실시예는 랩터 코드의 최대 유사성 복호화 장치로 구현될 수 있다. 즉, 본 발명의 다른 실시예에 따른 랩터 코드의 최대 유사성 복호화 장치(1000)는 랩터 코드의 최대 유사성 복호화 장치로서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기(1010), 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기(1020) 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기(1030)를 포함하여 구성될 수 있다.One embodiment of the present invention described above may be implemented as a maximum similarity decoding apparatus of the raptor code. That is, the maximum similarity decoding apparatus 1000 of the raptor code according to another embodiment of the present invention is a maximum similarity decoding apparatus of the raptor code, and performs a maximum score search on a matrix of size MxL having the raptor code and blocks the matrix U. Blocked matrix U generator 1010 for generating a transform matrix matrix 1010 and a modified matrix and length for performing a Gaussian elimination on the blocked matrix U to generate a modified matrix having only one '1' in each row and each column. and a vector calculator 1030 that calculates a vector of length L using the vector r.

여기서, 블록화된 매트릭스 U 생성기(1010)는 복호화할 랩터 코드를 갖는 MxL 크기의 매트릭스의 각 행 및 각 열 중에서 '1'의 위치만을 저장하여 초기 매트릭스를 생성할 수 있다. 또한, 블록화된 매트릭스 U 생성기(1010)는 초기 매트릭스의 각 행의 초기 스코어를 계산하고 디그리가 '2'인 행에 대해 스코어를 키로 가지는 스코어 테이블을 생성할 수 있다.Here, the blocked matrix U generator 1010 may generate an initial matrix by storing only a position of '1' in each row and each column of the MxL sized matrix having the raptor code to be decoded. In addition, the blocked matrix U generator 1010 may calculate an initial score of each row of the initial matrix and generate a score table having a score as a key for the row whose degree is '2'.

여기서, 각 행의 초기 스코어는 각 행의 인덱스에 있는 열의 디그리의 합일 수 있으며, 블록화된 매트릭스 U 생성기(1010)는 각 행의 디그리가 '2'인 경우, 디그리가 '2'인 행의 스코어를 키로 사용하여 스코어 테이블에 디그리가 '2'인 행의 인덱스를 삽입할 수 있다.Here, the initial score of each row may be the sum of the degrees of the column at the index of each row, and the blocked matrix U generator 1010 scores the rows of which the degree is '2' when the degree of each row is '2'. You can use as a key to insert the index of the row whose degree is '2' into the score table.

또한, 블록화된 매트릭스 U는 MxL 매트릭스에 최대 스코어 탐색을 수행하여 생성된 매트릭스 U에 대해 하나 이상의 칼럼을 추가하여 생성될 수 있으며, 추가되는 하나 이상의 칼럼은 매트릭스 U의 열의 수를 기 설정된 블록의 크기로 나눈 수보다 작은 수 중 제일 큰 정수의 위치에 추가될 수 있다.In addition, the blocked matrix U may be generated by adding one or more columns to the matrix U generated by performing a maximum score search on the MxL matrix, and the one or more columns to be added may be the size of the predetermined block based on the number of columns of the matrix U. It can be added at the position of the largest integer smaller than the number divided by.

도 11은 본 발명의 다른 실시예에 따른 랩터 코드의 최대 유사성 복호화 방법을 설명하기 위한 순서도이다.11 is a flowchart illustrating a method of maximum similarity decoding of a raptor code according to another embodiment of the present invention.

본 발명의 일 실시예에 따른 랩터 코드의 최대 유사성 복호화 장치(1000)는 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하고(S1110), 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하며(S1120), 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산한다(S1130).The maximum similarity decoding apparatus 1000 of the raptor code according to the embodiment of the present invention performs a maximum score search on an MxL sized matrix having the raptor code to generate a blocked matrix U (S1110), and blocks the matrix U. A Gaussian elimination method is performed to generate a modified matrix having only one '1' in each row and each column (S1120), and a vector having a length L is calculated using the modified matrix and a vector having a length r (S1130).

이상에서 전술한 바와 같이, 본 발명의 일 실시예에 따르면, 3GPP MBMS 랩터 코드의 최대 유사성 복호화를 매우 빠르게 실행할 수 있다. 복호화를 빠르게 실행 할 경우, 데이터의 전송 속도를 증가시킬 수 있다. 또한, 배터리를 이용한 단말기 등에서 본 발명의 일 실시예와 같은 방법으로 최대 유사성 복호화를 실행할 경우, 배터리 소모량이 기존의 복호화 방법보다 적게 요구되므로, 배터리 이용 시간을 늘릴 수 있다.As described above, according to an embodiment of the present invention, the maximum similarity decoding of the 3GPP MBMS Raptor code can be performed very quickly. Faster decryption can increase the data transfer speed. In addition, when the maximum similarity decoding is performed in the same manner as in the embodiment of the present invention, the terminal using the battery requires less battery consumption than the conventional decoding method, thereby increasing the battery usage time.

이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합하거나 결합하여 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.While the present invention has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention is not limited to the disclosed embodiments. In other words, within the scope of the present invention, all of the components may be selectively operated in combination with one or more. In addition, although all of the components may be implemented in one independent hardware, each or all of the components may be selectively combined to perform some or all functions combined in one or a plurality of hardware. It may be implemented as a computer program having a. Codes and code segments constituting the computer program may be easily inferred by those skilled in the art. Such a computer program may be stored in a computer readable storage medium and read and executed by a computer, thereby implementing embodiments of the present invention. The storage medium of the computer program may include a magnetic recording medium, an optical recording medium, a carrier wave medium, and the like.

또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재할 수 있음을 의미하는 것 이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.In addition, the terms "comprise", "comprise" or "having" described above mean that the corresponding component may be included unless otherwise stated, and thus, excludes other components. It should be construed that it may further include other components. All terms, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art unless otherwise defined. Terms used generally, such as terms defined in a dictionary, should be interpreted to coincide with the contextual meaning of the related art, and shall not be interpreted in an ideal or excessively formal sense unless explicitly defined in the present invention.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are not intended to limit the technical idea of the present invention but to describe the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The protection scope of the present invention should be interpreted by the following claims, and all technical ideas within the equivalent scope should be interpreted as being included in the scope of the present invention.

이상에서 설명한 바와 같이 본 발명은 3GPP MBMS에 채택된 오류 정정 부호인 랩터 코드를 복호화하는 장치와 방법과 관련된 분야에 적용되어, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄일 수 있 는 효과를 발생하는 매우 유용한 발명이다.As described above, the present invention is applied to a field related to an apparatus and a method for decoding a raptor code, which is an error correction code adopted in 3GPP MBMS, to reduce the time required when decoding the raptor code using maximum similarity decoding. As a result, it is possible to increase the data transmission speed and to reduce the power consumption required for decryption.

도 1은 매트릭스 A에 대해 첫 번째 페이즈를 수행한 결과인 MxL 매트릭스를 나타낸 예시도,1 is an exemplary diagram illustrating an MxL matrix that is a result of performing a first phase on matrix A;

도 2는 MxL 매트릭스에 대해 두 번째 페이즈를 수행한 결과인 LxL 매트릭스를 나타낸 예시도,2 is an exemplary diagram illustrating an LxL matrix that is a result of performing a second phase on an MxL matrix.

도 3은 본 발명의 일 실시예에 따라 표현된 매트릭스 A를 나타낸 예시도,3 is an exemplary view showing a matrix A expressed according to an embodiment of the present invention;

도 4는 본 발명의 일 실시예에 따라 복호화가 진행된 상태의 임의의 Ridx[k]를 나타낸 예시도,4 is an exemplary diagram illustrating an arbitrary Ridx [k] in a state where decoding is performed according to an embodiment of the present invention;

도 5는 초기 매트릭스의 각 행의 스코어의 값을 계산하는 과정을 설명하기 위한 예시도,5 is an exemplary diagram for explaining a process of calculating a value of a score of each row of an initial matrix;

도 6은 본 발명의 일 실시예에 따른 스코어 테이블을 나타낸 예시도,6 is an exemplary view showing a score table according to an embodiment of the present invention;

도 7은 본 발명의 일 실시예에 따라 업데이트된 스코어 테이블을 나타낸 예시도,7 is an exemplary view showing an updated score table according to an embodiment of the present invention;

도 8은 본 발명의 일 실시예에 따라 최대 스코어를 탐색하는 과정을 나타낸 예시도,8 is an exemplary view illustrating a process of searching for a maximum score according to an embodiment of the present invention;

도 9는 본 발명의 일 실시예에 따라 가우스 제거를 수행하기 전과 후의 블록화된 매트릭스 U를 나타낸 예시도,9 is an exemplary diagram showing a blocked matrix U before and after performing Gaussian removal according to an embodiment of the present invention.

도 10은 본 발명의 일 실시예에 따른 랩터 코드의 복호화기를 나타낸 블록 구성도이다.10 is a block diagram illustrating a decoder of a raptor code according to an embodiment of the present invention.

< 도면의 주요 부분에 대한 부호의 설명 ><Description of Symbols for Main Parts of Drawings>

1010: 블록화된 매트릭스 U 생성기 1020: 변형 매트릭스 생성기1010: Blocked Matrix U Generator 1020: Deformation Matrix Generator

1030: 벡터 계산기1030: Vector Calculator

Claims (8)

랩터 코드의 최대 유사성 복호화 장치에 있어서,In the maximum similarity decoding apparatus of the raptor code, 상기 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기;A blocked matrix U generator that performs a maximum score search on an MxL sized matrix having the raptor code to produce a blocked matrix U; 상기 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기; 및A modified matrix generator for performing a Gaussian elimination method on the blocked matrix U to generate a modified matrix having only one '1' in each row and each column; And 상기 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기A vector calculator for calculating a vector of length L using the transformation matrix and the vector of length r. 를 포함하는 것을 특징으로 하는 최대 유사성 복호화 장치.Maximum similarity decoding apparatus comprising a. 제 1 항에 있어서, 상기 블록화된 매트릭스 U 생성기는,The method of claim 1, wherein the blocked matrix U generator, 상기 MxL 크기의 매트릭스의 각 행 및 각 열 중에서 '1'의 위치만을 저장하여 초기 매트릭스를 생성하는 것을 특징으로 하는 최대 유사성 복호화 장치.And an initial matrix is generated by storing only a position of '1' in each row and each column of the MxL sized matrix. 제 1 항에 있어서, 상기 블록화된 매트릭스 U 생성기,The method of claim 1, wherein the blocked matrix U generator, 초기 매트릭스의 각 행의 초기 스코어를 계산하고 디그리가 '2'인 행에 대해 스코어를 키로 가지는 스코어 테이블을 생성하는 것을 특징으로 하는 최대 유사성 복호화 장치.A maximum similarity decoding apparatus, comprising: calculating an initial score of each row of an initial matrix and generating a score table having a score as a key for a row having a degree of '2'. 제 3 항에 있어서, 상기 각 행의 초기 스코어는,The method of claim 3, wherein the initial score of each row, 상기 각 행의 인덱스에 있는 열의 디그리의 합인 것을 특징으로 하는 최대 유사성 복호화 장치.And the sum of the degrees of the columns at the index of each row. 제 3 항에 있어서, 상기 블록화된 매트릭스 U 생성기,4. The method of claim 3, wherein the blocked matrix U generator, 상기 각 행의 디그리가 '2'인 경우, 상기 디그리가 '2'인 행의 스코어를 키로 사용하여 상기 스코어 테이블에 상기 디그리가 '2'인 행의 인덱스를 삽입하는 것을 특징으로 하는 최대 유사성 복호화 장치.When the degree of each row is '2', the maximum similarity decoding is performed by inserting an index of the row having the degree of '2' into the score table using the score of the row having the degree of '2' as a key. Device. 제 1 항에 있어서, 상기 블록화된 매트릭스 U는,The method of claim 1, wherein the blocked matrix U, 상기 MxL 매트릭스에 최대 스코어 탐색을 수행하여 생성된 매트릭스 U에 대해 하나 이상의 열을 추가한 것을 특징으로 하는 최대 유사성 복호화 장치.And at least one column of the matrix U generated by performing a maximum score search on the MxL matrix. 제 6 항에 있어서, 상기 하나 이상의 열은,The method of claim 6, wherein the one or more columns, 상기 매트릭스 U의 열의 수를 기 설정된 블록의 크기로 나눈 수보다 작은 수 중 제일 큰 정수의 위치에 추가되는 것을 특징으로 하는 최대 유사성 복호화 장치.And the maximum similarity decoding apparatus is added to the position of the largest integer smaller than the number divided by the size of the predetermined block. 랩터 코드의 최대 유사성 복호화 방법에 있어서,In the maximum similarity decoding method of the raptor code, 상기 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성 단계;Generating a blocked matrix U by performing a maximum score search on an MxL sized matrix having the raptor code to produce a blocked matrix U; 상기 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성 단계; 및A modified matrix generation step of performing a Gaussian elimination method on the blocked matrix U to generate a modified matrix having only one '1' in each row and each column; And 상기 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산 단계A vector calculation step of calculating a vector having a length L using the deformation matrix and the vector having a length r. 를 포함하는 것을 특징으로 하는 최대 유사성 복호화 방법.Maximum similarity decoding method comprising a.
KR1020080122630A 2008-12-04 2008-12-04 Maximum Likelihood Decoding Apparatus and Method KR101545565B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080122630A KR101545565B1 (en) 2008-12-04 2008-12-04 Maximum Likelihood Decoding Apparatus and Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080122630A KR101545565B1 (en) 2008-12-04 2008-12-04 Maximum Likelihood Decoding Apparatus and Method

Publications (2)

Publication Number Publication Date
KR20100064180A true KR20100064180A (en) 2010-06-14
KR101545565B1 KR101545565B1 (en) 2015-08-19

Family

ID=42363893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080122630A KR101545565B1 (en) 2008-12-04 2008-12-04 Maximum Likelihood Decoding Apparatus and Method

Country Status (1)

Country Link
KR (1) KR101545565B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014046395A1 (en) * 2012-09-22 2014-03-27 Choi Sujeong Encoding/decoding method and apparatus using complementary sparse inverse code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014046395A1 (en) * 2012-09-22 2014-03-27 Choi Sujeong Encoding/decoding method and apparatus using complementary sparse inverse code

Also Published As

Publication number Publication date
KR101545565B1 (en) 2015-08-19

Similar Documents

Publication Publication Date Title
Szpankowski Average case analysis of algorithms on sequences
US9052748B2 (en) System and method for inputting text into electronic devices
Andoni et al. Approximating edit distance in near-linear time
US9495347B2 (en) Systems and methods for extracting table information from documents
US20050192994A1 (en) Data compression method and apparatus
US20120310630A1 (en) Tokenization platform
US20100235780A1 (en) System and Method for Identifying Words Based on a Sequence of Keyboard Events
CN110321566B (en) Chinese named entity recognition method and device, computer equipment and storage medium
US9998145B2 (en) Data processing method and device
CN109889205B (en) Coding method and system, decoding method and system, coding and decoding method and system
CN110211562B (en) Voice synthesis method, electronic equipment and readable storage medium
CN111639174B (en) Text abstract generation system, method, device and computer readable storage medium
JP2009512099A (en) Method and apparatus for restartable hashing in a try
US20110268315A1 (en) Scalable Media Fingerprint Extraction
CN113918681A (en) Reading understanding method and system based on fragment extraction, electronic device and storage medium
CN113051894A (en) Text error correction method and device
US20110235719A1 (en) Method for treating digital data
CN109597913A (en) The method for being aligned document picture, device, storage medium and electronic equipment
US20110264675A1 (en) Searching apparatus and searching method
US20080252498A1 (en) Coding data using different coding alphabets
CN103401650B (en) A kind of (n, 1, m) there is the blind-identification method of error code convolutional code
KR20100064180A (en) Maximum likelihood decoding apparatus and method
CN115982310B (en) Chain table generation method with verification function and electronic equipment
KR20210004897A (en) A method and apparatus for fast decoding a linear code based on bit matching
CN109508371B (en) Text abstract generation method combined with cluster search interval maximization constraint

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant