KR101667240B1 - 안전하고 손실 없는 데이터 압축 - Google Patents

안전하고 손실 없는 데이터 압축 Download PDF

Info

Publication number
KR101667240B1
KR101667240B1 KR1020157012079A KR20157012079A KR101667240B1 KR 101667240 B1 KR101667240 B1 KR 101667240B1 KR 1020157012079 A KR1020157012079 A KR 1020157012079A KR 20157012079 A KR20157012079 A KR 20157012079A KR 101667240 B1 KR101667240 B1 KR 101667240B1
Authority
KR
South Korea
Prior art keywords
sequence
character
sub
coordinates
coordinate
Prior art date
Application number
KR1020157012079A
Other languages
English (en)
Other versions
KR20150067342A (ko
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 알까뗄 루슨트
Publication of KR20150067342A publication Critical patent/KR20150067342A/ko
Application granted granted Critical
Publication of KR101667240B1 publication Critical patent/KR101667240B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

각각이 절대 코딩 테이블에 따라 각각의 문자를 고유하게 나타내는 절대수에 의해 표현된 원래의 문자들의 순서화된 시퀀스(2)에 의해 처음에 규정된 문자들의 스트링을 압축하는 방법은:
- 상기 원래의 시퀀스(2)를 제 1 형태 서브-시퀀스의 연속하는 문자들의 각각이 상대 코딩 테이블에서 매칭 문자에 기초하여 선택되는, 상기 연속하는 문자들을 포함하는 적어도 하나의 제 1 형태 서브-시퀀스(7)로, 및 나머지 연속하는 문자들을 포함하는 적어도 하나의 제 2 형태 서브-시퀀스(8)로 파싱하는 단계,
- 상기 상대 코딩 테이블을 사용하여 각각의 제 1 형태 서브-시퀀스(7)를 코딩하는 단계, 및
- 각각의 제 2 형태 서브-시퀀스(8)로부터의 각각의 문자를 상기 절대 코딩 테이블로부터의 수를 나타내는 그의 절대수로 나타내는 단계를 포함한다.
압축 시퀀스(3)를 압축 해제를 위한 대응하는 방법.

Description

안전하고 손실 없는 데이터 압축{SECURE AND LOSSLESS DATA COMPRESSION}
본 기술 분야는 정보 통신 분야 중 하나이다. 특히, 이는 안전하고 손실 없는 압축/압축 해제에 관한 것이다.
텍스트는 문자들의 시퀀스로서 순서화된 문자들의 스트링이다. 문자를 숫자로 나타내기 위한 일반적인 방식은 절대 코딩 테이블을 사용하는 것에 의하고, 각각의 문자는 고유한 절대수로 나타내진다. 가장 유명한 이러한 절대 코딩 테이블 중 하나는 ASCII 표준에 의해 규정된 것이다. 이러한 ASCII 절대 코딩 테이블에서 각 문자는 일반적으로 고유한 1 바이트 숫자로 나타내지고, 따라서 이러한 ASCII 절대 코딩 테이블의 크기는 256 개 문자들로 제한된다. 문자들의 순서화된 시퀀스를 숫자로 나타내기 위한 일반적인 방식은 대응하는 숫자들의 순서화된 시퀀스를 제공하는 것이고, 각각의 문자는 동일한 순서로 그의 절대수로 나타내진다.
결과적으로, n 개의 문자들의 스트링은 n 바이트를 점유하는 숫자들의 시퀀스로 나타내어진다. 예를 들면, 이동 전화 네트워크들상의 데이터 또는 텍스트 트래픽의 증가를 고려하여, 이러한 점유는 너무 크게 나타난다.
zip, rar 등과 같은 몇몇 압축 솔루션들이 존재하지만, 이들 솔루션들은, 특히 텍스트 문자들의 짧은 길이의 스트링들에 적용될 때, 어떠한 크기 감소도 초래하지 않는다.
심지어 짧은 길이 스트링들에 대해서, 현저한 크기 감소를 나타내는 압축/압축 해제 방식이 바람직하다.
일 실시예는, 각각이 절대 코딩 테이블에 따라 각각의 문자를 고유하게 나타내는 절대수로 나타내어지는 문자들의 원래의 순서화된 시퀀스로 초기에 규정되는, 문자들의 스트링을 압축하기 위한 방법에 관한 것이고, 상기 방법은: 상기 원래의 시퀀스를, 각각이 상대 코딩 테이블에서 대응하는 문자와 일치하는 연속하는 문자들을 포함하는 적어도 하나의 제 1 형태의 서브-시퀀스로, 및 연속하는 나머지 문자들을 포함하는 적어도 하나의 제 2 형태의 서브-시퀀스로 파싱하는 단계, 상기 상대 코딩 테이블을 사용하여 각각의 제 1 형태 서브-시퀀스를 코딩하는 단계, 및 각각의 제 2 형태의 서브-시퀀스로부터의 각각의 문자를 상기 압축된 시퀀스로 복사하는 단계로서, 각각의 문자는 상기 절대 코딩 테이블로부터의 숫자를 나타내는 그의 절대수로 나타내어지는, 상기 복사 단계를 포함한다.
일 실시예의 특징에 따라, 제 1 형태 서브-시퀀스의 코딩 단계는: 상기 절대 코딩 테이블로부터의 숫자를 나타내는 그의 원래의 절대수로 상기 서브-시퀀스의 처음 문자를 키코드로서 코딩하는 단계, 상기 문자 앞의 문자와 상기 문자 사이에서 상기 상대 코딩 테이블에서의 변위를 코딩함으로써 상기 서브-시퀀스에서 상기 처음 문자에 후속하는 각각의 문자를 코딩하는 단계, 상기 서브-시퀀스에서 마지막 문자 후, 코딩의 종료를 표시하는 상기 상대 코딩 테이블에서 제 2 특정 제어 문자에 대한 변위를 코딩함으로써 상기 제 1 형태의 서브-시퀀스의 코딩을 종료하는 단계를 추가로 포함할 수 있다.
일 실시예의 다른 특징에 따라, 상기 방법은: 상기 원래의 시퀀스로부터 계산된 체크섬을 상기 압축된 시퀀스에 삽입하는 단계를 추가로 포함할 수 있다.
일 실시예의 다른 특징에 따라, 앞선 문자와 후속 문자 사이의 상기 상대 코딩 테이블에서의 변위를 코딩하는 단계는: 상기 상대 코딩 테이블에서, 제 1 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 1 좌표를 결정하는 단계, 상기 상대 코딩 테이블에서, 제 2 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 2 좌표를 결정하는 단계, 및 모든 결정된 좌표들을 순서대로 압축된 시퀀스로 연쇄시키는 단계를 포함할 수 있다.
일 실시예의 다른 특징에 따라, 상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 사이에 공유되는 숫자는 없고, 상기 제 1 세트 중에서 하나의 제 1 특정 좌표, 및 상기 제 2 세트 중에서 하나의 제 2 특정 좌표는, 후속하는 특정 좌표가 생략되지 않는 경우, 두 개의 특정 좌표들이 즉시 후속할 때를 제외하고 압축된 시퀀스에서 생략된다.
일 실시예의 다른 특징에 따라, 상기 상대 코딩 테이블은 문자들의 스트링들에서 압축될 것이 예상되는 가장 빈번한 문자들로 채워진다.
일 실시예의 다른 특징에 따라, 상기 상대 코딩 테이블은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는, 상부로부터 하부로 8이 추가된, 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표이다.
일 실시예의 다른 특징에 따라, 상기 방법은, 파싱 단계와 코딩 단계 사이에: 코딩 단계를 통해 획득되는 코딩된 서브-시퀀스가 원래의 서브-시퀀스보다 짧은지를 각각의 제 1 형태 서브-시퀀스에 대하여 검사하고, 그렇지 않은 경우, 상기 제 1 형태 서브-시퀀스를 제 2 형태 서브-시퀀스로서 취급하는 단계를 추가로 포함한다.
다른 실시예는 압축된 시퀀스가, 각각이 절대 코딩 테이블에 따라 각각의 문자를 고유하게 나타내는 절대 숫자로 나타내어지는, 문자들의 마지막 순서화된 시퀀스로 규정된 문자들의 스트링으로 압축 해제하는 방법에 관한 것이고, 상기 방법은: 연속하는 숫자들의 적어도 하나의 코딩된 서브-시퀀스를 상기 압축된 시퀀스로부터 추출하는 단계, 상기 코딩된 서브-시퀀스를 마지막 디코딩된 서브-시퀀스로 디코딩하는 단계, 상대 코딩 테이블을 사용하는 단계, 나머지 숫자들을 보유하는 단계, 및 각각의 상기 나머지 숫자를 상기 절대 코딩 테이블을 사용하여 절대수로 나타내어진 문자로서 압축 해제된 시퀀스(2)로 복사하는 단계, 중 하나 이상을 포함한다.
일 실시예의 다른 특징에 따라, 추출 단계 및 디코딩 단계는: 처음 숫자를 상기 마지막 디코딩된 서브-시퀀스에서 상기 절대 코딩 테이블에 따라 상기 절대수로 나타내어진 문자로서 복사하는 단계, 상기 코딩된 서브-시퀀스에서 상기 처음 숫자에 후속하는 후속 숫자들을 선처리하는 단계, 변위가 코딩의 종료를 표시하고, 따라서 상기 코딩된 서브-시퀀스의 종료를 표시하는 상기 상대 코딩 테이블에서 제 2 특정 제어 문자를 가리킬 때까지, 상기 상대 코딩 테이블에서, 후속 숫자들을 관련 변위들로서 디코딩하는 단계를 추가로 포함할 수 있다.
일 실시예의 다른 특징에 따라, 후속 숫자들을 디코딩하는 단계는: 상기 처음 문자인 현재 문자로 시작하는 단계로서, 상기 현재 위치는 상기 상대 코딩 테이블에서 상기 처음 문자의 위치이고, 좌표들의 현재 쌍은 상기 코딩된 서브-시퀀스에서 제 1 좌표 및 제 2 좌표의 제 1 쌍인, 상기 시작 단계, 새로운 위치가 상기 상대 코딩 테이블에서 제 2 특정 제어 문자를 가리킬 때까지 다음 단계들을 반복하는 단계로서, 상기 다음 단계들은: 상기 상대 코딩 테이블에서 현재 위치로부터, 제 1 좌표 및 제 2 좌표의 현재 쌍에 의해 코딩되는 변위를 새로운 위치를 찾기 위해 적용하는 단계로서, 상기 제 1 좌표는 제 1 미리 결정된 방향을 따라 열들의 순환 계수를 나타내고, 제 2 좌표는 제 2 미리 결정된 방향을 따라 행들의 순환 계수를 나타내는, 상기 적용 단계, 새로운 디코딩된 문자를 표시하는 단계, 상기 디코딩된 최종 서브-시퀀스에서 상기 현재 문자 후에 상기 새로운 디코딩된 문자를 복사하는 단계, 현재 문자를 상기 새로운 디코딩된 문자로 갱신하는 단계, 현재 위치를 상기 새로운 위치로 갱신하는 단계, 좌표의 현재 쌍을 상기 코딩된 서브-시퀀스에서 제 1 좌표 및 제 2 좌표의 다음의 쌍으로 갱신하는 단계인, 상기 반복 단계를 추가로 포함할 수 있다.
일 실시예의 다른 특징에 따라, 상기 제 1 좌표들은 상기 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트들의 숫자들 사이에서 숫자가 공유되지 않고, 후속 숫자들을 선처리하는 단계는: 임의의 제 2 특정 좌표 전에 제 1 특정 좌표를 삽입하는 단계, 임의의 제 1 특정 좌표 전에 제 2 특정 좌표를 삽입하는 단계, 임의의 두 개의 연속하는 제 2 좌표들 사이에 제 1 특정 좌표를 삽입하는 단계, 및 임의의 두 개의 연속하는 제 1 좌표들 사이에 제 2 특정 좌표를 삽입하는 단계를 추가로 포함한다.
일 실시예에 다른 특징에 따라, 상기 상대 코딩 테이블은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는, 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표이다.
다른 실시예는 이러한 압축 방법에 따라 문자들의 스트링을 압축된 시퀀스로 압축하기 위한 수단을 포함하는 압축기에 관한 것이다.
일 실시예는 각각이 절대 코딩 테이블에 따라 각각의 문자를 고유하게 나타내는 절대수로 나타내어지는, 문자들의 원래의 순서화된 시퀀스로 초기에 규정된 문자들의 스트링을 압축된 시퀀스로 압축하기 위한 압축기에 관한 것이고, 상기 압축기는: 상기 원래의 시퀀스를, 각각이 상대 코딩 테이블에서 대응하는 문자에 기초하여 선택되는, 연속하는 문자들을 포함하는 적어도 하나의 제 1 형태의 서브-시퀀스로, 및 연속하는 나머지 문자들을 포함하는 적어도 하나의 제 2 형태의 서브-시퀀스로 파싱하기 위한 파서, 상기 상대 코딩 테이블을 사용하여 각각의 제 1 형태의 서브-시퀀스를 코딩하기 위한 코더, 및 상기 압축된 시퀀스에서 각각의 제 2 형태의 서브-시퀀스로부터 각각의 문자를 복사하기 위한 복사기로서, 각각의 문자는 상기 절대 코딩 테이블로부터의 숫자를 나타내는 그의 절대수로 나타내어지는, 상기 복사기를 포함한다.
일 실시예의 다른 특징에 따라, 코더는: 상기 절대 코딩 테이블로부터의 수를 나타내는 그의 원래의 절대수로 상기 서브-시퀀스의 처음 문자를 키코드로서 코딩하기 위한 제 1 서브-코더, 상기 문자 전의 문자와 상기 문자 사이에 상기 상대 코딩 테이블에서 변위를 코딩함으로써 상기 서브-시퀀스에서 상기 처음 문자에 후속하는 각각의 문자를 코딩하기 위한 제 2 서브-코더, 및 상기 서브-시퀀스에서 마지막 문자 후, 코딩의 종료를 표시하는 상기 상대 코딩 테이블에서 제 2 특정 제어 문자에 대한 변위를 코딩함으로써 상기 제 1 형태의 서브-시퀀스의 코딩을 종료하기 위한 제 3 서브-코더를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 압축기는 상기 원래의 시퀀스로부터 계산된 체크섬을 상기 압축된 시퀀스로 삽입하기 위한 삽입기를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 제 2 서브-코더는: 상기 상대 코딩 테이블에서, 제 1 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 1 좌표를 결정하기 위한 제 1 결정자; 상기 상대 코딩 테이블에서, 제 2 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 2 좌표를 결정하기 위한 제 2 결정자, 및 모든 결정된 좌표들을 순서대로 압축된 시퀀스로 연쇄시키기 위한 연쇄자를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고, 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 간에 숫자가 공유되지 않고, 상기 제 1 세트 중에서 하나의 제 1 특정 좌표들 및 상기 제 2 세트 중에서 하나의 제 2 특정 좌표는, 상기 후속하는 특정 좌표가 생략되지 않는 경우, 두 개의 특정 좌표들이 즉시 후속할 때를 제외하고, 압축된 시퀀스에서 생략된다.
일 실시예의 다른 특징에 따라, 상기 상대 코딩 테이블은 문자들의 스트링들에서 압축되는 것이 예상되는 가장 빈번한 문자들로 채워진다.
일 실시예의 다른 특징에 따라, 상기 상대 코딩 테이블은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순회하는 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표이다.
일 실시예의 다른 특징에 따라, 상기 압축기는, 획득되는 코딩된 서브-시퀀스가 원래의 서브-시퀀스보다 짧은지를 각각의 제 1 형태의 서브-시퀀스에 대해 검사하고, 그렇지 않은 경우, 상기 제 1 형태의 서브-시퀀스를 제 2 형태 서브-시퀀스로서 처리하기 위한 검사기를 추가로 포함한다.
다른 실시예는 이러한 압축 해제 방법에 따라 압축된 시퀀스를 문자들의 스트링으로 압축 해제하기 위한 수단을 포함하는 압축 해제기에 관한 것이다.
일 실시예는 압축된 시퀀스를, 절대 코딩 테이블에 따라, 각각이 각각의 문자를 고유하게 나타내는 절대수에 의해 나타내어진 문자들의 최종 순서화된 시퀀스에 의해 규정된 문자들의 스트링으로 압축해제하기 위한 압축 해제기에 관련되고, 상기 압축 해제기는: 연속하는 숫자들 중 적어도 하나의 코딩된 서브-시퀀스를 상기 압축된 시퀀스로부터 추출하기 위한 추출기, 상대 코딩 테이블을 사용하여, 상기 코딩된 서브-시퀀스를 최종 디코딩된 서브-시퀀스로 디코딩하기 위한 디코더, 나머지 숫자들을 보유하기 위한 보유기, 및 각각의 상기 나머지 숫자를 상기 절대 코딩 테이블을 사용하여 절대수로 나타내어진 문자로서 압축 해제된 시퀀스로 복사하기 위한 복사기를 포함한다.
일 실시예의 다른 특징에 따라, 추출기 및 디코더는: 상기 최종 디코딩된 서브-시퀀스에서 상기 절대 코딩 테이블에 따라 상기 절대수로 나타내어진 문자로서 처음 숫자를 복사하기 위한 서브-복사기, 상기 코딩된 서브-시퀀스에서 상기 처음 숫자에 후속하는 후속 숫자들을 선처리하기 위한 선처리기, 및 코딩의 종료를 표시하고, 따라서 상기 코딩된 서브-시퀀스의 종료를 표시하는, 상기 상대 코딩 테이블에서 제 2 특정 제어 문자를 변위가 가리킬 때까지, 후속 숫자들을 상기 상대 코딩 테이블에서 관련 변위들로서 디코딩하기 위한 서브-디코더를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 서브-디코더는: 상기 처음 문자인 현재 문자, 상기 상대 코딩 테이블에서 상기 처음 문자의 위치인 현재 위치, 및 상기 코딩된 서브-시퀀스에서 제 1 좌표 및 제 2 좌표의 제 1 쌍인 좌표들의 현재 쌍으로 시작하기 위한 스타터, 새로운 위치가 상기 상대 코딩 테이블에서 제 2 특정 제어 문자를 가리킬 때까지: 새로운 위치를 찾기 위해 상기 상대 코딩 테이블에서 현재 위치로부터 제 1 좌표 및 제 2 좌표의 현재 쌍에 의해 코딩되는 변위를 적용하되, 제 1 좌표는 제 1 미리 결정된 방향을 따라 열들의 순환 계수를 나타내고, 제 2 좌표는 제 2 미리 결정된 방향을 따라 행들의 순환 계수를 나타내는, 상기 변위를 적용하고, 새로운 디코딩된 문자를 표시하고, 상기 디코딩된 최종 서브-시퀀스에서 상기 현재 문자 후 상기 새로운 디코딩된 문자를 복사하고, 현재 문자를 상기 새로운 디코딩된 문자로 갱신하고, 현재 위치를 상기 새로운 위치로 갱신하고, 좌표의 현재 쌍을 상기 코딩된 서브-시퀀스에서 제 1 좌표 및 제 2 좌표의 다음의 쌍으로 갱신하는 것을 반복하기 위한 반복기를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고, 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들 및 상기 제 2 세트들의 숫자들 사이에 공유되는 숫자가 없고, 선처리기는: 상기 후속 숫자들을 좌표들로 분리하기 위한 분리기, 임의의 제 2 특정 좌표 전에 제 1 특정 좌표를 삽입하기 위한 제 1 삽입기, 임의의 제 1 특정 좌표 전에 제 2 특정 좌표를 삽입하기 위한 제 2 삽입기, 임의의 두 개의 연속하는 제 2 좌표들 사이에 제 1 특정 좌표를 삽입하기 위한 제 3 삽입기, 및 임의의 두 개의 연속하는 제 1 좌표들 사이에 제 2 특정 좌표를 삽입하기 위한 제 4 삽입기를 추가로 포함한다.
일 실시예의 다른 특징에 따라, 상기 상대 코딩 테이블은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표이다.
본 발명은 문자들의 스트링을 압축 및 압축된 시퀀스(3)를 문자들의 스트링으로 압축 해제하는 방법 및 장치를 제공한다.
도 1은 ASCII 표준에 따라 절대 코딩 테이블을 도시하는 도면.
도 2는 일 실시예에 따라 절대 코딩된, 및 코딩된 스트링의 일 예를 도시하는 단계.
도 3은 원래의 시퀀스를 제 1 및 제 2 형태의 서브-시퀀스로 분할하는 단계를 도시하는 도면.
도 4는 상대 코딩 테이블을 도시하는 도면.
도 5는 일 실시예에 따른 압축 방법의 플로차트.
도 6은 일 실시예에 따른 압축기를 도시하는 도면.
도 7은 일 실시예에 따른 압축 해제 방법의 플로차트.
도 8은 일 실시예에 따른 압축 해제기를 도시하는 도면.
본 발명의 다른 특징들, 상세들, 및 이점들은 도면들에 관하여 이하에 주어진 기술을 예시하는 상세로부터 더 명백해질 것이다.
텍스트는 문자들(4)의 시퀀스(1)로서 순서화된 문자들의 스트링이다. 문자(4)를 숫자로 나타내기 위한 일반적인 방식은 절대 코딩 테이블(10)의 사용에 의한 것이고, 각각의 문자(4)는 고유한 절대수(5)로 나타내어진다. 가장 유명한 이러한 절대 코딩 테이블(10) 중 하나는 ASCII 표준에 의해 규정된 것이다. ASCII 절대 코딩 테이블(10)의 제 1 절반은 도 1에 도시된다. 제 3 열, 각각 제 7 열에서 언급된 문자(4)는 10진법으로 제 1 열, 각각 제 5 열에 표시된 절대수로 및 16진법으로 제 2 열, 각각 제 6 열에 표시된 동일한 절대수(5)로 나타내어진다. 일 예로서, 문자 "A"는 10진법으로 절대수 "065"로 및 16진법으로 절대수 "41"로 나타내어진다.
이러한 ASCII 절대 코딩 테이블(10)에서, 각각의 문자(4)는 일반적으로 고유한 1 바이트 숫자(5)로 나타내어지고, 따라서 이러한 ASCII 절대 코딩 테이블의 크기는 256 개의 문자들로 제한된다(표의 절반이 도시된다). 문자(4)의 순서화된 시퀀스(1)인 텍스트를 숫자로 나타내기 위한 일반적인 방식은 숫자들(5)의 대응하는 순서화된 시퀀스(2)를 제공하는 것이고, 각각의 문자(4)는 동일한 순서로 그의 절대수(5)로 나타내어진다. 도 2를 참조하면, 예시적인 스트링(1):""888" 오렌지 보이스메일: 12/05/11 17시 44분에 본 통신원은 메시지를 남기지 않고 한번 걸려왔습니다."는 상기 ASCII 절대 코딩 테이블(10)을 사용하여 나타내어졌다. 모든 블록들 중 제 1 라인은 문자들 중 스트링(1)을 포함하고, 각각의 블록의 제 2 라인은 숫자들(10)의 순서화된 시퀀스(2), 또는 ASCII 코드들을 16진수로 대응하여 포함한다.
이러한 절대 코딩이 효율적이지 않을 수 있기 때문에 압축 방법이 제안된다. 모든 블록들의 제 2 라인은 이후 압축될 원래의 순서화된 시퀀스(2)를 나타내고, 모든 블록들의 제 3 라인은 압축 방법의 일 실시예를 통해 상기 원래의 순서화된 시퀀스(2)로부터 획득되는 대응하는 압축된 시퀀스(3)이다.
상기 압축 방법은, 상기 절대 코딩 테이블(10)에 더하여 상대 코딩 테이블(20)을 사용한다. 이러한 상대 코딩 테이블(20)의 일 예는 도 4에 도시된다. 상기 압축 방법은 수 개의 단계들을 포함할 수 있다.
도 3을 참조하면, 원래의 시퀀스(2)는 그것이 압축 방법에 들어갈 때 상부에 형성된다. 도 3의 바닥부상에, 압축된 시퀀스(3)는 상기 압축 방법에 의해 출력되는 것으로 형성된다.
압축 방법의 제 1 단계에 따라, 상기 원래의 시퀀스(2)는 서브-시퀀스들(7, 8)로 파싱된다. 상기 파싱은 상기 상대 코딩 테이블(20)의 콘텐트에 기초한다. 상기 콘텐트는, 예를 들면, 절대 코딩 테이블(10)에 포함된 256 개의 문자들에 의해 규정되는 전체 문자 세트의 적어도 일 서브세트인 일 세트의 문자들이다. 따라서, 상기 상대 코딩 테이블(20)에 포함되고, 따라서 상기 절대 코딩 테이블(10)에 또한 포함되는 것을 특징으로 하는 제 1 형태 문자를 규정할 수 있다. 유사하게 상기 절대 코딩 테이블(10)에 포함되고 상기 상대 코딩 테이블(20)에 포함되지 않는 제 2 형태 문자를 규정할 수 있다. 예를 들면, 예시적인 도 1의 절대 코딩 테이블(10) 및 도 4의 예시적인 상대 코딩 테이블(20)에 의해, 상기 상대 코딩 테이블(20)에 존재하는 문자들("A" 내지 "Z")은 제 1 형태 문자들이고, 반면에 상대 코딩 테이블(20)에 없는 문자들("0" 내지 "9")은 제 2 형태 문자들이다.
따라서, 제 1 형태의 연속하는 문자들을 포함하는 제 1 형태 서브-시퀀스(7), 및 임의의 형태의 연속하는 문자들을 포함하는 제 2 형태 서브-시퀀스(8)를 규정할 수 있다. 따라서, 제 1 형태 문자는 제 1 형태 또는 제 2 형태 서브-시퀀스에서 발견될 수 있고, 반면에 제 2 형태 문자는 제 2 형태 서브-시퀀스에서 나타난다.
도 3을 참조하면, 예시적인 스트링: ""888" 오렌지 보이스메일: 12/05/11 17시 44분에 본 통신원은 메시지를 남기지 않고 한번 걸려왔습니다."는 도 4의 상대 코딩 테이블(20)에 기초하여 다음으로 분할될 수 있다:
- 제 1의 제 2 형태 서브-시퀀스(8) : ""888"",
- 제 1의 제 1 형태 서브-시퀀스(7) : "오렌지 보이스메일 : 켜짐"
- 제 2의 제 2 형태 서브-시퀀스(8a) : "12/04/11 17h44에", 및
- 제 2의 제 1 형태 서브-시퀀스(7a) : "본 통신원은 메시지를 남기지 않고 한번 걸려왔음"
"~에"는 문자들: 스페이스, "a" 및 "t", 모두는 상기 상대 코딩 테이블(20)에 존재하고, 서브-시퀀스(8a)는 세 개의 서브-시퀀스들로 더 분할될 수 있다: 제 2 형태의 "12/05/11", 제 1 형태의 "~에", 및 제 2 형태의 "17h44". 그러나, 이후 그 자체를 설명하는 바와 같이, 제 1 형태 서브-시퀀스(7)의 추출은 선택적일 수 있다. 여기서, 제 1 형태 서브-시퀀스 "~에"는 이후에 상세히 설명되는 바와 같이 추출하고 코딩하는 것에 관심을 두기에 너무 짧은 것으로 생각된다.
더 일반적으로, 제 2 형태 서브-시퀀스(7)의 추출은, 모든 문자들이 절대 코딩 테이블(10)에 속하는 경우, 임의의 추출가능한 제 1 형태 서브-시퀀스가 존재하지 않기 때문에 선택적일 수 있다. 이러한 경우, 원래의 시퀀스(2)와 동일한 하나의 제 2 형태 서브-시퀀스는 상기 파싱 단계를 통해 획득될 수 있다.
다음으로부터 명백해지는 바와 같이, 압축 이득이 제 1 형태 서브-시퀀스(7)의 코딩을 통해 획득될 수 있기 때문에, 가장 긴 가능한 제 1 형태 서브-시퀀스들(7)을 추출하는 것 및 상기 상대 코딩 테이블(20)에 없는 제 2 형태의 문자들을 수용하기 위해 제 2 형태 서브-시퀀스(8)를 사용하는 것에 흥미가 있다.
그들의 형태에 의존하여, 이들 두 개의 형태들의 이렇게 획득된 서브-시퀀스들이 처리된다. 각각의 제 1 형태 서브-시퀀스(7)는 이후 상세하게 설명되는 상기 상대 코딩 테이블(20)을 사용하여 코딩될 수 있다. 제 2 형태 서브-시퀀스(8)는 그가 존재하는 대로 유지된다. 그와 다르게, 상기 제 2 형태 서브-시퀀스(8)는 각각의 문자(4)가 상기 절대 코딩 테이블(10)로부터의 수(5)를 나타내는 그의 절대수로 나타내어지는 상기 절대 코딩 테이블(10)을 사용하여 나타내지도록 유지한다. 이러한 제 2 형태 서브-시퀀스는 원래의 시퀀스(2)로부터 압축된 시퀀스(3)로 순서대로 간단하게 복사된다.
제 1 형태 서브-시퀀스(7)는 제 1 형태 최종 코딩된 서브-시퀀스(11)로 코딩된다. 제 2 형태 서브-시퀀스(8)는 상기 원래의 제 2 형태 서브-시퀀스(8)와 동일한 제 2 형태 최종 서브-시퀀스(12)로 복사된다. 압축 방법의 결과는 도 3에 도시되는 바와 같이 상기 제 1 및 제 2 형태 최종 서브-시퀀스들(11, 12)의 연쇄와 순서대로 동일한 최종 압축된 시퀀스(3)이다.
압축 방법의 주요 이익은 임의의 제 1 형태 서브-시퀀스(7)에 적용된 코딩 단계로부터 발생한다. 이러한 코딩 단계는 상기 상대 코딩 테이블(20)에 기초하고 수 개의 후속 단계들을 포함한다. 이는 도 3에 도시된다.
제 1 형태 서브-시퀀스(7)의 코딩을 시작하기 위해, 제 1 특정 제어 문자(13)는 결과의 대응하는 최종 서브-시퀀스(11)의 시작에 추가된다. 이러한 제 1 특정 제어 문자(13)는 압축 해제 방법/디코딩 단계의 관심에 대해, 코딩의 시작을 표시하기 위해 여기에 배치된다.
상기 제 1 특정 제어 문자(13)는 임의로 선택될 수 있다. 그러나, 절대 코딩 테이블(10)에서 규정되는 문자들의 일부는 제어 목적들에 전념한다. 코드들이 "00"으로부터 "1F"로인 문자들(4)은 제어 문자들이다. 그중 많은 것들은 이미 특별한 목적을 갖고 바람직한 후보들이 아니다. 문자(DC2)(코딩된 "12")는 오늘날 자주 사용되지 않기 때문에 하나의 가능한 후보이다. 본 명세서에서의 예들은 상기 DC2 문자를 코딩의 시작을 의미하는 제 1 특정 제어 문자(13)로서 사용한다.
이후 코딩될 서브-시퀀스(7)의 제 1 문자(14)가 절대 코딩된다. 이는 상기 처음 문자(14)가 상기 절대 코딩 테이블(10)로부터 수(5)를 나타내는 그의 원래의 절대수로 나타내어진다는 것을 의미한다. 상기 처음 문자(14)는 또한 여기서 키코드(14)라고 불린다. 이는 코딩될 서브-시퀀스(7)의 제 1 수가 제 2 위치에서 상기 제 1 특정 제어 문자(13) 후 최종 코딩된 서브-시퀀스(11)에 복사된다는 것을 의미한다.
이후 상기 서브-시퀀스(7)에서 상기 제 1 문자(14) 다음의 각각의 문자(4)는 코딩될 상기 문자 전의 문자와 상기 문자 사이에 상기 상대 코딩 테이블(20)에서의 변위를 코딩함으로써 각각 코딩된다. 이는 제 1 코딩된 서브-시퀀스(11)가, 상기 원래의 서브-시퀀스(7)에서 마지막 문자까지, 먼저 제 1 특정 제어 문자(13), 이후 제 1 문자/키코드(14), 이후 상기 제 1 문자(14)와 상기 제 1 문자(14)에 즉시 후속하는 제 2 문자 사이의 상기 상대 코딩 테이블(20)에서 변위를 나타내는 이동 수(15), 이후 상기 제 2 문자와 상기 제 2 문자에 즉시 후속하는 제 3 문자 사이의 변위를 표시하는 이동 수(15) 등을 포함한다는 것을 의미한다. 이는 중요한 단계이기 때문에, 변위의 상대 코딩은 이후 상세히 설명될 것이다.
코딩은 상기 마지막 문자 후에 종료한다. 상기 제 1 형태 서브-시퀀스(7)의 코딩의 종료는 마지막 문자 후 코딩의 종료를 표시하는 상기 상대 코딩 테이블(20)에서 제 2 특정 제어 문자(16)로의 변위를 코딩하는 추가의 이동 수(15)로 최종 코딩된 서브-시퀀스(11)에 표시된다.
지금 예시적인 스트링 및 도 2로 다시 되돌아가자. ""888""을 포함하는 스트링의 시작은 상기 상대 코딩 테이블(20)에 없는 5 개의 문자들을 포함한다. 결과적으로, 그들은 제 2 형태 서브-시퀀스를 형성한다: 원래의 시퀀스(2)에서 및 압축된 시퀀스(3) 모두에서 코딩된 {22, 38, 38, 38, 22}인 서브-시퀀스(8). 이후, 제 1 형태 서브-시퀀스(7)를 시작한다: "오렌지 보이스 메일 : 켜짐". 상기 원래의 서브-시퀀스는 처음에 코딩된 {20, 40F, 72, 61, 6E, 67, 65, 20, 76, 6F, 69, 63, 65, 6D, 61, 69, 6C, 3A, 20, 6F, 6E, 20}이다. 이는 이후 코딩 단계를 통해, 밝은 회색으로 나타낸, 그의 코드가 "12"인 DC2, 그의 코드가 "20"인 "스페이스"인, 후속하여 원래의 서브-시퀀스(7)의 제 1 문자(14)의 수(5)를 나타내는 제 1 특정 제어 문자(13)를 순서대로 포함하는 최종 서브-시퀀스(11)가 된다. 그들은 문자와 다음 문자 사이에 각각의 변위를 순서대로 코딩하는 이동 수들(15)로 후속된다. 원래의 서브-시퀀스(7)가 22 개의 문자들을 포함하기 때문에, 그들은 코딩할 21 개의 변위들이 있다. 그들은 이동 수들(15)의 시퀀스에 의해 코딩된다: {41, C5, 47, 94, F7, C5, E7, E7, 49, 2F, A1, E1, 69, 70, B4, C2, 2C}는 여기서 방법에 의해 제공된 이로운 감소 때문에 17 바이트를 포함한다. 최종 서브-시퀀스(11)는 마지막 이동 수(15), 여기서 상기 상대 코딩 테이블(20)에서 마지막 문자, 여기서 ""(스페이스) 및 제 2 특정 제어 문자(16) 사이에 변위에 대응하는 "0C"로 종료한다. 이후 상세하게 설명되는 바와 같이, 상기 이동 수 "OC"는 앞의 "O"를 생략함으로써 "C"가 된다. 이후, "O" 필러는 1/2 바이트의 짝수를 나타내기 위해 그 후에 추가되었다. 이는 도 2에서 어두운 회색으로 나타낸, "C0" 수를 초래한다. 다음의 수들 {31, 32, 2F, ...}은 제 2 형태 서브-시퀀스(8a)에 속하는 다음의 문자들 "12/..."을 나타내는 절대수들(5)이고, 따라서 절대적으로 나타내어진다.
도 3에서 도시된 바와 같이, 이는 압축 방법을 안전하게 하고, 체크섬(18, 19)을 추가하기 위해 가능하다. 이러한 체크섬(18)은 상기 원래의 시퀀스(2)로부터 계산된다. 상기 체크섬(18)의 복사(19)는 이후, 예를 들면, 상기 압축된 시퀀스의 말단에서 송신하기 전에 압축된 시퀀스(3)에 첨부된다. 이는 수신기가 두 개의 리던던트 데이터, 압축된 시퀀스(3) 및 상기 체크섬(19)을 비교함으로써 검사하게 한다. 상기 비교의 긍정 결과는 정확한 압축 및 송신을 표시하고, 반면에 부정 결과는 압축 방법/코딩 단계에서 또는 송신에서 오차를 표시한다.
상기 체크섬(18)을 계산하기 위한 가능한 방식은 예를 들면, 원래의 시퀀스(2)의 문자들(4)의 모든 절대수들(5)을 합산하는 것이다. 스트링에서 문자들의 수가 256보다 적게 유지되는 동안, 상기 합은 65536보다 작게 유지되고 2 바이트로 기록될 수 있다. 큰 스트링에 대하여, 2 바이트 체크섬을 유지하기 위해, 상기 스트링을 256 바이트로 컷팅하는 것 또는 예를 들면, 어떤 올림수도 무시하는 예상 체크섬 알고리즘을 사용하는 것이 가능하다.
여기서 상대 코딩 테이블(20)을 사용하여 변위의 코딩을 기술한다. 변위(21)가 상기 원래의 시퀀스(2)에서 두 개의 후속 문자들 사이에 규정되고, 이는 앞선 문자(22) 및 후속 문자(23)를 규정할 수 있다. 상기 문자들이 제 1 형태 서브-시퀀스(7)에 속하기 때문에, 그들은 상기 상대 코딩 테이블(20)에 모두 존재한다.
원리는 상기 상대 코딩 테이블(20)에서 상기 앞선 문자(22)로부터 상기 후속 문자(23)로의 변위(21)를 고려하는 것이다. 상기 변위(21)를 고려하면, 이는 수평 변위 및 수직 변위로 분해될 수 있다. 따라서, 상기 변위(21)를 규정하기 위해 제 1 좌표, 및 제 2 좌표를 결정할 수 있다. 상대 코딩 테이블(20)은 직각 행렬이고, 제 1 좌표는 제 1 미리 결정된 방향을 따라 상기 후속 문자(23)로부터 상기 앞선 문자(22)를 분리하는 열들의 순환 계수일 수 있고, 제 2 좌표는 제 2 미리 결정된 방향을 따라 상기 후속 문자(23)로부터 상기 앞선 문자(22)를 분리하는 행들의 순환 계수일 수 있다. 순서(행들/열들 또는 열들/행들)는 임의로 선택되고, 그것이 압축 및 압축 해제 방법들 사이에 동의되는 한, 심지어 하나의 변위(21)로부터 다른 변위로 변경될 수 있다.
모든 변위들(21)에 대하여, 카운팅 방향은 이롭게는 동일하다. 열들은 왼쪽으로부터 오른쪽으로 또는 오른쪽으로부터 왼쪽으로 카운팅될 수 있다. 행들은 상부로부터 하부로 또는 하부로부터 상부로 카운팅될 수 있다. 이는 일정하거나 또는 그것이 압축 및 압축 해제 방법들 사이에서 동의되는 한, 하나의 변위(21)로부터 다른 변위로 변경될 수 있다. 설명의 나머지 부분에서, 왼쪽으로부터 오른쪽으로의 열 카운팅 방향 및 상부로부터 하부로의 행 카운팅 방향이 가정된다.
상기 열, 각각의 행, 카운팅은 0과 열들의 최대수-1, 각각 행들의 최대 수-1 사이에 포함되도록 라운딩되는 점에서 순환적이다.
상기 결정된 제 1 및 제 2 좌표들은 이후 압축된 시퀀스(3)로의, 이동 숫자들(15)로 변위들의 순서로 연쇄된다.
도 4를 참조하면, 예시적인 상대 코딩 테이블(20)에 의해, 앞선 문자(22) "F" 및 후속 문자 "g" 사이의 변위(21)는 상세히 설명된다. "F"는 열(3)에 있고, "g"는 열(5)에 있고, 이후 왼쪽으로부터 오른쪽 방향을 따라 "F"로부터 "g"로의 변위(21)를 특징으로 하는 열들의 수는 2이다. 이후 상기 변위(21)의 제 1 좌표는 2이다. "F"는 행(2)에 있고, "g"는 행(5)에 있고, 이후 상부로부터 하부 방향을 따라 "F"로부터 "g"로의 변위(21)를 특징으로 하는 행들의 수는 3이다. 이후 상기 변위(21)의 제 2 좌표는 3이다. 따라서, 상기 변위(21)의 이동 수(15)는 (2, 3)으로 코딩되거나 또는 "23"일 수 있다.
여기서 문자 "g"와 문자 "s" 사이의 변위를 24로 생각하자. 열들은 왼쪽으로부터 오른쪽으로 카운팅되기 때문에, "s"로부터 "g"를 분리하는 열들의 수는 5이다. 여기서, 순환적 카운팅은 열들이 순환적으로 생각되고, 열들(0)은 열들(7)의 오른쪽에 다시 위치된다는 것을 암시한다. "s"로부터 "g"를 분리하는 상부로부터 하부로의 행들의 카운팅은 그들이 모두 동일한 행상에 있기 때문에 0의 계수, 0과 8-1=7 사이(즉, 행들의 최대수, 여기서 8로 함)에 포함되어 유지하도록 또는 이후 0으로 라운딩되는 8의 계수를 초래한다.
다른 발명 특징에 따라, 상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택된다. 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 사이에 숫자가 공유되지 않는다. 이러한 특징은 이롭게는, 좌표에서 볼 때, 그가 제 1 좌표인지 제 2 좌표인지를 즉시 알게 한다.
결과적으로, 각각의 제 1 및 제 2 좌표의 상대적인 순서가 알려지기 때문에, 이러한 특징은 압축된 시퀀스(3)에서 상기 제 1 세트 중에서 하나의 제 1 특정 좌표, 및 상기 제 2 세트 중에서 하나의 제 2 특정 좌표를 생략하는 것을 허용한다. 제 1 및 제 2 좌표들의 알려진 상대적 순서에 의해, 이러한 생략은 디코딩 동안 쉽게 검출되고, 상기 대응하는 제 1 또는 제 2 특정 좌표로 교체되는 상기 생략된 좌표를 갖는 것에 의해 보정될 수 있다.
상기 생략은 송신될 감소된 양의 바이트에 의해서 압축 방법/코딩 단계로부터 예상될 수 있는 이점에 기초한다.
그러나, 상기 생략을 적용할 때 예외가 있다. 두 개의 이러한 특정 좌표들이 즉시 후속하고 있을 때, 그들은 디코딩 동안 적어도 하나의 문자를 잃는 위험을 무릅쓰고 둘 모두가 생략될 수 없다. 이러한 경우에, 두 개의 후속하는 것들 중 제 2 특정 좌표는 생략되지 않고, 대신 압축된 시퀀스(3)에 보유된다. 그의 존재는 압축 해제 방법/디코딩 단계가 모든 원래 존재하는 문자들을 다시 검색하는 것을 허용한다.
상기 상대 코딩 테이블(20)의 사용을 최대화하기 위해, 즉, 주어진 원래의 시퀀스(2)로부터 대부분의 또는 가장 긴 제 1 형태 서브-시퀀스들(7)을 추출하기 위해, 상기 상대 코딩 테이블(20)은 이롭게는 압축될 텍스트 문자들의 스트링들에서 예상되는 가장 빈번한 문자들로 채워진다.
상대 코딩 테이블(20)의 주어진 크기(N)에 대하여, 상기 코딩 테이블(20)에서 하나의 장소는 EoC(16)에 대해 예약될 수 있고, 모든 다른 N-1 개의 장소들이 이용가능하고, 절대 코딩 테이블(10)에 의해 규정되는 완전한 세트의 문자들로부터 N-1 개의 가장 빈번한 문자들을 받아들이도록 선택될 수 있다.
문자들의 상대적인 횟수들은 압축될 것이 예측되는 텍스트 문자들의 스트링들로부터 통계적으로 추정된다. 따라서, 횟수 분석은 상기 스트링들에서 사용된 주어진 언어에 대해 적용될 수 있다.
도 4의 예시적인 상대 코딩 테이블(20)은 8×8 정방 행렬이다. 따라서, 이는 64 개 장소들을 포함한다. 하나의 장소는 Eoc(16)로 예약된다. 63 개 나머지 장소들은 왼쪽으로부터 오른쪽으로 및 상부로부터 하부로 영어에서 63 개의 가장 빈번한 문자들로 채워진다.
상기 상대 코딩 테이블(20)의 사용을 최대화하기 위해, 즉, 주어진 원래의 시퀀스(2)로부터 대부분 및 가장 긴 제 1 형태 서브-시퀀스들(7)을 추출하기 위해, 가능한 절대 코딩 테이블(10)에 의해 표시된 문자들의 완전한 세트로부터의 문자들만큼 포함하는 큰 상대 코딩 테이블(20)을 갖는 것이 이롭다.
일 실시예에 따라, 상기 상대 코딩 테이블(20)은 절대 코딩 테이블(10)로 표시된 문자들의 완전한 세트로부터의 모든 문자들을 포함할 수 있다. 절대 ASCII 코딩 테이블(10)의 경우에, 이는 256 개 문자들을 초래하고, 따라서, 예를 들면, 16×16 행렬 상대 코딩 테이블(20)을 초래한다. 임의의 원래의 시퀀스(2)가 제 1 형태 서브-시퀀스(7)이고 코딩될 수 있다는 사실에 의해, 확장 코딩으로부터 얻어진 이득은 변위들 및 좌표들을 코딩하는 것이 요구되는 크기만큼 감소된다. 이러한 16×16 행렬 상대 코딩 테이블에 대하여, 각각의 좌표는 16 개의 심볼들 중에서 선택되고, 따라서 코딩의 증가된 오버헤드를 초래한다.
따라서, 상기 상대 코딩 테이블(20)의 크기를 감소시키고, 따라서 변위들의 연관된 좌표들의 크기를 감소시키고, 코딩을 가장 빈번하게 사용된 문자들로 구성된 제 1 형태 서브-시퀀스들(7)에 집중하는 것이 바람직할 수 있다.
바람직한 실시예에 따라, 상기 상대 코딩 테이블은 8×8 정방 행렬이다. 이는 8 개의 심볼들을 사용함으로써, 제 1 좌표, 각각 제 2 좌표의 코딩을 허용한다.
하나의 특히 이로운 실시예에서, 제 1 좌표는 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택된다. 그래서 "0"의 좌표는 동일한 열상의 앞선 문자(22)와 후속 문자 사이의 변위(21)를 표시하고, "1"의 좌표는 즉시 후속하는 열상의 앞선 문자(22)와 후속 문자 사이의 변위(21)를 표시하는 등이다. 상기 열 계수는, 예를 들면, 왼쪽으로부터 오른쪽으로 행해진다.
상기 실시예에서, 제 2 좌표는 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택된다. 상기 8의 추가는 제 1 좌표들과 제 2 좌표들 사이에 공통인 좌표들을 갖지 않게 하고, 동시에 각각의 좌표에 대한 의미를 유지하게 한다. 이렇게 "8"의 좌표(0을 의미하는)는 동일한 열상의 앞선 문자(22)와 후속 문자 사이의 변위(21)를 표시하고, "9"의 좌표(1을 의미하는)는 즉시 후속하는 행상의 앞선 문자(22)와 후속 문자 사이의 변위(21)를 표시하고, "A"의 좌표(2를 의미하는)는 두 개의 행들의 앞선 문자(22)와 후속 문자 사이의 변위(21)를 표시하는 등이다. 상기 행 계수는, 예를 들면, 상부로부터 하부로 행해진다.
상기 상대 코딩 테이블(20)의 작은 크기, 및 좌표들에 대한 값들의 선택 때문에, 임의의 좌표는 1/2 바이트로 표현될 수 있고, 제 1 좌표 및 제 2 좌표를 포함하는 이동 수(15)는 1 바이트로 표현될 수 있다.
또한 사용된 심볼들이 상이하기 때문에, 좌표는, 그것이 제 1 좌표인지 제 2 좌표인지를 명백히 표시한다. "D" 좌표는 5의 계수를 표시하고 그것이 행들/제 2 좌표에 관련되는 것을 표시한다. "3" 좌표는 3의 계수를 표시하고 그가 열들/제 1 좌표에 관련되는 것을 또한 표시한다.
이는 제 1 좌표들 {0, 1, 2, 3, 4, 5, 6, 7} 중에서 하나의 제 1 특정 좌표 및 제 2 좌표들의 세트 {8, 9, A, B, C, D, E, F} 중에서 하나의 제 2 특정 좌표를 생략하는 것을 허용한다.
압축 이익에 기초하는 상기 생략은 좌표의 총 수 중에서 하나의 좌표에 대하여, 즉, 정규 분포를 가정하는 경우, 여기서 1/8에 대하여, 적어도 예상될 수 있다. 상기 상대 코딩 테이블(20)에서 문자들의 배치의 가능한 최적화는 심지어 상기 생략된 제 1 특정 좌표 및 상기 제 2 특정 좌표를 사용하여 통계적으로 더 많은 변위들을 가짐으로써 압축 이익을 상승시킬 수 있다.
상기 생략된 제 1, 각각 제 2, 특정 좌표는, 그것이 압축 방법/코딩 단계와 압축 해제 방법/디코딩 단계 사이에 동의되는 한, 임의로 선택될 수 있다. 다른 것들 중 하나의 가능한 선택은 열을 분리하는 0에 대응하는 제 1 좌표를 생략하는 것 및 분리가 없는 행들에 대응하는 제 2 좌표를 생략하는 것이다.
결과적으로, 일 실시예에서, 제 1 특정 좌표는 "0"이고, 제 2 특정 좌표는 "8"이다. 이는 압축 이익이 원래의 시퀀스(2)에서 연속하는 후속 문자들이 상기 상대 코딩 테이블(20)의 동일한 열 또는 동일한 행상에 위치될 때 예상될 수 있다는 것을 의미한다. 상대 코딩 테이블(20)은, 예를 들면, 주어진 언어에 대하여, 스트링들에서 통계적으로 빈번한 후속 문자들을 상기 상대 코딩 테이블(20)의 동일한 열 또는 행상에 둠으로써 최적화될 수 있다.
예로 다시 되돌아가면, 도 2를 참조하여 제 1 형태 서브-시퀀스(7): "오렌지 보이스메일: 켜짐"에서 변위들의 코딩은 도 4의 상대 코딩 테이블(20)을 사용하여 다음의 방법으로 실현된다.
제 1 문자 ""("스페이스")(14)는 숫자를 나타내는 그의 절대수("20")로 절대적으로 나타내어진다. 상기 제 1 문자(14)는 또한 상대 코딩 테이블(20)에서 상기 제 1 위치를 제 1 행, 제 1 열상에 규정한다.
즉시 후속하는 문자는 "O"이다. 제 1 변위는 이후 "스페이스"로부터 "O"까지이다. "O"가 상기 상대 코딩 테이블(20)에서 제 1 행, 제 4 열상에 위치되기 때문에, 변위는 이후 4개의 열들의 수평 변위 및 0행의 수직 변위로 코딩될 수 있다. 이는 4의 제 1 좌표 및 8(0+8)의 제 2 좌표를 초래한다.
후속 문자는 "r"이다. 제 2 변위는 이후 "O"으로부터 "r"까지이다. "r"이 상기 상대 코딩 테이블(20)에서 제 6 행, 제 5 열상에 위치되기 때문에, 변위는 이후 1개의 열의 수평 변위 및 4 개의 행들의 수직 변위로 코딩될 수 있다.이는 1의 제 1 좌표 및 C(4+8)의 제 2 좌표를 초래한다.
후속 문자는 "a"이다. 제 3 변위는 이후 "r"로부터 "a"까지이다. "a"가 상기 상대 코딩 테이블(20)에서 제 5 행, 제 3 열 상에 위치되기 때문에, 변위는 이후 5 개의 열들의 수평 변위 및 0개의 행의 수직 변위로 코딩될 수 있다. 이는 5의 제 1 좌표 및 8의 제 2 좌표를 초래한다.
후속 문자는 "n"이다. 제 4 변위는 이후 "a"로부터 "n"까지이다. "n"이 상기 상대 코딩 테이블(20)에서 제 5 행, 제 7 열상에 위치되기 때문에, 변위는 이후 4 개의 열들의 수평 변위 및 0개의 행의 수직 변위로 코딩될 수 있다. 이는 4의 제 1 좌표 및 8의 제 2 좌표를 초래한다.
후속 문자는 "g"이다. 제 5 변위는 이후 "n"으로부터 "g"까지이다. "g"는 상기 상대 코딩 테이블(20)에서 제 6 행, 제 6 열 상에 위치되기 때문에, 변위는 이후 7의 수평 변위 및 1의 수직 변위로 코딩될 수 있다. 이는 7의 제 1 좌표 및 9(1+8)의 제 2 좌표를 초래한다.
후속 문자는 "e"이다. 제 6 변위는 이후 "g"로부터 "e"까지이다. "e"가 상기 상대 코딩 테이블(20)에서 제 5 행, 제 2 열 상에 위치되기 때문에, 변위는 이후 4개의 열들의 수평 변위 및 7개의 행들의 수직 변위로 코딩될 수 있다. 이는 4의 제 1 좌표 및 F(7+8)의 제 2 좌표를 초래한다.
후속 문자는 7 및 C의 좌표들을 초래하는 "스페이스"이다.
후속 문자는 5 및 E의 좌표들을 초래하는 "v"이다.
후속 문자는 7 및 E의 좌표들을 초래하는 "o"이다.
후속 문자는 7 및 0의 좌표들을 초래하는 "i"이다.
후속 문자는 4 및 9의 좌표들을 초래하는 "c"이다.
후속 문자는 2 및 F의 좌표들을 초래하는 "e"이다.
후속 문자는 0 및 A의 좌표들을 초래하는 "m"이다.
후속 문자는 1 및 E의 좌표들을 초래하는 "a"이다.
후속 문자는 1 및 8의 좌표들을 초래하는 "i"이다.
후속 문자는 6 및 9의 좌표들을 초래하는 "l"이다.
후속 문자는 7 및 8의 좌표들을 초래하는 ":"이다.
후속 문자는 0 및 B의 좌표들을 초래하는 "스페이스"이다.
후속 문자는 4 및 C의 좌표들을 초래하는 "o"이다.
후속 문자는 2 및 8의 좌표들을 초래하는 "n"이다.
후속 문자는 2 및 C의 좌표들을 초래하는 "스페이스"이다.
상기 "스페이스"는 서브-시퀀스(7)의 마지막 문자이다. 따라서, 마지막 변위는, 여기서 제 1 열, 제 5 행에 위치된 EoC(16)으로 코딩된다. 마지막 변위는 이후 마지막 문자 "스페이스"로부터 "EoC"까지이다. 변위는 이후 0개의 열의 수평 변위 및 4행의 수직 변위로 코딩될 수 있다. 이는 0의 제 1 좌표 및 C의 제 2 좌표를 초래한다.
제 1 좌표 이후 제 2 좌표의 가능한 상대 순서에 후속하여, 원래의 서브-시퀀스(7)에서 문자들의 순서에서 모든 좌표들의 연쇄는 다음을 초래한다:
Figure 112015044231532-pct00001
0이 제 1 특정 좌표로서 선택되고 8이 제 2 특정 좌표로서 선택되었기 때문에, 그들은 그들 둘 모두가 연속할 때를 제외하고 코딩된 시퀀스로부터 생략될 수 있다. 박스로 표시된 하나의 사건이 존재하고, 여기서 8에 즉시 후속하는 0을 발견할 수 있다. 이러한 경우에, 후속하는 0이 보유된다. 이는 다음을 초래한다:
Figure 112015044231532-pct00002
이는 다음으로 간략화된다:
Figure 112015044231532-pct00003
상기 간략화는 압축 이익의 주요 이유이다. 숫자들의 상기 시퀀스는 이후 도 2에서 알 수 있는 바와 같이 대응하는 코딩된 서브-시퀀스(11)에서 순서대로 복사된다.
특정 좌표들, 여기서 0 및 8의 생략은, 예에서와 같이, 홀수의 나머지 좌표들을 초래한다는 것이 주의될 수 있다. 각각의 좌표가 1/2 바이트를 점유하기 때문에, 이는 완전하지 않은 최종 바이트를 초래할 수 있다. 상기 제한을 준수하기 위해, 임의의 완전하지 않은 최종 바이트는 1/2 바이트의 필러(17)에 의해 완료될 수 있다. 여기서 강조된, 상기 필러(17)는 예를 들면, 도 2에서와 같이 0들로 채워질 수 있다.
스트링의 콘텐트에 의존하여, 압축 방법/코딩 단계는 압축된 시퀀스(3)가 원래의 시퀀스(2)보다 짧다는 점에서 이로울 수 있다.
이전 설명으로부터 쉽게 도출될 수 있는 바와 같이, 원래의 시퀀스(2)로부터 압축된 시퀀스(3)로 이상적으로 복사되기 때문에, 제 2 형태 서브-시퀀스(8)는 임의의 압축 이익을 제공하지 않는다. 제 1 형태 서브-시퀀스(7)에 대하여, 압축 이익은 상기 서브-시퀀스(7)의 콘텐트에 의존한다. 압축 이익들은 명백하게, 추가된 오버헤드와 비교된 생략된 특정 좌표들의 수로부터 기인한다. 두 개의 약간의 생략들이 동작될 수 있는 경우, 제 1 형태 서브-시퀀스(7)는 심지어 더 길게 코딩된 서브-시퀀스(11)로 코딩될 수 있다.
일 실시예를 참조하면, 오버헤드가 제 1 특정 제어 문자(13)(1 바이트) 및 EoC(16)(1바이트까지)로의 변위를 포함하기 때문에, 이는 2 바이트까지 포함할 수 있다. 특정 좌표의 각각의 생략은 1/2 바이트의 이득을 제공한다. 압축 방법은 이후, 4 개보다 많은 생략들이 주어진 제 1 형태 서브-시퀀스(7)에 적용될 수 있는 경우 이롭게 된다. 체크섬(18, 19)을 삽입하는 것은 또한 2 바이트를 추가한다. 그래서 제 1 형태 서브-시퀀스(7)가 4개보다 적은 생략들, 각각 8 개의 생략들(체크섬을 사용하는 경우)을 제공하는 것으로 나타나는 경우, 그의 코딩은 최적이 아닐 수 있다. 이러한 스트링은 이롭게는 제 2 형태 서브-시퀀스로서 더 양호하게 처리될 수 있다.
일 실시예에 따라, 압축 방법은 따라서 후속하는 단계들에 추가함으로써 최적화될 수 있다. 분할 단계로부터 획득된 각각의 제 1 형태 서브-시퀀스(7)에 대하여, 코딩 단계를 통해 획득된 코딩된 서브-시퀀스(11)가 원래의 서브-시퀀스(7)의 길이 이상의 길이를 갖는 경우, 상기 제 1 형태 서브-시퀀스(7)는 제 2 형태 서브-시퀀스로서 취급된다. 즉, 그것은 코딩되지 않는다.
도 2의 예로 다시 돌아와서, 이는 제 1 형태 서브-시퀀스로서 생각되지 않고, 따라서 코딩 단계를 통해 처리되지 않지만, 대신에 포함하는 제 2 형태 서브-시퀀스(8)의 부분으로서 보유되는 전술된 서브-시퀀스 "at"의 경우이다.
압축 방법 및 코딩 단계는 널리 기술되었다. 본 명세서는 또한 대응하는 압축 해제 방법에 관련한다.
상기 압축 해제 방법은 숫자들의 순서화된 시퀀스인 압축된 시퀀스(3)를 수신하고, 상기 원래의 시퀀스(2)와 동일한 최종 순서화된 시퀀스의 형태로 텍스트의 문자들의 최종 스트링을 다시 제공하기 위해 이를 압축 해제하는 것을 담당한다.
상기 압축 해제 방법은 압축 방법에 의해 사용되는 것과 동일한 직사각 행렬 상대 코딩 테이블(20)을 사용한다. 상기 압축 해제 방법은 후속 단계들을 포함한다.
우선, 압축 해제 방법은 상기 압축된 시퀀스(3)를 제 1 형태 서브-시퀀스(7)를 코딩하는 것으로부터 발생한 제 1 형태 코딩된 서브-시퀀스(11) 및 제 2 형태 서브-시퀀스(8)를 복사하는 것으로부터 발생한 제 2 형태 서브-시퀀스(12)로 파싱하는 단계를 포함한다. 이는 상기 압축된 시퀀스(3)로부터, 존재하는 경우, 모든 존재하는 코딩된 서브-시퀀스들(11)을 추출함으로써 행해질 수 있다.
상기 추출 후 상기 압축된 시퀀스(3)에서 나머지 숫자들이 보유된다. 그들은, 연속할 때, 제 2 형태 서브 시퀀스들(12)로 수집될 수 있다. 각각의 이러한 제 2 형태 서브-시퀀스(12)는, 그것이 원래의 제 2 형태 서브-시퀀스(8)와 동일한, 최종 제 2 형태 서브-시퀀스에 있을 때 복사된다.
이렇게 추출된 각각의 제 1 형태 코딩된 서브-시퀀스(11)는, 상기 상대 코딩 테이블(20)을 사용하여, 상기 원래의 제 1 형태 서브-시퀀스(7)와 동일한 최종 제 1 형태 디코딩된 서브-시퀀스로 디코딩 단계를 통해 처리될 수 있다.
추출 프로세스는 수 개의 단계들을 포함할 수 있다. 코딩 방식에 의해, 제 1 형태 코딩된 서브-시퀀스(11)가, 추출의 목적을 위해, 제 1 특정 제어 문자(13)인, 그의 처음 숫자로, 검출될 수 있다. 압축된 시퀀스(3)에서 발견된 임의의 이러한 제 1 특정 제어 문자(13)는 상기 제 1 특정 제어 문자(13) 후에 시작하는 하나의 제 1 형태 코딩된 서브 시퀀스의 존재를 표시한다. 발견되면, 상기 제 1 특정 제어 문자(13)가 폐기되고 최종 압축 해제된 시퀀스로 복사되지 않는다.
이후 변위에 의한 상대 코딩에 의해, 상기 제 1 특정 제어 문자(13)로부터 시작하는 제 1 형태 코딩된 서브-시퀀스(11)는 그의 단부를 찾고 따라서 그의 추출을 종료할 수 있도록 디코딩된다.
상기 제 1 특정 제어 문자(13)에 즉시 후속하는 처음 숫자(14)는, 또한 키코드(14)라고 명명된 처음 문자(14)를 나타내는, 상기 절대 코딩 테이블(10)에 따른 절대수(5)를 상기 최종 제 1 형태 디코딩된 서브-시퀀스의 제 1 문자로 나타낸다. 상기 처음 문자(14)는 따라서 상기 최종 제 1 형태 디코딩된 서브-시퀀스의 제 1 디코딩된 문자로서 최종 압축 해제된 시퀀스로 복사된다.
나머지 후속 숫자들은 상대 변위들을 코딩하는 이동 수들(15)로서 생각된다. 그들은 상기 상대 코딩 테이블(20)을 사용하여 디코딩될 수 있다.
제 1 형태 코딩된 서브-시퀀스(11)의 종단부는 일반적으로 미리 알려질 수 없기 때문에, 완전히 압축된 시퀀스(3)는, 그의 종단부까지 또는 다른 제 1 특정 제어 문자(13)가 상기 압축된 시퀀스(3)에서 발견될 때까지, 디코딩 단계를 통해 처리되거나 선처리될 수 있다.
상기 디코딩 단계는 변위가 상기 상대 코딩 테이블(20)에서 제 2 특정 제어 문자(EoC; 16)를 가리킬 때 종료될 수 있다. 이는 코딩의 종료를 표시하고, 따라서, 알려진 그의 시작 및 종료를 갖는, 이러한 이벤트로부터 추출될 수 있는 상기 제 1 형태 코딩된 서브-시퀀스(11)의 종단부를 표시한다.
디코딩 단계는 코딩 단계 동안 적용된 것들에 대응하는 역 처리들을 계속한다. 상기 키코드(14)에 후속하는 숫자들은 연속하는 변위들을 코딩하는 이동수(15)로 생각되고, 상대 코딩 테이블(20)에서 각각의 변위는 최종 디코딩된 서브-시퀀스의 문자(4)를 규정한다.
각각의 이동수(15)는 제 1 좌표 및 제 2 좌표를 포함한다. 디코딩 단계는, 각각의 이러한 이동수(15)에 대하여, 후속하는 단계들을 반복한다.
디코딩 단계는 현재 문자, 상기 상대 코딩 테이블(20)에서 상기 현재 문자의 위치인 현재 위치, 및 제 1 좌표 및 제 2 좌표를 포함하는 현재 이동수(15)를 규정한다. 시작에서, 제 1 현재 문자는 상기 키코드(14), 즉, 처음 문자(14)와 동일하게 취해지고, 제 1 현재 위치는 상기 상대 코딩 테이블(20)에서 상기 키코드 문자(14)의 위치와 동일하게 취해지고, 제 1 이동수(15)는 코딩된 서브-시퀀스(11)로부터 발견된/추출된 제 1 이동수, 즉 상기 처음 문자(14)에 후속하는 제 1 수이다.
디코딩 단계는 이후, 상기 상대 코딩 테이블(20)에서 현재 위치로부터 제 1 좌표 및 제 2 좌표의 현재 쌍에 의해 코딩되는 변위를 적용하고, 제 1 좌표는 제 1 미리 결정된 방향을 따라 열들의 순환 계수를 표시하고, 제 2 좌표는 새로운 디코딩된 문자를 표시하는 새로운 위치를 찾기 위해 제 2 미리 결정된 방향을 따라 행들의 순환 계수를 표시한다. 상기 새로운 디코딩된 문자는 마지막 디코딩된 문자 후 최종 압축 해제된 시퀀스에 복사된다.
변위는, 코딩 단계에서, 문자에 대한 변위(21)가 두 개의 좌표들을 규정하고, 동시에 디코딩 단계에서, 두 개의 좌표들이 문자로 종료하는 변위(21)를 규정하는 것을 제외하고, 대응하는 코딩 단계에서와 동일한 방식으로 적용된다는 것이 여기서 주의될 수 있다. 제 1 및 제 2 미리 결정된 방향들은 코딩 단계에서와 동일하다.
이렇게 발견된 디코딩된 문자는 이후 제 1 형태 최종 디코딩된 서브-시퀀스에서 마지막 디코딩된 문자 후에 첨부된다.
상기 상대 코딩 테이블(20)에서 EoC(16) 문자/위치가 새로 디코딩되는 경우, 디코딩 단계는 종료한다. 상기 마지막 변위/EoC 문자는 제 1 형태 최종 디코딩된 서브-시퀀스/최종 압축 해제된 시퀀스에서 나타나는 것으로 폐기된다.
상기 새롭게 디코딩된 문서는 EoC(16)가 아니고, 현재 문자는 상기 새롭게 디코딩된 문자로 갱신되고, 현재 위치는 상기 새롭게 디코딩된 문자의 대응하는 새로운 위치로 갱신되고, 현재 이동수(15)는 상기 코딩된 서브-시퀀스(11)에서 발견된 다음의 이동수(15) 및 제 1 좌표와 제 2 좌표의 다음 쌍으로 갱신된다. 프로세스는 이후 상기 새로운 현재 문자, 현재 위치 및 현재 좌표들로 반복된다.
이러한 프로세스는 이후 상기 코딩된 서브-시퀀스(11)로 코딩된 모든 문자들로 다시 반복적으로 검색하는 것을 허용한다.
코딩 방식에 따라, 제 1 좌표들이 제 1 세트의 숫자들에서 선택되고 제 2 좌표들이 제 2 세트의 숫자들에서 선택되고, 상기 두 개의 세트들 사이에 공통인 숫자가 없는 경우, 및 특정한 제 1 좌표 및/또는 특정한 제 2 좌표가 생략된 경우, 선처리 단계는 키코드(16) 후 제 1 형태 코딩된 서브-시퀀스(11)에서 발견된 숫자들의 시퀀스를 이동수들(15)의 시퀀스로 변환하는 것이 수행된다. 상기 선처리의 목표는 상기 생략된 특정 제 1 및/또는 제 2 좌표들을 다시 재도입하는 것이다.
상기 선처리 단계는 다음 단계들로 압축 해제될 수 있다. 우선, 상기 키코드(16)에 후속하는 상기 코딩된 서브-시퀀스의 숫자들의 시퀀스는 좌표들에서 분리된다. 제 1 및 제 2 좌표들이 동일한 세트의 숫자들에서 선택되지 않기 때문에, 좌표를 나타내는 숫자는 제 1 좌표 또는 제 2 좌표가 있는 경우 즉시 표시한다.
특정 좌표는 보통, 두 개의 특정 좌표들이 후속할 때를 제외하고 코딩 단계 동안 생략되었다. 상기 코딩된 서브-시퀀스(11)에서 발견된 이러한 임의의 특정 좌표는 이러한 쌍 구성을 표시한다. 생략 없이 완전한 코딩된 서브-시퀀스(7)를 다시 복구하기 위해, 제 1 특정 좌표가 코딩된 서브-시퀀스(11)에서 발견될 때마다, 제 2 특정 좌표는 상기 제 1 특정 좌표 전에 삽입된다. 유사하게, 제 2 특정 좌표가 코딩된 서브-시퀀스(11)에서 발견될 때마다, 제 1 특정 좌표는 상기 제 2 특정 좌표 전에 삽입된다.
다수의 후속하는 특정 좌표들을 복구하는 이들 두 개의 단계들은 이롭게는 두 개의 다음 단계들 전에 적용된다.
제 1 및/또는 제 2 좌표가 코딩 단계 동안 적용되는 생략들 전에 주어진 순서에 따라 배치되기 때문에, 어디에서 임의의 좌표가 그의 생략에 의해 분실하는지를 결정할 수 있다.
예를 들면, 일반적인 순서로 교호하는 제 1 좌표 및 제 2 좌표가 코딩할 때 후속한 경우, 상기 코딩된 서브-시퀀스(11)에서 두 개의 연속적으로 후속하는 제 1 좌표들은 제 2 좌표가 그들 중 두 개 사이에서 분실된 것을 표시한다. 상기 분실한 제 2 좌표는 이후 그 사이에 재삽입될 수 있는 특정한 제 2 좌표로 결정될 수 있다.
그래서, 그들의 수들로 표시되는, 두 개의 연속하는 제 2 좌표들이 발견될 때마다, 제 1 특정 좌표가 그들 사이에 삽입된다. 유사하게, 그들의 수들로 표시되는 두 개의 연속하는 제 1 좌표들이 발견될 때마다, 제 2 특정 좌표가 그들 사이에 삽입된다.
임의의 경우에, 상대 코딩 테이블(20), 제 1 및 제 2 좌표들에 대한 숫자들의 세트들의 선택, 제 1 및 제 2 카운팅 방향들, 제 1 및 제 2 특정 좌표들은 압축 방법/코딩 단계 및 압축 해제 방법/디코딩 단계 사이에 공유된다.
실시예에 따라, 상대 코딩 테이블(20)은 코딩 단계에 의해 사용된 것과 동일한 8×8 정방 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 제 1 특정 좌표는 0이고, 제 2 특정 좌표는 8이다.
도 2의 예시 압축된 시퀀스로 다시 돌아가면, 압축 해제가 도시된다. 압축된 시퀀스(3)의 제 5의 제 1 숫자들: {22, 38, 38, 38, 22}은, "12"(DC2)가 존재하지 않기 때문에, 임의의 제 1 제어 문자(13)를 포함하지 않는다. 따라서, 이는 절대 코딩 테이블(10)에 따라 ASCII에서 미리 코딩된 제 2 형태 서브-시퀀스(12)이다.
제 6의 숫자는 "12"(DC2)이고, 따라서, 제 1 형태 코딩된 서브-시퀀스(11)의 시작을 표시한다. 다음의 숫자는 "20"이다. 이는 키코드(14)이기 때문에, ""(즉, "스페이스") 문자로서 절대 코딩 테이블(10)을 사용하여 절대적으로 해석된다.
연속하는 변위들을 코딩하는 숫자들을 포함하는 후속 시퀀스는: {41, C5, 47, 94, F7, C5, E7, E7, 49, 2F, Al, El, 69, 70, B4, C2, 2C, CO, 31, 32, 2F, 30, ...}.
우선 디코딩 단계는 좌표들에서 그들을 분리하고, 여기서, 1/2 바이트에서, 다음을 초래한다: {4, 1, C, 5, 4, 7, 9, 4, F, 7, C, 5, E, 7, E, 7, 4, 9, 2, F, A, 1, E, 1, 6, 9, 7, 0, B, 4, C, 2, 2, C, C, 0, 3, 1, 3, 2, 2, F, 3, 0, ...}.
이후 디코딩 단계는 특정한 제 1 좌표들, 즉, "0", 또는 특정한 제 2 좌표들, 즉, "8"에 대해 검색한다. 세 개의 "0"이 존재하고 "8"은 이들의 각각 앞에 삽입된다. "8"은 존재하지 않는다. 이는 다음을 초래한다: {4, 1, C, 5, 4, 7, 9, 4, F, 7, C, 5, E, 7, E, 7, 4, 9, 2, F, A, 1, E, 1, 6, 9, 7, 8, 0, B, 4, C, 2, 2, C, C, 8, 0, 3, 1, 3, 2, 2, F, 3, 8, 0, ...}.
이후, 디코딩 단계는, 임의의 연속하는 좌표가 동일한 형태인지를 테스트한다. 이는, 예를 들면, 두 개의 제 1 좌표를 갖는 경우이다. "4"는 제 1 좌표이고 "1"은 또한 제 1 좌표이다. 이는 그들 사이에 분실한 특정 제 2 좌표 "8"을 표시한다. 유사하게, 제 4 좌표 "5" 및 제 6 좌표 "4"는 모두 제 1 좌표이다. "8"은 그들 사이에 삽입된다. 유사하게, "F"에 후속하는 "A"가 발견될 수 있다. 그들은 모두 제 2 좌표들이기 때문에, 분실한 "0"은 그들 사이에 삽입된다. 모든 발생들을 고려하면, 이는 다음을 초래한다: 제 1 및 제 2 좌표들의 규칙적인 교호를 나타내는, {48, 1C, 58, 48, 79, 4F, 7C, 5E, 7E, 78, 49, 2F, OA, IE, 18, 69, 78, 0B, 4C, 28, 2C, 0C, 08, 08, 38, 18, 38, 28, 2F, 38, 0, ...}. 각각의 바이트/수는 이후 제 1 좌표 및 제 2 좌표를 포함하는 이동수(15)로서 해석될 수 있다.
키코드(14)가 "스페이스" 문자인 경우, 상기 상대 코딩 테이블(20)에서 제 1 위치는 제 1 열, 제 1 행상에 있다. 이러한 위치로부터, "48"인 제 1 이동수(15)에 의해 규정된 변위가 적용된다. 상기 변위는 왼쪽으로부터 오른쪽으로 4 개의 열들 및 상부로부터 하부로의 8 또는 0 개 행으로 규정되고, 따라서 문자 "O"를 표시한다.
상기 제 2 문자 "O"의 제 2 위치로부터 시작하여, 제 2 이동수(15)는 왼쪽으로부터 오른쪽으로 1 열 및 C, 즉 상부로부터 하부로 4 개의 행들의 변위를 규정하는 "1C"이고, 따라서, 문자 "r"을 표시한다.
동일한 프로세스가 반복적으로 적용되고, 다른 것들을 문자들에 순서대로 제공한다: "ange voicemail : on". 마지막 "스페이스" 문자는 "0C"와 동일한 이동수(15)를 따른다. 동일한 (0)열상이고 C, 즉 4 개의 행들의 상기 변위는 EoC(16)의 위치를 지시하고, 따라서 제 1 형태 서브-시퀀스의 종단부를 표시하고, 상기 "스페이스" 문자는 마지막 문자인 것을 표시한다.
나머지 숫자들로부터, 상기 "OC" 숫자 및 연속하는 변위들, {08, 08, 38, 18, 38, 28, 2F, 38, 0, ...}을 코딩하는 숫자들로 처음에 오인된 것에 후속하여, 처음 "0"은 필러(17)로서 식별되고 무시될 수 있다. 다른 숫자들, 또는 그들의 대응하는 숫자들을 대신하여, 초기 형태로, "0" 및 "8"의 재도입 전에: {31, 32, 2F, 30, ...}는 여기서부터 제 2 형태 서브-시퀀스(12)에 속하는 것으로 생각될 수 있다. 그들은, 새로운 제 1 제어 문자(13)가 발견될 때까지, 새로운 제 1 형태 코딩된 서브-시퀀스(11a)의 시작 및 따라서 또한 상기 제 2 형태 서브-시퀀스(12)의 종단부를 표시하는 "12/0..."로서 압축 해제/복사될 수 있다.
도 5는 압축 방법(30)의 가능한 실시예를 도시한다. 상기 압축 방법(30)은 파싱 단계(31)로 시작한다. 다음으로 코딩 단계(33)가 오고, 복사 단계(40)가 후속된다. 압축 방법(30)은 체크섬 단계(41)의 선택적인 삽입으로 종료할 수 있다.
선택적인 검사 단계(32)는 파싱 단계(31)와 코딩 단계(33) 사이에 삽입될 수 있다.
코딩 단계(33)는 또한 처음 문자를 코딩하는 단계(34), 각각 후속하는 문자를 코딩하는 단계(35), 및 상기 코딩을 종료하는 단계(39)로 분할된다.
각각 후속 문자를 코딩하는 단계(35)는 또한 제 1 좌표를 결정하는 단계(36), 제 2 좌표를 결정하는 단계(37), 및 연쇄 단계(38)로 분할된다.
본 명세서는 또한 압축 방법의 상기 기술된 실시예들 중 어느 하나에 따라 텍스트 문자들의 스트링을 압축된 시퀀스(3)로 압축하기 위한 수단을 포함하는 압축기 디바이스(50)에 관련한다.
도 6에 도시된 바와 같이, 이러한 압축기 디바이스(50)는 파서(51), 선택적 검사기(52), 코더(53), 복사기(60) 및 선택적 삽입기(61)를 포함한다. 상기 코더(53)는 제 1 서브-코더(54), 제 2 서브-코더(55) 및 제 3 서브-코더(59)를 추가로 포함한다. 상기 제 2 서브-코더(55)는 제 1 결정자(56), 제 2 결정자(57) 및 연쇄자(58)를 추가로 포함한다.
도 7은 압축 해제 방법(70)의 가능한 실시예를 도시한다. 상기 압축 해제 방법(70)은 추출 단계(71)로 시작한다. 다음으로 디코딩 단계(72)가 오고, 보유 단계(83)로 후속된다. 압축 방법(70)은 복사 단계(84)로 종료할 수 있다.
추출 단계(71) 및 디코딩 단계(72)는 또한 처음 문자를 복사하는 단계(73), 선처리 단계(74) 및 후속 숫자들을 디코딩하는 단계(80)로 분할될 수 있다.
선처리 단계(74)는 또한 분리 단계(75), 제 1 삽입 단계(76), 제 2 삽입 단계(77), 제 3 삽입 단계(78) 및 제 4 삽입 단계(79)로 분할될 수 있다.
디코딩 단계(80)는 또한 시작 단계(81) 및 반복 단계(82)로 분할된다.
명세서는 또한 압축 해제 방법의 상기 기술된 실시예들 중 어느 하나에 따라 압축된 시퀀스(3)를 문자들의 스트링으로 압축 해제하기 위한 수단을 포함하는 압축 해제기 디바이스(90)에 관련한다.
도 8에 도시된 바와 같이, 이러한 압축 해제기 디바이스(90)는 추출기/디코더(91), 보유기(103) 및 복사기(104)를 포함한다. 상기 추출기/디코더(91)는 서브-복사기(93), 선처리기(94) 및 서브-디코더(100)를 추가로 포함한다. 상기 서브-디코더(100)는 스타터(101) 및 반복기(102)를 추가로 포함한다. 상기 선처리기(94)는 분리기(95), 제 1 삽입기(96), 제 2 삽입기(97), 제 3 삽입기(98) 및 제 4 삽입기(99)를 추가로 포함한다.
이전에 기술된 압축 및 압축 해제 방법들은 감소하는 압축 비율들/이익들을 제공하는 세 개의 실시예들에 따라 사용될 수 있다.
X로 명명된, 제 1 실시예에 따라, 제 1 형태 서브-시퀀스(7)는 상대 코딩 테이블(20)을 사용하여 코딩되고 체크섬이 추가되지 않는다. 상기 실시예는 가장 높은 압축 비율을 제공하지만 덜 안전하다.
Y로 명명된, 제 2 실시예에 따라, 제 1 형태 서브-시퀀스(7)는 상대 코딩 테이블(20)을 사용하여 코딩되고 체크섬이 추가된다. 상기 실시예는 더 적은 압축 비율을 제공하지만, 상기 체크섬(18)이 에러를 검출하는 것을 허용할 수 있기 때문에, 더 안전하다.
Z로 명명된, 제 3 실시예에 따라, 제 1 형태 서브-시퀀스(7)는 코딩되지 않는다. 그와 달리 기록되어, 제 1 형태 서브-시퀀스는 원래의 시퀀스(2)로부터 추출되거나, 임의의 원래의 시퀀스(2)는 단일의 제 2 형태 서브-시퀀스로서 생각된다. 상기 실시예는 가장 적은 압축 비율을 제공하지만, 가장 안전하다.
압축 방법/디바이스 및 압축 해제 방법/디바이스 모두를 포함하는, 전체 전략에 따라, 상기 세 개의 실시예들은 이롭게 조합될 수 있다.
X, Y, Z 중의 실시예는, 예를 들면, 송신된 압축된 시퀀스(3)에 추가된 코드에 의해 압축 방법 및 압축 해제 방법 사이에 동의된다. 압축기 및 압축 해제기는 그들 중 어느 하나가 검출한 에러들에 따라 세 개의 모드들(X, Y, Z) 중 하나를 함께 선택한다.
예를 들면, 임계치들과 비교되는, 에러들의 상기 숫자들에 의존하여, 전체 전략은 현재 실시예를 변경할 것을 선택할 수 있다. 너무 많은 에러들이 존재하는 경우, 전체 전략은 더 적은 압축 비율을 희생하여 증가된 안전성을 제공하는 새로운 실시예를 선택함으로써 에러들의 수를 감소시키는 것을 시도한다. 대신 너무 적은 에러들이 존재하는 경우, 전체 전략은 증가된 압축 비율을 제공하는 새로운 실시예를 선택함으로써 압축 비율을 증가시키는 것을 시도한다.
50 : 압축기 디바이스 51 : 파서
52 : 선택적 검사기 53 : 코더
54 : 제 1 서브-코더 55 : 제 2 서브-코더
56 : 제 1 결정자 57 : 제 2 결정자
58 : 연쇄자 59 : 제 3 서브-코더
60 : 복사기 61 : 선택적 삽입기
90 : 압축 해제기 디바이스 91 : 추출기/디코더
93 : 서브-복사기 94 : 선처리기
95 : 분리기 96 : 제 1 삽입기
97 : 제 2 삽입기 98 : 제 3 삽입기
99 : 제 4 삽입기 100 : 서브-디코더
101 : 스타터 102 : 반복기
103 : 보유기 104 : 복사기

Claims (26)

  1. 각각이 절대 코딩 테이블(10)에 따라 각각의 문자(4)를 고유하게 나타내는 절대수(5)로 표현된 문자들(4)의 원래의 순서화된 시퀀스(2)에 의해 처음에 규정된 문자들의 스트링을 압축된 시퀀스(3)로 압축하는 방법에 있어서,
    상기 원래의 시퀀스(2)를, 각각이 상대 코딩 테이블(20)에서 대응하는 문자와 일치하는, 연속하는 문자들을 포함하는 적어도 하나의 제 1 형태 서브-시퀀스(7)로, 및 연속하는 나머지 문자들을 포함하는 적어도 하나의 제 2 형태 서브-시퀀스(8)로 파싱하는 단계(31),
    상기 상대 코딩 테이블(20)을 사용하여 각각의 제 1 형태 서브-시퀀스(7)를 코딩하는 단계(33), 및
    각각의 제 2 형태 서브-시퀀스(8)로부터의 각각의 문자(4)를 압축된 시퀀스(3)로 복사하는 단계(40)로서, 각각의 문자는 상기 절대 코딩 테이블(10)로부터의 상기 절대수(5)로 나타내어지는, 상기 복사 단계(40)를 포함하고,
    상기 제 1 형태 서브-시퀀스(7)를 코딩하는 단계(33)는:
    상기 절대 코딩 테이블(10)로부터의 절대수(5)에 의해 상기 제 1 형태 서브-시퀀스(7)의 처음 문자(14)를 키코드(14)로서 코딩하는 단계(34),
    상기 제 1 형태 서브-시퀀스(7) 내의 상기 처음 문자(14)에 후속하는 각각의 문자를, 상기 문자에 선행하는 앞선 문자와 상기 문자 사이의, 상기 상대 코딩 테이블(20)에서의 변위(21)를 코딩함으로써 코딩하는 단계(35), 및
    상기 제 1 형태 서브-시퀀스(7) 내의 마지막 문자 뒤의, 코딩의 종료를 표시하는, 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)로의 변위(21)를 코딩함으로써 상기 제 1 형태 서브-시퀀스(7)의 상기 코딩을 종료하는 단계(39)를 포함하고,
    상기 제 1 형태 서브-시퀀스(7) 내의 상기 처음 문자(14)에 후속하는 각각의 문자를, 상기 문자에 선행하는 앞선 문자와 상기 문자 사이의, 상기 상대 코딩 테이블(20)에서의 변위(21)를 코딩함으로써 코딩하는 단계(35)는:
    상기 상대 코딩 테이블(20)에서, 제 1 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 1 좌표를 결정하는 단계(36),
    상기 상대 코딩 테이블(20)에서, 제 2 미리 결정된 방향을 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 2 좌표를 결정하는 단계(37), 및
    모든 결정된 좌표들을 상기 압축된 시퀀스(3)로 순서대로 연쇄시키는 단계(38)를 포함하고,
    상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 사이에 공유되는 숫자가 없고, 상기 제 1 세트 중에서 하나의 제 1 특정 좌표, 및 상기 제 2 세트 중에서 하나의 제 2 특정 좌표는, 상기 제 1 및 제 2 특정 좌표들에 후속하는 특정 좌표가 생략되지 않는 경우, 상기 제 1 및 제 2 특정 좌표들이 즉시 후속하고 있을 때를 제외하고, 상기 압축된 시퀀스(3)에서 생략되는, 문자들의 스트링을 압축하는 방법.
  2. 제 1 항에 있어서,
    상기 원래의 시퀀스(2)로부터 계산된 체크섬(18, 19)을 상기 압축된 시퀀스(3)로 삽입하는 단계(41)를 추가로 포함하는, 문자들의 스트링을 압축하는 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 상대 코딩 테이블(20)은 문자들의 스트링들에서 압축될 것이 예상되는 가장 빈번한 문자들로 채워지는, 문자들의 스트링을 압축하는 방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 상대 코딩 테이블(20)은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 상기 제 1 특정 좌표는 분리가 없는 열들(zero separating columns)에 대응하는 제 1 좌표이고, 상기 제 2 특정 좌표는 분리가 없는 행들(zero separating rows)에 대응하는 제 2 좌표인, 문자들의 스트링을 압축하는 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 파싱 단계와 상기 코딩 단계 사이에,
    코딩 단계를 통해 획득되는 코딩된 서브-시퀀스(11)가 상기 원래의 서브-시퀀스(7)보다 짧은지에 대해, 각각의 제 1 형태 서브-시퀀스(7)를 검사하는 단계, 및
    코딩 단계를 통해 획득되는 코딩된 서브-시퀀스(11)가 상기 원래의 서브-시퀀스(7)보다 짧지 않은 경우, 상기 제 1 형태 서브-시퀀스(7)를 제 2 형태 서브-시퀀스로서 취급하는 단계를 추가로 포함하는, 문자들의 스트링을 압축하는 방법.
  6. 압축된 시퀀스(3)를, 각각이 절대 코딩 테이블(10)에 따라 각각의 문자(4)를 고유하게 나타내는 절대수(5)로 나타내어진 문자들(4)의 최종 순서화된 시퀀스(2)로 규정된 문자들의 스트링으로 압축 해제하는 방법에 있어서,
    연속하는 숫자들 중 적어도 하나의 코딩된 서브-시퀀스(11)를 상기 압축된 시퀀스(3)로부터 추출하는 단계(71),
    상대 코딩 테이블(20)을 사용하여, 상기 코딩된 서브-시퀀스(11)를 최종 디코딩된 서브-시퀀스(7)로 디코딩하는 단계(72),
    상기 코딩된 서브-시퀀스(11)로 추출되지 않고 남은 숫자들을 보유하는 단계(83), 및
    각각의 상기 나머지 숫자를, 상기 절대 코딩 테이블(10)을 사용하여 절대수로 나타내어진 문자로서 상기 압축 해제된 시퀀스(2)로 복사하는 단계(84)를 포함하고,
    상기 추출(71) 단계 및 상기 디코딩 단계(72)는:
    상기 최종 디코딩된 서브-시퀀스(7)로 처음 문자(14)를 복사하는 단계(73)로서, 상기 처음 문자는 상기 절대 코딩 테이블(10)에 따라 상기 절대수로 나타내어진, 상기 처음 문자(14)를 복사하는 단계(73),
    상기 코딩된 서브-시퀀스(11)에서, 상기 처음 문자(14)에 후속하는 후속 숫자들을 선처리하는 단계(74), 및
    변위가 코딩의 종료를 표시하고, 따라서, 상기 코딩된 서브-시퀀스(11)의 종료를 표시하는, 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)를 지시할 때까지, 후속 숫자들을 상기 상대 코딩 테이블(20) 내의 상대 변위들(21)로서 디코딩하는 단계(80)를 추가로 포함하고,
    상기 후속 숫자들을 디코딩하는 단계(80)는:
    상기 처음 문자(14)인 현재 문자, 상기 상대 코딩 테이블(20)에서 상기 처음 문자(14)의 위치인 현재 위치, 및 상기 코딩된 서브-시퀀스(11)에서 제 1 좌표 및 제 2 좌표의 제 1 쌍인, 좌표들의 현재 쌍으로 시작하는 단계(81),
    새로운 위치가 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)를 지시할 때까지 다음의 단계들:
    새로운 디코딩된 문자를 표시하는 새로운 위치를 찾기 위해, 상기 상대 코딩 테이블(20) 내의 상기 현재 위치로부터, 제 1 좌표 및 제 2 좌표의 상기 현재 쌍으로 코딩되는 변위(21)를 적용하는 단계로서, 상기 제 1 좌표는 제 1 미리 결정된 방향을 따라 열들의 순환 계수를 나타내고, 상기 제 2 좌표는 제 2 미리 결정된 방향을 따라 행들의 순환 계수를 나타내는, 상기 적용 단계,
    상기 최종 디코딩된 서브-시퀀스(7) 내의 상기 현재 문자 뒤에 상기 새로운 디코딩된 문자를 복사하는 단계, 및
    상기 현재 문자를 상기 새로운 디코딩된 문자로 갱신하고, 상기 현재 위치를 상기 새로운 위치로 갱신하고, 상기 좌표의 현재 쌍을 상기 코딩된 서브-시퀀스(11) 내의 제 1 좌표 및 제 2 좌표의 다음의 쌍으로 갱신하는 단계,를 반복하는 단계(82)를 포함하고,
    상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트들의 숫자들 사이에 공유되는 숫자는 없고,
    상기 후속 숫자들을 선처리하는 단계(74)는:
    상기 후속 숫자들을 좌표들로 분리하는 단계(75),
    임의의 제 2 특정 좌표 전에 제 1 특정 좌표를 삽입하는 단계(76),
    임의의 제 1 특정 좌표 전에 제 2 특정 좌표를 삽입하는 단계(77),
    임의의 두 개의 연속하는 제 2 좌표들 사이에 제 1 특정 좌표를 삽입하는 단계(78), 및
    임의의 두 개의 연속하는 제 1 좌표들 사이에 제 2 특정 좌표를 삽입하는 단계(79)를 추가로 포함하는, 압축 해제 방법.
  7. 제 6 항에 있어서,
    상기 상대 코딩 테이블(20)은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따른 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 상기 제 1 특정 좌표는 분리가 없는 열들에 대응하는 상기 제 1 좌표이고, 상기 제 2 특정 좌표는 분리가 없는 행들에 대응하는 상기 제 2 좌표인, 압축 해제 방법.
  8. 각각이 절대 코딩 테이블(10)에 따라 각각의 문자(4)를 고유하게 나타내는 절대수(5)로 나타내어진 문자들(4)의 원래의 순서화된 시퀀스(2)로 처음에 규정된 문자들의 스트링을 압축된 시퀀스(3)로 압축하기 위한 압축기(50)에 있어서,
    상기 원래의 시퀀스(2)를, 각각이 상대 코딩 테이블(20)에서 대응하는 문자에 기초하여 선택되는, 연속하는 문자들을 포함하는 적어도 하나의 제 1 형태 서브-시퀀스(7)로, 및 연속하는 나머지 문자들을 포함하는 적어도 하나의 제 2 형태 서브-시퀀스(8)로 파싱하기 위한 파서(51),
    상기 상대 코딩 테이블(20)을 사용하여 각각의 제 1 형태 서브-시퀀스(7)를 코딩하기 위한 코더(53), 및
    각각의 제 2 형태 서브-시퀀스(8)로부터의 각각의 문자(4)를 상기 압축된 시퀀스(3)로 복사하기 위한 복사기(60)로서, 각각의 문자는 상기 절대 코딩 테이블(10)로부터의 상기 절대수(5)로 나타내어지는, 상기 복사기(60)를 포함하고,
    상기 코더(53)는:
    상기 절대 코딩 테이블(10)로부터 상기 절대수(5)에 의해 상기 제 1 형태 서브-시퀀스(7)의 처음 문자(14)를 키코드(14)로서 코딩하기 위한 제 1 서브-코더(54),
    상기 상대 코딩 테이블(20)에서 상기 문자에 앞선 문자와 상기 문자 사이의 변위(21)를 코딩함으로써 상기 제 1 형태 서브-시퀀스(7) 내의 상기 처음 문자(14)에 후속하는 각각의 문자를 코딩하기 위한 제 2 서브-코더(55), 및
    상기 제 1 형태 서브-시퀀스(7) 내의 마지막 문자 뒤의, 코딩의 종료를 표시하는, 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)로의 변위(21)를 코딩함으로써 상기 제 1 형태 서브-시퀀스(7)의 상기 코딩을 종료하기 위한 제 3 서브-코더(59)를 추가로 포함하고,
    상기 제 2 서브-코더(55)는:
    상기 상대 코딩 테이블(20)에서, 제 1 미리 결정된 방향에 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 1 좌표를 결정하기 위한 제 1 결정자(56),
    상기 상대 코딩 테이블(20)에서, 제 2 미리 결정된 방향에 따라 상기 후속 문자로부터 상기 앞선 문자를 분리하는 제 2 좌표를 결정하기 위한 제 2 결정자(57), 및
    모든 결정된 좌표들을 상기 압축된 시퀀스(3)로 순서대로 연쇄하기 위한 연쇄자(58)를 추가로 포함하고,
    상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 사이에 공유되는 숫자가 없고, 상기 제 1 세트 중에서 하나의 제 1 특정 좌표, 및 상기 제 2 세트 중에서 하나의 제 2 특정 좌표는, 상기 제 1 및 제 2 특정 좌표들에 후속하는 특정 좌표가 생략되지 않는 경우, 상기 제 1 및 제 2 특정 좌표들이 즉시 후속하고 있을 때를 제외하고, 상기 압축된 시퀀스(3)에서 생략되는, 압축기.
  9. 제 8 항에 있어서,
    상기 원래의 시퀀스(2)로부터 계산된 체크섬(18, 19)을 상기 압축된 시퀀스(3)로 삽입하기 위한 삽입기(61)를 추가로 포함하는, 압축기.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 상대 코딩 테이블(20)은 문자들의 스트링들에서 압축될 것이 예측되는 가장 빈번한 문자들로 채워지는, 압축기.
  11. 제 8 항 또는 제 9 항에 있어서,
    상기 상대 코딩 테이블(20)은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 상기 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 상기 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표인, 압축기.
  12. 제 8 항 또는 제 9 항에 있어서,
    획득되는 코딩된 서브-시퀀스(11)가 상기 원래의 서브-시퀀스(7)보다 짧은지를 각각의 제 1 형태 서브-시퀀스(7)에 대해 검사하고, 코딩 단계를 통해 획득되는 코딩된 서브-시퀀스(11)가 상기 원래의 서브-시퀀스(7)보다 짧지 않은 경우, 상기 제 1 형태 서브-시퀀스(7)를 제 2 형태 서브-시퀀스로서 취급하기 위한 검사기(52)를 추가로 포함하는, 압축기.
  13. 압축된 시퀀스(3)를 각각이 절대 코딩 테이블(10)에 따라 각각의 문자(4)를 고유하게 나타내는 절대수(5)로 나타내어진 문자들(4)의 최종 순서화된 시퀀스(2)로 규정된 문자들의 스트링으로 압축 해제하기 위한 압축 해제기에 있어서,
    연속하는 숫자들 중 적어도 하나의 코딩된 서브-시퀀스(11)를 상기 압축된 시퀀스(3)로부터 추출하기 위한 추출기(91),
    상대 코딩 테이블(20)을 사용하여 상기 코딩된 서브-시퀀스(11)를 최종 디코딩된 서브-시퀀스(7)로 디코딩하기 위한 디코더(91),
    상기 코딩된 서브-시퀀스(11)로 추출되지 않고 남은 숫자들을 보유하기 위한 보유기(103), 및
    각각의 상기 나머지 숫자를 상기 절대 코딩 테이블(10)을 사용하여 절대수에 의해 나타내어진 문자로서 상기 압축 해제된 시퀀스(2)로 복사하기 위한 복사기(104)를 포함하고,
    상기 추출기 및 상기 디코더는:
    상기 최종 디코딩된 서브-시퀀스(7) 내의 처음 문자(14)를 복사하기 위한 서브-복사기(93)로서, 상기 처음 문자(14)는 상기 절대 코딩 테이블(10)에 따라 상기 절대수에 의해 나타내어지는, 상기 처음 문자(14)를 복사하기 위한 서브-복사기(93),
    상기 코딩된 서브-시퀀스(11)에서 상기 처음 문자(14)에 후속하는, 후속 숫자들을 선처리하기 위한 선처리기(94), 및
    변위가, 코딩의 종료를 표시하고, 따라서, 상기 코딩된 서브-시퀀스(11)의 종료를 표시하는, 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)를 지시할 때까지, 후속 숫자들을, 상기 상대 코딩 테이블(20) 내의 상대 변위들(21)로서 디코딩하기 위한 서브-디코더(100)를 추가로 포함하고,
    상기 서브-디코더(100)는:
    상기 처음 문자(14)인 현재 문자, 상기 상대 코딩 테이블(20)에서 상기 처음 문자(14)의 위치인 현재 위치, 및 상기 코딩된 서브-시퀀스(11)에서 제 1 좌표 및 제 2 좌표의 제 1 쌍인 좌표들의 현재 쌍으로 시작하기 위한 스타터(101),
    새로운 위치가 상기 상대 코딩 테이블(20) 내의 제 2 특정 제어 문자(16)를 가리킬 때까지,
    새로운 디코딩된 문자를 표시하는 상기 새로운 위치를 찾기 위해, 상기 상대 코딩 테이블(20) 내의 상기 현재 위치로부터 제 1 좌표 및 제 2 좌표의 현재 쌍에 의해 코딩되는 변위(21)를 적용하되, 상기 제 1 좌표는 제 1 미리 결정된 방향에 따른 열들의 순환 계수를 표시하고, 상기 제 2 좌표는 제 2 미리 결정된 방향에 따른 행들의 순환 계수를 표시하는, 상기 변위(21)를 적용하고,
    상기 최종 디코딩된 서브-시퀀스(7) 내의 상기 현재 문자 뒤에 상기 새로운 디코딩된 문자를 복사하고,
    상기 현재 문자를 상기 새로운 디코딩된 문자로 갱신하고, 상기 현재 위치를 상기 새로운 위치로 갱신하고, 상기 좌표의 현재 쌍을 상기 코딩된 서브-시퀀스(11) 내의 상기 제 1 좌표 및 제 2 좌표의 다음의 쌍으로 갱신하는 것을, 반복하기 위한 반복기(102)를 추가로 포함하고,
    상기 제 1 좌표들은 제 1 세트의 숫자들에서 선택되고 상기 제 2 좌표들은 제 2 세트의 숫자들에서 선택되고, 상기 제 1 세트의 숫자들과 상기 제 2 세트의 숫자들 사이에 공유되는 숫자가 없고,
    상기 선처리기(94)는:
    상기 후속 숫자들을 좌표들로 분리하기 위한 분리기(95),
    임의의 제 2 특정 좌표 전에 제 1 특정 좌표를 삽입하기 위한 제 1 삽입기,
    임의의 제 1 특정 좌표 전에 제 2 특정 좌표를 삽입하기 위한 제 2 삽입기,
    임의의 두 개의 연속하는 제 2 좌표들 사이에 제 1 특정 좌표를 삽입하기 위한 제 3 삽입기, 및
    임의의 두 개의 연속하는 제 1 좌표들 사이에 제 2 특정 좌표를 삽입하기 위한 제 4 삽입기를 추가로 포함하는, 압축 해제기.
  14. 제 13 항에 있어서,
    상기 상대 코딩 테이블(20)은 8 × 8 행렬이고, 상기 제 1 좌표는 왼쪽으로부터 오른쪽으로의 열들의 순환 계수에 따라 [0..7]의 제 1 범위에서 선택되고, 상기 제 2 좌표는 상부로부터 하부로 8이 추가된 행들의 순환 계수에 따라 [8..F]의 제 2 범위에서 선택되고, 상기 제 1 특정 좌표는 분리가 없는 열들에 대응하는 제 1 좌표이고, 상기 제 2 특정 좌표는 분리가 없는 행들에 대응하는 제 2 좌표인, 압축 해제기.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020157012079A 2012-10-09 2013-09-20 안전하고 손실 없는 데이터 압축 KR101667240B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP12306230.9A EP2720376A1 (en) 2012-10-09 2012-10-09 Secure and lossless data compression
EP12306230.9 2012-10-09
PCT/EP2013/069581 WO2014056703A1 (en) 2012-10-09 2013-09-20 Secure and lossless data compression

Publications (2)

Publication Number Publication Date
KR20150067342A KR20150067342A (ko) 2015-06-17
KR101667240B1 true KR101667240B1 (ko) 2016-10-18

Family

ID=47115675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157012079A KR101667240B1 (ko) 2012-10-09 2013-09-20 안전하고 손실 없는 데이터 압축

Country Status (8)

Country Link
US (1) US9740720B2 (ko)
EP (1) EP2720376A1 (ko)
JP (1) JP5913748B2 (ko)
KR (1) KR101667240B1 (ko)
CN (1) CN104813588A (ko)
IN (1) IN2015DN02821A (ko)
TW (1) TW201440442A (ko)
WO (1) WO2014056703A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180130155A (ko) * 2017-05-29 2018-12-07 주식회사 스마트코어 디바이스 간의 데이터 맵을 이용한 데이터 전송 방법 및 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107770540B (zh) * 2016-08-21 2024-01-09 上海天荷电子信息有限公司 融合多种具有不同参考关系的基元的数据压缩方法和装置
CN112749139B (zh) * 2020-12-30 2024-04-19 咪咕文化科技有限公司 日志文件处理方法、电子设备及存储介质
CN113162628B (zh) * 2021-04-26 2022-03-18 深圳希施玛数据科技有限公司 一种数据编码方法、数据解码方法、终端和存储介质
CN116665836B (zh) * 2023-07-26 2023-10-27 国仪量子(合肥)技术有限公司 序列数据的编辑存储方法、读取播放方法和电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929946A (en) 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0580972A (ja) * 1991-09-19 1993-04-02 Nec Corp データ圧縮装置
JPH0969785A (ja) * 1995-08-30 1997-03-11 Toshiba Corp データ圧縮方法及びデータ圧縮装置
US8356019B1 (en) * 2002-12-11 2013-01-15 Altera Corporation Method and apparatus for utilizing patterns in data to reduce file size
CN101095284B (zh) 2004-12-28 2012-04-18 卡西欧电子工业株式会社 用于有选择地压缩和解压缩数据的设备与方法
US7653643B2 (en) * 2005-03-24 2010-01-26 Microsoft Corporation Method and apparatus for compressing a data set
JP2007274183A (ja) * 2006-03-30 2007-10-18 Toshiba Corp データ伝送システム及びデータ送・受信装置
CN101090273A (zh) * 2006-06-13 2007-12-19 北京凯诚高清电子技术有限公司 独立16通道音频编解码算法
US9195695B2 (en) * 2006-09-15 2015-11-24 Ibm International Group B.V. Technique for compressing columns of data
US7769729B2 (en) * 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values
DE102010006931A1 (de) * 2010-02-04 2011-08-04 Bienert, Jörg, 50354 Verfahren zur Verarbeitung von Datensammlungen, insbesondere in Datenbanksystemen
JP4953145B2 (ja) * 2010-08-02 2012-06-13 Necシステムテクノロジー株式会社 文字列データ圧縮装置及びその方法並びに文字列データ復元装置及びその方法
US9390099B1 (en) * 2011-03-29 2016-07-12 Emc Corporation Method and apparatus for improving a compression ratio of multiple documents by using templates
WO2013003770A2 (en) * 2011-06-30 2013-01-03 Openwave Mobility Inc. Database compression system and method
US20130262412A1 (en) * 2012-03-28 2013-10-03 Brett Derek Hawton Method and System For Database Transaction Log Compression On SQL Server

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929946A (en) 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180130155A (ko) * 2017-05-29 2018-12-07 주식회사 스마트코어 디바이스 간의 데이터 맵을 이용한 데이터 전송 방법 및 장치
KR102003878B1 (ko) * 2017-05-29 2019-10-01 주식회사 스마트코어 디바이스 간의 데이터 맵을 이용한 데이터 전송 방법 및 장치

Also Published As

Publication number Publication date
JP5913748B2 (ja) 2016-04-27
WO2014056703A1 (en) 2014-04-17
US9740720B2 (en) 2017-08-22
TW201440442A (zh) 2014-10-16
KR20150067342A (ko) 2015-06-17
JP2015534795A (ja) 2015-12-03
EP2720376A1 (en) 2014-04-16
IN2015DN02821A (ko) 2015-09-11
CN104813588A (zh) 2015-07-29
US20150242448A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
KR101667240B1 (ko) 안전하고 손실 없는 데이터 압축
US10090857B2 (en) Method and apparatus for compressing genetic data
CN106570356B (zh) 基于Unicode编码的文本水印嵌入及提取方法
KR101049699B1 (ko) 데이터의 압축방법
EP2295947B1 (en) Coding method, decoding method,and coding apparatus
KR101969848B1 (ko) 유전자 데이터를 압축하는 방법 및 장치
KR950026293A (ko) 색채화상의 압축과 그것을 위한 엠(m)개 알파벳의 비트와이즈 코딩을 위한 이진화 장치 및 방법
JP2010519806A5 (ko)
CN107094021A (zh) 数据压缩
CN101751451B (zh) 一种中文数据压缩及解压缩方法及相关设备
CN1539203A (zh) 用于快速最长匹配搜索的方法和设备
CN116827354B (zh) 一种文件数据分布式存储管理系统
JP3080149B2 (ja) パタン符号化方法及び復号化方法とこの方法を用いた符号化装置及び復号化装置
RU2437148C1 (ru) Способ сжатия и восстановления сообщений в системах обработки, передачи и хранения текстовой информации
CN101741392A (zh) 一种快速解析码长的哈夫曼解码方法
CN108123721B (zh) 编码方法及装置
Shanmugasundaram et al. Text preprocessing using enhanced intelligent dictionary based encoding (EIDBE)
CN102891730B (zh) 基于bcd码卫星短报文的编码方法和装置
JP2005269184A (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
KR101752281B1 (ko) 유티에프-8 코드 문자의 압축 방법 및 장치
CN110708074B (zh) Sam及bam文件cigar域的压缩及解压还原方法、系统和介质
CN117579227A (zh) 基于信道编码的抗误码数游程特征分析信息隐藏方法及系统
US20210074381A1 (en) Method for the compression of genome sequence data
CN118074726A (zh) 一种基于FPGA的Huffman并行解压存储装置
KR20150055965A (ko) 데이터 압축 및 데이터 복원 방법과 장치

Legal Events

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