KR950013228B1 - 데이타 압축과 복원방법 및 그 장치 - Google Patents

데이타 압축과 복원방법 및 그 장치 Download PDF

Info

Publication number
KR950013228B1
KR950013228B1 KR1019910701461A KR910701461A KR950013228B1 KR 950013228 B1 KR950013228 B1 KR 950013228B1 KR 1019910701461 A KR1019910701461 A KR 1019910701461A KR 910701461 A KR910701461 A KR 910701461A KR 950013228 B1 KR950013228 B1 KR 950013228B1
Authority
KR
South Korea
Prior art keywords
string
dictionary
character
substring
code
Prior art date
Application number
KR1019910701461A
Other languages
English (en)
Other versions
KR920701899A (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
Priority claimed from JP2045163A external-priority patent/JP3038223B2/ja
Priority claimed from JP2062325A external-priority patent/JP2590287B2/ja
Priority claimed from JP2070379A external-priority patent/JP2774350B2/ja
Priority claimed from JP2275835A external-priority patent/JP2825960B2/ja
Application filed by 후지쓰 가부시끼가이샤, 세끼사와 요시 filed Critical 후지쓰 가부시끼가이샤
Publication of KR920701899A publication Critical patent/KR920701899A/ko
Application granted granted Critical
Publication of KR950013228B1 publication Critical patent/KR950013228B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

내용 없음.

Description

데이터 압축과 복원방법 및 그 장치
[도면의 간단한 설명]
제 1 도는 증분 분해형 LZM 시스템에 있어서의 종래 데이터 압축과 복원방법을 보인 설명도.
제 2 및 3 도는 증분 분해법의 LZM 시스템에 있어서의 종래 부호화 및 복호화를 보인 도.
제 4 도는 발명의 한 양상에 따른 데이터 압축 및 복원 방법을 행하기 위한 시스템의 실시예를 보인 도.
제 5 도는 제 4 도의 시스템에 적용된 데이터용 메모리 장치 및 프로그램용 메모리 장치의 구조를 보인 도.
제 6 도는 제 4 도의 시스템의 동작을 보인 흐름도.
제 7 도 및 8도는 제 6 도의 흐름도와 관련된 동작에 관한 검토를 위한 흐름도.
제 9 도는 샘플 데이터로 사전(dictionary)의 초기치를 발생하는 처리를 보인 흐름도.
제 10 도는 사전에 압축처리를 보인 흐름도.
제 11 도는 부호화 처리를 보인 흐름도.
제 12 도는 복호화 처리를 보인 흐름도.
제 13 도는 부가적인 코드의 등록을 보인 도.
제 14 도는 스트링에 대응하는 메모리 장치내에 등록된 데이터를 보인 도.
제 15 도는 복호화 동작을 보인 도.
제 16 도는 발명의 또다른 양상에 따라 데이터 압축 및 복원방법을 행하기 위한 시스템의 실시예를 보인도.
제 17 도는 압축된 코드를 발생하는 처리를 보인 흐름도.
제 18 도는 최적 코드 변환의 일예를 보인 도.
제 19 도는 각각의 참조 사전용 최적 코드를 설정하는 일예를 보인도.
제 20 도는 최적 코드가 인가되는 압축된 코드의 일예를 보인도.
제 21 도는 문자그룹들 사이의 전이 발생수를 측정한 결과를 보인도.
제 22 도는 문자그룹들 사이의 천이 발생비율의 순서를 보인도.
제 23 도는 천이코드에 의한 최적 코드 및 부호어의 일예를 보인도.
제 24 도는 발명의 다른 양상에 의한 데이터 압축 및 복원방법을 행하기 위한 시스템의 실시예를 보인도.
제 25 도는 데이터 저장용 메모리 장치 및 프로그램 저장용 메모리 장치를 보인도.
제 26 도는 부호화의 알고리듬을 보인도.
제 27 도는 복호화의 알고리듬을 보인도.
제 28 도는 발명의 또 다른 양상에 의한 데이터 압축 및 복원방법을 행하기 위한 시스템의 실시예를 보인도.
제 29 도는 루트와 같은 문자열의 최후 문자를 택하는 사전의 트리를 보인도.
제 30 도는 문자열 안으로 데이터 압축코드의 복호화를 수행하기 위한 구조를 보인도.
제 31 도는 부호화 장치의 일예를 보인도.
제 32 도는 부호화 장치의 동작을 보인 흐름도.
제 33 및 34도는 전체 사전 및 개별 사전의 예를 보인도.
제 35 도는 개별 사전의 트리를 보인도.
제 36 도는 부호어를 보인도.
제 37 도는 복호화 장치의 일예를 보인도.
제 38(a), (b) 및 (c)도는 부호화 처리를 보인 흐름도.
제 39 도는 사전의 트리 및 문자열의 부호화의 예를 보인도.
제 40 도는 데이터 압축 및 복원장치를 요약하여 서술한 도.
* 도면의 주요부분에 대한 부호의 설명
1 : 압축기 2 : 사전
100 : 사전 초기화용 장치 101 : 샘플 데이터 공급부
102 : 부호화부 103 : 기억부
104 : 선별부 105 : 사전 장치
106A : 초기치 등록부 106B : 데이터 등록부
107 : 부호화부 108 : 복호부
112 : 중앙처리장치 114 : 프로그램용 기억장치
116 : 제어용 프로그램 118 : 최장 길이 일치 검출 프로그램
120 : 부호화용 프로그램 122 : 복호화용 프로그램
124 : 사전 초기치 작성용 프로그램 126 : 데이터용 기억장치
110 : 사전 128 : 데이터 버퍼
201 : 문자열 공급부 202 : 입력버퍼
203 : 부호화 장치 209 : 참조 사전 조합부
210 : 부호어 작성부 211 : 참조 사전 등록부
213 : 등록 문자열수 계수부 214 : 최적 코드 지시부
212 : 최적 코드 변환부 206 : 압축 부호 출력부
205 : 기준 사전 204 : 참조 사전단위의 일시코드설정부
301 : 데이터 압축부 302 : 데이터 복원부
310 : 사전군 312 : 중앙처리장치
314 : 프로그램 메모리 316 : 제어 프로그램
318 : 최장 길이 일치 검출 프로그램 320 : 부호화 프로그램
322 : 복호화 프로그램 324 : 사전 초기치 작성 프로그램
326 : 데이터 메모리 310 : 사전
328 : 데이터 버퍼 401 : 문자열 공급부
402 : 사전 403 : 문자열 독출부
404 : 문자 부분열 405 : 사전 참조부
406 : 현 문자열 407 : 인덱스
408 : 부호화부 409 : 사전 등록부
410 : 최종 문자 기억부 421 : 수신된 코드
422 : 복원 사전 423 : 코드 독출부
424 : 인덱스 및 최종문자 425 : 사전 참조부
426 : 문자 부분열 부호부 427 : 복호화 문자 출력부
428 : 최종 문자 기억부 429 : 사전 복원부
430 : 문자 저장 메모리 431 : 부분 문자 코드 저장 메모리
432 : 직전 부분 열의 최후 문자 저장
433 : 현 부분 열의 최후 문자 저장 434 : 전체 사전
435 : 개별 사전 436 : 깊이 측정 카운터
437 : 개별 사전의 인덱스의 카운터 438 : 전체 사전의 등록번호의 카운터
439 : 사전 참조 및 발생부 440 : 코드 작성부
441 : 코드 출력부
[발명의 상세한 설명]
본 발명은 데이터의 압축 및 복원방법에 관한 것으로, 특히 일반적인 부호화에 있어서 증분 분해형에 사용된 LZM(Lempel-Ziv-Welch) 시스템에서의 데이터 압축 및 복원방법에 관한 것이다.
본 발명에 따른 처리 및 장치는 예를들어 신문 조합 시스템에서의 컴퓨터 처리형 셋팅(CTS)용 화상 데이터 압축 시스템, 전자 컴퓨터 시스템의 서류철 장치에서의 파일 압축, 자기 디스크등의 저장 매개체에 저장하기 위한 데이터 압축등에 적용할 수 있다.
LZM 시스템에 있어서 종래의 데이터 압축은 데이터 압축의 보편성이 중요한 문제이다. 따라서, 단지 최초 문자나 모든 단일 문자만이 등록되는 블랭크 조건에 근접한 사전의 상태에 데이터 부호화가 초기화된다.
그러므로 종래 LZM 시스템의 데이터 압축은 입력 데이터의 최초부에서는 양이 작아서 압축비가 작다.
LZM 시스템의 부호화시, 보편성이 중요하다. 그러나, 데이터의 특수한 종류가 데이터의 여러 종류중에 자주 나타나는 경우, 사전이 거의 비어있을 때 부호화를 수행하는 것이 항상 필수적이지 않다는 점이 고려되어야만 한다. 이는 LZM 시스템의 부호시에도 사실이다
한편, 종래 LZM 시스템에서 입력문자열을 문자열의 상호 다른 세그먼트(segment)로 분리하여 부호화를 수행할 때, 현재 부호화된 문자열을 이전에 부호화된 문자열과는 무관하게 나타나는 것으로 간주한다.
따라서, 그러한 방법은 문자열에서의 각 문자가 이전의 문자와 별개로 나타나는 정보 소오스 즉, 비저장 된 정보 소오스에 대해서는 아무런 문제를 발생하지 않는다. 따라서, 실제 구문과 같이 많은 양의 데이터를 이전에 나타난 문자에 따라 나타나는 것으로 ,즉 메모리를 갖는 정보 소오스로서 간주한다. 종래 기술에서, LZM 시스템의 부호화는 문자열의 출현의 히스테리시스(hysterisis)를 사용하지 않으므로, 심지어 데이터 압축 후에도 문자열의 출현의 의존에 관련된 여유도의 문제가 일어난다.
본 발명의 파일에는 데이터의 한 워어드 단위를 문자(character)로 부르며, 다수의 순차 워어드들에 의해 구성된 데이터를 문자열(character sequence)이라 부르기로 한다.
종래 LZM 시스템(Lampel-Ziv system) 또는 LZM 시스템에서의 증분 분해 시스템 데이터 압축 및 복원에 대한 것이 일본 비심사 특허 공보(kokoku)63-56726, U.S. 특허 4,464,465 및 U.S. 특허 4,558,302에 나타나 있다.
본 발명의 목적은 LZM 시스템의 데이터 압축 및 복원을 위한 부호화 및 복호화시 입력 데이터의 초기 부분에서도 압축도가 저하되지 않게 하여 증분 분해법의 데이터 부호화의 압축비를 개선시키는 것이다.
본 발명의 다른 목적은 참조 사전의 크기를 증대시켜서 증분 분해법의 데이터 부호화의 압축도를 저하시키지 않게 하여 증분 분해법의 데이터 부호화의 압축비를 개선하는 것이다.
본 발명의 또 다른 목적은 즉시 이전에 부호화된 문자열의 최종 문자의 의존도에 의거한 인덱스를 사용하여 데이터 부호화의 효율을 높이는 것으로서, 의존도는 부호화 및 복호화가 다수의 사전 중의 하나를 지정할 때 다수의 사전의 초기 등록을 간단하게 할 때 완성된다.
본 발명의 다른 목적은 바로 이전의 문자열의 최종 문자등과 같이 바로 이전의 문자열에 관한 현 문자열의 코드를 유도하여 사전에 대한 등록이 수행될 때 부호화되어야 하는 문자(스트링)이 부분열 대 바로 이전의 문자열의 최종 문자와의 의존관계를 받아들여 문자열간에 여유도를 감소시켜서 데이터 부호화의 압축비를 증가시키는 것이다.
발명의 한 양상에 따라, 수신된 무자열에 대해 사전에 기록된 부호화된 스트링으로부터 최장 길이 일치를 갖는 부분열의 참조번호를 지정하고, 새로운 참조번호를 한 문자를 부호어로서 얻어진 참조번호에 더하여 얻어진 스티링으로 지정하고 나서 새로운 참조번호를 사전에 지정된 스트링으로 등록하여 부호화를 수행하며, 스트링의 참조번호로 나타낸 부호어를 사용하여 사전에 등록된 스트링을 찾아서, 원래의 스트링을 복원하고, 새로운 참조번호를 현재 복원된 스트링의 선두 문자를 이전에 처리된 부호어에 더하여 얻어진 스트링으로 지정하고 나서 사전에 지정된 스트링으로 새로운 참조번호를 등록하여 복호화를 수행하는 증분 분해법으로 데이터를 압축 및 복원하는 방법을 제공한다.
이 방법은 가장 높은 빈도의 출현을 갖는 스트링이 이미 부호화된 스트링이라는 결정에 의거하여 샘플된 데이터에 대한 부호화를 이용하여 사전에 등록된 스트링들 중에 가장 높은 빈도의 출현을 갖는 스트링만을 사전의 초기치로서 등록하여 사전의 초기화가 수행된다는 특징을 갖는다.
한편 발명의 다른 양상에 따라, 수신된 무자열에 대해 사전에 등록된 부호화된 스트링으로부터 최장 길이 일치를 갖는 스트링의 참조번호를 지정하여, 한 문자를 부호어로 얻어진 참조번호에 더하여 얻어진 스트링으로 새로운 참조번호를 지정하고 나서 새로운 참조번호를 사전에 지정된 스트링으로 등록하여 부호화를 수행하며, 스트링의 참조번호에 의해 나타낸 부호어를 사용하여 사전에 등록된 스트링을 찾아 원래의 스트링을 복원하여, 이전에 처리된 부호어에 현재 복원된 스트링의 선두 문자를 더하여 얻어진 스트링에 새로운 참조번호 지정하고 나서 그 새로운 참조번호를 사전에 지정된 스트링으로 등록하여 복호화를 수행하는 증분 분해법으로 데이터를 압축 및 복원하는 방법을 제공한다.
이 방법은 각각의 연속된 두 스트링의 어두 스트링의 최종 문자 또는 최종 문자에 의거한 각각의 그룹에 대한 차후 스트링을 등록하고 각각의 최종 문자 또는 최종 문자에 의거한 각각의 그룹에 대해 등록된 스트링의 등록번호를 지정하여 등록 사전을 구성하는 단계 및, 지정된 등록번호에 의거하여 부호화 되어야 하는 스트링의 부호어를 구성하는 단계를 포함하는 것을 특징으로 한다. 게다가, 사전의 등록은 각각의 복호화된 스트링 이전의 스트링의 최종 문자에 대해 구성된 부호어에 의해 형성된 데이터로부터 수행되며, 문자 스트링에 대한 수신된 코드의 복호화는 복원된 사전을 사용하여 복호화된 스트링 및 현재 수신된 코드 이전의 스트링의 최종 문자로부터 수행된다.
바람직한 실시예를 서술하기 전에, 제 1 도와 관련하여 종래 증분 분해형 데이터 압축 시스템, 제 2 도와 관련하여 종래 LZM 시스템의 부호화 처리 및 제 3 도와 관련하여 복호화의 처리를 설명한다.
제 1 도의 데이터 압축 시스템은 압축기 1 및 사전 2를 갖는다. 예를들어 오직 문자 a,b,c로만 구성된 문자열 ababcbabab를 입력한다. 입력문자열에 대해 개별문자 a,b,c의 스트링은 각각 번호 1,2,3에 해당하는 초기치로서 사전에 등록된다. 문자열 ab ba, abc,cb,bab,baba,aa,aaa,aaaa 등의 스트링은 번호 4 내지 12에 해당하여 사전 2에 등록된다. 사전 2에 대해 압축기 1은 등록된 스트링을 사용하는 탐색을 수행한다. 압축기 1에서는 사전 2에 등록된 스트링을 사용하여 압축이 수행되고, 그 결과로 압축된 데이터가 출력된다.
종래 LZM 시스템 부호화 처리는 재쓰기 가능사전을 사용하며, 입력 문자열은 서로 다른 문자열 즉, 스트링으로 분할된다. 그러한 스트링들은 출현 순서의 참조번호로 사전에 등록되며, 현 입력 문자열이 사전에 등록되고 문자열과 일치하는 최장 길이를 갖는 문자열의 참조번호에 의해 서술된다.
제 2 도의 LZM 시스템 부호화 처리에서, 단계 S1에서 사전의 모든 문자에 대해 단일 문자로 구성된 스트링을 임시로 등록한 후 부호화가 초기화된다. 단계 S1에서의 부호화시 사전에 대한 탐색은 선두 문자 K에 대해 수행되어 참조번호 ω를 찾아 이를 프리픽스(prefix) 스트링으로 셋트한다. 그리고 나서, 입력 데이터의 다음 문자 K를 단계 S2에서 독출한다. 그후 단계 S3에서는, 모든 입력 문자가 독출됐는지를 결정하기 위해 검사가 수행되며, 단계 S4에서는 단계 S2에서 독출된 문자 K와 프리픽스 스트링 ω를 더하여 구성된 "ωK"에 대한 사전 탐색을 수행한다. 단계 S4에서 스트링 "ωK"가 사전에 존재하지 않을 경우, ω를 표시하는 코드(ω)를 단계 S1에서 얻어진 스트링 K에 대해 참조번호 ω로 출력하기 위해 단계 S6으로 처리가 진행되고, 사전에 새로 참조번호로 스트링 "ωK"를 등록한다. 게다가, 단계 S2에서 입력문자 K가 참조번호 ω로 대체된다. 또한, 사전의 어드레스 n이 증가된다. 그리고 나서, 처리가 단계 S2로 되돌아가 가서 다음 문자 K를 리이드한다.
반변에, 스트링 "ωK"가 사전에 존재할 경우 스트링 "ωK"는 단계 S5에서 참조번호 ω로 대체되고 나서 처리가 단계 S2로 되돌아서 스트링 "ωK"가 사전에서 찾기가 불가능하게 될 때까지 최대 일치를 찾기 위한 탐색을 반복한다.
제 3 도의 복호화 처리는 제 2 도의 부호화에 대한 반대 동작을 통해 수행된다.
제 3 도의 복호화에 있어서 단일 문자의 스트링을 모든 문자에 대한 초기치로서 부호시 이미 수정된 것과 마찬가지로 사전에 임시로 등록한 후에 복호화를 초기화한다.
우선 단계 S1에서 최초 코드, 즉, 참조번호를 독출한다. 그리고 나서, 현 코드를 OLD 코드로 설정한다.
최초 코드가 사전에 이미 등록된 단일 문자중의 하나인 참조번호와 일치하기 때문에, 입력코드와 일치하는 문자코드(K)는 찾아내어 문자 K를 출력한다.
문자 K를 나중에 예외처리를 위해 FINchar로 설정한다. 그리고 나서, 다음 코드를 독출하고 INcode로 설정하기 위해 단계 S2로 처리를 진행한다. 단계 S3에서, 독출코드가 새로운 코드인지 아닌지를 즉, 코드입력의 종료의 존재 및 부재를 결정하기 위한 검사를 수행한다. 그리고 나서, 단계 S3에서 숫자코드 입력이 정의되었는지 즉, 사전에 등록되었는지 아닌지를 검사하기 위한 단계 S4를 처리한다. 정상적으로 입력부호어는 이전의 처리시 사전에 등록되어, 사전으로부터 숫자 코드에 해당하는 스트링 코드(ωK)를 독출하기 위해 단계 S로 처리가 진행된다. 단계 S6에서, 문자 K를 일시적으로 스택(stack)하고 나서 참조번호 코드(ω) 처리를 취하기 위해 단계 S5로 되돌아간다. 단계 S5 및 S6의 처리는 참조번호 ω가 단일 문자 K에 대한 참조번호가 될 때까지 반복된다. 마침내, LIFO(Last In First Out)법으로 단계 S6에서 스택된 문자를 출력하기 위해 단계 S7의 처리를 행한다. 동시에 단계 S7에서는 현재 복원된 문자열의 이전에 사용된 코드 ω 및 어두 문자 K를 조합해서 새로운 참조번호를 "ω.K"로 서술된 스트링에 대해 주어져서 그것을 사전에 등록한다.
본 발명에 따른 데이터 압축 및 복원방법의 시스템의 한 양상을 제 4 도에서 서술한다.
제 4 도의 시스템에 있어서, 증분 분해형 코드로서 LZM 코드를 사용한 데이터 압축 시스템은 부호화시, 사전에 이미 등록된 부호화된 스트링중에서 또한 참조번호에 의해 동일화된 스트링에 대해 최장 길이 링치스트링의 참조번호에 의해 지정하여 입력 문자열을 부호화하고, 다음의 단일문자는 스트링을 형성하기 위해 더하여져서 새로운 참조번호를 사전 105에 등록한다. 또한 복호화시, 스트링의 참조번호에 의해 동일화된 부호어와 함께 원래 스트링을 복원하기 위해 사전 105에 대한 탐색이 수행되고 나서, 현재 복원된 스트링의 어두 문자를 이전에 복원된 스트링에 부가해서 새로운 참조번호를 지정하여 그것을 사전에 등록한다.
제 4 도의 시스템에서, 문자열의 요구된 샘플에 대해 사전 105의 초기화시, 부호화 처리를 통해 사전에 등록된 스트림중에 고빈도에서 나타나는 스트링들이 이미 부호화된 스트링들로서 간주되며, 초기치로서 사전 105에 등록된다.
제 4 도의 시스템에서, 여러종류의 데이터들중에 입력 데이터로 특별한 종류가 종종 나타나는 데이터에 의해 샘플 데이터가 준비된다. 이 샘플로 고빈도에서 나타나는 샘플의 데이터에 대해 LZW 부호화에 의한 사전이 제 6 도에 도시한 바와같이, 확립된다(S1). 그리고 나서, 사전의 초기치를 만들기 위하여 확립된 사전의 고빈도에서 나타나는 스트링만을 유지시켜 사전을 압축한다(S2)
그리고 나서, 제 7 및 제 8 도에 도시한 바와같이 샘플 데이터의 러닝(learnign)을 통해 얻어진 초기치를 등록하기 위한 처리를 초기화 한 후에, LZW 부호화 및 LZW 복호화가 수행되서 입력 데이터의 초기부분에서도 충분한 양의 스트링이 사전에 등록되므로 증가된 압축비를 얻을 수 있다.
실제로 샘플 데이터 카운터의 LZW 부호화는 사전의 매 참조번호마다 제공되서 부호화 처리시 관련 참조번호의 사용의 발생을 카운트한다. 그리고 나서, 작은 계수치를 갖는 스트링들은 사전으로부터 소거되고, 고출현 빈도를 갖는 스트링들만이 유지되어 사전을 얻게된다. 그후, 스트링의 고출현 빈도수가 초기치 또는 그대신으로서 사전에 등록된 후에 부호화나 복호화를 수행하는 방법이나, 초기치로서 사전의 초기치 비-재쓰기 고정된 부분으로 고출현 빈도출현을 고정하여 부호화 또는 복호화하는 방법중의 하나를 수행한다.
제 4 도의 장치에 사용된 프로그램용 메모리 장치 및 데이터용 메모리 장치의 구조를 제 5 도에 도시한다.
제 5 도의 구조에 있어서, 112는 제어수단으로서의 CPU를 나타낸다. CPU 112에 프로그램용 기억장치 114 및 데이터용 기억장치 126이 연결된다.
프로그램 메모리에서, 제어 프로그램 116, LZW 코드를 사용한 최대일치 탐색용 최대일치 탐색 프로그램 118, 입력 문자열을 LZW 코드로 변환하기 위한 부호화 프로그램 120, 부호화 프로그램 120에 의해 LZW코드로 변환된 코드를 원 문자열안으로 복원하기 위한 복호화 프로그램 122 및 요구된 샘플의 데이터에 대해 LZW 부호화를 행해서 얻어진 사전의 등록중에 고빈도에서 나타나는 스트링으로 사전 초기치를 작성하는 사전 초기치 작성 프로그램 124가 제공된다.
반면에, 데이터 메모리에는 부호화되어야할 문자열이나 복호화 되어야할 코드열을 기억하기 위한 데이터 버퍼 128 및 LZW 코드에 대해 부호화 및 복호화하는데 사용되며 때때로 갱신되는 사전 110이 제공된다.
제 5 도의 구조로 데이터 압축에 관해 이하에 서술하고자 한다.
우선, 부호화 및 복호화에 앞서, 요구된 샘플 데이터가 데이터 기억장치 126의 데이터 버퍼 128에 저장된다. 샘플 데이터와 같이, 통계적으로 고빈도에서 나타나는 특수한 종류의 데이터가 사용된다. 샘플 데이터가 데이터 버퍼 128에 저장되는 조건에서, CPU 112가 사전 초기치 작성 프로그램 124를 초기화 시켜서 초기치 작성 처리를 수행한다. 실제로, 사전 초기치 작성 프로그램 124는 부호화 프로그램 120을 사용해서 데이터 버퍼 128에 있는 샘플 데이터에 대한 LZW 부호화 처리를 수행하며, 참조번호와 함께 부호화된 스트링에 의해 구성된 데이터를 사전 110에 차례로 등록한다. 사전에 등록시, 카운터는 각각 참조번호가 제공된다. 스트링의 참조번호를 통해 최장 일치에 대한 탐색이 수행될 때 카운터는 매 출현마다 증가된다. 그러므로, 각 스트링 출현의 빈도가 카운트될 수 있다.
샘플 데이터에 대한 LZW 부호화가 종료될 경우, 데이터 메모리에서 얻어진 사전 110중에 임계치 T 이상의 카운터에서 카운트를 갖는 스트링만이 유지되는 방법으로 사전 110을 압축하여 사전 초기치를 발생한다.
따라서 얻어진 사전 초기치가 데이터 메모리중 특수영역에 저장되고 부호화 및 복호화를 위한 초기화 처리시 사전 110에 등록된다. 반면에, 부호화 및 복호화에 사용되는 사전의 선두부에 사전 초기치를 유지하는 것과 사전 초기치의 부분을 재-쓰기 방지 영역으로서 만드는 것이 가능해진다.
다음은 샘플 데이터로 사전 초기치를 작성하는 처리를 제 9 도와 관련하여 설명하기로 한다.
우선, 단계 S1에서 샘플 데이터를 구성하는 문자열의 최초 문자를 포함하도록 사전을 초기화시킨다. 즉, 최초 문자 코드 i를 사전의 어드레스 i에 등록한다. 그후 스트링의 등록된 번호의 카운트n을 모든 단일문자의 문자의 수 n으로 취하여, 순차적으로 입력 문자의 최초 문자 K를 사전에서 탐색하여 얻은 참조번호 ω를 프리픽스 스트링 ω로 설정한다.
단계 S1에서의 초기화시, 사전에 있는 참조번호로 샘플 데이터를 구성하는 문자열의 모든 단일문자를 등록하는 것이 가능하다.
그리고 나서, 단계 S2의 처리를 행한다. 다음 입력문자 K를 독출한다. 단계 S3에서 문자 K가 존재하는지의 여부를 결정하도록 검사가 수행되며 즉, 입력 문자열의 리이딩이 종료됐는지 안됐는지를 결정하도록 검사가 수행된다. 그후 단계 S4의 처리를 행한다. 단계 S4에서 어두 입력 문자의 참조번호 ω즉 프리픽스 스트링 ω를 제2입력 문자 K와 조합하여 구성되는 스트링 "ωK"가 사전에 존재하는지를 결정하도록 검사가 수행된다.
이때에 단 두문자만이 입력되기 때문에 , 문자열 "ωK"는 사전에 존재하지 않는다. 그러므로 사전의 어드레스 n에 스트링 "ωK"를 등록하도록 처리가 단계 S5로 진행된다. 그리고 나서, 제 2문자 K가 프리픽스 스트링 "ω"로 대체된다. 또한, 참조번호 "ω"의 출현을 카운트하기 위한 카운트 cnt(n)가 발생되고 제로로 리셋된다. 게다가, 현재 등록된 번호와 관계된 카운트 n이 증가된다.
단계 S4에서 만약 스트링 "ωK"가 사전에 존재하면 처리는 단계 S5를 행한다. 그후 스트링 "ωK"는 프리픽스 스트링 "ω"로 대체된다. 이로인해 참조번호 "ω"가 사용되기 때문에 참조번호 ω의 스트링에 관계된 카운트 cnt(n)이 증가된다.
모든 문자의 처리가 단계 S2 내지 S6을 거쳐 상술한 처리를 반복하여 종료했을 때, 처리는 단계 S3으로부터 S7로 뛰어 넘어서 그때 얻어진 사전의 내용 및 최종 어드레스를 메모리 장치 안으로 라이트하고 나서 사전 작성용 처리를 종료시킨다.
따라서 발생된 사전에 대해 높은 출현 빈도를 갖는 스트링만을 유지하기 위하여 사전을 압축하는 처리가 제 10 도에 도시된 바와같다.
우선, 단계 S1에서 제 9 도의 처리를 통해 얻어진 사전의 내용 및 최후 어드레스를 메모리에 써넣은 후 사전의 어드레스 i는 재료로 리셋된다.
그다음, 단계 S2에서 사전의 어드레스가 증가하고, 단계 S3에서 최후 어드레스가 도달했는지의 여부를 결정하도록 검사가 수행된다. 그후, 사전 어드레스 i의 카운터 cnt(i)가 소정의 출현 빈도에 관계된 임계치 T보다 작은지의 여부를 검사하는 단계 S4를 진행한다.
카운트 cnt(i)가 임계치 T보다 작을 경우, 단계 S5의 처리가 진행되서 현사전 어드레스 i를 소거하여 사전 어드레스 i를 사전 어드레스 j로 대체하는 소거 처리를 수행한다. 그 다음, 단계 S6에서 소거된 사전 어드레스 i바로 다음의 사전 어드레스 j가 최후 어드레스 n이내에 있는지를 결정하도록 검사가 행해진다. 만약 최후 어드레스 n이내에 그것이 존재하면 처리가 단계 S7로 넘어가서 어드레스 i다음의 사전 어드레스들 안에 I=ω보다 큰 참조번호 ω를 갖는 스트링을 결정하도록 검사를 행한다.
소거된 사전 어드레스 i다음의 어드레스들안에 참조번호ω보다 큰 참조번호를 갖는 스트링의 경우 단계 S8로 진행되고 난후, 스트링의 참조번호의 값이 "1"로 감소된다. 그후 단계 S9에서, 사전 어드레스 j내의 스트링 "ωK"가 이전의 사전 어드레스 j-1에서 등록되고 난후, 처리된 사전 어드레스 j가 다음 처리 사이클을 취해 j+1로 증가되어, 처리는 단계 S6으로 되돌아간다. 단계 S6, S7, S8 및 S9의 처리들은 사전 어드레스 j가 최종 어드레스 n을 초과할 때가지 반복된다. 즉, 낮은 출현 빈도를 갖는 스트링의 경우 그러한 방법으로 처리가 반복되며, 소거된 스트링의 어드레스의 다음 어드레스에서 스트링의 참조번호가 1에 의해 감소되서 그의 등록 어드레스가 1에 의해 천이된다.
단계 S6 내지 S9를 지난 처리가 종료되면 단계 S10으로의 처리가 진행된다. 한 스트링의 소거된 이래 최종 어드레스 n이 1에 의해 감소되고 나서 단계 S2로의 l처리로 되돌아 가서 사전 어드레스 i를 증가시키고 다음 스트링의 출현 빈도의 검사를 수행한다. 최종 어드레스 n이 단계 S3에서 검출될 때까지 처리가 반복된다.
최후 어드레스 n이 도달한 사실이 단계 S3에서 검출될 때 처리는 단계 S11으로 나아가서 최후 어드레스 n 및 압축된 사전 초기치의 작성을 완료하도록 메모리 장치내의 사전의 내용을 라이트한다.
따라서 작성된 사전 초기치를 사용한 부호화 처리의 흐름도를 제 11 도에 도시하였다.
우선, 부호화시 단계 S1에서 미리 선택된 샘플 데이터에 대해 작성된 사전 초기치가 메모리 장치로부터 독출되고 독출된 사전의 최후 어드레스 n 및 사전의 내용이 사전으로 사용되어야 하는 메모리내에 라이트된다. 사전 초기치를 라이트하는 이 처리는 종래 부호화 처리와 다른 점이다. 다음 입력 제 1 문자 K를 위한 단계 S1에서 탐색이 사전상에서 수행되서 일치 스트링의 참조번호를 프리픽스 스트링으로 문다. 그리고 나서 단계 S2에서 다음 문자 K가 입력되고, 단계 S3에서 문자 입력의 종료 여부를 결정하기 위한 검사가 수행된다. 그후에 현재 입력 문자 K와 프리픽스 스트링 ω를 조합한 스트링 "ωK"가 사전에 존재하는지의 여부를 결정하기 위한 검사가 수행된다.
종래 방법으로는 입력 데이터의 초기단에서 사전내에 있는 스트링 (ωK)의 존재 비율은 작다. 제 9 도의 흐름도에서, 샘플 데이터를 통해 얻어진 사전 초기치가 미리 저장되었기 때문에, 단계 S4의 사전에 스트링 "ωK"가 존재하는지 그리고 단계 S2로 돌아가도록 프리픽스 스트링 ω를 스트링 "ωK"로 대체하는 처리가 S5로 진행되는지를 결정한다. 다음에 탐색의 결과가 얻어지기에 불가능하게 될 때까지 최장 일치를 찾기 위한 탐색 처리가 반복된다. 그 결과 입력 데이터의 기준조차 사전으로부터 탐색될 수 있는 스트링의 사슬이 압축비를 증가시키기 위해 증가될 수 있다.
물론 스트링 (ωK)을 사전에서 찾을 수 없을 경우, 처리는 단계 S6으로 진행되서 코드 (ω)로서 현 참조번호 ω를 출력하고, 현재 처리된 참조번호 ω와 다음 문자 K의 구성으로된 스트링을 새로운 참조번호로 사전에 등록한다. 그리고 나서, 프리픽스 스트링은 새로운 단일 문자로 대체된다. 그후에 새로운 스트링의 최장 일치를 얻기 위한 부호화 처리를 수행하기 위한 단계 S2로의 처리로 되돌아간다.
복호화 처리의 흐름도가 제 12 도에 도시되어 있다. 단계 S1에서 제 9 도 및 10 도의 흐름도의 과정을 통해 얻은 사전 초기치가 메모리로부터 리이드되고, 리이드된 사전의 내용 및 최종어드레스가 복호화를 위한 사전으로 사용되는 메모리 내에 라이트된다.
벌써 얻어진 사전 초기치의 등록이 사전에서 완료되었을 때 첫 번째 코드는 단계 S2에서 독출된다. 단계 S3에서 코드 입력의 독출이 종료되었는지를 결정하기 위한 검사가 수행된다. 그리고 나서, 단계 S4에서 코드가 사전에 한정되었는지의 여부를 결정하는 검사가 수행된다. 코드가 단계 S4에서 사전에 정의됐는지를 결정할 때, 단계 S5의 처리가 진행되서 해당하는 참조번호를 갖는 스트링 "ωK"를 독출한다.스트링 "ωK"가 얻어지자 마자 문자 K가 단계 S6에서 스택된다. 그리고 나서, 문자 K를 제외한 참조번호 ω에 대한 탐색이 수행되서 단계 S5에서 다음 스트링 "ωK"가 얻어지게 된다. 참조번호 ω가 문자 K에 되돌려질 때까지 단계 S5 및 S6의 처리가 반복된다. 그 다음 단계 S7에서, 단계 S6에서 스택된 문자열이 LIFO법으로 출력된다.
단계 S4에서 사전에 스트링이 한정되지 않을 경우, 단계 S8에서 예의 처리가 수행되는데 이는 사전 초기치의 등록으로 인해 거의 초기화되지 않으며 출현도 감소된다. 그러므로 코드로부터 문자열로의 복호화는 예약처리를 수행하지 않고서도 거의 행해질 수 있다.
복호화에 대해서, 상술한 바와같이 첫 번째 코드에 대해서도 사전에 스트링으로서 등록이 이미 존재하기 때문에 제 12 도의 흐름도의 복호화를 초기 코드에 대해서도 스트링으로 복원할 수 있다. 종래의 복호화 방법을 대조하여 보면, 어두 문자에 대해서도 복원이 초기화 되어져야만 한다.
제 11 및 제 12 도의 부호화 및 복호화시, 메모리 장치로부터 사전의 초기치를 등록한 후에 부호화 또는 복호화를 시작하는데 본 발명은 이러한 특정한 처리로만 제한되지 않으며 재-쓰기 할 수 없는 금지된 섹션으로서 사전의 선두 섹션에서 사전의 초기치를 설정할 수 있어서 사전의 초기화중 소거를 방지하며 그러한 사전을 사용하여 부호화 및 복호화를 수행할 수 있다.
비록 전술한 서술에 있어서, 사전의 초기치가 샘플데이터를 형성하는 단일 문자열에 대해 작성된다고 할지라도, 상술한 과정에만 제한하지 않으며 다수의 샘플 데이터를 연결하여 조합된 데이터로부터 사전의 초기치를 작성하는 것이 가능해진다. 게다가 한 샘플 데이터에 대해 작성된 초기치를 등록한 후에 사전의 초기치를 조합하도록 그러한 발췌된 스트링을 축적하는 작성된 사전에 고출현 반도를 갖는 스트링만을 발췌하고 또 다른 샘플 데이터에 대해 사전을 작성하도록 하는 처리가 수행된다.
본 발명의 또 다른 양상에 따른 데이터 압축 및 복원 시스템을 제 16 도에 도시하였다.
제 16 도의 시스템에 있어서, 201은 문자열 공급부, 202는 입력 문자열을 일시적으로 저장하기 위한 입력 버퍼이고 203은 입력 데이터와 참조사전을 비교하기 위한 참조사전 조합부 209, 부호어 작성부 210, 참조사전에 스트링을 등록하기 위한 참조사전 등록부 211, 각 참조사전 단위를 위한 최적 코드를 결정하는 최적부호 변화부 212, 각각의 참조사전 단위에 대해 등록된 문자의 수를 계수하기 위한 등록 스트링 계수부 213 및 각각의 참조사전 단위용 최적 코드를 지정하기 위한 최적 부호 설정부 214로 이루어진 부호화 장치이다.
204는 최적치를 설정하기 전에 참조사전 단위를 표시하는 코드를 임시로 지정하기 위한 일시적 또는 임시적 부호지정부이다. 205는 다수의 참조사전 단위로 구성된 참조사전을 지시하는데, 이는 참조사전 단위의 16그룹으로 구성된 형태로 나타내어진다. 예를들어, 참조사전 단위는 서로 다른 문자군의 문자열에 해당하는 스트립의 부호어를 저장할 수도 있어서, 참조사전 단위 205-1은 어두 문자 a를 갖는 스트링을 포함하고, 참조사전 단위 205-2는 어두 문자 b를 갖는 스트링을 포함한다. 206은 압축 코드 출력부를 뜻한다.
제 16 도의 시스템의 동작에 대해 가부호로 부터 최적 코드로의 변환예가 제 18 도에 도시되어 있다. 도시된 부호어 포맷 217은 참조사전 단위부호 218 및 참조사전 단위부호 218 및 참조사전 단위의 등록 위치를 나타내는 인덱스 219로 구성된다. 참조사전 단위의 임시 코드에 따른 부호어 포맷 220에 대한 참조번호용 최적치로의 변화후의 부호어 221이 도시되어있다.
제 16 도의 시스템 동작은 다음과 같다.
우선 입력 문자열 201을 입력 버퍼 202에 저장한다. 참조사전 비교수단에 의해 문자열이 이전에 등록된 스트링중에 최장 일치 문자열을 선택하기 위하여 각각의 참조사전 단위 205-1,205-2, …, 205-16과 비교된다.
그후 부호어 작성부 210에서 부호어 포맷 217이 참조사전 단위에서 선택된 스트링의 등록 위치를 보인 인덱스 219 및 선택된 스트링을 포함하는 참조사전 단위의 번호 218로 작성된다. 이때에 입력 문자열의 모든 문자에 대한 압축 처리가 한번에 전송될 때까지 참조사전 단위의 동일 코드가 가부호 설정부 204에 의해 설정된 가부호로 유지된다.
그다음 해당 참조사전 단위에서 최장 일치 및 다음 문자와 일치하는 입력 문자열의 세그먼트로된 스트링을 위한 등록을 참조사전 등록부 211이 수행한다.
여기서, 등록 스트링 계수부 213은 예를 들어 무작위 문자열 앞의 문자열의 최후 문자를 포함하는 참조사전 단위로부터 연속된 스트링이 속해 있는 각각의 참조사전 단위로 전이의 출현비의 대신으로서 등록된 스트링의 수, 즉 어두 문자를 갖는 스트링을 위한 사전에 등록된 데이터의 수를 계수한다.
한번에 전송된 모든 문자에 대한 압축 처리가 종료되자 마자 최적 코드 설정부 214가 각 참조사전 단위의 등록된 스트링 번호에 의거하여 각 참조사전 단위에 대한 전이 확실성 및, 참조사전 단위 사이의 전이 출현을 도출해내서, 저등록 스트링 수 또는 저전이 확실성을 갖는 것에 대해 주어진 부호어 보다 높은 등록 스트링수 또는 고전위 확실성을 갖는 참조사전 단위에 대해 더 짧은 부호어를 설정한다.
따라서 얻어진 최적 코드로서, 최적 코드 변환부 212는 참조사전 단위에 대한 가부호로 부터 발생된 부호어를 최적 코드로 변환시킨다.
참조사전 단위의 가부호에 의해 서술된 부호어 220의 일예를 도시한다. 또한, 부호어 220으로부터 변환된 참조사전 단위의 최적 코드 221의 예가 도시된다.
압축된 코드의 작성과정을 보인 흐름도가 제 17 도에 도시되었다.
제 17 도에서 ω는 등록된 스트링을, K는 참조사전에서 등록된 스트링 ω와 일치하는 스트링 다음의 문자심볼을 지시한다. 처리 과정은 다음과 같다.
(S1) 참조사전을 초기화한다.
(S2) 예를들어, 참조사전 단위에 가부호를 부여한다.
다음 처리는 입력 문자열의 어두 문자 처리에 대해 서술하고(첫번째), 제 2 및 차후 문자처리에 대해 따로 서술한다(두번째).
(첫번째)
입력 문자열의 선두 문자를 독출하는 처리.
(S3) 입력 문자열의 어두 문자를 읽어낸다.
(S4) 독출된 문자 다음의 문자가 있는지를 검사하고, 만약 있다면 다음 존재하는 문자를 독출해내고, 다음 문자가 (S4)에 존재하지 않는 경우는 모든 입력 문자를 독출하여 압축 처리의 종료를 지시하기 때문에, 단일 문자만이 전송되는 경우를 제외하고는 정상적으로 단계(S5)를 진행한다.
(S5) 입력 문자열의 어두 문자 독출단계에서, 사전에 라이팅의 가능성이 당연히 없기 때문에 단계(S7)을 행한다.
(S7) 스트링을 등록할 때 입력 문자열의 어두 문자가 참조사전에 인덱스에 해당되는 때에, 코드의 등록을 수행한다.
(S8) 등록된 스트링 또는 무작위 문자열 앞의 문자열의 최후 문자를 포함하는 참조사전 단위로부터 연속적인 스트링이 속해 있는 각각의 기준 사전 단위로 전이의 출현비를 계수하기 위해서, 등록번호가 증가된다.
1. 그리고 나서, (S4)를 반복하도록 다음 문자를 출력하기 위해 (S3)의 처리로 되돌아간다.
(두번째)
입력 문자열에서 제2 및 차후의 문자에 대한 처리.
(S3) 다음 문자 K를 독출한다.
(S4) 만약 문자가 없다면 전송된 문서에 대한 최후 문자에 대한 처리가 종료되었다는 것을 의미한다.
(S5) (S4)에 독출문자가 존재할 때 처리는 (S5)로 나아가며, 스트링 ωK가 발견되지 않으면 단계(S7) 및 (S8)의 처리가 다시 수행되서 단계 (S3)으로 돌아간다.
(S6) ωK가 (S5)에서 사전에 존재할 때, 스트링이 이미 등록되었기 때문에 참조사전과 문자열은 비교하기 위한 스트림의 ωK가 ω로 대체된 후, 처리를 반복하기 위하여 다음 문자를 독출하기 위한 단계(S3)으로 다시 처리가 행해진다. (S4)에서 문자가 검출되지 않았을 때는, 모든 문자의 처리가 종료되었기 때문에 처리는 단계(S9)로 행해진다.
(S9) 각 참조사전 단위에 등록된 스트링의 수 또는 참조사전 단위 사이의 전이 출현을 계수한다.
(S10) 참조사전 단위에 등록된 스트링의 수와 참조사전 단위 사이의 전이 출현비를 고려해서, 참조사전 단위에 대한 최적 코드를 설정한다.
(S11) 부호어에 제공되고 참조사전 단위를 나타내는 가부호를 최적 코드로 변환하기 위한 변환처리를 수행한다.
(S12) 압축 코드를 출력한다.
상기 서술한 바와같이 큰 사이즈의 참조사전이 사용될때라도 사전이 분할되기 때문에 등록 스트링의 인덱스가 짧은 코드로 서술될 수 있고 따라서 효과적으로 코드를 작성할 수 있다.
비록 사전을 분할하여 부호어를 증가할지라도 여러 길이 코드로서 참조사전 단위를 나타내는 코드를 조합하여 모든 입력 문자열의 압축 코드에서의 부호어의 비율은 감소될 수 있다.
상술한 바와같이, 사전을 큰 사이즈로 만들지라도, 인덱스의 코드들은 길어지지 않으며 압축비도 감소되지 않는다. 그러나 사전을 크게 만들기에 만족할 만한 데이터 압축을 얻을 수 있다.
참조사전의 단위에 대한 최적 코드를 설정하는 일예가 제 19 도에 도시되어 있다.
제 19 도에서는, 세 참조사전 단위들의 경우에 대해 등록위치의 인덱스 배열예가 제공되어 있다.
예를들어, 문자 스트링이 a, b, c로만 구성될 경우 T1은 어두 문자로서 a를 갖는 스트링의 그룹이고, T2는 어두 문자로서 b를 갖는 스트링의 그룹이며, T3은 어두 문자로서 c를 갖는 스트링의 그룹이다. 스트링은 어두 문자에 해당하는 참조사전 소자에 등록된다.
각 절점에 인덱스 번호를 할당하는 대신 등록 순서로 번호가 실제로 주어진다.
제 19 도에 도시한 바와같이, 문자 스트링을 나타내는 부호어는 참조사전 단위의 수를 나타내는 트리번호 224 및 등록된 위치를 나타내는 인덱스 222로 구성된다.
예를들어, 참조사전 단위3(T3)의 등록위치 8에서 등록된 스트링은 참조사전 단위 T3의 번호에 의해 나타낼 수 있다.
제 19 도에서 도시된 바와같이 20개의 절점을 갖는 T1과 같이 다수의 절점을 갖는 트리에 대한 참조사전 단위를 나타내는 번호, 즉 트리번호는 짧은 코드"0"이 할당된다. 반면에 T2, T3처럼 작은 수의 절점을 갖는 트리에 대해서는 긴 코드 "10" 및 "01"이 주어진다.
최적 코드가 인가되는 압축된 코드는 제 20 도에 도시한다.
제 20 도에서는 입력 문자열 aabababaaba에 대한 증분 분해형 ZL 방식(Ziv Lempel 방식)을 변환하기 위한 시스템을 설명한다.
제 20 도에서, 입력 문자열의 압축 코드 및, 참조사진 단위의 번호가 가부호 "000" 및 "001"로 서술될 때의 입력 문자열의 압축에 의해 도출된 압축 코드를 도시하였다.
제 20 도에서는 참조사전 단위의 가부호를 최적 코드로 변화시킬 때 입력 문자열의 압축 코드도 도시하였다.
제 21 내지 23은 다른 예이다.
제 21 도는 문자열에 있어서의 최종 문자로부터 선두 문자로의 천이의 예를 보였다. 제 21 도의 표에서 문자그룹 사이의 천이의 출현비를 측정한 결과를 도시하였다.
제 21 도에서, 251은 현재 등록된 스트링에 대한 한전위의 등록 스트링을 나타내고, 252는 현재 등록된 스트링, 253은 차위의 등록된 스트링, 254는 한 전위의 등록 스트링 251의 최후 문자, 255는 현재 등록된 스트링의 어두문자, 256은 현재 등록된 스트링의 최후 문자, 257은 차위의 등록 스트링의 어두 문자를 각각 지시한다.
제 21 도에서, 참조사전 단위 즉, 제 17 도에서의 트리의 루트는 16으로 설정하고, 각 문자가 문자열의 직렬로 최후 문자 및 어두 문자 사이의 천이를 고려하여 속해 있는 트리들 사이의 천이의 확실성에 의거한다.
천이의 가능성이 높을때는 짧은 코드가 설정되며 확실성이 낮을때는 더 긴 코드를 선택한다. 그러한 코드들은 부호어로서 인덱스와 함께 할당된다.
제 21 도에서, 각 숫자는 출현번호를 나타낸다. 예를들어, 그룹 넘버 4로부터 그룹 넘버 6까지의 천이 출현비율은 83배와 같다.
제 22 도는 천이 출현 순서를 결정하기 위해 제 21 도의 측정된 값의 재-쓰기 데이터이다.
제 22 도에 있어서 어떠한 이전의 그룹 넘버에 대해 현 등록 스트링의 선두 문자와, 이전의 등록된 스트링의 최종 문자가 그룹 넘버에 속해 있는 곳에서 그룹 넘버로부터 천이의 출현에 대한 순서가 주어진다.
번호 0은 천이 번호가 최대라는 사실을 지시하며, 번호 15는 천이 번호가 최소라는 것을 지시한다.
예를들어 이전의 등록된 스트링의 그룹 넘버 4로부터 현 등록된 스트링의 그룹 넘버 6까지의 천이 순서가 모든 경우에 있어서 현재 등록된 스트링의 그룹 넘버에 대한 천이들 사이에서 제2높은 순서로 나타내어 진다.
제 23 도에서 참조사전 단위에 대한 최적 코드를 즉, 제 21 도의 그룹 넘버를 할당하기 위한 방법을 제 21 도의 결과에 의거하여 도시하였다.
제 23 도에서 등록된 스트림 그룹 넘버들 사이의 천이 빈도의 순서에 따라 부호어를 할당하기 위한 코드의 예가 도시되어 있다.
짧은 코드는 고출현 빈도에 대해 주어지지만, 이와는 반대로 긴 코드는 출현빈도가 낮을 때 주어진다.
여기서 그룹 넘버 6의 현재 등록된 스트링에 대한 부호화 처리가 고려된다.
그후 이전의 등록된 스트링의 그룹 넘버는 0이 되도록 가정하자.
이 경우에 제 22 도의 표에 도시한 바와같이 빈도는 10이다. 이로 인해 최적 코드 1110101에 할당된다.
제 23 도에는 부호를 나타내었다.
상술한 바와같이 부호어를 해석하기 위하여 이전의 스트링의 최종 문자에서 참조시킨 단위가 필요하다.
그러나, 이전의 스트링의 최종 문자는 출력되는 압축 코드열에 주어지기 때문에, 현 그룹의 그룹 넘버는 그 출력으로부터 구별될 수 있다.
제 24 도의 시스템은 참조번호로 사전 310에서 이미 등록 부호화된 스트링과 최장 일치의 스트링을 동일화시켜서 입력 문자열을 LZW 시스템 코드로 부호화 시키는 것을 나타내고 있다.
제 24 도의 시스템에 있어서, 사전 310은 사전 310-1 내지 310-N의 소정의 번호를 포함하는 사전군으로 구성되는데, 번호는 모든 문자 종류의 번호보다 작다. 각 사전에 대해 모든 문자 종류는 참조번호로 초기에 등록된다.
입력 문자열의 부호화 처리시, 특정 사전 310-i는 히스토리(history)를 나타내는 인덱스 정보에 따라, 즉, 이전에 부호화된 스트링에 따라 사전 그룹중에서 동일화된다. 동시에, 입력 문자열을 지정된 사전에서 찾을 수 없을 때 이전에 부호화된 스트림에 대해 한 문자를 더하여 구성된 스트링이 새로운 참조번호로 등록된다.
입력 문자열의 부호화 처리시 특정 사전 310-1은 이전에 부호화된 스트링의 최후 문자 코드의 일부로부터 얻어진 인덱스에 따라 사전 그룹중에서 동일화된다. 특히, 이전에 부호화된 스트링의 최종 문자 코드의 상위 비트에 의해 나타내어진 인덱스 정보에 따라, 특정 사전 310-i가 사전 그룹중에 동일화된다.
반면에, 입력 문자열의 부호화 처리시, 이미 부호화된 스트링의 최후 문자 코드를 알 수 있는 표를 통해 얻어진 인덱스 정보에 따라 사전군중의 특정 사전을 동일화 시키는 것도 가능하다. 실제로 이전에 부호화된 스트링의 최후 문자 코드의 상위 비트에 의한 표를 조사함으로써 얻어진 인덱스 정보에 따라 사전군중에서 특정한 사전 310-i를 동일화 한다.
제 24 도의 시스템은 사전에 등록된 입력 문자열의 이미 부호화된 스트링 사이에서 최장 일치 스트링의 참조번호를 지정하여 부호화된 부호어로부터 원래의 문자열로 복원하기 위한 데이터 복원 시스템을 조정한다.
사전 310은 사전 310-1 내지 310-N의 소정의 수를 포함하는 사전군으로 구성되는데, 그 수는 모든 문자종류의 수보다 작다. 각 사전에 대해 모든 문자 종류가 참조번호로 초기에 등록된다.
입력코드의 복원시, 복원은 이전에 재저장된 스트링에 따른 인덱스정보에 따라 사전군들 사이에서 특정사전 310-1중의 하나를 동일화 시켜서 수행된다. 매 복원마다, 새로운 참조번호를 등록시키기 위해서 현재 복원된 스트링의 선두 문자를 이전에 복원된 스트링의 참조 번호에 부가하여 스트링이 구성된다. 여기서, 특정 사전 310-i의 지정은 부호화시의 지정과 동일하다.
제 24 도의 시스템으로 다음의 효과를 얻을 수 있다.
우선, 이전 스트링의 트레일링(trailing)문자의 의존도를 나타내는 히스테리시스는 원래와 같이 256조건이다. 문자의 출현이 경사를 갖기 때문에, 256조건중에 어떤 조건은 거의 나타나지 않는다.
조건을 감소시키기 위하여 최후 문자의 히스토리를 기록하여 작은수의 조건, 즉 8 내지 16 조건을 얻을 수 있다. 따라서 사전의 수를 줄일 수 있다.
히스토리의 상태 수가 적기 때문에 각 사전에 초기치와 같은 문자의 모든 256종류의 등록번호는 히스토리의 수 즉 256에 의해 곱해진 사전의 수이어서, 처리과정의 낭비가 중요하지 않다.
히스토리를 감소하기 위한 해결방법으로서 예를들어 이미 부호화된 이전의 스트링의 최후 문자의 상위 4개의 비트를 취하여 히스토리는 자연히 16종류가 된다. 히스토리를 감소하기 위한 해결방법으로써는 효과적으로 사전을 사용하기 위하여 나타나는 조건을 형성하는 것이 바람직하다. 그러나 문자내의 생(raw) 데이터를 사용하는 것은 불필요하며, 대신에 이전 스트링의 조건 즉 사전의 인덱스를 지정하여 또는 히스토리조건에 이전에 부호화된 스트링의 최종 문자와 상관하는 조사표(LUT)를 준비해서 히스테리시스의 수를 감소시키는 것은 가능할 수도 있다.
제 24 도의 시스템에 대한 프로그램 메모리 장치 및 데이터 장치의 구조가 제 25 도에 도시되어 있다.
제 25 도에서, 312는 제어수단으로서의 CPU를 지시한다. CPU 312에 프로그램 기억장치 314 및 데이터 기억장치 336이 연결된다.
프로그램 기억장치 314는 제어 프로그램 316, LZW 코드를 사용하는 최장 일치를 탐색하는 최장 일치 탐색 프로그램 318, LZW 시스템 코드의 입력 문자열을 변환하는 부호화 프로그램 320, 부호화 프로그램 320에 의해 원래의 문자열로 변환된 LZW 코드용 복호화 프로그램 322 및 모든 문자 종류 즉 처리의 대상의 256 문자 종류를 초기에 등록하는 사전 초기치 작성 프로그램 324를 기억한다.
데이터 기억장치 326에는, 부호화되어야 하는 문자열 및 복호화 되어야 하는 문자열을 기억하는 데이터 버퍼 328 및, LZW 시스템코드에 관한 부호화 및 복호화시 사용되며, 순차적으로 동시에 작성되는 사전 310이 제공되어 있다. 이미 부호화된 스트링의 최후 문자 코드의 상위 4개의 비트에 의해 의존도를 나타내는 인덱스 정보에 의해 그것이 분류될 때, 사전 310은 256 종류의 문자에 대해 16개의 사전 310-1 내지 310-16으로 구성된다. 비록 부호화된 스트링의 최후 문자 코드의 상위 4개 비트로 사전의 인덱스를 직접 작성할 수 있어도, 조사표(LUT)에 대한 사전의 인덱스를 리이드하여 지정하는 방법이 다음에 주어진다.
데이터 압축 및 복원을 아래와 같이 간단히 서술한다.
제어 프로그램 316의 제어하에, CPU 312는 사전 초기치의 작성 과정을 수행하기 위해 사전 초기치 작성 프로그램 325를 개시한다. 실제로 사전 초기치 작성 프로그램 324는 16개의 사전 310-1 내지 310-16에 각각 할당된 참조번호로 각각의 256 종류의 문자에 등록한다.
데이터 기억장치 326의 데이터 버퍼 328은 외부에 입력된 데이터를 위해 부호화 되어야 하는 다수의 소정의 길이의 문자를 일시적으로 저장한다. 데이터 버퍼는 부호화 프로그램 320으로부터의 요구에 따라 한 문자대 한 문자의 방법으로 전송한다. 그리고 나서 데이터 버퍼가 비게 되는 매시간 마다 비슷한 방법으로 다수의 문자들을 수신한다.
부호화용 알고리듬을 제 26 도의 흐름도에 따라 서술한다.
우선 S1에서 다음의 처리를 수행한다.
(i) 이전 스트링의 최종문자에 의해 선택되는 각각의 N사전 Di(i=1, …N)에 대해 모든 문자 종류의 단일 문자 스트링을 초기치로서 등록한다.
(ⅱ) 각 사전 Di의 참조번호의 전체수는 총 수 Ni에 의해 조정되며, N개의 사전에 대해 초기화시 Ni는 , Ni=문자 종류+1로 설정된다.
(ⅲ) 히스토리, 즉 이전 스트링으로부터 바로 이전 스트링의 최후 문자 코드의 상위 4개의 비트는 PK를 취한다. 그리고 나서, PK의 초기치로서 PK=0이 설정된다.
(ⅳ) 어두 문자를 입력 K로 취하면, 이 입력 K는 프리픽스 스트링 ω로 변환된다.
(ⅴ) 이전 스트링의 최후 문자에 의거하여, 히스토리 조건과 상관하는 조사표가 설정된다. 여기서, 초기단에서 바로 이전의 스트링이 없기 때문에, 이전 스트링의 최후 문자를 지시하는 K1이 K1=0으로 설정한다. 조사표는 K=0일 때 그곳에서 얻어진 인덱스가 PK=0이 되는 그러한 방법으로 설정한다.
상기와 같이 S1의 처리를 완료한 후에 단계 S4 내지 S7에 보인 방법을 통해 부호화가 수행된다. 단계 S4 및 S7의 처리는 종래 기술과 같다.
그러나, 종래 LZW 부호화에서 취한 것과 같은 단일 사전을 사용하는 대신에 조사표를 참조하여 얻어진 히스토리 LUT(K1)=PK에 의해 다수의 사전 사이에 초기에는 S1에서 차후에는 S6에서 특정사전 Dpk를 지정한다. 선택된 사전 Dpk에서 등록된 스트링과 비교를 수행해서 최장 일치 탐색을 수행한다. 최장 일치와 일치하는 스트링에 대해서는 다음 문자가 부가되어 스트링 ωK가 작성되고 난후 스트링 ωK가 선택된 사전 Dpk에 등록된다.
사전 Dpk에 대한 등록후에, 사전 Dpk의 참조번호를 조정하는 카운터 Npk는 Npk=Npk+1과같이 하나씩 증가된다. 반면에, 다음 스트링에 대한 사전을 선택하기 위해서, 히스토리 조거 PL가 최종 문자 K1에 의해 조사표 K1을 사용하여 유도된다.
복호화를 위한 알고리듬을 제 27 도의 흐름도를 참고로 하여 서술한다.
복호화는 부호화 처리에 대한 역동작이다. 우선, S1(A)에서 사전의 초기화는 부호화 처리와 동일하다.
S1(B) 내지 S9에서의 처리는 종래 기술과 동일하다. 그러나 입력 코드로부터 참조번호 ω를 복호화한 후에 S4, 사전 Dpk가 이전 스트링의 최종 문자로부터 유도된 히스토리 조건 PK를 사용하여 선택된다. 그리고 선택된 사전 Dpk로부터, 참조번호 ω에 대응하는 스트링을 얻는다.
사전에 대해 새로운 스트링의 등록은 기본적으로 LZW 부호화와 같다. 그러나, 등록이 한 사이클 동안 지연된다. 즉 부호화의 경우 문제에서 스트링을 부호화한 후에 부가적인 문자로 스트링 ω,즉 문제 +한문자에서의 스트링이 사전에 등록된다. 그러나, 복호화시 다음 스트링의 어두 문자로 등록을 하기 위해 문제에서 스트링에 한 문자를 부가할 때 다음 스트링에 대해 복원이 종료된 후에 등록이 수행된다.
S9에 보인 바와같이 실제로 이전 스트링의 참조번호 OLDω와 복원된 스트링의 어두 분자 K1과의 조합이 이전 스트링의 최후 문자로부터 얻어진 히스토리 조건 PK1에 따라 선택된 사전 Dpk1에 등록된다. 그러므로, 다음 등록을 위해 복원된 스트링의 연장을 위해 준비하도록 현재 히스토리 조건 PK는 PK1으로 천이되고, 새로운 히스토리 조건은 복원된 스트링의 최후 문자 K2로부터 얻게된다.
비록 전술한 설명이 모든 256 종류의 문자에 대한 16개의 사전을 만드는 예에 주어진다고 해도, 사전의 번호는 주어진 번호가 모든 종류의 문자의 수보다 작은 수로 적당히 선택될 수 있는 것처럼 특정지을 수 없다.
또한 문자 종류의 수는 필요한대로 적당히 선택할 수도 있다.
본 발명의 다른 양상에 다른 데이터 압축 및 복원 시스템이 제 28 도에 도시되어 있다.
제 28 도는 문자열이 오직 3개의 문자, a,b,c로만 되어있을 경우 사전이 이전 스트링의 각 최종 문자에 대해 작성되며, 따라서 작성된 사전이 등록된 초기치를 갖지 않는 예를 보인 것이다.
제 28 도에서 401은 문자열 공급부이고, 402는 최후 문자의 루트를 갖는 매 트리에 대해 등록된 스트링의 인덱스"I(n)"을 등록하는 사전을 뜻한다. 예로서, 루트(a)를 갖는 트리에 대해 스트링 ab, abc에 대한 인덱스는 각각 0.1 등이다. 403은 입력 문자열을 1대 1로 리이드하는 문자열 돌출부이고, 404는 문제에서의 현 스트링이며, 405는 등록된 스트링에 대한 현 스트링의 최장 일치의 스트링을 독출하기 위한 사전과 현재 스트링을 비교하는 사전 참조부이다. 408은 스트링의 최장 일치용 등록된 인덱스에 의거하여 부호화를 실행하는 부호화부이며, 최장 일치를 포함하는 스트링 및 추가 다음 문자를 새로 나타나게 하기 위하여 이전 스트링의 최후 문자에 대해 인덱스가 주어진다. 409는 현 스트링을 사전에 등록하기 위한 사전 등록부이고, 410은 최장 일치의 최후 문자를 기억시키기 위한 최후 문자기억부이며, 411은 루트로서 최후 문자를 취하는 사전의 트리의 일예를 나타낸다.
제 28 도의 시스템 동작은 "ababce…"의 입력문자열의 부호화예를 택해서 부분적으로 설명한다.
이전 스트링의 최후 문자의 루트를 갖는 사전의 트리는 스트링(a)가 제 29 도에 도시한 바와같이 출력되는 것일 때, (a)다음의 최후 문자(b)를 갖는 스트링 및 (a)다음의 최후 문자(a)를 갖는 스트링에 대해 루트(b)를 갖는 트리의 (a) 및 루트(a)를 갖는 트리의(a)를 위해 뚜렷히 출력해야만 한다.
각각의 루트와 연결된 단일 문자를 출력하기 위해서, (a)다음의 (a) 및 (a)다음의 (b)등을 뚜렷히 출력하도록 "aa,ab,ac,ba,…"등의 하나가 부가된 문자 및 트리의 루트를 형성하는 문자와를 부호화 및 복호화하기 위한 초기치를 임시로 작성하는 (i)또는, 단일 문자가 트리의 루트중의 하나와 관련되게 하기 위해 나타낼 때 단일 문자가 생 데이터로서 출력되는 (ⅱ)의 두가지 방법중 하나를 선택해야만 한다.
여기에서, 사전의 트리의 루트로써 이전 스트링의 최후 문자를 택하고, 루트와 관련된 초기치를 등록하지 않고서 트리의 루트와 직접 관련된 신호 문자를 생 데이터로 출력하는 경우의 설명을 한다.
(첫번째) 문자 독출부 403은 최초 문자(a)를 독출하고 스트링 404로써 그것을 형성한다. 사전 참조부 405는 (a)가 등록되지 않았다는 것을 확인하기 위해 사전을 참고로 한다.
부호화부 408은 인덱스 0을 생 데이터를 지정하는 코드로 설정한다.
사전 등록부 409는 n=1의 등록부에서 이전 스트링의 최후 문자 0의 트리의 사전에 대해 (a)를 등록한다. 동시에, 인덱스 0 및 문자(a)를 출력한다. 그리고 나서, 이전 스트링의 최후 문자로서 (a)를 기억시킨다.
(두번째) 두 번째 문자 b를 리이드한다. 그리고 나서, 이전 스트링의 최후 문자 a 및 입력문자 b의 조합으로된 스트링 ab에 대해 참조번호가 사전에 만들어진다. ab가 아직 등록되지 않았기 때문에 스트링 "ab"는 첫 번째 등록된 순서로서 루트 (a)의 트리를 갖는 사전의 등록위치 "2"에 등록된다.
동시에, 현 입력(b)가 루트(a)를 갖는 트리상에 나타나는 문자이기 때문에, 인덱스 0 및 (b)는 생 데이터로서 출력된다. 그리고 나서, (b)는 이전 스트링의 최후 문자로서 기억된다.
(세번째) 세 번째 문자 (a)를 입력시킨다. 그리고 나서 사전상에 현 독출된 (a) 및 이전 스트링의 최후문자(b)로 구성된 스트링 "ba"에 대한 참조가 만들어진다.
이전 스트링의 최종 문자(a)는 이전 스트링의 최후 문자로서의 출력을 기억한다.
(네번째) 네 번째 문자 (b)가 독출된다. 그리고 나서, 이전 문자의 최후 문자 (a) 및 독출된 문자 (b)로 참조가 스트링"ab"에 대한 사전에 만들어진다. "ab"가 이미 등록부 "3"에 등록되어 있기 때문에 다음 문자 (c)를 리이드한다.
스트링 "abc"가 사전에 아직 등록되지 않았기 때문에 부호화부 408은 루트 (a)를 갖는 트리에 "ab"의 네 번째 문자 b를 지시하는 인덱스 1에 의해 최장 일치 "ab"를 위한 부호화를 수행한다. 동시에, 사전의 등록부 "4"에 대해 새로이 나타난 스트링 "abc"가 루트 (a)를 갖는 트리의 두 번째 스트링으로 등록된다.
출력 최장 일치 문자의 최후 문자 (b)가 이전 스트링의 최후 문자로 기억된다.
(다섯번째) 다선번째 문자 (c)를 리이드한다.
기억된 최후 문자 (c) 및 리이드된 (b)로 스트링 (bc)를 만드는데 이는 (bc)가 아직 등록되지 않았기 때문이며, 스트링 (bc)는 등록위치 "5" 즉 "인덱스 5"에서 루트 (b)를 갖는 트리의 사전용 어두 스트링으로서 등록된다.
그리고 나서, (c)는 루트 (b)의 시전의 트리의 루트에 직접 연결된 문자이며, 인덱스 0 및 문자 (c)는 생 데이터로 출력된다.
그 다음 비슷한 처리에 의해 출력코드 "0a0b0a10c…"을 얻는다.
제 28 도의 시스템에서 스트링의 데이터 압축 코드를 위한 복호화를 수행하기 위한 구조가 제 30 도에 도시되어 있다.
제 30 도의 구조에서, 421은 수신된 코드이며, 422는 입력 코드로부터 복원된 사전이다. 423은 독출 수단이며, 424는 입력 코드에 의해 지시된 복원된 이전 스트링의 최후 문자 및 인덱스이고, 425는 사전 참조부이다. 426은 이전의 문자의 최후 문자 및 인덱스에 해당하는 사전에 등록된 스트링으로부터 스트링을 복호화 하기 위한 스트링 복호화부이고, 427은 복원된 문자를 출력하기 위한 복호화된 문자 출력부이고, 428은 복원된 스트링의 최후 문자에 대한 복원된 문자 기억부를 지시한다. 429는 인덱스로 이전 스트링의 최후 문자의 트리에 차후에 복원된 문자의 어두 문자 및 복원된 스트링으로 구성된 스트링을 등록하는 사전 복원부이다.
부호화된 코드 "0a0b0a10…"에 대한 복호화 동작의 일예를 아래에 서술하고자 한다.
(첫번째)입력 코드 독출부 423은 입력 코드 (a)를 독출한다. 독출 코드가 생 데이터이기 때문에 스트링 복화화부 426은 문자 (a)를 복호화해서 출력한다. 그리고 나서, 문자(a)를 이전 스트링의 최후 문자 0의 트리로서 복원된 사전 422의 등록 위치"1"에 등록한다. 이때 복화화된 스트링의 최후 문자(a)를 기억시킨다.
(두번째)마찬가지로, 다음 코드 (1b)는 독출되는데 이는 이 코드가 또한 생 데이터이기 때문이며 문자(b)를 복호화해서 출력한다.
또한, 기억된 문자(a) 및 현재 독출된 문자(b)로 구성된 스트링 (ab)를 루트로서 (a)를 갖는 사전의 등록위치 "2"에서 등록된다. 게다가, 복호화된 스트링의 최후 문자 (b)를 기억시킨다.
(세번째) 다음 코드(a)를 독출한다. 스트링 (a)는 복원되고, 기억된 최후 문자(b) 및 현재 독출된 (a)로 구성된 스트링 (ba)는 인덱스 "1"과 함께 루트로서 (b)를 갖는 트리의 사전의 등록위치"3"에 등록된다. 그리고 나서 복원된 (a)를 기억시킨다.
(네번째) 네 번째 코드 1을 독출한다. 지급 이전 문자의 최후문자(a)의 입력코드가 1이기 때문에 사전 참조부 425는 사전에 대해 스트링 (ab)를 리이드한 다음, 스트링 복호화부 426이 스트링 "ab"를 복호화한다. 또한 이전의 최후 스트링의 최종문자 (a) 및 복호화된 스트링에 의거하여, 복호화된 문자 출력부 427은 문자 (b)를 출력한다. 최후문자 기억부 428은 복호화된 스트링의 최후문자 (b)를 기억시킨다.
(다섯번째) 다섯 번째 코드 (c)를 리이드한다. 그것이 생 데이터이기 때문에, 문자 (c)를 복호화한다. 그리고 나서, (네번째) 단계에서 복호화된 스트링 ab 및 현재 복호화된 문자 (c)로 구성된 스트링 abc를 인덱스 "2"와 함께 루트로서 (a)를 갖는 트리의 사전의 등록 위치"4"에 등록하고 나서 사전을 복원한다.
상술한 설명에서 이전 스트링의 매 최후 문자마다 사전의 트리를 작성하기 위한 처리과정이 주어지며, 본 발명은 특정한 과정으로만 제한되지 않으며 그들의 종류에 의해 최후 문자를 접합하는 것과 차후의 스트링을 등록하기 위한 각 그룹에 대한 사전의 트리를 작성하는 것이 가능해진다.
제 28 도의 시스템에 적용되는 부호화 장치의 일예가 제 31 도에 도시되어 있다.
제 31 도의 장치에서 이전 스트링의 최후 문자에 대해 스트링과 결합과 인덱스릴 전체 사전에 있는 등록 위치에 등록하기 위한 개별 사전 및 스트링을 등록하기 위한 전체 사전에 대해 사전을 분리하여 작성한다.
제 31 도의 장치에 있어서, 430은 입력 문자열을 부호화 시키기 위하여 수신된 문자열을 기억시키기 위한 기억장치이고, 431은 스트링 코드 ω를 기억시키기 위한 기억장치며, 432는 이전 스트링의 최후 문자 PK를 기억하기 위한 기억장치이며, 433은 부호화되야 할 현 스트링의 최후 문자를 저장하기 위한 기억장치이며, 434는 메모리로 이루어진 전체 사전 D(n)이다. 435는 0,a,b,c등과 같이 256개의 각 문자에 대해 형성되고 메모리로 이루어진 개별 사전이다. 436은 사전의 트리에 있는 스트링의 등록 체계의 깊이를 측정하기 위한 카운터이다. 437-1 내지 437-255는 개별 사전 0 내지 255의 각 인덱스 m(0) 내지 m(255)에 대한 카운터이다. 438은 전체 사전의 등록번호 n에 대한 카운터이다. 439는 사전을 참고하여 사전을 작성하기 위한 사전참조 및 발생수단이다. 440은 독출 코드를 부호화하기 위한 코드 발생 수단이며, 441은 스트링의 발생된 코드를 출력하기 위한 코드 출력 수단이고, 442는 프로그램에 따라 데이터 부호화의 처리를 수행 및 제어하기 위한 CPU이다.
제 31 도의 장치에 있어서 부호화 동작 처리 과정이 제 32 도에 도시되어 있다.
문자열이 "ababcbaba…"일 때 전체 사전 및 개별 사전의 예가 제 33 및 34 도에 도시되어 있다.
문자열이 부호화됐을 때 개별 사전의 트리의 예가 제 35 도에 나타나 있다.
제 35 도의 예에서, 이전 스트링의 최후 문자의 트리의 루트에 직접 연결되어 있는 문자가 처음 나타났을 때, 문자는 생 데이터로서 택해져서 단일 문자가 입력된다.
부호어의 일예는 제 36 도에 도시되었다. 모드 1은 각 개별 사전의 트리의 루트에 직접 연결된 문자가 새로이 나타났을때의 경우를 보여준다.
모드 1에서 인덱스 0의 조합 즉, 생 데이터를 지정하는 조합 및 문자의 생 데이터는 부호어로서 입력된다.
0 이외의 문자 또는 스트링의 인덱스가 나타날 때는 각 트리에서의 인덱스가 제 36 도에 도시한 바와같이 부호어로써 입력된다.
제 32 도의 흐름도는 아래에 서술한다.
단계 S1을 설정하는 초기 조건은 256개의 개별 사전들이 제공되는 경우를 보인다. 그러나 명세를 간단화 하기 위하여 오직 문자 a,b,c로만 구성된 문자열"ababc…"의 부호화는 고려될 것이다.
우선, 전체 시스템의 초기화가 S1에서 일어난다.
초기 조건과 같이, (조건 1)이전 스트링의 최종 문자 PK가 0으로 설정된다.(조건 2)스트링 코드 저장 메모리의 초기치가 이 경우에 0으로 설정된다. 도면에서, 초기치는 256으로 설정된다. (조건 3)사전의 트리의 깊이 DP에 대한 측정 카운터는 0으로 설정된다. (조건 4)전체 사전의 어두 등록 위치를 나타내는 어드레스는 이 경우 4에 설정된다. 도면에서 어두 어드레스는 256에 설정된다. 개별 사전의 인덱스 번호는 각각 0으로 설정하는데 도면에서 개별 사전이 네 개의 문자 예를 들어 0, a, b, c에 대해 만들었기 때문에 각 사전들에 등록된 인덱스의 번호 m(0), m(a), m(b), m(c)는 0으로 설정된다.
(첫번째) S2에서 입력 문자열 ababcbaba…의 어두 문자 a는 독출된다.
S3에서의 판단은 문자열을 독출하는 것이 처리를 끝내기 위해 완료되었는지를 결정한다. S3에서의 판단후 처리는 S4로 간다.
이전 스트링 0 다음의 스트링(a)는 전체 사전에 아직 등록되지 않았기 때문에 처리가 S6을 행한다.
이때 깊이 DP가 0이어서 처리는 S12로 진행한다.
S12에서 순시(instant)경우가 상술한 모드 1을 만족하기 때문에 부호어와 같은 0a는 m(0)=0 및 생 데이터 a에 의거하여 출력된다.
그리고 나서, S13에서 ω의 초기치가 0이고 스트링이 0a이기 때문에 현 입력 문자(a)는 전체 사전 D(n=4)에 등록된다. 또한 개별 사전 0(pk=0)에 대해 인덱스 I(n=4)가 설정되고 난 후 개별사전 0의 등록된 인덱스 번호 m(0)은 1씩 증가하는데, 즉 개별 사전 0의 트리에 등록된 문자가 이전에는 없다.
그리고 나서 S14에서 전체 사전의 등록 위치 n이 1씩 증가된다.
그후에 최종 스트링 PK가 현재 독출된 (a)와 셋트된다. 스트링 코드 ω는 그후에 독출된 문자(a)의 코드로 즉, 초기 조건에서의 설정으로서 1로 설정된다.
(두번째) 다음, 두 번째 문자 b를 리이드한다.
ωK=1b가 아직 사전에 등록되지 않았으므로, 처리는 S6으로 진행된다. DP는 0이기 때문에 처리는 또한 단계(12)로 진행된다.
여기서 모드는 m(a)=0 및 생문자 b와 함께 모드 1이기 때문에, 0b를 출력한다.
그후에 S13에서 ωK=1b가 사전 D(n=5)에 등록된다. 게다가 개별 사전 a(PK=a)로부터 인덱스 I(n=5)를 등록한다. 개별 사전(a)는 1씩 등록번호 m(a)로 증가되서 1이 등록되며, 즉 개별 사전 (a)의 트리에는 등록된 문자가 없다. S14에서 n은 1씩 증가된다. 그후 현재 독출된 (b)는 최후 문자 PK로서 설정하고, 입력문자 코드 ω를 초기 조건에서 (b)에 대해 설정된 코드 2로 설정한다.
(세번째) 그 다음, 세 번째 문자(a)를 리이드한다.
ωK=2b가 아직 등록되지 않아서 처리는 S6으로 진행하며, S12에 DP=0이기 때문에 모드 1에서 m(b)=0의 조합 0b즉 개별사전(b)의 트리에 스트링이 없어서 생 데이터(b)를 출력한다.
그후 S13에서 ωK=2b가 개별 사전 D(n=6)에 등록되는데 이때 인덱스 I(n=6)이 개별 사전 (b)(PK=b)에 등록된다. 그리고 나서, m(b)는 1씩 증가되며 등록되는데, 즉 개별 사전 b의 트리에는 등록된 문자가 없다는 것이다. 그 다음 S14에서 (m)이 (a)씩 증가해서 PK가 (am)으로 설정되어 ω=1이 설정된다.
그후, 다음 문자(b)를 리이드한다.
(네번째)다음, 네 번째 문자(b)를 리이드한다.
S4에서의 판단은 전체 사전에 대해 ωK=1b가 이미 코드 n=5로서 등록되었기 때문에 처리 S5를 행한다.
그리고 나서 ω를 전체 사전으로부터 등록된 n=5로 대체되고난 다음, 체계의 깊이 DP는 DP=1이 되게 하기 위해서 1씩 증가되고, 현재 독출된(b)는 그후 최종 문자 저장 메모리 K1에 저장된다.
(다섯번째) 그리고 나서, 다섯 번째 문자(c)를 리이드한다.
다음 S4에서는 전체 사전에 ωK=5c가 등록되었는지를 판단한다.
ωK=5c가 아직 등록되지 않았으므로 처리는 S6을 실행한다.
여기서, DP=1이기 때문에 처리는 또한 S7로 진행한다.
S7에서 참조는 ω=5(n=5)에 해당하는 개별 사전에 만들어진다. 그리고 나서, 이전 스트링(a)의 최후문자(a) 다음의 인덱스 I(n=5)=1 및 (b)가 모드 2로서 출력된다.
그후 S8에서는 ωK=5b(abc)가 전체 사전의 등록위치 n=7에 등록된다. 동시에 개별 사전(a)에 대해서는 m(PK)가 n=7 및 인덱스 I=2에 해당하는 1씩 증가되는데 여기서 n=7이 등록된다. 즉 그것은 개별 사전(a)에 등록된 제2스트링을 나타낸다.
그 다음은 (n)이 1씩 증가되서 깊이 DP가 0으로 설정된다.
게다가, PK는 최종 문자 저장 메모리 K1에 저장된 (b)로 설정되고,ω는 K1의 코드 2로 설정되서, S4에서는 현재 독출된 다섯 번째 문자(c)를 다시 K로 만들어서 ωK=2c가 전체 사전에 등록되었는지를 판단한다.
2c가 전체 사전에 아직 등록되지 않아서 처리는 S6을 실행하며, DP=0이기 때문에 S12를 행한다. 문자(c)는 생 데이터로서 만들어지며, 부호어 0b는 모드 1에서 출력된다.
그리고 나서, S13에서 ωK=2c가 전체 사전의 n=8으로 등록된다. 현 PK=b, 1씩 m(b)를 시키는 n=8, I=1이기 때문에, 즉 (b)의 트리에서 두번째 스트링을 나타내는 n=8이 등록된다.
또한 n은 1씩 증가되고, PK는 현재 독출된 (c)로 되고 나서, ω=3을 (c)의 초기 조건에서의 값에 따라 설정한 다음, 그 다음 문자를 독출한다.
비록 같은 방법으로 차후의 처리를 한다 할지라도 입력 문자열"ababcbabaa…"의 출력 코드로서는 "0a0b0a10c0b113…"이 된다.
그 다음 전술한 코드로부터 문자열로 복호화하는 것이 서술된다. 복호화용 장치의 구조는 제 37 도와 같다.
제 37 도의 장치에서, 471은 입력 코드 저장 메모리이며, 472는 개별 사전의 인덱스에 의해 부호어로서 출력되는 입력 코드로부터 전체 사전의 스트링의 코드로 복원된 복원 코드를 저장하기 위한 메모리(1Nω)이다. 473은 복원된 이전 스트링을 저장하기 위한 메모리(OLDω)이다. 474는 복원된 이전 스트링의 최종 문자를 기억하는 메모리(PK)이고, 475는 이전 스트링의 바로 앞에 있는 이전 스트링의 최종 문자를 저장하기 위한 최종 문자 저장 메모리(PK1)이고, 476은 복원된 스트링의 최초 문자를 저장하는 첫 번째 문자 저장 메모리(K1)이고, 477은 입력 코드의 복원된 스트링을 통해 때때로 복원되는 전체 사전 D(n)이고, 478은 복원된 스트링에 의해 복원된 개별 사전 q 즉 PK의 인덱스이다. 479-0 내지 479-255는 255개의 개별 사전들에 대한 인덱스 수 카운터이며, 480은 입력 코드에 따른 개별 코드를 참고하기 위한 사전 참조수단이다.
481은 전체 사전을 통해 스트링을 복호화하기 위한 스트링 부호화 수단이며, 482는 복원된 스트링으로 전체사전 및 대응 개별 사전들에서 스트링을 복원하기 위한 사전 복원 수단이다. 483은 프로그램에 따라 복호화 처리를 진행하는 CPU이다.
부호화의 처리과정은 제 38(a), (b) 및 (c)도에 도시되어 있다.
제 38(a)도에 도시한 바와 같이, 입력 코드가 초기화를 통해 정의되었는지를 판단한다.
만약 입력 코드가 정의된다면 전체 사전에서 스트링을 지시하는 코드로 그것을 변환하도록 개별 사전에 참고를 한다.
제 38(b) 도의 흐름도에서 모드 1에서의 코드를 복호화한다.
제 38(c) 도의 흐름도에서는 전체 사전에 등록된 코드에 의거하여 스트링을 복호화한다.
입력 코드로서 입력된 상술한 코드 "0a0b0a10c"의 경우에서의 일예를 아래에서 서술하기로 한다.
우선 초기화를 실시한다.
초기 조건으로는 256개의 개별 사전이 제공되는 경우를 보였는데 0 내지 255의 초기 조건이 주어진다. 초기 조건하에, PK=0이면 ω의 초기치는 256에서 설정되고, PK1=0이면 전체 사전의 선두 어드레스는 n=256이고, OLDω=0이면 개별 사전의 m(0) 내지 m(255)는 0에서 설정된다.
명세를 간단히 하기 위해 오직 세문자 예를들어 a,b,c의 경우에 대해 고려가 주어진다. a,b,c에 대해 코드 1,2,3을 초기 조건으로 주어진다. 또한 ω의 초기치는 0으로 설정한다.
(첫번째)S2에서, 초기 입력 코드는 0a로 설정한다.
코드가 S4의 판단시 정의되지 않아서 S6의 처리를 행한다.
S6에서의 판단으로 이전 스트링의 사전의 트리의 루트에 직접 연결된 모드 1을 나타내는 코드인지 아니면, LZW부호화 처리를 통하여 예외적으로 작성된 코드의 정의되지 않은 코드 입력인지를 판별한다.
현재 입력 코드가 모드 1이기 때문에 제 38(b) 도에서 S7의 처리를 행한다.
S7에서는 생 데이터 K=a로서 입력 코드 0a의 수신에 의거하여 문자 a를 출력한다.
여기서는 이전 스트링이 없으므로 S12의 처리가 진행되고, 복원된 스트링(a) 및 PK=0으로 0a가 전체사전(D)의 n=4에 등록되서 전체 사전을 복원시킨다. 게다가, 증가 m(0)에 의하여 PK=0, m(0)=1 및 n=4로 개별 사전 0이 복원된다.
게다가 S13에서는 n이 증가된다. PK는 현재 복원된 (a)와 설정되어서 PK=0이 OLDω로 천이된다.
(두번째) 두 번째 입력 코드 0b가 독출된다.
심지어 이 경우에는 코드가 모드 1이고, 처리 과정은 S4 내지 S6을 통해 S7까지 진행시킨다.
제 38(b) 도의 흐름도에서는 (첫번째)단계에서 0a의 처리와 비숫한 처리를 통하여 생 데이터(b)를 출력한다. (ab)는 전체 사전의 등록위치 n=5에 등록된다. 게다가 n=5 및 인덱스=1이 이전 스트링(a)의 최후 문자에 대응하는 개별 사전에 등록되므로 개별 사전이 복원된다.
(세번째) 세 번째 입력 코드 0a를 입력한다. 코드 0a는 마찬가지로 모드 1이고, 전술한 처리가 반복된다.
따라서 (a)는 복원된 코드로 출력되고, (ba)는 전체 사전에 써넣어진다. n=6 및 인덱스=1이 개별 사전 b에 써넣어진다.
그리고 나서, m(b)=1, n=7, PK=a, OLDω=b는 각각 설정되고 나서 다음 코드를 독출한다.
(네번째) 네 번째 코드는 1이다.
코드 1이 정의되었으므로 처리는 제 38(a) 도의 S5를 행한다.
이전 스트링이 (a)이고 입력 코드는 1이기 때문에 복원된 개별 사전을 참조해서 전체 사전의 해당 등록위치를 검사한다.
그 결과, 입력 코드는 n=5, ωK=1b로 변환되어 INω에 쓰여진다. 그리고 나서 제 38(c) 도의 S15를 행한다.
제 38(c) 도는 LZW코드로 부호화 처리를 하는 흐름도이다.
S16 및 S17은 종래 복호화 처리와 같다.
즉 S16에서 코드 1b는 코드(b) 및 (a)의 순서로 스택에 저장된다. S17에서는 (a)를 남겨서 상위(b)를 출력한다
이전 스트링이 이미 사전에 남겨졌기 때문에, S21로 가서, 두 개의 이전 스트링에 대해 최종 문자 저장 메모리에 PK=a를 써넣고, 복원된 스트링(ab)의 최후 문자(b)를 PK에 써넣어서 복원된 스트링의 어두 문자(a)를 K1으로 써넣는다.
동시에, 복원된 코드 1b(INω에서)는 OLDω에 쓰여지고 그 다음 코드를 리이드한다.
(다섯번째) 다섯 번째 코드 0c를 독출한다.
이것은 모드 1의 코드이기 때문에, 제 38(b) 도의 S7로 가서 (c)를 S8에서 출력한다.
이 경우 이전 스트링이 S10에서 OLDω의 1b 및 현재 입력(c)와 함께 아직 등록되지 않았으므로 전체 사전의 위치 n=7에서 스트링(abc)를 등록한다. 동시에 m(a)는 1씩 증가되고, 인덱스=2를 개별 사전(a)에 써넣는다.
S11에서 n이 1씩 증가되고, S12에서 현 스트링 즉, 최후 문자(b)와 (c)를 독출할 때의 스트링(bc)이 등록 처리된다. 이때 개별 사전 b에 대해 등록 처리를 수행한다.
다음에 비슷한 처리에 의해 모든 입력 코드를 독출하여 부호화한다.
제 38(b) 도의 흐름도에서 S10 및 S11은 종래 기술의 LZW 부호화는 예외로 하는 처리에 대한 서술한 처리와 비슷한 처리를 나타낸다.
비록 상술한 실시예에서 각 개별 사전의 트리의 루트에 연결된 각각의 개별 문자에 대해서는 생 데이터가 출력될지라도, 본 발명은 이 특수한 처리에만 제한하지 않으며 부호화 및 복호화측에서 각 개별 문자의 트리의 루트에 연결되도록 하기 위해 개별 사전의 가능한 조합을 작성하고 작성된 코드에 따라 상술한 개별 문자를 위해 출력하는 것도 가능하다.
반면에 출력되야할 부호어가 "문제에서의 스트링의 개별사전 ω 및 다음 단일 문자 K"에 의해 항상 서술되는 접근을 취하여 이 "다음 단일 문자"는 다음 단일 문자에 대해 부호화를 수행하기 위해서 이전 스트링의 최후 문자로서 사용되어서 부호화 및 복호화의 처리를 간단화할 수 있다.
제 28 도의 시스템에서의 트리의 구조 및 스트링의 보호화방법이 제 39 도와 참고하여 서술된다.
제 39 도에 도시한 바와 같이, 현재 스트링에 대한 코드는 이전 최후 문자에 의존에 관련하여 주어진다.
이전 스트링의 매 최종 문자 마다에 대해 어두 문자나 그의 반전된 문자로 트리가 구성된다. 또한 각 트리에 대해 각 스트링에 번호가 주어진다.
예를들어, 이전 문자(a)에 대해 단일 문자(a)가 연결되면 I(a)는 해당 트리의 인덱스 1로 택해지며, 스트링(ab)가 연결되면 인덱스 7이 주어지고, 단일 문자(b)가 연결되면 인덱스 2가 주어진다. 또한, 이전 스트링이(b)인 경우에 이전 스트링(b)의 트리의 인덱스에 주어진 단일 문자(a)는 1이며 "ab"는 인덱스 4에 주어진다.
알 수 있는 바와 같이 각 스트링에 대해 루트와 같이 이전 스트링을 갖는 트리에 대한 인덱스가 주어진다.
이와 함께 모든 문자가 일정한 가능성으로 나타난다고 가정하면 인덱스의 길이 즉 각 사전의 트리에 있는 각 스트링에 대한 등록번호를 1/256로 감소시킬 수 있다.
정상적으로 각 개별 트리의 크기는 모든 트리의 전체 크기의 1/10이다. 그러므로, 스트링들을 동일화하기 위한 코드를 압축비를 증가시키도록 짧게 할 수 있다.
본 발명에 따른 데이터 압축 및 복원장치의 요약된 도면으로 제 40 도가 제공되는데, 제 40 도의 장치에는 하나씩 차례로 공급된 문자열을 출력하고 부호화되도록 현재 스트링을 유지시키기 위한 스트링 유지부(404), 이전 스트링의 각각의 최종 문자에 대해 이전 스트링의 최종 문자에 의한 스트링을 저장하기 위한 사전(402), 현재 스트링으로 이전 스트링의 최종 문자와 관련하여 사전에 등록된 스트링중에 현 스트링에 대하여 최장 일치를 독출하기 위한 사전 참조부(405), 독출된 스트링의 최장 일치 스트링을 부호화하기 위한 부호화부(408), 이전 스트링의 최종 문자에 대해 결정된 인덱스로 사전에 최강 일치 스트링 및 다음 문자로 구성된 새로 출현한 스트링을 등록하기 위한 사전 등록부(409), 하나씩 차례로 공급된 코드를 독출하기 위한 코드 독출부(423), 입력 코드에 의해 복원된 사전(422), 복원된 이전 스트링의 최종 문자 및 입력 코드를 나타내는 인덱스(424), 사전 참조부(425), 이전 스트링의 최종 문자와 관련된 사전의 등록된 스트링 및 인덱스와의 스트링을 복호화하는 복호화부(426), 복호화된 스트링의 최종 문자를 저장하기 위한 최종 문자 저장부(428) 및 이전의 최종문자에 따라 다음에 복호화되여야 할 스트링의 최초 문자 및 복원된 스트링으로 구성된 스트링을 등록하기 위한 사전 복원부(429)가 제공된다.

Claims (19)

  1. 수신된 문자열에 대해 사전에 등록된 부호화된 부분열로부터 최장길이 일치를 갖는 부분열의 참조번호를 지정하고, 부호어로서 얻어진 참조번호에 한 문자를 더하여 얻어진 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 부호화를 행하고, 부분열의 참조번호에 의해 나타낸 부호어를 사용하여 사전에 등록된 부분열을 탐색하고, 원래의 부분열을 복원하고, 이전에 처리된 부호어에 현재 복원된 부분열의 선두문자를 더하여 얻어진 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로서 복호화를 행하는 증분 분해법의 데이터 압축 및 복원방법에 있어서, 샘플 데이터에 대하여 부호화를 사용하여 사전에 등록된 부분열중에서 고출현 빈도를 갖는 부분열을, 이미 부호화한 부분열인 것으로 판단한 것에 근거하여, 사전에 초기치로서 등록함으로써 사전의 초기화를 행하는 것을 특징으로 하는 데이터 압축 및 복원방법.
  2. 제 1 항에 있어서, 샘플 데이터를 부호화하여 얻어진 사전의 초기치는 사전에 등록되어 그 다음에 부호화 및 복호화가 행해지는 데이터 압축 및 복원방법.
  3. 제 1 항에 있어서, 샘플 데이터를 부호화하여 얻어진 사전의 초기치가 재쓰기의 대체가 금지되는 사전의 어두부에 등록되는 데이터 압축 및 복원방법.
  4. 샘플 데이터를 공급하기 위한 샘플 데이터 공급부, 공급된 샘플 데이터를 부호화하기 위한 부호화부, 문자 부분열의 출현 빈도에 따라 부호화된 데이터를 기억시키기 위한 기억부 및 소정의 임계치보다 큰 출현 빈도를 갖는 기억된 데이터를 선택하기 위한 선택부로 이루어지는 사전 초기화 수단, 사전 초기화 수단의 출력에 응답하여 초기치 등록부와 데이터 등록부 사이에 분리된 데이터를 등록하기 위한 사전 기억수단 및, 사전 기억수단과 결합되어 있으며 데이터를 부호화 및 복호화하기 위한 부호화 수단 및 복호화 수단으로 구성되고, 이것에 의하여, 샘플 데이터에 대하여 부호화를 사용하여 사전에 등록된 부분열중에서 고출현 빈도를 갖는 부분열을, 이미 부호화한 부분열인 것으로 판단한 것에 근거하여 사전의 초기치로서 등록함으로써, 사전의 초기화를 행하는 것을 특징으로 하는 압축 및 복원장치.
  5. 수신된 문자열에 대하여 사전에 등록된 부호화된 부분열로부터 최장길이 일치를 갖는 부분열의 참조번호를 지정하고, 부호어로서 얻어진 참조번호에 한 문자를 더하여 얻어지는 부분 열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 부호화를 행하며, 부분열의 참조번호에 의해 나타내어진 부호어를 사용하여 사전에 등록된 부분열을 탐색하고, 이전에 처리된 부호어에 현재 복원된 부분열의 선두문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 복호화를 행하는 증분 분해법의 데이터 압축 및 복원방법에 있어서, 각각 다른 선두문자의 군으로 이루어진 다수의 참조 사전 단위에 의해 참조사전을 구성하는 단계; 참조사전 단위를 나타내는 표시와 참조사전에 등록된 부분열에서 최장길이 일치를 갖는 부분열의 등록위치를 나타내는 표시에 의해 부호어를 구성함으로써 수신된 문자열의 순차가 다른 부분열을 부호화하는 단계; 부분열의 선두문자와 이전 부분열의 최후 문자 사이의 천이 확률을 문자군 사이에서 구하여, 참조사전 사이의 천이 확률을 계산하는 단계; 및 이전 부분열에 대한 부분열의 천이 확률이 소정의 값 이상인 경우에, 부호어를 가변길이 부호어로서, 천이 확률이 작은 부분열에 할당된 부호어보다 짧은 길이를 갖는 표시에 의해 나타내는 단계를 포함하는 것을 특징으로 하는 데이터 압축 및 복원방법.
  6. 제 5 항에 있어서, 출현 가능한 문자를 다수의 문자군으로 분리하고, 각 문자군에 대해 참조사전 단위를 구성하는 단계를 더 포함하는 데이터 압축 및 복원방법.
  7. 제 5 항에 있어서, 소정의 빈도보다 큰 사용빈도를 갖는 참조사전 단위를 나타내는 부호를, 소정의 빈도보다 작은 사용빈도를 갖는 참조사전 단위를 나타내는 부호보다 짧은 길이를 갖는 표시에 의해 나타내는 단계를 더 포함하는 데이터 압축 및 복원방법.
  8. 수신된 문자열에 대하여 사전에 등록된 부호화된 부분열로부터 최장 길이 일치를 갖는 부분열의 참조번호를 지정하고, 부호어로서 얻어진 참조번호에 한 문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 부호화를 행하며, 부분열의 참조번호에 의해 나타낸 부호어를 사용하여 사전에 등록된 부분열을 탐색하고, 원래의 부분열을 복원해서 이전에 처리된 부호어에 현재 복원된 부분열의 선두문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 복호화를 행하는 증분 분해법의 데이터 압축 및 복원방법에 있어서, 처리되야 할 전체 종류의 문자수보다 작은 수의 사전들로 이루어진 사전군에 의해 참조사전을 구성하는 단계; 문자마다 전 종료의 문자들의 하나의 문자 또는 문자마다 다수의 문자들로 이루어지며 고출현 비도로 나타내는 문자열을 참조번호를 지정하여 초기에 등록하는 단계; 부호화된 문자열에 대한 의존관계를 나타내는 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 수신된 문자열을 부호화하는 단계; 및 지정된 사전에 수신된 문자열이 존재하지 않는다면, 부호화된 문자열의 참조번호에 다음의 문자열을 더하여 얻어지는 문자열에 새로운 참조번호를 지정하여 등록하는 단계를 포함하는 것을 특징으로 하는 데이터 압축 및 복원방법.
  9. 제 8 항에 있어서, 수신된 문자열의 부호화가 이전에 부호화된 문자열의 최후 문자 코드의 일부로부터 얻어진 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  10. 제 9 항에 있어서, 수신된 문자열의 부호화가 이전에 부호화된 문자열의 최후 문자 코드의 상위 비트에 의해 나타난 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  11. 제 9 항에 있어서, 수신된 문자열의 부호화가 이전에 부호화된 문자열의 최후문자코드에 의거하여 조사표를 참고로 하여 얻어진 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  12. 제 11 항에 있어서, 수신된 문자열의 부호화가 이전에 부호화된 최후 문자코드의 상위비트에 의해 작성된 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  13. 수신된 문자열에 대하여 사전에 등록된 부호화된 부분열로부터 최장길이 일치를 갖는 부분열의 참조 번호를 지정하고, 부호어로서 얻어진 참조번호에 한 문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 부호화를 행하며, 부분열의 참조번호에 의해 나타낸 부호어를 사용하여 사전에 등록된 부분열을 탐색하고, 원래의 부분열을 복원하고, 이전에 처리된 부호어 다음에 현지 복원된 부분열의 선두문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 복호화를 행하는 증분 분해법의 데이터 압축 및 복원방밥에 있어서, 처리되어야 할 전체 종류의 문자의 수보다 작은 수의 사전으로 구성된 사전군에 의해 사전을 구성하고, 각 사전에 대해 문자마다 전체 문자종류의 하나의 문자 또는 문자마다 전 종류의 문자를 포함하는 다수의 문자로 이루어지며 고출현 빈도로 나타내는 문자열을 참조번호를 지정하여 초기에 등록하는 단계; 부호화된 문자열에 대한 의존관계를 나타내는 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 수신된 코드를 복호화하는 단계; 및 복원된 문자의 참조번호 다음에 현재 복원된 문자의 한 문자를 더하여 얻어진 문자열에 새로운 참조번호를 지정하여 등록하는 단계를 포함하는 것을 특징으로 하는 데이터 압축 및 복원방법.
  14. 제 13 항에 있어서, 수신된 부호의 복원이 바로 이전에 복원된 문자열의 최후 문자 코드의 일부로부터 얻어진 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  15. 제 14 항에 있어서, 수신된 부호의 복원이 바로 이전에 복원된 문자열의 최후문자 코드의 상위 비트에 의해 나타낸 탐색 정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  16. 제 13 항에 있어서, 수신된 부호의 복호화가 이전에 복원된 문자열의 최후 문자 코드에 의거하여 조사표를 참조하여 얻어진 탐색 정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  17. 제 16 항에 있어서, 수신된 부호의 복호화는 바로 이전에 복원된 문자열의 최후문자 코드의 상위 비트에 의거하여 조사료를 참고로 하여 얻어진 탐색정보에 따라 사전군으로부터 특정의 사전을 지정함으로써 실행되는 데이터 압축 및 복원방법.
  18. 수신된 문자열에 대하여 사전에 등록된 부호화된 부분열로부터 최장길이 일치를 갖는 부분열의 참조번호를 지정하고, 부호어로서 얻어진 참조번호에 한 문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여 사전에 등록함으로써 부호화를 행하며, 부분열의 참조번호를 나타낸 부호어를 사용하여 사전에 등록된 부분열을 탐색하고, 원래의 부분열을 복원하고, 이전에 처리된 부호어 다음에 현재 복원된 부분열의 선두 문자를 더하여 얻어지는 부분열에 새로운 참조번호를 지정하여, 이를 사전에 등록함으로써 복호화를 행하는 증분 분해법의 데이터 압축 및 복원방법에 있어서, 연속하는 2개의 부분열의 최초의 부분열의 최후문자의 각각에 대하여 또는 최후 문자에 의한 군의 각각에 대하여 다음의 부분열을 등록하여 등록사전을 구성하는 단계; 최후 문자의 각각 또는 최후문자에 의한 군의 각각에 대하여 등록되는 부분열의 등록번호를 지정하는 단계; 지정된 등록번호에 의거하여 부호화될 부분열의 부호어를 구성하는 단계를 포함하는 것을 특징으로 하는 데이터 압축 및 복원방법.
  19. 제 18 항에 있어서, 사전의 복원이 구성된 부호어에 의해 작성된 데이터로부터 복호화된 부분열 이전의 최후 문자의 각각에 대하여 실행되고, 문자 부분열에 수신된 코드의 복호화는 복원된 부분열의 사전을 사용하여 복호화된 부분열 이전의 부분열의 최후 문자와 현재 수신된 부호로부터 실행되는 데이터 압축 및 복원방법.
KR1019910701461A 1990-02-26 1991-02-26 데이타 압축과 복원방법 및 그 장치 KR950013228B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
JP2045163A JP3038223B2 (ja) 1990-02-26 1990-02-26 データ圧縮方式
JP90-45163 1990-02-26
JP2062325A JP2590287B2 (ja) 1990-03-13 1990-03-13 データ圧縮方法およびデータ圧縮装置
JP90-62325 1990-03-13
JP90-70379 1990-03-20
JP2070379A JP2774350B2 (ja) 1990-03-20 1990-03-20 データ圧縮方法および圧縮データのデータ復元方法
JP2275835A JP2825960B2 (ja) 1990-10-15 1990-10-15 データ圧縮方法及び復元方法
JP90-275835 1990-10-15
PCT/JP1991/000252 WO1991013395A1 (en) 1990-02-26 1991-02-26 Data compression and restoration method and device therefor

Publications (2)

Publication Number Publication Date
KR920701899A KR920701899A (ko) 1992-08-12
KR950013228B1 true KR950013228B1 (ko) 1995-10-26

Family

ID=27461652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910701461A KR950013228B1 (ko) 1990-02-26 1991-02-26 데이타 압축과 복원방법 및 그 장치

Country Status (4)

Country Link
EP (4) EP0871295B1 (ko)
KR (1) KR950013228B1 (ko)
DE (3) DE69132187D1 (ko)
WO (1) WO1991013395A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463389A (en) * 1993-09-24 1995-10-31 Motorola, Inc. Data compression method and device utilizing children arrays
GB2456996B (en) 2006-12-26 2011-09-21 Fujitsu Ltd Data compression apparatus and data decompression apparatus
CN112632343B (zh) * 2020-12-30 2023-12-26 深圳大普微电子科技有限公司 一种字符串匹配方法、装置、设备及可读存储介质
CN116521093B (zh) * 2023-07-03 2023-09-15 漳州科恒信息科技有限公司 一种智慧社区人脸数据存储方法及系统
CN117278054B (zh) * 2023-11-21 2024-02-02 湖北华中电力科技开发有限责任公司 一种智慧电网监控数据存储方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS63209228A (ja) * 1987-02-25 1988-08-30 Oki Electric Ind Co Ltd デ−タ圧縮方法
US4881075A (en) * 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data

Also Published As

Publication number Publication date
EP0878915A3 (en) 1998-12-30
DE69133377D1 (de) 2004-04-29
KR920701899A (ko) 1992-08-12
WO1991013395A1 (en) 1991-09-05
DE69132187D1 (de) 2000-06-15
EP0472730A1 (en) 1992-03-04
DE69133377T2 (de) 2004-08-05
EP0871295A3 (en) 1998-12-23
EP0878915A2 (en) 1998-11-18
EP0871294B1 (en) 2005-08-10
EP0871294A3 (en) 1998-12-30
DE69133481T2 (de) 2006-04-06
EP0472730B1 (en) 2000-05-10
EP0871295B1 (en) 2004-03-24
EP0871294A2 (en) 1998-10-14
EP0871295A2 (en) 1998-10-14
DE69133481D1 (de) 2005-09-15
EP0472730A4 (en) 1992-12-16

Similar Documents

Publication Publication Date Title
US5254990A (en) Method and apparatus for compression and decompression of data
JP3273119B2 (ja) データ圧縮・伸長装置
US5870036A (en) Adaptive multiple dictionary data compression
US5798718A (en) Sliding window data compression method and apparatus
JPH0779262B2 (ja) 圧縮データの符号化方法
US6225922B1 (en) System and method for compressing data using adaptive field encoding
JPH03204233A (ja) データ圧縮方法
EP0127815B1 (en) Data compression method
US5502439A (en) Method for compression of binary data
JPH05241777A (ja) データ圧縮方式
KR950013228B1 (ko) 데이타 압축과 복원방법 및 그 장치
JPH0779265B2 (ja) 圧縮データの復号方法
Ghuge Map and Trie based Compression Algorithm for Data Transmission
JP3105598B2 (ja) ユニバーサル符号を用いたデータ圧縮方式
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
JPH05152971A (ja) データ圧縮・復元方法
Plantinga An asymmetric, semi-adaptive text compression algorithm
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JP3143029B2 (ja) データ圧縮方法及びその装置並びにデータ伸長方法及びその装置
Kotze et al. An evaluation of the Lempel-Ziv-Welch data compression algorithm
JPH06326616A (ja) ハフマン復号化テーブルの構成方法
JP3143030B2 (ja) データ圧縮方法及びその装置並びにデータ伸長方法及びその装置
JP2825960B2 (ja) データ圧縮方法及び復元方法
JP3051501B2 (ja) データ圧縮方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J2X1 Appeal (before the patent court)

Free format text: APPEAL AGAINST DECISION TO DECLINE REFUSAL

G160 Decision to publish patent application
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20061011

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee