KR20000068018A - 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터 - Google Patents

스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터 Download PDF

Info

Publication number
KR20000068018A
KR20000068018A KR1019997000596A KR19997000596A KR20000068018A KR 20000068018 A KR20000068018 A KR 20000068018A KR 1019997000596 A KR1019997000596 A KR 1019997000596A KR 19997000596 A KR19997000596 A KR 19997000596A KR 20000068018 A KR20000068018 A KR 20000068018A
Authority
KR
South Korea
Prior art keywords
string
character
data
signal
code
Prior art date
Application number
KR1019997000596A
Other languages
English (en)
Other versions
KR100332709B1 (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 KR20000068018A publication Critical patent/KR20000068018A/ko
Application granted granted Critical
Publication of KR100332709B1 publication Critical patent/KR100332709B1/ko

Links

Classifications

    • 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/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
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Landscapes

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

Abstract

컴프레서(10)(compressor)에 있어서, 전체에 대하여 부분 스트링 W 와 문자 C 가 사전(13)에서 매칭(matching)될 때, 마지막 출력 압축 코드 신호에 대응하는 스트링이 P 인데, 스트링 PW 에 대하여 확장 문자로써 C 가 있는 사전으로 새로운 스트링(new string)이 들어오는 것을 특징으로 하는 사전에 바탕을 두는 데이터 컴프레션과 디컴프레션 시스템(dictionary based data comptession and decompression system). 읽혀지고 매칭되는 각각의 입력 문자에 대하여, 갱신 스트링(113)은 컴프레션 사전(compression dictionary)으로 들어온다. 갱신(updating)은 즉각적이고, 갱신(updating)에는 현재 스트링의 문자-대(對)-문자 매칭(character-by-character matching)이 삽입된다. 갱신 과정(update process)은 가장 긴 매치를 사전에서 찾을 때까지 계속된다. 가장 길게 매칭된 스트링(longest matched string)의 코드가 스트링 매칭 사이클(string matching cycle)에서 출력(106)이다. 단일 문자나 멀티-문자 스트링 "A" 가 사전에 존재한다면, 스트링 길이에 관계없이 스트링 AAA...A 는 두 개의 압축 코드 신호로써 인코딩(encoding)된다. 상기 인코딩(encoding)의 결과는 디컴프레서(decompressor)에서 인식하지 못 하는 코드 신호(unrecognized code signal)이다. 인식하지 못 하는 코드 신호에 응답하여, 이전에 수신된 코드 신호, 인식하지 못 하는 코드 신호, 디컴프레서의 확장 코드, 그리고 이전에 수신된 스트링에서 문자의 넘버 등에 대응하는 복구 스트링(161)(recovered string)에 따라서 디컴프레서(40)(decompressor)는 디컴프레서 사전(43)으로 스트링을 갱신한다.

Description

스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터 컴프레션과 디컴프레션 시스템{DATA COMPRESSION AND DECOMPRESSION SYSTEM WITH IMMEDIATE DICTIONARY UPDATING INTERLEAVED WITH STRING SEARCH}
넓게 이용되는 것으로써, LZ2 로 공지된 Lemple-Ziv (LZ) 알고리즘은 다수의 사전(dictionary)을 바탕으로 하는 데이터 컴프레션과 디컴프레션에 대한 이론적인 기초를 제공한다. 정보 이론에 대하여 IEEE Transaction 에서 출판된, Jacob Ziv 와 Abraham Lempel 에 의한, 1978 년 9 월, 볼륨 IT-24, No. 5, "다양한 속도의 코딩을 통하여 개개의 시퀀스에 대한 압축(Compression Of Individual Sequence Via Variable-Rate Coding)" 이라는 명칭이 붙은 논문의 530 내지 536 페이지에 LZ2 는 기술(記述)되어 있다. V.42 bis 모뎀 컴프레션과 디컴프레션에 대하여 표준으로써 적용되는, LZW 로써 공지된 어디에서나 이용되는 데이터 컴프레션과 디컴프레션 시스템은, 1985 년 12 월 10 일에 Welch 에 의한 미국 특허 4,558,302 에 기술(記述)되어 있다. GIF 와 TIFF 이미지 통신 표준으로 이용되는 컴프레션과 디컴프레션 방법으로써, LZW 는 또한 적용될 수 있다. LZ2 의 변이(變異)는 1989 년 10 월 24 일에 Storer 에 의한 미국 특허 4,876,541 에 기술(記述)되어 있다. LZ 사전을 바탕으로 하는 컴프레션과 디컴프레션 시스템의 또 하나의 예(例)는, 1984 년 8 월 7 일에 Eastman 과 그 외 사람에 의한 미국 특허 4,464,650 ; 1989 년 3 월 21 에 밀러와 그 외 사람에 의한 미국 특허 4,814,746 ; 1992 년 10 월 6 일에 Clark 에 의한 미국 특허 5,513,591 ; 1993 년 12 월 8 일에 출판된 Lempel 과 그 외 사람에 의한 유럽 특허 출원 번호 0 573 208 A1 ; 등에 기술(記述)되어 있다.
상기에서 인용된 시스템에 있어서, 입력 데이터 스트림과 사전에 저장되어 있는 문자 스트링 사이에서 매치(match)에 있어서 효과를 주기 위하여, 입력 데이터 문자 스트림은 사전에 저장되어 있는 문자 스트링과 문자-대(對)-문자로 비교된다. 일반적으로, 문자-대(對)-문자의 비교는 가장 긴 매치가 결정될 때까지 계속된다. 매치(match)에 바탕을 두어서, 압축 코드는 출력이고, 하나 이상의 추가의 문자 스트링에서 사전은 갱신된다. 스토러 부모(Storer parent)(미국 특허 4,876, 541)에 있어서, 현재(現在)의 가장 길게 매치(match)된 스트링의 0(zero)이 아닌 모든 프리픽스를 이전(以前)의 가장 길게 매치(match)된 스트링과 관련시키는 것에 의하여, 사전을 갱신한다. 그러므로, 현재 가장 긴 매치(current longest match)에서 N 문자가 있다면, 현재 가장 긴 매치를 결정할 때까지 N 스트링을 사전에 추가한다. 스토러 부모(Storer parent)(미국 특허 4,876,541)에 있어서, 이것은AP(all prefixes) 갱신 기술로써 명명된다.
데이터 컴프레션과 디컴프레션 방법의 또 하나의 형(型)은 런-길이 인코딩(Run-Length Encoding, RLE)으로써 명명된다. 문자나 문자 그룹을 표시하는 압축 코드와 런(run)의 길이를 공급하는 것에 의하여, RLE 알고리즘은 반복하는 문자나 문자 그룹 런을 압축한다. 그러므로, 같은 문자나 문자 그룹의 긴 길이의 런(long run)을 인코딩(encoding)하는데 RLE 는 효과가 있다. 예를 들면, 데이터 파일의 처음에 포함될 수 있는 긴 시퀀스의 블랭크를 압축하는데 RLE 는 효과가 있다. 또한, 땅-하늘 이미지의 하늘 부분에서처럼 같은 값을 가지는 앞뒤 관련이 있는 픽셀의 긴 길이의 런(long run)을 이미지가 포함하는 이미지 압축에서, RLE 는 효과가 있다.
상기에서 논의되었던 LZ 사전에 바탕을 두는 컴프레션과 디컴프레션 알고리즘은, 반복하는 문자나 문자 그룹의 긴 길이의 런(long run)을 압축하는데 특별하게 효과가 있지는 않다. AP 갱신 기술(all prefixes update technique)을 이용하더라도, 압축 코드 출력의 큰 수(數)는 긴 길이의 런(long length run)을 압축하는데 필요하다.
런 길이 인코더에 데이터를 적용시키는 것에 의하여, 그리고 LZ 사전에 바탕을 두는 시스템에 런 길이 인코더에 의하여 암호화된 데이터를 적용시키는 것에 의하여, 사전에 바탕을 두는 시스템(dictionary based system)의 이러한 결핍을 종래에는 극복하여 왔다. 이러한 아키텍처에 있어서, 사전에 바탕을 두는 컴프레서의 앞쪽 엔드에서 런 길이 인코더(run length encoder)는 이용되고, 런 길이 디코더(run length decoder)는 사전에 바탕을 두는 컴프레서의 출력 엔드에서 이용된다. 상기 시스템은 증가되는 장치, 비용, 제어 오버헤드 시간과 처리 시간 등이라는 불리함에 처해있다.
본 발명은 사전(dictionary)을 바탕으로 하는 데이터 컴프레션과 데이터 디컴프레션 등에 관한 것인데, 특히 컴프레션 사전(compression dictionary)과 디컴프레션 사전(decompression dictionary)을 갱신하는 방법에 관한 것이다.
도 1 은, 본 발명의 실시에서 이용되는 데이터 컴프레션 서브-시스템(data compression subsystem)의 블록 다이어그램을 나타낸다 ;
도 2 는, 도 1 에 있는 컴프레서(compressor)의 압축 코드 출력을 복구하는 데이터 디컴프레션 서브-시스템(data decompression subsystem)의 블록 다이어그램을 나타낸다 ;
도 3a 는, 도 1 과 도 2 에 있는 사전(dictionary)의 검색-트리(search- tree)의 노드에 대하여 상징적으로 데이터 구조를 설명하는 다이어그램이다 ;
도 3b 는, 도 1 과 도 2 에 있는 사전(dictionary)의 검색-트리(search-tree)의 노드에 대하여 실질적인 데이터 구조를 설명하는 다이어그램이다 ;
도 4 는, 도 3a 의 데이터 구조를 따라서, 도 1 과 도 2 에 있는 사전(dictionary)의 검색-트리(search-tree)의 노드를 설명하는 노드 다이어그램(node diagram)을 나타낸다 ;
도 4a 는, 도 4 의 노드를 이용하는 데이터 저장을 설명하는 부분적인 검색-트리(search-tree)의 상징적인 모습을 나타낸다 ;
도 5 는, 도 3b 의 데이터 구조를 따라서, 도 1 과 도 2 에 있는 사전(dictionary)의 검색-트리(search-tree)의 노드를 설명하는 노드 다이어그램(node diagram)을 나타낸다 ;
도 5a 는, 도 5 의 노드를 이용하고 도 4a 와 같은 스트링을 저장하는 부분적인 검색-트리(search-tree)의 상징적인 모습을 나타낸다 ;
도 6 는, 본 발명에 따라서 데이터 압축을 실행하도록 도 1 의 컴프레션 서브-시스템에 의하여 실행되는 작동을 설명하는 제어 순서도(control flow chart)를 나타낸다. 도 6 의 순서도는, 모든 단일 문자 스트링에서 초기화되는 컴프레션 사전(compression dictionary)에 근거를 두어 나타낸다 ;
도 7 은, 도 6 에 따라서 생성되는 압축 코드를 디컴프레션(decompression)하는 도 2 의 디컴프레션 서브-시스템에 의하여 실행되는 작동을 설명하는 제어 순서도(control flow chart)를 나타낸다. 도 7 의 순서도는, 모든 단일 문자 스트링에서 초기화되는 디컴프레션 사전(decompression dictionary)에 근거를 두어 나타낸다 ;
도 8 은, 도 7 과 도 10 의 인식이 되지 아니 하는 코드 처리(unrecognized code processing)를 설명하는 제어 순서도이다 ;
도 9 은, 도 6 의 제어 순서도와 비슷한 제어 순서도를 나타내지만, 초기화 되지 아니 하는 컴프레션 사전(compression dictionary)에 근거를 두어 나타낸다 ;
도 10 은, 도 7 의 제어 순서도와 비슷한 제어 순서도를 나타내지만, 초기화 되지 아니 하는 디컴프레션 사전(decompression dictionary)에 근거를 두어 나타낸다. 도 10 의 디컴프레션 순서도는, 도 9 에 따라서 생성되는 압축 코드를 디컴프레션(decompression)한다 ;
도 11a 내지 도 11e 등은, 일반적인 입력 데이터 문자 스트림을 컴프레션(compression)할 때, 컴프레션 사전의 앞뒤 관련 상태를 설명하는 부분적인 검색-트리(search-tree)의 상징적인 모습을 나타낸다 ; 그리고
도 12a 내지 도 12g 등은, 입력 데이터 문자 스트림이 반복하는 문자 그룹일 때, 컴프레션 사전(compression dictionary)의 앞뒤 관련 상태를 설명하는 부분적인 검색-트리(search-tree)의 상징적인 모습을 나타낸다.
*참조 번호 설명
10 : 데이터 컴프레션 서브-시스템(data compression subsystem)
20 : 검색과 갱신 제어 섹션(search and update control section)
30 : 문자 레지스터(character register)
40 : 디컴프레션 서브-시스템(decompression subsystem)
50 : 복구와 갱신 제어 섹션(recover and update control section)
60 : 코드 레지스터(code register)
본 발명은 상기에서 기술(記述)된 결핍을 극복하는 사전을 바탕으로 하는 데이터 컴프레션과 디컴프레션 시스템(dictionary based compression and decompression system)에서 실시(實施)된다. 스트링 A 가 사전에서 존재한다면, 그 길이에 관계없이, 스트링 AAA...A 는 두 개의 압축 코드 심벌로써 인코딩(encoding)된다. 그러므로, 블랭크(blank)나 0(zero) 등과 같은 반복되는 문자의 스트링, 또는 같은 값이 있는 앞뒤 관련 이미지 픽셀 등과 같은 문자 그룹 등은, 제 1 인카운터(first encounter)에서 매우 효과가 있게 인코딩(encoding)된다.
본 발명의 압축 알고리즘(compression algorithm)에 있어서, 각각의 입력 문자를 읽고 매치(match)시킬 때, 스트링은 컴프레션 사전으로 들어간다. 종래에는, 가장 긴 매치가 이루어지고 출력 압축 코드 심벌이 결정될 때, 갱신 스트링이나 스트링들은 사전으로 들어간다. 전체에 대하여 부분 스트링 W 와 문자 C 등을 사전에서 찾을 때마다, 마지막으로 전송되는 출력 압축 코드 심벌에서 옮겨지는 스트링이 P 일 때, 스트링 PW 에서 확장 문자로써 C 를 갖춘 사전으로 새로운 스트링은 들어간다. 그러므로, 스트링 W 가 매치될 때, 스트링 P 는 W 의 문자에 의하여 확장되면서, W 의 문자는 스트링 검색 과정에서 매치(match)된다. 이것을 "온-더-플라이(on-the-fly)" 사전 갱신으로 명명하는데, 사전 갱신은 즉각적이고, 사전 갱신은 스트링 검색 과정에 문자-대(對)-문자로써 삽입된다. 그러므로, 저장된 스트링 W 가 있는 입력의 문자-대(對)-문자 매치는 효과가 있기 때문에, 각각의 매칭 문자(matching character)는 증가하는 스트링 PW 의 엔드에 붙어 있다. 입력 데이터 문자가 사전에서 가장 긴 스트링 W 와 매칭(matching)할 때, 갱신 과정은 끝난다.
매칭(matching)된 스트링 W 가 이전(以前)에 매칭된 스트링 P 와 일치할 때, 상기에서 기술(記述)된 런 길이 인코딩(run length encoding)의 이점은 실현된다. 이러한 것이 일어날 때, 컴프레서(compressor)는 디컴프레서(decompressor)에서 인식하지 못 하는 압축 코드 심벌을 전송한다. 컴프레션 사전(compression dictionary), 현재 할당된 디컴프레서 코드에 바탕을 두는 과정, 인식하지 못 하는 코드, 이전에 디코딩된 스트링, 그리고 이전에 디코딩된 스트링에서 문자의 수(數) 등에서 조화를 유지하도록, 디컴프레서(decompressor)는 인식하지 못 하는 코드 처리를 이용한다.
도 1 에 관하여, 입력(11)에서 적용되는 입력 데이터 문자 신호(input data character signal)의 스트림을, 출력(12)에서 상기 입력에서의 문자 신호에 대응하는 압축 코드 신호(compressed code signal)의 스트림으로 압축하는 데이터 컴프레션 서브-시스템(10)(data compression subsystem)을 설명하고 있다. 문자 스트링(character string)을 저장하는 사전(13)(dictionary)은, 상기에서 인용된 참조에서 기술(記述)된 방식으로 RAM 또는 CAM 등과 같은 메모리에 의하여 일반적으로 구현된다. 당해 기술 종사 업자가 아주 잘 이해할 수 있는 방식으로, 검색-트리 데이터 베이스 구조(search-tree database structure)에 문자 스트링(character string)은 저장된다. 검색-트리(search-tree)는 사전(13)의 위치에서 저장되는 서로 연결된 노드(node)로 이루어진다. 사전(13)의 메모리 위치는 잘 공지된 방식으로 주소(14)(address)에 의하여 접근된다.
노드 넘버(16)(node number), 문자 필드(17)(character field), 및 관련이 있는 노드 포인터(node pointer)에 대한 필드(18)(field) 등을 포함하는 노드(15)(node)에 의하여, 검색-트리 노드(search-tree node)의 데이터 구조는 설명된다. 노드 넘버(16)는 트리 노드와 메모리 주소(14)를 식별하는데, 노드 넘버(16)에서 노드(15)를 저장하고, 노드(15)는 편리성을 위하여 노드 넘버로써 이용된다. 문자 필드(17)는 노드의 데이터 문자 값을 포함하는데 이용된다. 당해 기술 종사 업자에게 잘 공지된 방식으로, 필드(18)는 부모 노드, 자식 노드, 및 시블링 노드 등과 같은 서로 관련이 있는 트리 노드(tree node)에 노드(15)를 연결하는 포인터(pointer)를 포함한다.
컴프레션 서브-시스템(10)(compression subsystem)은 양(兩) 방향 데이터 버스(21, 22) 등을 통하여 사전(13)에 결합된 검색과 갱신 제어 섹션(20)(search and update control section)을 포함한다. 현재 문자 레지스터(23)(current character register), 현재 매치 레지스터(24)(current match register), 이전(以前) 매치 레지스터(25)(previous match register) 등으로써 지적되는 작업 레지스터(working register)를, 검색과 갱신 제어 섹션(20)은 포함한다. 사전(13)에 저장되어 있는 문자 스트링에 압축 코드 값을 할당하는 코드 생성기(26)(code generator)를, 검색과 갱신 제어 섹션(20)은 덧붙여서 포함한다. 할당된 코드(assigned code)는 메모리 주소(14)를 통하여 사전(13)의 위치에 접근한다. 그러므로, 잘 공지된 방식으로, 주소(14)(노드 넘버 16)는 사전(13)에 저장되는 스트링에 대하여 압축 코드로써 이용된다.
검색과 갱신 제어 섹션(20)은 기술(記述)된 방식으로 도 6 와 도 9 등의 작동 순서도에 따라서 컴프레션 서브-시스템(10)의 작동을 제어하는 제어(27)(control)를 포함한다.
컴프레션 서브-시스템(10)은 입력(11)에서 수신된 입력 데이터 문자 스트림을 버퍼(buffer)에 저장하는 문자 레지스터(30)(character register)를 포함한다. 기술(記述)된 작동을 따라서, 개개의 입력 데이터 문자는 문자 레지스터(30)에서 버스(31)를 통하여 현재 문자 레지스터(23)까지 적용된다. 검색과 갱신 제어 섹션(20)은 문자 레지스터(30)에서 제어 버스(32)를 통하여 획득 입력 데이터 문자(acquiring input data character)를 제어한다.
컴프레션 서브-시스템(10)의 작동을 간단하게 소개하면 다음과 같다. 차례대로, 입력 데이터 문자는 현재 문자 레지스터(23)에 삽입되고, 사전(13)에 저장되어 있는 스트링과 맞대어 검색되는데, 입력 데이터 문자와 사전(13)에 저장되어 있는 스트링 사이에서 가장 긴 매치(longest match)가 이루어질 때까지 검색된다. 현재 매치 레지스터(24)는 상기 과정에서 이용된다. 가장 길게 매칭(matching)되는 스트링의 노드 넘버(16)는 출력(12)에서 압축 코드로써 공급된다. 상기 검색 작동은 상기에서 인용된 참조에서 기술(記述)된 작동과 같다. 본 발명에 따라서, 검색될 예정인 저장되어 있는 사전 스트링의 문자를 입력 데이터 문자에 매칭(matching)시킬 때, 현재 입력 문자가 매칭(matching)되면서, 현재 입력 문자에 의하여 이전의 반복에서 매칭(matching)되었던 가장 긴 스트링을 확장하는 것에 의하여 사전(13)은 갱신된다. 이전(以前) 매치 레지스터(25)는 상기 과정에서 이용된다. 입력 문자를 계속해서 가져오고 매칭(matching)시키면서, 상기와 확장된 이전에 매칭(matching)된 스트링을 매칭(matching)시키는데 유용하다. 그러므로, 문자-대(對)-문자 스트링 검색에 관하여 삽입되는 방식으로, 갱신 스트링은 즉각적으로 사전(13)에 추가된다.
도 1 에 대한 계속적인 참조로써 도 2 에 관하여, 컴프레션 서브-시스템(10)의 출력에서 공급되는 압축 코드 신호에서 원(源) 입력 데이터 스트림의 문자를 복구하는 디컴프레션 서브-시스템(40)(decompression subsystem)을 설명한다. 따라서, 디컴프레션 서브-시스템(40)은 입력(41)에서 입력 압축 코드 신호를 수신하고, 출력(42)에서 상기 입력 압축 코드 신호에 대응하는 복구된 스트링 문자를 공급한다. 디컴프레션 서브-시스템(40)은 RAM 메모리에 의하여 구현되는 것을 선호하는 사전(43)을 포함한다. 컴프레션 서브-시스템(10)의 사전(13)에서 포함되어있는 것과 같은 검색-트리 데이터 베이스를 포함하도록, 사전(43)을 구성하고 갱신된다. 각각의 입력 압축 코드는 입력(41)에서 수신될 때, 사전(13)에서 저장된 같은 데이터 문자 스트링을 포함하도록 사전(43)은 갱신된다. 사전(43)에 저장되어 있는 검색-트리 데이터 베이스 구성은, 사전(43)의 위치에서 저장된 서로 연결된 노드로 이루어진다. 사전(43)의 메모리 위치는 잘 공지된 방식으로 주소(44)에 의하여 접근된다.
검색-트리 노드의 데이터 구조는 노드(45)에 의하여 설명되는데, 사전(13)의 노드(15)에 관하여 상기에서 기술(記述)된 것처럼, 노드 넘버(46)(node number), 문자 필드(47)(character field), 및 관련이 있는 노드 포인터(node pointer)에 대한 필드(48)(field) 등을 노드(45)는 포함한다. 사전(13)에 관하여 상기에서 기술(記述)된 것처럼, 노드 넘버(46)는 트리 노드와 메모리 주소(44)를 식별하는데, 노드 넘버(46)에서 노드(45)를 저장하고, 노드 넘버로써 이용된다. 문자 필드(47)는 노드의 데이터 문자 값을 포함하는데 이용된다. 상기에서 기술(記述)된 것처럼, 필드(48)는 부모 노드, 자식 노드, 및 시블링 노드 등과 같은 서로 관련이 있는 트리 노드(tree node)에 노드(45)를 연결하는 포인터(pointer)를 포함한다.
디컴프레션 서브-시스템(40)(decompression subsystem)은 양(兩) 방향 데이터 버스(51, 52) 등을 통하여 사전(43)에 결합된 복구와 갱신 제어 섹션(50)( recover and update control section)을 포함한다. 현재 수신 코드 레지스터(53)(current received code register), 이전(以前) 스트링 레지스터(54)(previous string register) 등으로 지적되는 작업 레지스터(working register)를, 복구와 갱신 제어 섹션(50)은 포함한다. 본 발명에 따라서, 복구와 갱신 제어 섹션(50)은 도 8 에서 상세하게 설명되는 인식하기 못 하는 코드 처리 섹션(55)(unrecognized code processing section)을 포함한다.
복구와 갱신 제어 섹션(50)은 사전(43)에 저장되어 있는 문자 스트링에 압축 코드 값을 할당하는 코드 생성기(56)(code generator)를, 복구와 갱신 제어 섹션(50)은 덧붙여서 포함한다. 코드 생성기(56)는 해싱(hashing)과 같이 차례대로 또는 무작위 추출과 비슷하게 코드 넘버를 할당할 수 있다. 시스템 호환성을 위하여, 컴프레션 서브-시스템(10)의 코드 생성기(26)에 의하여 이용되는 것과 같은 처리와 알고리즘을 이용하는 코드 넘버를 할당한다. 할당된 코드는 메모리 주소(44)를 통하여 사전(43)의 위치에 접근한다. 그러므로, 컴프레션 서브-시스템(10)에 관하여 상기에서 기술(記述)된 것처럼, 주소(44)(노드 넘버 46)는 사전(43)에 저장되는 스트링에 대하여 코드로써 이용된다.
복구와 갱신 제어 섹션(50)은 기술(記述)된 방식으로 도 7, 8 및 도 10 등의 작동 순서도에 따라서 디컴프레션 서브-시스템(40)의 작동을 제어하는 제어(57)(control)를 포함한다.
디컴프레션 서브-시스템(40)은 입력(41)에서 수신된 압축 코드 신호를 버퍼(buffer)에 저장하는 코드 레지스터(60)(code register)를 포함한다. 기술(記述)된 작동을 따라서, 개개의 압축 코드 신호는 코드 레지스터(60)에서 버스(61)를 통하여 현재 수신 코드 코드 레지스터(53)까지 적용된다. 복구와 갱신 제어 섹션(50)은 코드 레지스터(60)에서 제어 버스(62)를 통하여 획득 압축 코드 신호(acquiring compressed code signal)를 제어한다.
디컴프레션 서브-시스템(40)의 작동을 간단하게 소개하면 다음과 같다. 현재 수신 코드 레지스터(53)에 삽입되어 있는 입력 압축 코드 신호는, 주소(44)를 통하여 사전(43)에 저장되어 있는 입력 압축 코드 신호에 대응하는 스트링에 접근한다. 관련이 있는 노드 포인터(48)를 이용하는 검색-트리를 통하여 복구 처리가 뒤쪽에서 스트링의 노드를 추적할 때, 스트링의 문자는 문자 필드(47)에서 복구된다. 스트링의 복구 문자는 출력(42)에서 적합한 순서로 공급된다. 이러한 스트링 복구 작동은 상기에서 인용되는 참조에서 기술(記述)된 작동과 같다. 현재 복구 스트링(currently recovered string)의 각각의 문자에 의하여 이전(以前) 복구 스트링(previously recovered string)을 확장하는 것에 의하여, 사전(43)은 갱신된다. 이전(以前) 스트링 레지스터(54)는 상기 처리에서 이용된다.
반복되는 문자(repeated character)나 반복되는 문자 그룹 스트링(repeated character group string)을 압축하는 컴프레션 서브-시스템(10)에 응답하여, 사전(43)에 저장되어 있는 위에서 기술(記述)된 것에 대응하는 스트링을 가지고 있지 않은 인식하지 못 하는 압축 코드 신호(unrecognized compressed code signal)를 수신한다. 인식하지 못 하는 압축 코드 신호를 수신할 때, 인식하지 못 하는 압축 코드 신호에 대응하는 스트링을 복구하도록, 인식하지 못 하는 코드 처리 섹션(55)을 이용한다. 추가로, 상기 압축 처리 중(中)에 컴프레션 서브-시스템(10)의 사전(13)에 저장되어 있었던 스트링에 대응하는 갱신 스트링(update string)은, 또한 디컴프레션 서브-시스템(40)의 사전(43)에 저장되어 있다. 인식하지 못 하는 코드 처리 섹션(55)에 대하여 도 8 에 관하여 상세하게 설명할 것이다.
도 3a 에 관하여, 사전(13, 43)의 검색-트리에서 노드에 대한 상징적인 데이터 구조를 설명한다. 본 발명의 선호되는 실시예에 있어서, 같은 노드 데이터 구조는 컴프레션 서브-시스템(10)과 디컴프레션 서브-시스템(40) 등의 양쪽에서 이용되기 때문에, 도 1 과 도 2 등의 양쪽에서 공통 참조 번호는 도 3a 에서도 나타난다. 노드 넘버(16, 46)와 문자 필드(17, 47) 등은 상기에서 설명되었다. 관련이 있는 노드 포인터 필드(18, 48)는 부모 포인터 필드(66)와 자식 포인터 필드(67) 등을 포함한다. 잘 공지된 방식으로, 부모 포인터 필드(66)(parent pointer field)는 현재 노드(15, 45)(current node)의 부모 노드의 노드 넘버를 포함하고, 자식 포인터 필드(67)(children pointer field)는 현재 노드(15, 45)(current node)의 자식 노드의 노드 넘버를 포함한다.
기술(技術)에 있어서 그 진가를 인정받는 방식에 있어서, 컴프레션 시스템(10)은 다음과 같은 검색-트리를 통하여 아래쪽으로의 검색에 효과가 있다. 현재 노드에 머물러 있을 때, 어떠한 자식 노드가 현재 입력 문자에 매칭(matching)하는지를 결정하도록 자식 노드의 문자 값은 검사된다. 매치(match)가 일어난다면, 자식 노드는 현재 노드가 되고, 현재 입력 문자에 매칭하는 자식 노드를 가지고 있지 않는 현재 노드를 만날 때까지, 다음의 입력 문자에서 처리는 반복된다. 이러한 것이 일어날 때, 가장 길게 매칭되는 스트링을 사전(13)에서 발견하였고, 그러한 스트링의 노드 넘버는 가장 길게 매칭된 스트링에 대한 압축 코드 신호로써 이용된다. 검색-트리를 통하여 앞쪽으로 검색은 루트 노드에서 시작되는데, 여기서 부모 포인터 필드(66)는 널(null) 값을 포함할 수 있다.
공지된 동일한 방식에 있어서, 현재 노드 넘버의 해싱 함수와 현재 입력 문자 등에서 검색하도록 다음의 노드를 찾는 것에 의하여, 앞쪽으로 검색을 실행할 수 있다. 이러한 실시예에 있어서, 자식 포인터 필드(67)는 이용되지 아니 한다. Welch 특허(4,558,302)는 LZW 알고리즘의 해시 검색 실시예를 발표한다.
잘 공지된 방식으로, 압축 코드 신호에 대응하는 데이터 문자 스트링을 복구하도록 검색-트리를 통하여 뒤쪽으로 검색에서 디컴프레션 서브-시스템(40)에 의하여, 도 3a 의 데이터 구조는 또한 이용된다. 압축 코드 신호는 노드 넘버(46)에 주소를 쓰고, 문자 필드(47)에서 문자 값을 저장한다. 그 다음에, 부모 포인터 필드(66)에서 노드 넘버는 부모 노드에 접근하도록 이용되고, 부모 포인터 필드 내(內)에서 문자 값은 저장된다. 처리는 루트 노드에 다다를 때까지 계속된다. 역(逆) 순서로 상기 처리에 의하여 문자가 복구되기 때문에, 원(源) 데이터 문자 스트링을 복구하기 위하여 문자 순서를 역(逆)으로 하도록, LIFO 스택과 같은 메커니즘 또는 적합하게 구성된 출력 버퍼 등은 이용된다.
컴프레션 사전(13) 또는 디컴프레션 사전(43) 등에 저장된 스트링은 다음과 같이 확장된다. 빈 위치(empty location)의 다음의 유용한 코드는 코드 생성기(26, 56)에 의하여 공급되고, 다음의 유용한 코드의 노드 넘버는 확장되는 노드의 자식 포인터(67)에 추가된다. 확장되는 노드의 노드 넘버는 빈 위치의 부모 포인터 필드(66)에 삽입된다. 확장 문자의 문자 값은 빈 위치의 문자 필드(17, 47)에 삽입된다.
도 3b 에 관하여, 사전(13, 43)의 검색-트리의 노드에 대한 실제적인 데이터 구조를 설명한다. 컴프레션과 디컴프레션 시스템에 있어서 이러한 데이터 구조와 그 구현은 Clark 특허(5,513,591)에 기술(記述)되어 있다. 도 3a 에 관하여 설명된 것처럼, 도 3b 의 데이터 구조는 컴프레션 사전(13)과 디컴프레션 사전(43) 등의 양쪽에서 이용될 수 있고, 그러므로 도 1 과 도 2 등의 공통 참조 번호를 나타내고 있다. 다시, 노드 넘버(16, 46)와 문자 필드(17, 47) 등은 상기에서 설명되었다. 도 3b 의 데이터 구조에 있어서, 관련이 있는 노드 포인터 필드(18, 48)는 부모 포인터 필드(66), 자식 포인터 필드(67), 및 시블링 포인터 필드(72) 등을 포함한다. 도 3a 의 부모 포인터 필드(66)에 관하여 상기에서 기술(記述)된 것과 같은 방식으로, 부모 포인터 필드(70)는 이용된다. 자식 포인터 필드(71)와 시블링 포인터 필드(72) 등은 도 3a 의 자식 포인터 필드(67)를 대신(代身)한다. 도 3b 의 데이터 구조에 있어서, 부모 노드에 대한 자식 노드 중(中) 하나의 노드 넘버를 가리키도록 부모 노드(parent node)는 그 자식 포인터 필드(71)를 이용하고, 자식 노드에 대한 시블링 노드 중(中) 하나의 노드 넘버를 가리키도록 자식 노드에 대하여 가리키는 것은 그 시블링 포인터 필드(72)를 이용한다. 차례로, 덧붙여진 시블링 노드를 가리키도록 시블링 노드에 대하여 가리키는 것은 그 시블링 포인터 필드(72)를 이용한다. 상기 방식으로, 부모 노드의 모든 자식에 대한 포인터는 시블링 노드의 연결된 리스트에 포함된다.
시블링 리스트에서 입력 문자의 존재를 검색하는 것을 제외하고, 도 3a 에 관하여 상기에서 기술(記述)된 방식으로 아래쪽으로 검색(downward search)은 실행된다. 스트링 복구를 위하여 아래쪽으로 검색은 도 3a 에 관하여 상기에서 기술(記述)된 방식으로 실행되고, 자식의 부모 포인터 필드와 시블링의 모든 포인터 필드 등을 부모에 대한 노드 넘버로 설정하는 것에 의하여 구현될 수 있다. 검색을 쉽게 할 목적으로, 시블링 리스트는 문자 값의 오름차순으로 배열될 수 있다.
상기에서 기술(記述)된 것처럼, 다음의 이용 가능한 코드를 할당하는 것에 의하여, 다음의 이용 가능한 빈 위치를 지명하는 것에 의하여, 그리고 이러한 빈 위치의 노드 넘버를 확장된 노드의 자식 포인터 필드(71)로 삽입하는 것에 의하여, 자식이 없는 노드(자식 포인터 필드 = 0)에 의하여 대표되는 스트링은 확장된다. 이렇게 새롭게 만들어진 자식 노드의 부모 포인터 필드(70)는 부모의 노드 넘버로 설정되고, 확장 문자 값(extension character value)은 새롭게 만들어진 자식의 문자 필드로 삽입된다. 이미 확장된 노드가 자식을 가지고 있다면, 새로운 시블링 노드는 만들어지고, 시블링 리스트의 적합한 노드의 시블링 포인터 필드(72)를 조정하는 것에 의하여 새로운 시블링 노드는 삽입된다. 부모의 노드 넘버는 새롭게 만들어진 시블링 노드의 부모 포인터 필드(70)로 삽입된다.
도 4 와 도 4a 등에 관하여, 도 4 는 도 3a 의 데이터 구조에 따라서 검색-트리 노드(80)(search-tree node)를 도식으로 설명하고 있다. 주소(노드 넘버), 문자 값, 부모 노드, 그리고 자식 노드 등은 일정한 사용 부호에 의하여 표시된다. 도 4a 는 도 4 의 노드(80)의 배열을 이용하는 데이터 저장 장소를 설명하는 부분적인 검색-트리의 상징적인 모습을 나타낸다. 도 4a 의 부분적인 검색-트리는 스트링 ab, 스트링 ac, 및 스트링 ad 등을 저장하는 노드(81, 82, 83, 84) 등으로 이루어진다. 그러므로, 부모 노드(81)의 자식 포인터 필드(67)(도 3a)는 자식 노드(82, 83, 84)의 노드 넘버를 포함하면서, 자식 노드(82, 83, 84)의 부모 포인터 필드(66)는 부모 노드(81)의 노드 넘버를 각각 포함한다.
도 5 와 도 5a 등에 관하여, 도 5 는 도 3b 의 데이터 구조에 따라서 검색-트리 노드(90)(search-tree node)를 도식으로 설명하고 있다. 주소(노드 넘버), 문자 값, 부모 노드, 그리고 자식 노드 등은 일정한 사용 부호에 의하여 표시된다. 도 5a 는 도 5 의 노드(90)의 배열을 이용하는 부분적인 검색-트리의 상징적인 모습을 나타내고, 도 5a 는 노드(91, 92, 93, 94) 등으로 이루어진다. 도 5a 의 부분적인 검색-트리는 도 4a 와 같은 스트링을 저장한다. 그러므로, 부모 노드(91)의 자식 포인터 필드(71)(도 3b)는 자식 노드(92)의 노드 넘버로 설정한다. 자식 노드(92)의 시블링 포인터 필드(72)는 시블링 노드(93)의 노드 넘버로 설정되고, 시블링 노드(93)의 시블링 포인터 필드(72)는 시블링 노드(94)의 노드 넘버로 설정된다. 자식 노드(92, 93, 94)의 부모 포인터 필드(70)는 부모 노드(91)의 노드 넘버로 각각 설정된다.
다음의 도 6 내지 도 10 등의 상세한 기술(記述)에 있어서, 도 3b 의 데이터 구조, 도 5 에서 도 3b 에 대응하는 노드 배열, 그리고 도 5a 에서 도 3b 에 대응하는 검색-트리 등에 관하여, 그 작동을 설명한다. 해싱과 같은 무작위 추출과 비슷하게 코드를 할당하는 것은 높게 평가되지만, 코드 생성기(26, 56)에 의하여 차례대로 코드를 할당하는 것을 고려할 수 있다. 해싱 실시예에 있어서, 노드 넘버 코드와 문자 등은 다음의 주소를 결성하도록 해싱(hashing)된다. 이러한 해싱 실시예에 있어서, 자식 포인터와 시블링 포인터 등을 이용할 수 있다. 하지만, 도 6 내지 도 10 의 순서도에 있어서, 작동 블록 CODE = NEXT AVAILABLE CODE (코드 = 다음의 유용한 코드)은, 다음의 차례에 의한 코드(next sequential code)나 그렇지 않으면 다음의 해싱된 코드(next hashed code)를 포함할 수 있다. 순서에 의하여 코드를 할당하는 실시예에 있어서, 이러한 작동 블록은 보다 더 특별하게 COED = CODE + 1 이 될 것이다.
도 6 에 관하여, 도 1 과 도 3b 등의 계속되는 참조에 의하여, 본 발명에 따라서 데이터 압축을 실행하도록, 검색과 갱신 제어 섹션(20)에 의하여 실행되는 상세한 작동을 나타내면서 제어 순서도는 설명된다. 작동의 실행을 제어하도록 상태 기계와 같은 적합한 회로를 제어(27)는 포함하는 것을 고려한다.
도 6 의 순서도는 모든 단일 문자 스트링으로 초기화되는 컴프레션 사전(13)에 바탕을 둔다. 따라서, 각각의 코드(노드 넘버)에 저장되어 있는 모든 단일 문자 스트링으로 사전(13)을 소거(clear)하고 초기화(initialize)하도록, 블록(100)을 공급한다. 단일 문자 스트링을 저장하는 노드 넘버를 차례대로 할당하는 코드 생성기(26)를 이용하면서 상기 작동은 실행된다. ASCII 구현에 있어서, 256 단일 문자 스트링을 저장하는 코드 생성기(26)에 의하여 첫 번째 256 코드는 할당될 것이다. 압축이 일어나게 되는 알파벳에서 문자 각각의 문자 값으로, 초기화된 메모리 위치의 문자 필드(17)를 설정하는 것에 의하여, 초기화(initialization)는 효과가 있다. 상기 초기화되는 위치에 대하여, 부모 포인터 필드(70), 자식 포인터 필드(71), 그리고 시블링 포인터 필드(72) 등은 0(zero)으로 설정된다. 초기화 위치가 사전(13)에서 스트링을 저장하는 루트 노드를 공급하는 것은 높게 평가되고, 그러므로 상기 초기화 위치의 부모 포인터 필드(70)는 계속해서 0(zero)으로 남아있을 것이다.
상기 작동에 의하여, 사전(13)의 초기화 위치는 각각의 단일 문자 스트링을 포함하도록 설정된다. ASCII 실시예에 있어서, 사전(13)의 첫 번째 256 위치는 각각의 256 단일 문자 스트링을 포함한다. 블록(100)의 작동에 있어서, 사전(13)의 남아 있는 위치는 스트링의 모든 필드를 0(zero)으로 설정하는 것에 의하여 소거(clear)된다. ASCII 구현에 있어서, 266 의 노드 넘버와 그 보다 큰 노드 넘버에서 사전 위치는 소거(clear)된다.
블록(101)에서, 현재 매치 레지스터(24)는 0 으로 설정되고, 블록(102)에서 이전 매치 레지스터(25)는 0 으로 설정된다. 블록(103)에서, 다음의 입력 문자는 현재 문자 레지스터(23)로 들어간다.
블록(104)에서, 현재 문자에 의하여 연결된 현재 매칭된 스트링이 사전에 있는지를 결정하도록 검색을 한다. 상기에서 인용된 참조에서 기술된 절차와 같이, 어떤 공지된 적합한 사전 검색 절차를 이용할 수 있다. 여기서, 0 이 아닌 현재 매치에 대하여, 특별하게, 현재 매치 레지스터(24)는 현재 매칭(matching)된 스트링의 노드 넘버를 포함한다. 현재 매치 노드의 자식 포인터 필드(71)에 의하여 지적되는 자식은 입력 문자와 비교된다. 입력 문자가 현재 노드의 자식에 매칭(matching)된다면, 블록(104)의 결정이 긍정으로 대답하고, YES 경로는 얻어질 것이다. 자식 노드가 현재 문자에 매칭(matching)되지 않는다면, 자식 노드에 의하여 지적되는 시블링 리스트는 현재 문자가 시블링에 매칭되는지를 결정하도록 검사된다. 매치(match)가 발견된다면, YES 경로는 얻어질 것이다. 하지만, 현재 노드가 자식이 없거나 현재 문자가 현재 노드의 어떤 자식에 매칭되지 않는다면, 블록(104)에서 NO 경로가 얻어진다.
현재 매치가 0 이라면, 블록(104)은 현재 문자에 일치하는 문자 값을 가지는 사전(13)에서 루트 노드(root node)를 찾는다. 사전(13)이 모든 단일 문자 스트링으로 초기화되기 때문에, 블록(104)에서 YES 분기(分岐)는 자동적으로 얻어진다.
블록(104)에서 YES 분기(分岐)가 얻어질 때, 현재 문자에 의하여 연결되는 현재 매치가 사전(13)에서 찾아졌고, 훨씬 긴 스트링에 대한 검색이 계속되는 포인트(點)에서, 도 6 의 압축 처리에 있게 된다. 따라서, 현재 문자에 의하여 연결되는 존재하고 있는 현재 매치에 일치하도록 새로운 현재 매치는 설정되도록, 블록(105)에서 현재 매치를 갱신한다. 현재 매치 레지스터(24)에서 노드 넘버를 적합하게 갱신하는 것에 의하여, 상기의 갱신은 이루어진다. 현재 매치가 0 이 아닐 때, 상기에서 논의된 것처럼 현재 문자를 매칭(matching)하는 자식 노드(또는 시블링 노드)의 노드 넘버로써 현재 매치 레지스터(24)는 갱신된다. 현재 매치가 0 이라면, 현재 매치 레지스터(24)는 현재 문자에 매칭(matching)된 단일 문자 스트링의 노드 넘버로써 갱신된다. 단일 문자 노드 넘버(single node number)는 잘 공지된 방식으로 알고리즘으로써 얻어질 수 있고, 단일 문자 노드 넘버(single node number)는 현재 문자 값에 대한 초기화 위치를 검색하는 것에 의하여 찾아질 수 있다.
NO 분기(分岐)가 블록(104)에서 얻어진다면, 현재 문자(current character)에 의하여 연결되는 현재 매치(current match)는 사전(13)에 저장되어 있는 스트링에 매칭(matching)되지 아니 한다. 사전(13)에서 발견되었던, 현재 매치(current match)는 가장 긴 매치(longest match)에 입력 데이터 문자 스트림을 공급하고, 블록(104)에서 현재 매치와 연결된 현재 문자는 매치를 "파괴"한다. 이럴 때, 블록(106)은 가장 긴 매치를 대표하는 압축 코드 신호를 공급한다. 가장 긴 매치의 이러한 코드는 현재 매치 레지스터(24)에서 발견되고, 현재 매치의 노드 넘버이다.
블록(107)에서, 현재 매치 레지스터(24)의 내용물은 이전 매치 레지스터(25)로 전송된다. 그러므로, 이전 매치 레지스터(25)는 현재의 가장 긴 매치를 대표하는 위치으 노드 넘버를 지금 저장한다. 그 다음에, 덧붙여서 논의되는 방식으로 사전(13)에서 갱신하는데 이전 매치 레지스터(25)는 이용된다.
현재 매치가 이전 매치로써 저장된 후(後)에, 현재 문자는 블록(110)에 현재 매치로써 저장된다. 그러므로, 블록(110)에 의하여, 다음 매치의 첫 번째 문자나 루트 문자로써 마지막 매치를 파괴하는 미스-매칭 입력 문자(mismatching input character)를 이용하는 다음의 가장 길게 매칭된 스트링에 대한 검색을 시작한다. 그러므로, 블록(110)에서 현재 매치 레지스터(24)는 현재 문자의 값을 가지는 초기화된 단일 문자 루트 노드의 노드 넘버로 설정된다. 블록(105)에 대하여 상기에서 기술(記述)된 방식으로 검색하는 것에 의하여, 그렇지 않으면 알고리즘으로써 실행될 수 있다. 블록(110)은 기술(記述)된 사전 갱신 논리로 된다.
블록(110)은 대신에 다음의 논리로써 구현될 수 있다. 블록(110)에서와 같이, 현재 매치가 현재 문자로 설정되는 것 대신에, 현재 매치는 0 으로 설정될 수 있고, 처리는 블록(104)의 입력으로 되돌릴 수 있다. 이러한 교체된 처리의 결과는 항상 사전의 초기화 때문에 블록(104)의 YES 경로로 되고, 그러므로 블록(105)로 돌아간다. 나타나는 것처럼, 더 적은 처리 단계로써 같은 결과는 블록(110)에 의하여 이루어진다는 것은 높이 평가된다. 하지만, 이러한 논리는 도 9 의 초기화가 없는 압축 처리에서 이용된다.
블록(105)에 다다를 때, 현재 매치의 현재 문자 확장은 사전에서 발견되었고, 본 발명에 따라서 현재 문자는 사전(13)에 저장되어 있는 갱신 스트링을 공급하도록 이전 매치를 확장하는데 이용된다. 하지만, 첫 번째 입력 문자만 도착한 후(後)에 블록(105)에 다다를 때, 이전 매치는 전혀 없을 것이고 그 지점에서 사전(13)은 갱신되지 않아야만 한다. 따라서, 결정 블록(111)은 이전 매치가 0 인지를 결정한다. 초기에 블록(102)에서 0 으로 설정되는 이전 매치 레지스터(25)를 조사하는 것에 의하여 이러한 결정은 완성된다. 이전 매치가 0 이라면, YES 경로는 블록(111)에서 사전 갱신을 우회하는 것에 의하여 얻어진다. 첫 번째 입력 문자를 처리한 후(後)에 블록(105)에 도착할 때, 이전 매치는 0 이 아닐 것이고, 본 발명을 따라서 사전 갱신을 실행하도록 블록(111)에서 NO 경로는 얻어질 것이다.
따라서, 블록(112)에서, 코드 생성기(26)는 다음의 유용한 코드(next available code)를 공급한다. 다음의 유용한 코드는 갱신 스트링을 저장하는 다음의 유용한 빈 사전 위치의 노드 넘버로 될 것이다. 블록(113)에서, 현재 문자에 의하여 연결된 이전 매치는, 다음의 유용한 코드에 의하여 접근되는 다음의 유용한 빈 위치에서 사전(13)에 저장된다.
블록(113)의 저장은 다음과 같이 이루어진다. 블록(112)의 다음의 유용한 코드에 의하여 접근되는 다음의 유용한 빈 위치의 부모 포인터 필드(70)는, 이전 매치 레지스터(25)에서 찾아지는 이전 매치의 노드 넘버로써 설정된다. 상기 다음의 빈 위치의 문자 필드(17)는 현재 문자 레지스터(23)에서 현재 문자의 값으로 설정된다. 이전 매치 부모 노드는 상기의 새롭게 만들어진 다음과 같은 노드에 연결된다. 이전 매치 부모 노드의 노드 넘버는 이전 매치 레지스터(25)에 있다. 이전 매치 부모 노드가 자식이 없다면(자식 포인터 필드 = 0), 블록(112)에서 새롭게 만들어진 자식의 노드 넘버인 다음의 유용한 코드는 상기 이전 매치 부모의 자식 포인터 필드(71)로 삽입된다. 이전 매치 부모가 이미 자식을 가진다면, 새롭게 만들어진 노드의 상기 다음의 유용한 코드 넘버는, 이전 매치 부모의 자식의 시블링 리스트에 삽입된다. 새롭게 만들어진 시블링을 수용하도록, 따라서 적합한 시블링 노드 넘버를 새롭게 만들어진 시블링의 시블링 포인터 필드(72)로 삽입하도록, 리스트에서 시블링의 시블링 포인터 필드(72)를 조정하는 것에 의하여 이러한 삽입은 실행된다.
블록(113)에 관하여 기술(記述)된 것처럼, 현재 문자에 의하여 확장되는 이전에 매칭된 스트링의 노드 넘버를 가리키도록, 이전 매치 레지스터(25)을 갱신하는데 블록(114)은 이용된다. 블록(113)에 관하여 기술(記述)된 것처럼, 새롭게 만들어진 자식이나 시블링의 노드 넘버를 이전 매치 레지스터(25)에 삽입하는 것에 의하여 상기는 이루어진다. 이러한 노드 넘버는 블록(112)에 관하여 기술(記述)된 다음의 유용한 코드이고, 이러한 노드 넘버는 코드 생성기(26)에 의하여 공급된다.
블록(112-114)에 관하여, 사전 갱신을 실행한 후(後)에, 현재 문자 레지스터(23)에서 현재 입력 문자가 입력 데이터 스트림에서 마지막 입력 문자인지를 결정하도록, 결정 블록(115)으로 들어간다. 또한, 앞에서 논의된 것과 같이 사전 갱신을 우회하도록 블록(111)의 YES 경로에서 블록(115)으로 들어간다. 현재 문자가 마지막 문자라면, 현재 매치의 코드가 출력일 때, 블록(115)에서 YES 경로는 블록(116)으로 들어간다. 블록(116)에 관하여 공급되는 압축 코드 출력은 현재 매치 레지스터(24)에서 발견된다. 블록(116)에 관하여 압축 코드를 출력한 후(後)에, 블록(117)은 처리를 끝내는 단계로 들어간다.
하지만, 현재 문자 레지스터(23)의 현재 문자는 마지막 입력 문자가 아니라면, NO 분기(分岐)는 블록(115)에서 얻어지는데, 블록(115)는 경로(118)에 의하여 블록(103)의 입력으로 돌아간다. 블록(103)에 관하여, 다음의 입력 문자는 현재 문자 레지스터(23)으로 삽입되고, 도 6 의 데이터 압축 처리는 계속된다.
일시적으로 처리를 중지하는 것이 요구된다면, 중지는 경로(118)에서 멈춤 블록(119)에서 실행된다.
가장 길게 매칭(matching)된 스트링에 대하여 사전(13)을 검색하는 것은 블록(103 - 105)에 의하여 제어되는 것, 그리고 블록(106)이 가장 긴 매치에 대응하는 압축 코드 출력을 공급하는 것 등은, 높이 평가된다. 블록(110)에 의하여, 이전 스트링 매칭 사이클에서 미스-매치를 일으켰던 문자에서 시작되는 다음의 가장 긴 매치에 대하여 검색은 시작된다.
블록(107, 112 -114) 등은 본 발명에 따라서 사전(13)의 갱신을 제어한다. 현재 입력 문자가 성공적으로 현재 매치를 확장하였는지를 블록(104)에 의하여 결정할 때, 블록(112 - 114)에 의하여 확장되는 처리에 있는 이전에 매칭된 스트링과 상기 문자는 연결된다. 그러므로, 스트링 검색에서 문자-대(對)-문자로써 사전 갱신은 즉각적이고 삽입된다.
매칭된 현재 스트링이 확장된 이전 스트링과 같은 트리 경로에 있을 때, 반복하는 문자나 반복하는 그룹 스트링을 효과적으로 압축하는 본 알고리즘의 특성이 이루어진다는 것은 높이 평가된다. 도 8 과 도 12 에 관하여 보다 더 명백해지는데, 이러한 입력 스트링이 그 길이에 관계없이 두 개의 압축 코드 신호에서 압축된다.
도 2 와 도 3b 에 계속되는 참조로써, 도 7 에 관하여, 도 6 에 따라서 생성되는 디컴프레션(decompression)되고 컴프레션(compression)된 코드에 대하여 복구와 갱신 제어 섹션(50)에 의하여 실행되는 작동을 제어 순서도는 설명하고 있다. 도 7 은 모든 단일 문자 스트링으로 초기화되는 디컴프레션 사전(43)에 바탕을 두고 있다. 작동의 실행을 제어하도록 상태 기계와 같은 적합한 회로를 제어(27)는 포함하는 것을 고려한다.
블록(130)에 관하여, 디컴프레션 사전(43)은 소거(clear)되고 초기화된다. 사전(43)에 관하여 블록(130)의 작동은 블록(100)과 컴프레션 사전(13) 등에 관하여 상기에서 기술(記述)된 것과 같다.
블록(131)에서, 이전 스트링 레지스터(54)는 0 으로 소거(clear)되고 블록(132)에서 입력 압축 코드는 현재 수신된 코드 레지스터(53)로 삽입된다. 처리는 계속해서 결정 블록(133)으로 진행되는데, 현재 수신된 코드 레지스터(53)에서 현재 수신된 코드가 사전(43)에서 현재 수신된 코드에 대응하는 스트링을 가지는지를 결정한다. 전상적으로, 사전(43)은 현재 수신된 코드에 대응하는 스트링을 포함한다. 반복하는 문자나 문자 그룹 스트링에 접하는 컴프레서로 인(因)하여 현재 수신된 코드가 결과적으로 나왔을 때, 예외는 일어난다. 블록(133)의 결정은
주소로써 현재 수신된 코드를 이용하면서, 그리고 접근된 사전 위치가 소거(clear)되었는지 아닌지를 결정하면서 사전(43)에 접근하는 것에 의하여, 블록(133)의 결정은 효과가 있다. 사전 위치가 소거되면, 현재 수신된 코드에 대응하는 스트링이 사전에 없다. 대신에, 순서에 의한 코드 할당 실시예에 있어서, 현재 수신된 코드가 코드 생성기(56)의 확장 코드와 같거나 작은지를 결정하는 것에 의하여, 블록(133)의 결정은 효과가 있다. 현재 수신된 코드가 코드 생성기(56)의 확장 코드와 같거나 작을 때, 현재 수신된 코드에 대응하는 스트링은 사전(43)에 있다. 하지만, 현재 수신된 코드가 확장 코드보다 클 때, 현재 수신된 코드에 대응하는 스트링은 아직 사전(43)에 있지 아니 한다.
현재 수신된 코드에 대응하는 스트링은 아직 사전(43)에 있지 아니 하다면, 블록(133)에서 NO 경로는 인식하지 못 하는 코드 처리를 실행하는 블록(55)에서 얻어진다. 인식하지 못 하는 코드 처리는 도 8 에 관하여 상세하게 기술(記述)될 것이다.
현재 수신된 코드가 사전(43)에서 대응하는 스트링을 가질 때, 블록(133)에서 블록(134)까지 YES 경로는 얻어진다. 블록(134)에서, 현재 수신된 코드에 대응하는 스트링의 문자는 적합하게 공지된 사전 경로 배정 처리에 의하여 복구된다(예를 들면, Welch 특허 4,558,302 에서 도 5 , 또는 Clark 특허 5,513,591 에서 도 5). 파라미터 n 은 블록(135)에서 공급되고, 블록(134)에서 복구되는 스트링에서 문자의 넘버에 일치하게 설정된다. 지수 i 는 블록(136)에서 1 에 일치하게 설정된다. 복구된 스트링의 문자가 첫 번째 문자에서 시작하는 출력이 되도록, 지수 i 는 블록(134)에서 복구되는 스트링의 n 문자를 통하여 단계를 진행하도록 이용된다. 따라서, 블록(137)은 현재 수신된 코드 스트링의 ith 문자를 출력하도록 공급한다.
결정 블록(140)은 이전 스트링이 0 에 일치하는지를 결정하도록 포함된다. 이전 스트링 레지스터(54)의 내용물이 0 인지를 결정하는 것에 의하여 상기 검사는 효과가 있다. 이전 스트링 레지스터(54)가 0 이라면, 블록(140)에서 YES 경로는 사전 갱신을 우회하도록 얻어진다. 블록(140)의 기능은 도 6 의 블록(111)에 관하여 상기에서 기술(記述)된 기능과 같고, 그러므로 블록(140)에서 YES 경로는 첫 번째 수신된 입력 코드의 응답에 의하여서만 얻어진다.
이전 스트링 레지스터(54)가 0 이 아니라면, 블록(140)에서 NO 경로는 얻어지고, 블록(141)에서 사전(43)의 다음의 빈 위치에 대한 다음의 유용한 코드는 코드 생성기(56)에 의하여 공급된다. 블록(142)에서, 현재 수신된 코드에 대응하는 스트링의 ith 문자와 관련이 있는 이전 스트링은 상기 다음의 빈 위치에서 저장된다. 블록(143)에서, 이전 스트링 레지스터(54)는 블록(142)의 확장된 이전 스트링의 노드 넘버를 저장하도록 갱신된다. 블록(141 - 143)의 실행하는데 수행되는 작동은, 도 6 의 블록(112 -114)에 응답하여 상기에서 기술(記述)된 작동과 같다. 도 7 에 있어서, 이전 스트링 레지스터(54)는 이용되는데, 반면에 도 6 에서 이전 매치 레지스터(25)는 포함된다.
블록(144)에서, 지수 i 는 하나(one)에 의하여 증가된다. 블록(141 - 143)의 사전 갱신 처리를 앞에서 기술(記述)한 것처럼 우회하도록, 결정 블록(140)에서 YES 경로는 또한 블록(144)으로의 입력에서 적용된다. 결정 블록(145)에서, 지수 i 는 값 n+1 에 일치하는지를 결정하도록 검사된다. 지수 i 는 값 n+1 에 일치하지 않을 때, 블록(137)의 입력으로 처리를 되돌리는 블록(145)에서 NO 경로는 얻어진다. 블록(137, 140 -145)를 통하는 처리는 i 가 n+1 에 일치할 때까지 계속된다.
상기 방식으로, 현재 수신된 코드 스트링의 n 문자는 블록(137)에서 옳은 순서에서 출력이고, 이전 복구 스트링은 현재 수신된 코드 스트링의 모든 프리픽스에 의하여 확장된다. 컴프레션 사전(13)에서 도 6 의 블록(112 - 114)에 의하여 저장되는 것과 같이, 블록(141 - 143)의 처리는 디컴프레션 사전(43)에서 같은 스트링을 저장한다. 디컴프레션 사전(43)에서 블록(141 - 143)에 관하여 저장된 스트링은, 컴프레션 사전(13)에서 블록(112 - 114)에 관하여 저장된 스트링과 같은 각각의 주소에서 저장된다.
지수 i 는 값 n+1 에 다다를 때, 블록(145)에서 YES 경로는 블록(146)에서 얻어진다. 블록(146)에서, 현재 수신된 코드 스트링은 다음의 입력 코드를 처리하는 준비에서 이전 스트링을 대신한다. 현재 수신된 코드 레지스터(53)의 내용물을 이전 스트링 레지스터(54)로 삽입하는 것에 의하여 상기는 이루어진다. 인식하지 못 하는 코드 처리(55)는 블록(146)으로의 입력으로써 존재한다.
방금 처리된 현재 수신된 코드는 마지막 입력 코드가 아니라면, 결정 블록(147)은 블록(147)의 NO 경로를 통하여 블록(132)의 입력으로 처리를 되돌린다. 다음의 입력 압축 코드에 대한 처리를 초기화하도록 경로(148)을 통하여 처리는 블록(132)으로 되돌린다. 처리를 일시적으로 중지하는 것이 요구되어진다면, 경로(148)에서 멈춤 블록(149)에서 중지는 실행된다. 디컴프레서(decompressor)에서 멈춤 블록(149)는 컴프레서(compressor)에서 멈춤 블록(119)에 대응한다.
블록(147)에서, 현재 수신된 코드가 마지막 입력 코드라면, 블록(147)에서 YES 경로는 처리를 종료하도록 블록(150)에서 얻어진다.
앞에서 기술(記述)한 것과 같이, 블록(134, 137) 등은 현재 수신된 코드에 대응하는 스트링의 문자를 복구하고 출력하면서, 현재 복구된 스트링의 프리픽스에 의하여 확장되는 이전 복구 스트링을 저장하는 것에 의하여 블록(141 - 143) 등은 사전(43)을 갱신하는 것은 높이 평가할 만하다.
도 8 에 관하여, 인식하지 못 하는 코드 처리(55)(unrecognized code processing)의 세부 사항을 설명한다. 블록(160)에서, 지수 i 는 일(one)로써 일치하게 설정되고, 기술(記述)되어 있는 이유 때문에 지수 i 는 증가되는 기준 n 이 될 것이다. 블록(161)에서, 이전 스트링의 n 문자는 복구된다. 이전 스트링 복구 사이클에서 현재 수신된 코드 스트링이었기 때문에, 이전 스트링은 n 문자를 가진다. 블록(134)에 관하여 상기에서 기술(記述)된 것과 같이, 공지된 사전 스트링 복구 처리를 이용하는 이전 스트링 레지스터(54)의 내용물로써 사전(43)에 접근하는 것에 의하여, 블록(161)은 구현된다.
블록(162)에서, 코드 생성기(56)은 다음의 빈 사전 위치에 대하여 다음의 유용한 코드(next available code)를 공급한다. 블록(163)에서, 이전 스트링의 ith 문자에 의하여 확장된 이전 스트링은 상기 다음의 빈 위치에 저장된다. 블록(164)에서, 상기 확장된 이전 스트링의 노드 넘버를 저장하도록 이전 스트링 레지스터(54)을 갱신하는 것에 의하여, 블록(163)의 확장된 이전 스트링에 의하여, 이전 스트링은 대체된다. 블록(162 - 164)의 사전 갱신 작동은 블록(141 - 143)에 관하여 상기에서 기술(記述)된 작동과 비슷하다. 앞에서 기술(記述)한 것처럼, 블록(141 - 143)에서 사전 갱신의 구현은 도 6 의 블록(112 - 114)에 관하여 상세하게 기술(記述)하였다. 블록(162 - 164)의 처리에 있어서, 이전 스트링 레지스터(54)를 이용한다.
결정 블록(165)에서, 코드 생성기(56)에 의하여 현재 공급되는 코드는 현재 수신된 코드 레지스터(53)에서 현재 수신된 코드에 일치하는지를 결정하도록 검사한다. 코드 생성기(56)의 확장 코드는 현재 수신된 코드의 값에 다다를지 않았다면, 블록(165)에서 NO 경로는 블록(166)에서 얻어지는데, 지수 i 는 하나씩 기준 n 까지 증가된다. 그 다음에, 코드 생성기(56)이 현재 수신된 코드에 일치할 때까지, 처리는 블록(162)의 입력으로 다시 반복된다.
코드 생성기(56)의 확장 코드가 현재 수신된 코드 레지스터(53)에서 현재 수신된 코드에 일치한다는 것을 블록(165)이 표시할 때, 블록(165)에서 블록(167)까지 YES 경로는 얻어진다. 코드가 현재 수신된 코드 레지스터(53)에서 현재 수신된 코드에 일치한다는 것을 블록(165)이 표시할 때, 상기 인식하지 못 하는 현재 수신된 코드에 대응하는 스트링은 디컴프레션 사전(43)에서 지금 저장된다는 것은, 높이 평가할 만하다.
블록(167)에서, 현재 수신된 코드에 대응하는 스트링의 문자는 복구되고, 각각의 문자는 첫 번째 문자에서 시작되는 출력이다. 현재 수신된 코드 레지스터(53)의 내용물로써 사전(43)에 접근하는 것에 의하여, 그리고 블록(134)에 대하여 상기에서 논의된 공지된 사전 스트링 복구 절차를 이용하는 것에 의하여, 블록(167)은 구현된다.
블록(160 - 167)을 처리하는 것에 의하여, 인식하지 못 하는 압축 입력 코드에 대응하는 스트링을 디컴프레션 사전(43)과 출력을 위하여 복구되는 사전(43)의 문자 등에서 구성하고, 저장하는 것은, 앞에서 기술(記述)한 것과 같이 높이 평가할 만하다. 도 6 의 컴프레서에 의하여, 인식하지 못 하는 코드와 관련이 있는 스트링을 저장하고 생성시킬 때, 컴프레서는 전송되는 코드에 대응하는 스트링을 넘어서 n 스트링을 컴프레서가 저장하는 것은, 앞에서 기술(記述)한 것과 같이 높이 평가할 만하다. 도 12 에서 보다 더 정확하게 되어 있을 것이다. 이러한 n 스트링을 구성하고 저장하는 디컴프레서에서 처리는 다음과 같다.
처리는 블록(170)에서 진행되는데, 지수 i 는 일(one)에 의하여 증가되는 기준 n 이다. 블록(171 - 173)은 각각 블록(162 - 164)에 대한 처리의 복제이다. 그 다음에, 처리는 블록(174)에서 진행되는데, 파리미터 n 은 일(one)씩 감소한다. 그 다음에, n 이 0 에 일치하는지를 결정하도록 결정 블록(175)에서 파라미터 n 은 검사된다. n 이 아직 0 이 아니라면, 블록(170)의 입력으로 다스 돌아가는 블록(175)에서 NO 경로는 얻어진다. 파라미터 n 이 0 의 값에 다다를 때, 인식하지 못 하는 코드 처리는 블록(175)의 YES 경로에 존재한다.
블록(166, 170)에 있어서, 블록(163, 172)에 관하여 저장되는 스트링에 대하여 적합한 문자 값을 쉽게 공급하도록 지수 i 는 증가되는 기준 n 이다. 이용되는 n 의 값은, 블록(135)에 의하여 공급되는(도 7), 그리고 블록(174)에서 감소하기 전(前)의 값이다. 문자 값은 블록(161)에 관하여 복구되는 이전 스트링의 n 문자의 값이고, i 에 의하여 지수로 설정된다. 블록(161)에 관하여 복구되는 이전 스트링의 n 문자는, 블록(163, 172)에 관하여 구성되고 저장되는 스트링에 대한 n 문자 프리픽스를 형성한다.
순서에 의한 코드 할당 또는 해싱과 같은 무작위 추출과 비슷한 코드 할당을 포함하는 코드 생성기(26, 56)에 의하여 이용되는 코드 할당 방법(code assignment process)의 어떤 형(型)으로 도 8 의 처리는 기능한다. 코드 할당 방법이 순서에 의한 것일 때, 도 8 의 논리는 다음과 같이 단순화된다.
순서에 의한 코드 할당에 대하여, 블록(165)의 검사는 "코드 = 현재 수신된 코드 + n " 으로 된다. 블록(170 - 175)은 제거되고, 인식하지 못 하는 코드 처리는 블록(167)에서 존재한다.
블록(167)이 인식하지 못 하는 수신된 코드에 대응하는 스트링의 문자를 복구하는 것, 그리고 도 6 에 관하여 상기에서 논의된 것처럼, 반복되는 문자나 문자 그룹 스트링이 일어날 때 컴프레션 사전에 저장되 것과 같이, 컴프레션 사전(43)에 같은 스트링을 블록(163, 172)는 저장하는 것 등은 높이 평가할 만하다.
도 1 과 도 3b 에 대하여 계속되는 참조로써, 도 9 에 관하여, 본 발명에 따르는 데이터 압축을 실행하도록, 검색과 갱신 제어 섹션(20)에 의하여 실행되는 작동의 상세한 제어 순서도를 설명하고 있다. 작동의 실행을 제어하도록 상태 기계와 같은 적합한 회로를 제어(27)는 포함하는 것을 고려한다. 도 9 의 순서도는 초기화가 되지 아니 하는 컴프레션 사전(13)에 바탕을 두고 있다. 도 9 의 초기화가 되지 아니 하는 실시예(non-initialized embodiment)에 있어서, 문자가 첫 번째 시간에 대하여 들어갈 때, 제로 코드(zero code)는 압축이 되지 않은 형(型)으로 문자의 전송에 의하여 다음과 같이 전송된다. 제로 코드에 의하여, 컴프레서에 의하여 상기 문자가 전송되었다고 디컴프레서에게 표시를 공급한다. 순서적으로 일어나는 문자의 인카운터에 관하여 저장된 단일 문자 스트링이나 루트 노드로써 기능하도록, 첫 번째 시간에 대하여 들어가는 문자는 컴프레서 사전(13)에 저장된다. 첫 번째 시간에 대하여 들어가는 문자의 수용을 제외하고, 도 9 의 순서도는 도 6 의 순서도와 같은 방식으로 기능한다.
블록(180)에서, 사전(13)은 소거(clear)된다. 사전 소거는 도 3b 의 필드(17, 70, 72)를 제로로 설정하는 것에 의하여 실행될 수 있다.
도 9 의 순서도는 블록(181 - 187, 190 - 194) 등을 포함한다. 이러한 블록은 도 6 에서 블록(101, 103 - 107, 112 -117) 등과 각각 같다. 도 6 의 이러한 블록에 관하여 상기에서 주어진 설명은, 다음을 제외하고 도 9 의 상응하는 블록에 적용된다.
블록(183)에서, 현재 매치가 0 일 때, 단일 문자 스트링이 이미 루트 노드로써 사전에 들어갔는지를 결정하는데 사전(13)에서 검색은 효과가 있다. 단일 문자 스트링이 이미 사전에 있다면, 블록(183)에서 YES 경로는 얻어지고, 그렇지 않으면 NO 경로가 얻어진다. 블록(184)에서, 현재 매치가 0 일 때, 블록(183)에서 매칭되지 않은 단일 문자 루트 노드의 노드 넘버로써 현재 매치 레지스터(24)는 갱신된다. 추가로써, 순서에 의한 코드 할당 실시예에서 블록(187)에 관하여, 초기화되지 아니 하는 실시예에서 모든 사전 위치는 입력으로 들어올 때 스트링을 저장하는데 모든 사전 위치는 유용하기 때문에, 코드 할당은 일(unity)로써 시작된다. 사전 갱신을 우회하는 도 6 은, 도 9 에서 필요로 하지 아니 한다. 초기화되지 아니 하는 실시예에서, 아래에서 기술(記述)될 것인데, 다음의 반복에 대한 이전 매치를 공급하는 첫 번째 시간에 대하여 들어오는 문자가 첫 번째 입력 문자이기 때문에, 필요로 하지 않는다.
추가로, 블록(185)은 도 6 의 블록(106)에 대응한다. 블록(185)에서, 블록(106)과 같이, 압축 출력 코드는 현재 매치 레지스터(24)에서 발견된다. 하지만, 블록(185)에서, 현재 매치가 0 일 때, 첫 번째 시간에 대하여 들어왔던 문자가 현재 입력 문자라는 것을 표시하는 출력이 상기 제로 코드이다.
도 9 의 순서도는 현재 매치 레지스터(24)의 내용물이 0 에 일치하는지를 결정하는 결정 블록(195)을 포함한다. 현재 매치가 0 이 아니라면, 블록(195)에서 블록(186)으로 NO 경로를 얻는데, 도 6 의 대응하는 블록(107)에 관하여 상기에서 기술(記述)된 것과 같이, 현재 매치 레지스터(24)의 내용물은 이전 매치 레지스터(25)로 전송된다. 블록(196)에서, 현재 매치 레지스터(24)는 0 으로 설정되고, 처리는 블록(183)의 입력으로 움직인다. 블록(186)은 다음의 스트링을 분석하는 작동에 대하여 사전 갱신을 설정하고, 블록(196)에 의하여 다음의 스트링 검색은 현재 문자 레지스터(23)에서의 문자에서 시작된다.
블록(195)에서 YES 경로가 얻어진다면, 현재 매치는 0 에 일치하고, 현재 문자 레지스터(23)에서 문자는 첫 번째 시간에 대하여 들어온다. 그러므로, 블록(197)에서 상기 문자는 출력이다. 블록(185)은 0 의 값을 가진 현재 매치를 출력하였기 때문에, 블록(197)에서 출력이었던 상기 첫 번째로 들어오는 현재 문자는, 상기에서 논의된 것처럼, 제로 코드의 다음이다. 블록(200)에서, 사전(13)에서 다음의 유용한 빈 위치를 표시하는 코드 생성기(26)에 의하여 다음의 유용한 코드는 공급된다. 블록(201)에서, 현재 문자 레지스터(23)의 현재 문자는 단일 문자 스트링 루트 노드로써 상기 다음의 빈 위치에 저장된다. 현재 문자 레지스터(23)에서 문자를 상기 다음의 빈 위치로 저장시키는 것에 의하여, 블록(201)의 기능은 이루어진다. 부모 포인터 필드(70), 자식 포인터 필드(71), 시블링 포인터 필드(72) 등은 블록(180)에서 모두 앞에서 0 으로써 되어 있었다.
블록(202)에서, 다음의 스트링을 분석하는 작동에서 사전 갱신이라는 목적으로 위하여, 이전 매치 레지스터(25)는 블록(201)에서 만들어진 루트 노드로 설정된다. 블록(201)에서 새롭게 만들어진 상기 루트 노드를 이전 매치 레지스터(25)로 삽입하는 것에 의하여 상기 설정은 이루어진다. 상기 노드 넘버는 블록(200)에서 바로 공급된 코드일 수 있다.
현재 문자 레지스터(23)에서 문자가 마지막 입력 문자인지를 결정하도록, 결정 블록(203)을 포함한다. 마지막 입력 문자가 아니라면, 입력 스트림에서 다음의 데이터 문자 신호를 얻도록, 블록(203)에서 블록(182)의 입력까지의 NO 경로를 얻는다. 하지만, 블록(203)에서 검사된 현재 문자가 마지막 문자라면, 처리를 종류하도록, 블록(203)에서 블록(194)까지의 YES 경로를 얻는다.
블록(182 - 184)은 가장 길게 매칭된 스트링에 대한 사전(13) 검색을 제어한다는 것, 그리고 가장 긴 매치에 대응하는 압축 코드 출력을 블록(185)가 공급한다는 것은 높이 평가할 만하다. 또한, 블록(185)은 첫 번째 시간에 대하여 들어오는 문자 전송의 앞에 있는 제로 코드 출력을 공급한다. 블록(196)은 현재 매치 레지스터(24)를 0 으로 만드는 것에 의하여 다음의 가장 긴 매치에 대한 검색을 시작한다. 그러므로, 가장 긴 매치에 대한 검색은 이전 스트링 매칭 사이클에서 미스-매치를 일으켰던 문자에서 시작되는데 , 이러한 문자는 현재 문자 레지스터(23)에 있다.
본 발명에 따라서, 블록(186, 187, 190, 191)은 사전 갱신을 제어한다. 현재 입력 문자가 성공적으로 현재 매치를 확장하였다고 블록(183)이 결정할 때, 블록(187, 190, 191)은 확장되는 처리에 있는 이전에 매칭된 스트링과 상기 문자를 연결시킨다. 블록(195, 197, 200 - 202)은 첫 번째 시간에 대하여 들어오는 문자의 관리를 제어한다. 블록(202)에 의하여, 다음의 스트링 매칭 사이클에서 뻗어 있는 퍼텐셜에 대한 이전 매치로써 이러한 문자를 공급한다. 도 9 의 논리를 통하여, 몇몇의 첫 번째로 들어오는 문자가 순서에 의하여 수용될 때, 상기 문자의 마지막은 다음의 스트링 매칭 사이클에서 뻗는 것은, 높이 평가할 만하다.
도 2 와 도 3b 에 대한 계속되는 참조로써, 도 10 에 관하여, 도 9 에 따라서 생성되는 디컴프레션(decompression)되고 컴프레션(compression)된 코드에 대하여 복구와 갱신 제어 섹션(50)에 의하여 실행되는 작동을 제어 순서도는 설명하고 있다. 도 10 의 순서도는 초기화되지 아니 하는 디컴프레션 사전에 바탕을 두고 있다. 작동의 실행을 제어하도록 상태 기계와 같은 적합한 회로를 제어(57)는 포함하는 것을 고려한다.
블록(210)에서, 디컴프레션 사전(43)은 도 9 의 블록(180)에 관하여 상기에서 기술(記述)된 방식으로 소거(clear)된다. 그러므로, 도 9 의 초기화되지 아니 하는 실시예의 사전(13)에서와 같은 방식으로, 디컴프레션 사전(43)은 소거된다.
도 9 에 관하여 상기에서 기술(記述)된 첫 번째 시간에 대하여 들어오는 문자를 관리하는 것을 제외하고, 도 10 의 디컴프레션 순서도에 의하여 실행되는 작동은, 도 7 의 디컴프레션 순서도에 의하여 실행되는 것과 같다. 따라서, 도 7 의 블록(55, 132 - 137, 141 - 147, 150)과 같은 기능을 각각 실행하는 블록(55, 211 - 217, 220 - 226)을 도 10 은 포함한다. 도 7 의 블록(55, 132 - 137, 141 - 147, 150)에 관하여 상기에서 주어진 기술(記述)은 도 10 의 대응하는 블록에 적용된다.
도 7 의 블록(140)에 대응하는 블록은 도 10 에서 이용되지 아니 한다. 앞에서 기술(記述)된 것처럼,이전 스트링 레지스터(54)가 0 일 때, 블록(140)은 사전 갱신을 우회한다. 도 7 의 초기화되는 실시예에서, 첫 번째로 수신된 입력 코드에 응답하여 상기는 일어난다. 도 10 의 초기화되지 아니 하는 실시예에 있어서, 첫 번째 수신된 입력 코드는 첫 번째 시간에 대하여 들어오는 문자에 대한 것인데, 곧 기술(記述)될 것이지만 순서에 의한 사이클에서 갱신을 위한 이전 스트링을 공급하는 것이다.
컴프레션 사전(13)에서 도 9 의 블록(187, 190, 191)에 의하여 저장되는 것처럼, 블록(217, 220, 221)의 처리는 디컴프레션 사전(43)에서 같은 스트링을 저장한다. 디컴프레션 사전(43)에서 블록(217, 220, 221)에 따라서 저장된 스트링은, 컴프레션 사전(13)에서 블록(187, 190, 191)에 따라서 저장된 스트링과 각각 같은 주소에서 저장된다. 덧붙여서, 블록(55)의 인식하지 못 하는 코드 처리(도 8)을 도 10 의 내용에서 실행할 때, 도 9 의 컴프레서의 작동에 관하여 반복하는 문자나 문자 그룹 스트링이 일어날 때 컴프레션 사전(13)에서 저장된 것과 같은 디컴프레션 사전(43)에서 같은 스트링을 도 8 의 블록(163, 172)은 저장한다.
특별하게, 블록(212)은 도 7 의 블록(133)에 일치한다. 컴프레서에 의하여 첫 번째 시간에 대하여 들어오는 문자의 수신에 앞에 있는 제로 수신 코드에 관한 것은 제외되는데, 블록(133)에 관하여 상기에서 주어진 기술(記述)은 블록(212)에 적용된다. 하지만, 처리가 블록(212)에 다다를 때, 이제 기술(記述)되는 도 10 의 또 하나의 분기(分岐)에서 상기 상황을 처리하기 때문에, 현재 수신된 코드는 0 으로 되는 것은 높이 평가할 만하다. 블록(211)에서, 입력 압축 코드 신호는 현재 수신된 코드 레지스터(53)에 삽입된다. 현재 수신된 코드가 0 인지를 결정하도록, 결정 블록(230)은 현재 수신된 코드 레지스터(53)의 내용물을 검사한다. 현재 수신된 코드가 0 이 아니라면, 앞에서 기술(記述)된 것과 같이 처리를 진행하는 블록(212)로의 입력으로써 블록(230)에서 NO 경로를 얻는다.
하지만, 현재 수신된 코드가 0 이라면, 도 9 의 컴프레서에 의하여 첫 번째 시간에 대하여 들어오는 문자른 예상된다. 따라서, 상기 문자는 블록(231)에서 입력이다. 현재 수신된 코드 레지스터(53)는 일시적으로 상기 문자를 수용하도록 이용될 수 있다. 블록(232)에서, 코드 생성기(56)는 디컴프레션 사전(43)의 다음의 빈 위치에 대응하는 다음의 유용한 코드를 공급한다. 블록(233)에서, 입력 문자는 단일 문자 루트 노드로써 상기 다음의 빈 위치에서 저장된다. 블록(233)에서 도 9 의 블록(201)에 관하여 상기에서 기술(記述)된 방식으로, 상기는 이루어진다. 그러므로, 컴프레션 시스템(10)이 도 9 의 초기화되지 아니 하는 실시예에서 컴프레션 사전(13)에서 저장되는 것처럼, 디컴프레션 서브-시스템(40)은 디컴프레션 사전(43)에서 같은 단일 문자 스트링을 저장하고, 같은 주소에서 저장한다.
블록(234)에서, 블록(231)에서 수신된 문자는, 디컴프레서의 복구 데이터 출력과 컴프레서에서 수신된 입력 데이터 등의 사이에서 일관적으로 유지되는 출력이다. 문자를 일시적으로 저장하는 현재 수신된 코드 레지스터(53)에서 상기 문자를 출력시키는 것에 의하여, 상기는 이루어질 수 있다.
블록(235)에서 파라미터 n 이 일(one)로써 설정된다. 첫 번째 시간에 대하여 들어오고 방금 처리되었던 상기 문자가 컴프레서의 입력에서 반복된다면, 그것에 의하여 인식하지 못 하는 압축 코드를 생성시킨다면, 다음의 디컴프레서 사이클에서 실행되었던 인식하지 못 하는 코드 처리(55)에 대하여 n = 1 은 적합한 값이다.
블록(236)에서, 다음의 스트링 복구 사이클에서 사전 갱신을 위하여, 블록(233)에서 만들어진 루트 노드로 이전 스트링 레지스터(54)는 설정된다. 블록(233)에서 새롭게 만들어진 상기 루트 노드의 노드 넘버를 이전 스트링 레지스터(54)에 삽입하는 것에 의하여, 상기는 이루어진다. 상기 노드 넘버는 블록(232)에서 방금 공급된 코드일 수 있다. 도 10 의 논리(logic)에 있어서, 첫 번째 시간에 대하여 각각 들어오는 몇몇의 문자는 순서에 의하여 수신된다면, 도 9 에 관하여 기술(記述)된 것과 같은 방식으로 다음의 스트링 복구 사이클에서 상기 마지막 문자만이 확장된다.
블록(236)의 출력은 상기에서 기술(記述)된 처리를 계속하도록 블록(255)로의 입력을 공급한다.
도 11a 내지 도 11e 등에 관하여, 일반적인 입력 데이터 스트림을 압축할 때, 컴프레션 사전(13)의 앞뒤 관련 상태를 설명하고 있다. 사전 상태는 부분적인 검색-트리에 의하여 도식으로 대표된다. 지적된 것과 같이, 압축된 입력 스트림은 "abcfghx" 이다. 스트링 분석을 대표하는 예로써 주어진 카머(comma)는 가상의 것이고, 입력 스트림에서 있지 아니 한다. 11a 에서 지적되 것처럼, 사전(13)은 초기에서 스트링 "abc" 와 스트링 "fgh" 등으로 저장한다. 11a 에 있어서, 스트링 "abc" 는 가장 길게 매칭된 스트링으로써 방금 매칭되었고, 스트링 "abc" 는 화살표(240)에 의하여 지적된 출력이다. 그러므로, 스트링 "abc" 는 가상 카마(241)에 의하여 지적된 입력에서 분석되었다.
도 11b 에 있어서, 다음의 입력 문자 "f" 는 화살표(242)에 의하여 지적되는 스트링 "fgh" 의 첫 번째 문자와 매칭(matching)된다. 본 발명에 따라서, 11a 에서 이전 압축 코드로써 전송되는 스트링 "abc" 는 화살표(243)에 의하여 지적되는 문자 "f" 에 의하여 확장된다.
도 11c 에 있어서, 다음의 입력 문자 "g" 는 저장된 스트링 "fgh" 의 두 번째 문자에 매칭(matching)되고, 이전 확장된 "abcf" 는 매칭 입력 문자 "g" 에 의하여 이제 확장된다. 비슷하게, 도 11d 에 있어서, 입력 문자 "h" 는 스트링 "fgh" 의 세 번째 문자에 매칭되고, 이제 스트링 "abcfgh" 를 형성하도록 성장하는 이전 스트링에 첨가된다.
도 11e 에 있어서, 다음의 입력 문자 "x" 는 스트링 "fgh" 의 매칭을 파괴하고, 가장 긴 매치 "fgh" 의 코드는 화살표(244)에 의하여 지적되는 출력이다. 스트링 "fgh" 는 가상 카머(245)에 의하여 지적되는 입력에서 분석되었다.
11a 와 도 11e 에 있어서, 매칭된 "fgh" 의 모든 프리픽스에 의하여 저장된 스트링 "abc" 는 확장된다는 사실과, 사전 갱신(dictionary updating)은 즉각적이고 현재 매칭된 스트링에서 문자의 각각의 매칭에 삽입된다는 사실은 높이 평가할 만하다.
그러므로, 도 11d 에 있어서, 스트링 "abcf" 는 다음의 반복에서 매칭에 대하여 이용 가능하였다. 도 11c 에 있어서, 스트링 "abcfg" 는 다음의 반복에서 매칭에 대하여 이용 가능하였고, 도 11d 에 있어서, 스트링 "abcfgh" 는 다음의 반복에서 매칭에 대하여 이용 가능하였다.
11a 내지 도 11e 에 있어서, 디컴프레서는 "abc" 와 "fgh" 에 대하여 앞뒤 관련 압축 출력 코드를 수용한다는 사실은 평가할 만하다. "fgh" 에 대한 출력 코드를 수용할 때, 11a 내지 도 11e 에서 기술(記述)되고 설명되는 스트링을 구성하고 저장할 목적으로, 디컴프레서는 복구 스트링 "fgh" 와 이전 수신된 압축 코드에 대응하는 스트링 "abc" 등을 이용한다.
도 12a 내지 도 12g 등에 관하여, 본 발명의 즉각적이고 삽입되는 사전 갱신의 특징은 런 길이 인코딩(run length encoding)이라는 이점을 공급하는 방식을 실례(實例)로써 보인다. 상기에서 논의된 것처럼, 본 발명은 런의 길이에 관계없이 두 갱의 압축 코드 심벌에서 반복하는 문자나 반복하는 문자 그룹 런을 압축한다. 입력 데이터 문자 스트림이 반복하는 문자 그룹일 때, 도 12a 내지 도 12g 등은 압축 사전(13)의 앞뒤 관련 상태를 설명하는 부분적인 검색-트리의 상징적인 모습을 나타낸다. 입력 데이터 스트림이 "abababax" 라는 실례로써 든다. 상기 샘플 입력에 있어서, 반복하는 문자 그룹 런(repeating character group run)은 문자 그룹의 조각으로 끝난다는 사실에 특히 주목해야만 한다. 밑에서 기술(記述)되는 작동는 또한 완전한 문자 그룹에 의하여 런의 종료에 또한 응용 가능하다. 도 11a 내지 도 11e 에 있어서, 가상 카머는 스트링 분석을 대표하고, 밑줄이 있는 것은 현재 입력 문자를 대표한다.
도 12a 에 있어서, 컴프레션 사전(13)은 첫 번째 두 개의 입력 문자에 의하여 매칭되는 스트링 "ab" 를 저장하고 있다. 그러므로, "ab" 코드는 화살표(250)에 의하여 지적되는 출력이다. 입력에서 스트링 "ab" 의 분석은 가상 카머(251)에 의하여 지적된다.
도 12b 에 있어서, 현재 입력 문자 "a" 는 화살표(252)에 의하여 지적되는 저장된 스트링 "ab" 의 첫 번째 문자에 매칭된다. "ab" 에 대한 코드는 이전 압축 코드로써 종료되었기 때문에, 매칭 문자 "a" 는 화살표(253)에 의하여 지적되는 스트링 "ab" 에 첨가된다. 컴프레션 사전(13)은 매칭을 위하여 이용될 수 있는 스트링 "aba" 를 저장한다.
도 12c 에 있어서, 다음의 입력 문자 "b" 는 저장된 스트링 "aba" 의 두 번째 문자에 매칭되고, 따라서 스트링 "aba" 는 상기 문자에 의하여 확장된다. 그러므로, 압축 사전(13)은 매칭을 위하여 이용 가능한 스트링 "abab" 를 이제 저장한다.
입력 문자 매칭과 스트링 확장의 순서는 도 12d 내지 도 12f 등에서 다음의 세 개의 입력 문자에 대하여 실례(實例)로써 주어진다. 그러므로, 도 12d 에 있어서, 스트링 "ababa" 는 저장되고, 도 12e 에 있어서 스트링 "ababab" 는 저장되고 매칭에 대하여 이용 가능하고, 도 12f 에 있어서 스트링 "abababa" 는 저장되고 매칭에 대하여 이용 가능하다.
상기 반복하는 순서가 계속될 때, 입력 문자 매칭과 저장된 스트링 확장 등은 트리의 같은 분기(分岐)에서 실행되고, 매치를 파괴하는 문자를 수신할 때까지 계속된다. 상기가 일어날 때, 새롭게 만들어진 노드에서 스트링을 저장하도록 코드 생성기(26)(도 1)는 계속해서 새로운 코드를 공급한다. 상기 지점까지, 디컴프레서는 도 12a 내지 도 12f 등에서 설명된 것과 같이 컴프레서에서 일어나는 활동을 전혀 알지 못 한다. 디컴프레서에 의하여 수신된 마지막 정보는, 도 12a 에 관하여 기술(記述)된 것과 같이 스트링 "ab" 의 출력 코드였다.
도 12g 에 있어서, 스트링 "ababax" 는 컴프레션 사전(13)에서 발견되지 않기 때문에, 입력 문자 "x" 는 매칭을 파괴한다. 따라서, 상기 스트링은 가상 카머(255)에 의하여 지적되는 것과 같이 입력에서 분석되었다. 도 12g 에 있어서, 두 개의 추가의 스트링은 가장 긴 매칭된 스트링을 넘어서 컴프레서 사전(13)에서 저장된다는 사실은 평가할 만하다. 상기 스트링은 노드(256, 257)에 의하여 대표된다.
그러므로, 도 12a 내지 도 12g 등에서, 반복하는 그룹 스트링 "ababa" 는 참조 번호(250, 254)에 의하여 지적되는 것처럼 두 개의 코드 심벌로써 압축되었다는 사실은 평가할 만하다. 코드 그룹 "ab" 의 반복하는 런은 실례에서 주어진 것 보다 더 긴 런에 대하여 도 12f 를 넘어서 계속되었다면, 단 두 개의 코드 심벌은 컴프레션을 위하여 계속해서 이용될 수 있다는 사실은 평가할 만하다. 반복하는 런이 반복하는 문자 그룹의 조각에서 끝나지만, 또한 완전한 그룹 "ab" 에서 계속해서 종료된다는 것을 보여준다.
앞에 있어서, 디컴프레서는 계속해서 스트링 "ababa" 를 저장하고 있지 않기 때문에, 참조 번호(254)에 의하여 도 12g 에서 지적되는 출력 코드는 디컴프레서에서 인식하지 못 할 것이다. 도 8 의 인식하지 못 하는 코드 처리(unrecognized code processing)는 도 12b 와 도 12c 에서 보여지는 스트링 "ababa" 의 프리픽스(prefix)뿐 아니라 스트링 "ababa" 등을 구성하고 저장한다. 더욱이, 인식하지 못 하는 코드 처리는 도 12g 에서 참조 번호(256, 257)에 의하여 지적되는 추가의 확장된 스트링을 구성하고 저장한다.
도 8 에 있어서, 블록(160 - 167)의 처리는 화살표(254)에 의하여 지적되는 인식하지 못 하는 코드에 대응하는 스트링 "ababa" 를 구성하고, 저장하고, 출력한다. 블록(170 - 175)의 처리는 추가의 스트링(256, 257)을 구성하고 저장한다.
도 12a 내지 도 12g 등의 실례(實例)에 있어서, 인식하지 못 하는 코드 처리에서 이용되는 이전 스트링은, 디컴프레서가 도 12a 에 대응하는 스트링 복구 사이클에서 실행되었을 때, 디컴프레션 사전에서 이미 저장되었던 스트링 "ab" 이다. 도 8 에 있어서, 도 12b 내지 도 12f 에서 실례로써 주어진 스트링을 구성하도록, 블록(163, 172)에 대하여 문자 "ab" 를 순서로써 반복으로써 공급하는 것에 의하여, 파라미터 n 은 2 이고, 지수 i 는 증가하는 기준 2 이다.
앞에 있어서, 문자를 미스-매칭하는 것에 의하여 또는 입력 문자를 넘어서 런닝(running)하는 것에 의하여 반복하는 문자나 문자 그룹 런이 종료될 때, 인식하지 못 하는 코드 처리(unrecognized code processing)가 적합한 스트링을 주성하고 복구한다는 사실은 높이 평가할 만하다. 반복하는 문자 그룹 런의 멀티-문자 그룹의 조각에서, 또는 완전한 그룹에서, 런(run)은 종료될 수 있다. 도 12a 내지 도 12g 등은 미스-매칭 "x" 에 의한 종료를 설명하고 있고, 반복하는 그룹의 조각에서 끝나는 것을 덧붙여서 설명하고 있다. 도 12g 에 있어서, 런(run)은 반복하는 그룹 "ab" 의 조각 "a" 에서 끝난다. 반복하는 그룹 런이 완전한 그룹 "ab" 종료될 때, 적합한 작동은 상기에서 주어진 기술(記述)에서 쉽사리 높이 평가할 만하다.
앞에 있어서, 저장된 스트링의 프리픽스는 또한 사전에서 존재한다는 점에서, 사전(13, 43)에서 저장된 스트링에 대하여 프리픽스 특성을 상기에서 기술(記述)된 처리는 포함한다는 사실은 높이 평가할 만하다.
상기 실시예는 입력 데이터 문자 신호의 스트림을 압축한다. 입력 데이터 문자는 어떤 대응하는 문자 비트 크기를 가지는 어떤 크기 알파벳에서 끝날 수 있다. 예를 들면, 데이터 문자라는 것은, 8 비트 문자의 256 문자 ASCII 알파벳에 있어서 알파벳에 대하여 ASCII 문자와 같은 텍스트일 수 있다. 1 비트의 크기를 가지는 문자로 이루어지는 두 개의 문자 이진 알파벳 1 과 0 에 대하여 이진 문자가 또한 될 수 있다. 알파벳의 상기 형(型)은 예를 들면 비트를 맵핑한 이미지에서 일어난다. 텍스트 데이터는 밑줄이 있는 이진 데이터의 두 개의 문자 알파벳에 대하여 압축될 수 있다는 사실은 높이 평가할 만하다.
상기의 실시예는 가장 긴 매치에 대한 검색에 관하여 기술(記述)되었다. 본 발명의 즉각적이고 삽입되는 갱신 처리는, 꼭 가장 길 필요가 없는 스트링을 매칭하는 시스템에서 또한 이용될 수 있다는 사실은 높이 평가할 만하다.
본 발명의 상기에서 기술(記述)된 실시예는 하드웨어, 펌웨어, 소프트웨어, 또는 그 조합에서 구현될 수 있다는 사실은 높이 평가할 만하다. 디스크리트 회로 요소(discrete circoit component)는 다양하게 기술(記述)된 기능을 실행하는데 쉽사리 구현될 수 있다. 소프트웨어 실시예에 있어서, 상기에서 기술(記述)된 순서도에서 쉽사리 생성되는 코딩이 있게 프로그램된 적합한 마이크로프로세서에서 이용될 수 있다.
본 발명은 이러한 발명의 선호되는 실시예에서 기술(記述)되었지만, 이용되었던 단어는 제한 단어라기 보다는 오히려 기술(記述) 단어라는 사실, 그리고 넓은 특징에서 본 발명의 범위와 정신에서 벗어나지 않는 부속된 청구항의 한계 내(內)에서 변화시킬 수 있다는 사실은 충분히 이해할 것이다.

Claims (50)

  1. 스트링(string) 각각은 데이터 문자 신호(data character signal)와 관련이 있는 코드를 가지는데, 데이터 문자 신호의 이러한 스트링을 저장하는 저장 수단(storage means) ;
    미리 결졍된 매치를 완성할 때까지, 스트림(stream)과 저장된 스트링(string)을 문자-대(對)-문자 매치(match)를 실행할 목적으로, 상기 스트림(stream)을 상기 저장된 스트링(string)에 비교하는 것에 의하여, 데이터 문자 신호(data character)의 스트림(stream)을 검색하는 수단 ;
    압축 코드의 상기 스트림을 공급할 목적으로, 상기 미리 결정된 매치와 관련이 있는 코드 신호를 공급하는 수단 ;
    상기 문자-대(對)-문자 매치에 삽입되는데, 확장 스트링(extended string)을 상기 저장 수단으로 들여보내는 수단 - 각각의 데이터 문자 신호가 매치될 때, 각각의 데이터 문자 신호에 의하여 확장되는 마지막으로 공급되는 코드 신호에 대응하는 이전에 매칭된 스트링을 확장 스트링은 포함하고 - ;
    상기 확장 스트링에 각각의 코드를 할당하는 수단 ; 등을 포함하는 것을 특징으로 하는, 데이터 문자(data character)의 스트림을 압축 코드 신호(compressed code signal)의 스트림으로 압축하는 데이터 컴프레션 장치(data compression apparatus).
  2. 제 1 항에 있어서, 상기 각각의 데이터 문자 신호가 매칭될 때, 다음의 데이터 문자 신호가 매칭되기 전(前)에, 들여보내는 상기 수단(said entering means)은 상기 확장된 수단의 하나를 상기 저장 수단으로 들여보내도록 작동시키는 것을 특징으로 하는,데이터 컴프레션 장치(data compression apparatus).
  3. 제 2 항에 있어서, 데이터 문자 신호의 상기 스트림과 상기 저장된 스트링 등의 사이에서 상기 미리 결정된 매치가 가장 긴 매치를 포함하고,
    압축 코드 신호의 상기 스트림을 공급하도록, 출력하는 상기 수단은 상기 가장 긴 매치와 관련이 있는 코드 신호를 공급하도록 작동시키는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  4. 제 3 항에 있어서, 상기 장치는 연속적인 스트링 매칭 사이클(successive string matching cycle)에서 작동하는데,
    각각의 가장 길게 매칭된 스트링은 상기 연속 사이틀에서 결정되고, 현재 사이클은 이전 사이클을 따라가고,
    상기 마지막으로 공급되는 코드 신호가 있는 상기 이전 사이클에서 매칭된 상기 이전에 매칭된 스트링은 상기 이전 사이클에서 공급되고,
    상기 이전에 매칭된 스트링이 있는 상기 현재 사이클에서 일어나는 상기 문자-대(對)-문자 매치는, 상기 현재 사이클 중(中)에 상기 각각의 데이터 문자 신호에 의하여 확장되는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  5. 제 4 항에 있어서, 전체에 대하여 부분 스트링 W 와 데이터 문자 신호 C 가 매칭될 때, P 는 상기 이전에 매칭된 스트링이고 W 는 상기 현재 사이클에서 매칭된 처리 중(中)에 있는데, 스트링 PW 의 확장 문자로써 상기 확장 스트링의 하나는 상기 데이터 문자 신호 C 가 있는 상기 저장 수단으로 들어가게 할 목적으로, 검색하는 상기 수단과 들여보내는 상기 수단 등이 작동되는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  6. 제 4 항에 있어서, 상기 문자-대(對)-문자 매치 중(中)에 데이터 문자 신호가 매칭에 실패할 때, 결정하는 것에 의하여 상기 가장 긴 매칭이 이루어질 때, 결정하도록 상기 검색 수단은 작동하고,
    매칭에 실패한 상기 데이터 문자 신호에서 다음의 스트링 매칭 사이클을 시작하는 수단을 검색 수단은 포함하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  7. 제 1 항에 있어서, 단일 문자 스트링과 관련이 있는 각각의 코드가 있는 모든 단일 문자 스트링에서 상기 저장 수단을 초기화하는 수단을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  8. 제 1 항에 있어서,
    데이터 문자 신호가 출력되는 것에 대한 표시를 따르는 압축이 되지 아니 한 형(型)으로 첫 번째 시간에 대하여 들어오는 데이터 문자 신호를 출력하는 수단 ;
    단일 문자 스트링으로써 상기 저장 수단으로 첫 번째 시간에 대하여 들어오는 상기 데이터 문자 신호를 들여보내는 수단 ; 등을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  9. 제 8 항에 있어서, 상기 표시는 제로 코드(zero code)인 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  10. 제 4 항에 있어서, 상기 스트링은 연결된 트리 구조로써 상기 저장 수단에 저장되고, 데이터 문자 신호의 상기 스트림은 반복하는 문자로 이루어지는 반복하는 문자 스트링을 포함하고,
    반복하는 문자 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 스트링을 압축하도록 상기 장치는 작동하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  11. 제 10 항에 있어서,
    상기 이전에 매칭된 스트링은 상기 반복하는 문자를 포함하고 ;
    검색 수단은 상기 트리를 통하여 경로에서 상기 반복하는 문자 스트링을 매칭하도록 작동시키고 ; 그리고
    상기 들여보내는 수단은 상기 경로에서 상기 확장 스트링을 들여보내도록 작동시키고 ;
    상기에 의하여 상기 반복하는 문자 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 스트링을 압축하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  12. 제 4 항에 있어서, 상기 스트링은 연결된 트리 구조로써 상기 저장 수단에 저장되고, 데이터 문자 신호의 상기 스트림은 반복하는 문자 그룹으로 이루어지는 반복하는 문자 그룹 스트링을 포함하고,
    상기 반복하는 문자 그룹 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 그룹 스트링을 압축하도록 상기 장치는 작동하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  13. 제 12 항에 있어서,
    상기 이전에 매칭된 스트링은 상기 반복하는 문자 그룹을 포함하고 ;
    검색 수단은 상기 트리를 통하여 경로에서 상기 반복하는 문자 그룹 스트링을 매칭하도록 작동시키고 ; 그리고
    상기 들여보내는 수단은 상기 경로에서 상기 확장 스트링을 들여보내도록 작동시키고 ;
    상기에 의하여 상기 반복하는 문자 그룹 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 그룹 스트링을 압축하는 것을 특징으로 하는, 데이터 컴프레션 장치(data compression apparatus).
  14. 데이터 문자의 스트림에 응답하여 데이터 컴프레서에 의하여 공급하는 압축 코드 신호(compressed code signal)의 스트림을 수신하는, 그리고 압축 코드 신호의 상기 스트림에서 데이터 문자 신호의 상기 스트림을 복구하도록 작동시키는 데이터 디컴프레션 장치(data decompression apparatus)에 있어서,
    상기 각각의 스트링은 데이터 문자의 스트링과 관련이 있는 코드 신호를 가지는데, 데이터 문자의 스트링을 저장하는 저장 수단(storage means) ;
    데이터 문자 신호를 복구하도록 상기 현재 수신된 압축 코드 신호에 대응하는 상기 저장 수단에서 스트링을 복구하도록, 현재 수신된 압축 코드 신호가 있는 상기 저장 수단에 접근하는 수단 ;
    순서에 의하여 상기 현재 수신된 압축 코드 신호에 대응하는 상기 복구 스트링의 각각의 데이터 문자에 의하여, 확장되는 이전에 수신된 압축 코드 신호에 대응하는 이전에 복구된 스트링을 포함하는 확장 스트링(extended string)을, 상기 저장 수단으로 들여보내는 수단 ;
    각각의 코드 신호를 상기 확장 스트링으로 할당하는 수단 ;
    인식하지 못 하는 코드에 대응하는 스트링을 들여보낼 때까지, 순서로써 그리고 반복으로써 상기 이전에 복구된 스트링의 각각의 데이터 문자 신호에 의하여 , 확장되는 상기 이전에 수신된 압축 코드 신호에 대응하는 상기 이전에 복구된 스트링을 포함하는, 상기 인식하지 못 하는 압축 코드 신호에 응답하는 또 하나의 확장 스트링(further extended string)을, 상기 저장 수단으로 들여보내는 또 하나의 수단 ;
    상기 또 하나의 확장 스트링에 각각의 코드 신호를 할당하는 수단 ; 그리고
    상기 데이터 문자 신호를 복구하도록, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링의 데이터 문자 신호를 공급하는 수단 ; 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  15. 제 14 항에 있어서, 상기 또 하나의 들여보내는 수단은 추가의 확장 스트링(additional extended string)을 상기 저장 수단으로 들여보내도록 작동시키는데, 추가의 확장 스트링의 넘버가 상기 저장 수단으로 들어올 때까지, 여기서 상기 넘버는 상기 이전에 복구된 스트링을 포함하는 데이터 문자 신호의 넘버에 일치하고, 추가의 확장 스트링은 상기 이전에 복구된 스트링의 데이터 문자 신호에 의하여 확장되는 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링을 포함하고,
    또한, 각각의 코드 신호를 상기 추가의 확장 스트링에 할당하는 수단을 상기 저장 수단을 들여보내도록 상기 또 하나의 들여보내는 수단은 작동하는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  16. 제 15 항에 있어서, 상기 장치는 연속 스트링 복구 사이클에서 작동하는데,
    각각의 스트링은 상기 연속 사이클에서 복구되고, 현재의 사이클은 이전 사이클을 따라가고,
    상기 이전에 복구된 스트링은 상기 이전 사이클에서 수신된 상기 이전에 수신된 압축 코드 신호가 있는 상기 이전 사이클에서 복구되고,
    상기 현재 수신된 압축 코드 신호는 상기 현재 사이클 중(中)에 수신되고, 그리고
    들여보내는 상기 수단은 상기 현재 사이클 중(中)에 상기 저장 수단으로 상기 확장 스트링을 들여보내도록 작동시키는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  17. 제 16 항에 있어서, 상기 인식하지 못 하는 압축 코드 신호는 상기 현재 사이클 중(中)에 수신되고,
    상기 현재 사이클 중(中)에, 상기 또 하나의 들여보내는 수단은 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 상기 저장 수단으로 들여보내도록 작동시키는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  18. 제 14 항에 있어서, 단일 문자 스트링과 관련이 있는 각각의 코드가 있는 모든 단일 문자 스트링으로 상기 저장 수단을 초기화하는 수단을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  19. 제 14 항에 있어서, 압축 코드 신호의 상기 스트림은 데이터 문자 신호를 수신하는 표시를 따르는 압축되지 아니 하는 형(型)으로 이러한 데이터 문자 신호를 포함하는데,
    데이터 문자 신호에 대응하는 압축되지 아니 하는 형(型)으로 상기 데이터 문자 신호는 데이터 문자 신호의 상기 스트림으로 상기 데이터 컴프레서에 의하여 첫 번째 시간에 대하여 들어오는데,
    단일 문자 스트링으로써 상기 저장 수단으로 압축되지 아니 하는 형(型)으로 수신된 상기 데이터 문자 신호를 들여보내는 수단, 그리고
    압축되지 아니 하는 형(型)으로 수신된 상기 데이터 문자 신호를 출력하는 수단 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  20. 제 19 항에 있어서, 상기 표시는 제로 코드(zero code)인 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  21. 제 17 항에 있어서, 데이터 문자 신호의 상기 스트림은 반복하는 문자로 이루어진 반복하는 문자 스트링을 포함하는데, 상기 데이터 컴프레서는 상기 반복하는 문자 스트링을 두 개의 앞뒤 관련 코드 신호로 압축시키도록 작동하고,
    상기 스트링은 연결된 트리 구조에서 상기 저장 수단에 저장되는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  22. 제 21 항에 있어서, 상기 이전에 수신된 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 첫 번째를 포함하고, 상기 인식하지 못 하는 압축 코드 신호는 상기 앞뒤 관련 압축 코드의 두 번째를 포함하고,
    상기 이전에 복구된 스트링은 상기 반복하는 문자를 포함하고, 상기 인식하지 못 하는 압축 코드에 대응하는 상기 스트링은 상기 반복하는 문자 스트링을 포함하고,
    상기 이전에 복구된 스트링은 상기 트리를 통하여 경로에서 저장되고, 그리고
    상기 들여보내는 수단과 상기 또 하나의 들여보내는 수단 등은, 상기 경로에서 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 들여보내도록 작동시키는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  23. 제 17 항에 있어서, 데이터 문자 신호의 상기 스트림은 반복하는 문자 그룹으로 이루어진 반복하는 문자 그룹 스트링을 포함하는데, 상기 데이터 컴프레서는 상기 반복하는 문자 그룹 스트링을 두 개의 앞뒤 관련 압축 코드 신호로 압축시키도록 작동하고,
    상기 스트링은 연결된 트리 구조에서 상기 저장 수단에 저장되는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  24. 제 23 항에 있어서, 상기 이전에 수신된 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 첫 번째를 포함하고, 상기 인식하지 못 하는 압축 코드 신호는 상기 앞뒤 관련 압축 코드의 두 번째를 포함하고,
    상기 이전에 복구된 스트링은 상기 반복하는 문자 그룹을 포함하고, 상기 인식하지 못 하는 압축 코드에 대응하는 상기 스트링은 상기 반복하는 문자 그룹 스트링을 포함하고,
    상기 이전에 복구된 스트링은 상기 트리를 통하여 경로에서 저장되고, 그리고
    상기 들여보내는 수단과 상기 또 하나의 들여보내는 수단 등은, 상기 경로에서 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 들여보내도록 작동시키는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  25. 압축 코드 신호의 스트림에서 데이터 문자 신호의 스트림을 복구하는 데이터 디컴프레션 장치(data decompression apparatus)에 있어서,
    압축 코드 신호의 상기 스트림을 수신하는 수단 ;
    상기 각각의 스트링은 데이터 문자의 스트링과 관련이 있는 코드 신호를 가지는데, 데이터 문자의 스트링을 저장하는 저장 수단(storage means) ;
    데이터 문자 신호를 복구하도록 상기 현재 수신된 압축 코드 신호에 대응하는 상기 저장 수단에서 스트링을 복구하도록, 현재 수신된 압축 코드 신호가 있는 상기 저장 수단에 접근하는 수단 ;
    순서에 의하여 상기 현재 수신된 압축 코드 신호에 대응하는 상기 복구 스트링의 각각의 데이터 문자에 의하여, 확장되는 이전에 수신된 압축 코드 신호에 대응하는 이전에 복구된 스트링을 포함하는 확장 스트링(extended string)을, 상기 저장 수단으로 들여보내는 수단 ;
    상기 저장 수단으로 인식하지 못 하는 압축 코드 신호를 수신하는 것에 응답하여 또 하나의 확장 스트링을 들여보내는 또 하나의 수단 ;
    각각의 코드 신호를 상기 확장 스트링과 상기 또 하나의 확장 스트링 등으로 할당하는 수단 ;
    상기 이전에 복구된 스트링에 따라서 상기 또 하나의 확장 스트링을 생성시키도록 작동되도록 들여보내는 상기 또 하나의 수단 - 데이터 문자 신호는 상기 이전에 복구된 스트링을 포함하고, 상기 인식하지 못 하는 압축 코드 신호와 상기 코드 신호 등은 상기 또 하나의 확장 스트링에 할당되고, 상기 확장 스트링의 하나는 상기 인식하지 못 하는 압축 코드 신호에 대응하는 스트링이고 - ; 그리고
    상기 데이터 문자 신호를 복구하도록, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링의 데이터 문자 신호를 공급하는 수단 ; 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 장치(data decompression apparatus).
  26. 스트링(string) 각각은 데이터 문자 신호(data character)와 관련이 있는 코드를 가지는데, 저장 수단에 데이터 문자 신호의 스트링을 저장하고 ;
    미리 결졍된 매치를 완성할 때까지, 스트림(stream)과 저장된 스트링(string)을 문자-대(對)-문자 매치(match)를 실행할 목적으로, 상기 스트림(stream)을 상기 저장된 스트링(string)에 비교하는 것에 의하여, 데이터 문자 신호(data character)의 스트림(stream)을 검색하고 ;
    압축 코드 신호의 상기 스트림을 공급할 목적으로, 상기 미리 결정된 매치와 관련이 있는 코드를 공급하고 ;
    상기 문자-대(對)-문자 매치에 삽입되는데, 확장 스트링(extended string)을 상기 저장 수단으로 들여보내고 - 각각의 데이터 문자 신호가 매치될 때, 각각의 데이터 문자 신호에 의하여 확장되는 마지막으로 공급되는 코드 신호에 대응하는 이전에 매칭된 스트링을 확장 스트링은 포함하고 - ;
    상기 확장 스트링에 각각의 코드를 할당하는 것 ; 등을 포함하는 것을 특징으로 하는, 데이터 문자 신호(data character)의 스트림을 압축 코드 신호(compressed code)의 스트림으로 압축하는 데이터 컴프레션 방법(data compression method).
  27. 제 26 항에 있어서, 상기 각각의 데이터 문자 신호가 매칭될 때, 다음의 데이터 문자 신호가 매칭되기 전(前)에, 들여보내는 상기 단계(said entering step)은 상기 확장된 수단의 하나를 상기 저장 수단으로 들여보내도록 작동시키는 것을 특징으로 하는,데이터 컴프레션 방법(data compression method).
  28. 제 27 항에 있어서, 데이터 문자 신호의 상기 스트림과 상기 저장된 스트링 등의 사이에서 상기 미리 결정된 매치가 가장 긴 매치를 포함하고,
    압축 코드 신호의 상기 스트림을 공급하도록, 출력하는 상기 단계는 상기 가장 긴 매치와 관련이 있는 코드를 공급하는 것을 포함하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  29. 제 28 항에 있어서, 상기 방법은 연속적인 스트링 매칭 사이클(successive string matching cycle)에서 작동하는데,
    각각의 가장 길게 매칭된 스트링은 상기 연속 사이틀에서 결정되고, 현재 사이클은 이전 사이클을 따라가고,
    상기 마지막으로 공급되는 코드가 있는 상기 이전 사이클에서 매칭된 상기 이전에 매칭된 스트링은 상기 이전 사이클에서 공급되고,
    상기 이전에 매칭된 스트링이 있는 상기 현재 사이클에서 일어나는 상기 문자-대(對)-문자 매치는, 상기 현재 사이클 중(中)에 상기 각각의 데이터 문자 신호에 의하여 확장되는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  30. 제 29 항에 있어서, 전체에 대하여 부분 스트링 W 와 데이터 문자 신호 C 가 매칭될 때, P 는 상기 이전에 매칭된 스트링이고 W 는 상기 현재 사이클에서 매칭된 처리 중(中)에 있는데, 스트링 PW 의 확장 문자로써 상기 확장 스트링의 하나는 상기 데이터 문자 신호 C 가 있는 상기 저장 수단으로 들어가게 할 목적으로, 검색하는 상기 단계와 들여보내는 상기 단계 등이 작동되는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  31. 제 29 항에 있어서, 상기 문자-대(對)-문자 매치 중(中)에 데이터 문자 신호가 매칭에 실패할 때, 결정하는 것에 의하여 상기 가장 긴 매칭이 이루어질 때, 결정하는 것을 포함하고,
    매칭에 실패한 상기 데이터 문자 신호에서 다음의 스트링 매칭 사이클을 시작하는 것을 검색 단계는 포함하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  32. 제 26 항에 있어서, 단일 문자 스트링과 관련이 있는 각각의 코드가 있는 모든 단일 문자 스트링에서 상기 저장 수단을 초기화하는 것을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  33. 제 26 항에 있어서,
    데이터 문자 신호가 출력되는 것에 대한 표시를 따르는 압축이 되지 아니 한 형(型)으로 첫 번째 시간에 대하여 들어오는 데이터 문자 신호를 출력하고 ; 그리고
    단일 문자 스트링으로써 상기 저장 수단으로 첫 번째 시간에 대하여 들어오는 상기 데이터 문자 신호를 들여보내는 것 ; 등을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  34. 제 33 항에 있어서, 상기 표시는 제로 코드(zero code)인 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  35. 제 29 항에 있어서, 상기 저장 단계는 상기 스트링을 연결된 트리 구조로써 상기 저장 수단에 저장하고,
    데이터 문자 신호의 상기 스트림은 반복하는 문자로 이루어진 반복하는 문자 스트링을 포함하고,
    반복하는 문자 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 스트링을 상기 방법은 압축하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  36. 제 35 항에 있어서,
    상기 이전에 매칭된 스트링은 상기 반복하는 문자를 포함하고 ;
    상기 검색 단계는 상기 트리를 통하여 경로에서 상기 반복하는 문자 스트링을 매칭하는 것을 포함하고 ; 그리고
    상기 들여보내는 단계는 상기 경로에서 상기 확장 스트링을 들여보내는 것을 포함하고 ;
    상기에 의하여 상기 반복하는 문자 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 스트링을 압축하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  37. 제 29 항에 있어서, 상기 저장 단계는 연결된 트리 구조로써 상기 저장 수단에 상기 스트링을 저장하는 것을 포함하고,
    상기 문장의 상기 스트림은 반복하는 문자 그룹으로 이루어지는 반복하는 문자 그룹 스트링을 포함하고,
    상기 반복하는 문자 그룹 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 그룹 스트링을 상기 방법은 압축하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  38. 제 37 항에 있어서,
    상기 이전에 매칭된 스트링은 상기 반복하는 문자 그룹을 포함하고 ;
    상기 검색 단계는 상기 트리를 통하여 경로에서 상기 반복하는 문자 그룹 스트링을 매칭하는 것을 포함하고 ; 그리고
    상기 들여보내는 단계는 상기 경로에서 상기 확장 스트링을 들여보내는 것을 포함하고 ;
    상기에 의하여 상기 반복하는 문자 그룹 스트링의 길이에 관계없이 두 개의 압축 코드 신호로써 상기 반복하는 문자 그룹 스트링을 압축하는 것을 특징으로 하는, 데이터 컴프레션 방법(data compression method).
  39. 데이터 문자 신호의 스트림에 응답하여 데이터 컴프레서에 의하여 공급하는 압축 코드 신호(compressed code signal)의 스트림을 수신하는, 그리고 압축 코드 신호의 상기 스트림에서 데이터 문자 신호의 상기 스트림을 복구하도록 작동시키는 데이터 디컴프레션 방법(data decompression method)에 있어서,
    상기 각각의 스트링은 데이터 문자 신호의 스트링과 관련이 있는 코드 신호를 가지는데, 데이터 문자 신호의 스트링을 저장 수단(storage means)에 저장하고 ;
    현재 수신된 압축 코드 신호의 데이터 문자 신호를 복구하도록 상기 현재 수신된 압축 코드 신호에 대응하는 상기 저장 수단에서 스트링을 복구하도록, 현재 수신된 압축 코드 신호가 있는 상기 저장 수단에 접근하고 ;
    순서에 의하여 상기 현재 수신된 압축 코드 신호에 대응하는 상기 복구 스트링의 각각의 데이터 문자 신호에 의하여, 확장되는 이전에 수신된 압축 코드 신호에 대응하는 이전에 복구된 스트링을 포함하는 확장 스트링(extended string)을, 상기 저장 수단으로 들여보내고 ;
    각각의 코드를 상기 확장 스트링으로 할당하고 ;
    인식하지 못 하는 코드에 대응하는 스트링을 들여보낼 때까지, 순서로써 그리고 반복으로써 상기 이전에 복구된 스트링의 각각의 데이터 문자 신호에 의하여 , 확장되는 상기 이전에 수신된 압축 코드 신호에 대응하는 상기 이전에 복구된 스트링을 포함하는, 상기 인식하지 못 하는 압축 코드 신호에 응답하는 또 하나의 확장 스트링(further extended string)을, 상기 저장 수단으로 들여보내는 또 하나의 수단 ;
    상기 또 하나의 확장 스트링에 각각의 코드를 할당하고 ; 그리고
    상기 데이터 문자 신호를 복구하도록, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링의 데이터 문자 신호를 공급하는 것 ; 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법들여보내는 상기 단계(data decompression method).
  40. 제 39 항에 있어서, 상기 또 하나의 들여보내는 단계는 추가의 확장 스트링(additional extended string)을 상기 저장 수단으로 들여보내고, 추가의 확장 스트링의 넘버가 상기 저장 수단으로 들어올 때까지, 여기서 상기 넘버는 상기 이전에 복구된 스트링을 포함하는 데이터 문자 신호의 넘버에 일치하고, 추가의 확장 스트링은 상기 이전에 복구된 스트링의 데이터 문자 신호에 의하여 확장되는 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링을 포함하고,
    또한, 각각의 코드를 상기 추가의 확장 스트링에 할당하는 것을 상기 또 하나의 들여보내는 단계는 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  41. 제 40 항에 있어서, 상기 방법은 연속 스트링 복구 사이클에서 작동하는데,
    각각의 스트링은 상기 연속 사이클에서 복구되고, 현재의 사이클은 이전 사이클을 따라가고,
    상기 이전에 복구된 스트링은 상기 이전 사이클에서 수신된 상기 이전에 수신된 압축 코드 신호가 있는 상기 이전 사이클에서 복구되고,
    상기 현재 수신된 압축 코드 신호는 상기 현재 사이클 중(中)에 수신되고, 그리고
    들여보내는 상기 단계는 상기 현재 사이클 중(中)에 상기 저장 수단으로 상기 확장 스트링을 들여보내는 것을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  42. 제 41 항에 있어서, 상기 인식하지 못 하는 압축 코드 신호는 상기 현재 사이클 중(中)에 수신되고,
    상기 현재 사이클 중(中)에, 상기 또 하나의 들여보내는 단계는 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  43. 제 39 항에 있어서, 단일 문자 스트링과 관련이 있는 각각의 코드가 있는 모든 단일 문자 스트링으로 상기 저장 수단을 초기화하는 것을 덧붙여서 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  44. 제 39 항에 있어서, 압축 코드 신호의 상기 스트림은 데이터 문자 신호를 수신하는 표시를 따르는 압축되지 아니 하는 형(型)으로 이러한 데이터 문자 신호를 포함하는데,
    데이터 문자 신호에 대응하는 압축되지 아니 하는 형(型)으로 상기 데이터 문자 신호는 데이터 문자 신호의 상기 스트림으로 상기 데이터 컴프레서에 의하여 첫 번째 시간에 대하여 들어오는데,
    단일 문자 스트링으로써 상기 저장 수단으로 압축되지 아니 하는 형(型)으로 수신된 상기 데이터 문자 신호를 들여보내고, 그리고
    압축되지 아니 하는 형(型)으로 수신된 상기 데이터 문자 신호를 출력하는 것 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  45. 제 44 항에 있어서, 상기 표시는 제로 코드(zero code)인 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  46. 제 42 항에 있어서, 데이터 문자 신호의 상기 스트림은 반복하는 문자로 이루어진 반복하는 문자 스트링을 포함하는데, 상기 데이터 컴프레서는 상기 반복하는 문자 스트링을 두 개의 앞뒤 관련 코드로 압축시키고,
    상기 저장 단계는 상기 스트링은 연결된 트리 구조에서 상기 저장 수단에 저장되는 것을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  47. 제 46 항에 있어서, 상기 이전에 수신된 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 첫 번째를 포함하고, 상기 인식하지 못 하는 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 두 번째를 포함하고,
    상기 이전에 복구된 스트링은 상기 반복하는 문자를 포함하고, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링은 상기 반복하는 문자 스트링을 포함하고,
    상기 이전에 복구된 스트링은 상기 트리를 통하여 경로에서 저장되고, 그리고
    상기 들여보내는 단계와 상기 또 하나의 들여보내는 단계 등은, 상기 경로에서 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 들여보내는 것을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  48. 제 42 항에 있어서, 데이터 문자 신호의 상기 스트림은 반복하는 문자 그룹으로 이루어진 반복하는 문자 그룹 스트링을 포함하는데, 상기 데이터 컴프레서는 상기 반복하는 문자 그룹 스트링을 두 개의 앞뒤 관련 코드로 압축시키고,
    상기 저장 단계는 상기 스트링을 연결된 트리 구조에서 상기 저장 수단에 저장하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  49. 제 48 항에 있어서, 상기 이전에 수신된 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 첫 번째를 포함하고, 상기 인식하지 못 하는 압축 코드 신호는 상기 앞뒤 관련 압축 코드 신호의 두 번째를 포함하고,
    상기 이전에 복구된 스트링은 상기 반복하는 문자 그룹을 포함하고, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링은 상기 반복하는 문자 그룹 스트링을 포함하고,
    상기 이전에 복구된 스트링은 상기 트리를 통하여 경로에서 저장되고, 그리고
    상기 들여보내는 단계와 상기 또 하나의 들여보내는 단계 등은, 상기 경로에서 상기 또 하나의 확장 스트링과 상기 추가의 확장 스트링 등을 들여보내는 것을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
  50. 압축 코드 신호의 스트림에서 데이터 문자 신호의 스트림을 복구하는 데이터 디컴프레션 방법(data decompression method)에 있어서,
    압축 코드 신호의 상기 스트림을 수신하고 ;
    상기 각각의 스트링은 데이터 문자의 스트링과 관련이 있는 코드 신호를 가지는데, 데이터 문자의 스트링을 저장 수단(storage means)에 저장하고 ;
    데이터 문자 신호를 복구하도록 상기 현재 수신된 압축 코드 신호에 대응하는 상기 저장 수단에서 스트링을 복구하도록, 현재 수신된 압축 코드 신호가 있는 상기 저장 수단에 접근하고 ;
    순서에 의하여 상기 현재 수신된 압축 코드 신호에 대응하는 상기 복구 스트링의 각각의 데이터 문자에 의하여, 확장되는 이전에 수신된 압축 코드 신호에 대응하는 이전에 복구된 스트링을 포함하는 확장 스트링(extended string)을, 상기 저장 수단으로 들여보내고 ;
    상기 저장 수단으로 인식하지 못 하는 압축 코드 신호를 수신하는 것에 응답하여 또 하나의 확장 스트링을 또 하나 들여보내고 ;
    각각의 코드 신호를 상기 확장 스트링과 상기 또 하나의 확장 스트링 등으로 할당하고 ;
    상기 들여보내는 또 하나의 단계는
    상기 이전에 복구된 스트링에 따라서 상기 또 하나의 확장 스트링을 생성시키는 것을 포함하고 - 데이터 문자 신호는 상기 이전에 복구된 스트링을 포함하고, 상기 인식하지 못 하는 압축 코드 신호와 상기 코드 신호 등은 상기 또 하나의 확장 스트링에 할당되고, 상기 확장 스트링의 하나는 상기 인식하지 못 하는 압축 코드 신호에 대응하는 스트링이고 - ; 그리고
    상기 데이터 문자 신호를 복구하도록, 상기 인식하지 못 하는 압축 코드 신호에 대응하는 상기 스트링의 데이터 문자 신호를 공급하는 것 ; 등을 포함하는 것을 특징으로 하는, 데이터 디컴프레션 방법(data decompression method).
KR1019997000596A 1996-07-24 1997-07-23 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터 KR100332709B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US2309496P 1996-07-24 1996-07-24
US60/023,094 1996-07-24
US08/753,871 US5861827A (en) 1996-07-24 1996-12-03 Data compression and decompression system with immediate dictionary updating interleaved with string search
US8/753,871 1996-12-03
US08/753,871 1996-12-03

Publications (2)

Publication Number Publication Date
KR20000068018A true KR20000068018A (ko) 2000-11-25
KR100332709B1 KR100332709B1 (ko) 2002-04-15

Family

ID=26696720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997000596A KR100332709B1 (ko) 1996-07-24 1997-07-23 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터

Country Status (10)

Country Link
US (2) US5861827A (ko)
EP (1) EP0914718B1 (ko)
JP (1) JP3298894B2 (ko)
KR (1) KR100332709B1 (ko)
CN (1) CN1145264C (ko)
AT (1) ATE199997T1 (ko)
AU (1) AU718366B2 (ko)
CA (1) CA2260883C (ko)
DE (1) DE69704362T2 (ko)
WO (1) WO1998004045A1 (ko)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999949A (en) * 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
JP3421700B2 (ja) * 1998-01-22 2003-06-30 富士通株式会社 データ圧縮装置及び復元装置並びにその方法
US6757647B1 (en) * 1998-07-30 2004-06-29 International Business Machines Corporation Method for encoding regular expressions in a lexigon
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
US6456209B1 (en) * 1998-12-01 2002-09-24 Lucent Technologies Inc. Method and apparatus for deriving a plurally parsable data compression dictionary
US6166665A (en) 1999-03-08 2000-12-26 Unisys Corporation Data compression method and apparatus with embedded run-length encoding
US6137428A (en) * 1999-04-27 2000-10-24 Unisys Corporation Data compression method and apparatus with embedded run-length encoding using mathematical run processing
US6169499B1 (en) 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6188333B1 (en) * 1999-08-12 2001-02-13 Unisys Corporation LZW data compression apparatus and method using look-ahead mathematical run processing
US6404362B1 (en) 1999-09-21 2002-06-11 Unisys Corporation Method and apparatus for reducing the time required for decompressing compressed data
US6535886B1 (en) * 1999-10-18 2003-03-18 Sony Corporation Method to compress linguistic structures
GB0001707D0 (en) 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
GB0001711D0 (en) * 2000-01-25 2000-03-15 Btg Int Ltd Data compression having improved compression speed
US6307488B1 (en) * 2000-05-04 2001-10-23 Unisys Corporation LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses
GB2367917A (en) * 2000-10-12 2002-04-17 Qas Systems Ltd Retrieving data representing a postal address from a database of postal addresses using a trie structure
US6985965B2 (en) * 2000-11-16 2006-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Static information knowledge used with binary compression methods
AR042582A1 (es) * 2000-11-16 2005-06-29 Ericsson Telefon Ab L M Sistema y metodo de comunicaciones que utilizan formas de comunicacion de peticion - repuesta para la compresion de los datos
US6359574B1 (en) * 2001-01-22 2002-03-19 Proxell Systems Ltd. Method for identifying longest common substrings
GB0102572D0 (en) * 2001-02-01 2001-03-21 Btg Int Ltd Apparatus to provide fast data compression
US20020138654A1 (en) * 2001-03-21 2002-09-26 Zhigang Liu Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages
US20030088537A1 (en) * 2001-08-08 2003-05-08 Nec Eluminant Technologies, Inc. High speed data compression and decompression apparatus and method
US6653950B2 (en) * 2001-09-13 2003-11-25 Unisys Corporation Data compression method and apparatus utilizing cascaded subdictionaries
US20030084031A1 (en) * 2001-10-31 2003-05-01 Tarquini Richard P. System and method for searching a signature set for a target signature
FI114051B (fi) * 2001-11-12 2004-07-30 Nokia Corp Menetelmä sanakirjatiedon kompressoimiseksi
US6466144B1 (en) * 2001-11-30 2002-10-15 Unisys Corporation Data decompressor for use with a data compressor implemented with limited length character tables and compact string codes
US7370120B2 (en) * 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
US6657564B2 (en) * 2001-12-13 2003-12-02 International Business Machines Corporation Method and apparatus for compressing data in which dictionary sizes are reduced
US6614368B1 (en) * 2002-01-16 2003-09-02 Unisys Corporation Data compression method and apparatus utilizing cascaded character tables
US6628211B1 (en) 2002-03-19 2003-09-30 Unisys Corporation Prefix table implemented data compression method and apparatus
KR100532275B1 (ko) * 2002-12-11 2005-11-29 삼성전자주식회사 이미지 압축방법
GB2400291A (en) * 2003-04-05 2004-10-06 Autodesk Canada Inc Image processing using switch nodes
US6756923B1 (en) * 2003-05-30 2004-06-29 Unisys Corporation Data compressor utilizing switched input coincidence elements arranged in virtual levels
FR2867337B1 (fr) * 2004-03-08 2006-05-12 Medialive Procede et systeme de distribution securisee de textes numeriques compresses
US9171100B2 (en) * 2004-09-22 2015-10-27 Primo M. Pettovello MTree an XPath multi-axis structure threaded index
CN101095284B (zh) * 2004-12-28 2012-04-18 卡西欧电子工业株式会社 用于有选择地压缩和解压缩数据的设备与方法
US8175889B1 (en) 2005-04-06 2012-05-08 Experian Information Solutions, Inc. Systems and methods for tracking changes of address based on service disconnect/connect data
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US7102552B1 (en) * 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US7167115B1 (en) 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US7664742B2 (en) 2005-11-14 2010-02-16 Pettovello Primo M Index data structure for a peer-to-peer network
CN1928850B (zh) * 2006-08-11 2011-04-13 白杰 基于数据字典的数据压缩方法、装置
US8005759B2 (en) 2006-08-17 2011-08-23 Experian Information Solutions, Inc. System and method for providing a score for a used vehicle
US7912865B2 (en) 2006-09-26 2011-03-22 Experian Marketing Solutions, Inc. System and method for linking multiple entities in a business database
US8036979B1 (en) 2006-10-05 2011-10-11 Experian Information Solutions, Inc. System and method for generating a finance attribute from tradeline data
US8606666B1 (en) 2007-01-31 2013-12-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
WO2008127288A1 (en) 2007-04-12 2008-10-23 Experian Information Solutions, Inc. Systems and methods for determining thin-file records and determining thin-file risk levels
US20080294540A1 (en) 2007-05-25 2008-11-27 Celka Christopher J System and method for automated detection of never-pay data sets
US8301574B2 (en) 2007-09-17 2012-10-30 Experian Marketing Solutions, Inc. Multimedia engagement study
US9690820B1 (en) 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
US8078454B2 (en) * 2007-09-28 2011-12-13 Microsoft Corporation Two-pass hash extraction of text strings
US7612692B2 (en) * 2008-02-27 2009-11-03 Red Hat, Inc. Bidirectional context model for adaptive compression
US7538697B1 (en) * 2008-02-27 2009-05-26 Red Hat, Inc. Heuristic modeling of adaptive compression escape sequence
US7612693B2 (en) * 2008-02-27 2009-11-03 Red Hal, Inc. Difference coding adaptive context model
US7868788B2 (en) * 2008-06-17 2011-01-11 The Hong Kong University Of Science And Technology System and method for encoding data based on a compression technique with security features
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US7991689B1 (en) 2008-07-23 2011-08-02 Experian Information Solutions, Inc. Systems and methods for detecting bust out fraud using credit data
US8108361B2 (en) * 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
US8549483B1 (en) 2009-01-22 2013-10-01 Intuit Inc. Engine for scalable software testing
US8212695B2 (en) * 2009-02-05 2012-07-03 Polytechnic Institute Of New York University Generating a log-log hash-based hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings
US7868792B2 (en) * 2009-02-05 2011-01-11 Polytechnic Institute Of New York University Generating a boundary hash-based hierarchical data structure associated with a plurality of known arbitrary-length bit strings and using the generated hierarchical data structure for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit springs
US9160611B2 (en) * 2009-04-22 2015-10-13 Webroot Inc. System and method for performing longest common prefix strings searches
US7868789B1 (en) * 2009-06-28 2011-01-11 Sap Ag Dictionary-based order-preserving string compression for main memory column stores
US20100332292A1 (en) 2009-06-30 2010-12-30 Experian Information Solutions, Inc. System and method for evaluating vehicle purchase loyalty
US8364518B1 (en) 2009-07-08 2013-01-29 Experian Ltd. Systems and methods for forecasting household economics
US8631028B1 (en) 2009-10-29 2014-01-14 Primo M. Pettovello XPath query processing improvements
US8725613B1 (en) 2010-04-27 2014-05-13 Experian Information Solutions, Inc. Systems and methods for early account score and notification
US9152727B1 (en) 2010-08-23 2015-10-06 Experian Marketing Solutions, Inc. Systems and methods for processing consumer information for targeted marketing applications
US8639616B1 (en) 2010-10-01 2014-01-28 Experian Information Solutions, Inc. Business to contact linkage system
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US9483606B1 (en) 2011-07-08 2016-11-01 Consumerinfo.Com, Inc. Lifescore
AU2012281182B2 (en) 2011-07-12 2015-07-09 Experian Information Solutions, Inc. Systems and methods for a large-scale credit data processing architecture
US8538686B2 (en) * 2011-09-09 2013-09-17 Microsoft Corporation Transport-dependent prediction of destinations
WO2013048531A1 (en) * 2011-10-01 2013-04-04 Intel Corporation Compression format for high bandwidth dictionary compression
US9853959B1 (en) 2012-05-07 2017-12-26 Consumerinfo.Com, Inc. Storage and maintenance of personal data
WO2014097359A1 (ja) * 2012-12-19 2014-06-26 富士通株式会社 圧縮プログラム、圧縮方法、圧縮装置およびシステム
US8704686B1 (en) * 2013-01-03 2014-04-22 International Business Machines Corporation High bandwidth compression to encoded data streams
US9087070B2 (en) * 2013-01-31 2015-07-21 Yahoo! Inc. System and method for applying an efficient data compression scheme to URL parameters
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
CN103326732B (zh) * 2013-05-10 2016-12-28 华为技术有限公司 压缩数据的方法、解压数据的方法、编码器和解码器
US9479194B2 (en) * 2013-08-09 2016-10-25 Hitachi, Ltd. Data compression apparatus and data decompression apparatus
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
US9576030B1 (en) 2014-05-07 2017-02-21 Consumerinfo.Com, Inc. Keeping up with the joneses
US9300322B2 (en) * 2014-06-20 2016-03-29 Oracle International Corporation Encoding of plain ASCII data streams
US10445152B1 (en) 2014-12-19 2019-10-15 Experian Information Solutions, Inc. Systems and methods for dynamic report generation based on automatic modeling of complex data structures
CN105893337B (zh) * 2015-01-04 2020-07-10 伊姆西Ip控股有限责任公司 用于文本压缩和解压缩的方法和设备
CN106375177A (zh) * 2015-07-21 2017-02-01 中兴通讯股份有限公司 消息传输方法和装置
KR101723804B1 (ko) 2015-09-11 2017-04-18 한국과학기술연구원 힘센서 및 이의 제조방법
JP6296044B2 (ja) * 2015-12-07 2018-03-20 富士通株式会社 符号処理のためのプログラム及びデータ構造
US10678894B2 (en) 2016-08-24 2020-06-09 Experian Information Solutions, Inc. Disambiguation and authentication of device users
CN110383319B (zh) 2017-01-31 2023-05-26 益百利信息解决方案公司 大规模异构数据摄取和用户解析
US10097201B1 (en) * 2017-11-30 2018-10-09 Intel Corporation LZ77 compression of data with data runs
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
CN109802685B (zh) * 2019-01-30 2022-12-27 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置
CN109921799B (zh) * 2019-02-20 2023-03-31 重庆邮电大学 一种基于聚能量字典学习的张量压缩方法
US11139827B2 (en) 2019-03-15 2021-10-05 Samsung Electronics Co., Ltd. Conditional transcoding for encoded data
TWI825305B (zh) * 2019-04-16 2023-12-11 南韓商三星電子股份有限公司 轉換編碼器及進行轉換編碼的方法及製品
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
KR102149778B1 (ko) 2019-11-28 2020-09-01 김승식 관절 테이핑 보호대 및 그 제조방법
US11366735B2 (en) 2020-08-20 2022-06-21 Bank Of America Corporation Dynamic data storage management
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
GB8828796D0 (en) * 1988-12-09 1989-01-18 British Telecomm Data compression
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets

Also Published As

Publication number Publication date
DE69704362T2 (de) 2001-08-09
JP3298894B2 (ja) 2002-07-08
AU718366B2 (en) 2000-04-13
CA2260883C (en) 2002-06-04
WO1998004045A1 (en) 1998-01-29
DE69704362D1 (de) 2001-04-26
CN1228887A (zh) 1999-09-15
CN1145264C (zh) 2004-04-07
AU3737897A (en) 1998-02-10
CA2260883A1 (en) 1998-01-29
US5861827A (en) 1999-01-19
US6121901A (en) 2000-09-19
EP0914718B1 (en) 2001-03-21
EP0914718A1 (en) 1999-05-12
JP2000505968A (ja) 2000-05-16
KR100332709B1 (ko) 2002-04-15
ATE199997T1 (de) 2001-04-15

Similar Documents

Publication Publication Date Title
KR100332709B1 (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
US5229768A (en) Adaptive data compression system
US5485526A (en) Memory circuit for lossless data compression/decompression dictionary storage
JP2581903B2 (ja) バイト整列式データ圧縮方法及び装置
EP0490964B1 (en) Improved data compression apparatus
US5893102A (en) Textual database management, storage and retrieval system utilizing word-oriented, dictionary-based data compression/decompression
US6570511B1 (en) Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US6614368B1 (en) Data compression method and apparatus utilizing cascaded character tables
EP0691628A2 (en) Data compression method and system
US6400286B1 (en) Data compression method and apparatus implemented with limited length character tables
US6392568B1 (en) Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings
US6426711B1 (en) Character table implemented data compression method and apparatus
US6834283B1 (en) Data compression/decompression apparatus using additional code and method thereof
KR960024895A (ko) 데이타 압축해제 방법, 데이타 압축 방법 및 메모리의 양을 감소시키는 방법
US6628211B1 (en) Prefix table implemented data compression method and apparatus
RU2190295C2 (ru) Система уплотнения и разуплотнения данных с непосредственным обновлением каталога, которое чередуют с поиском строк
JP2729416B2 (ja) テキストデータの復元方法
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP2001044850A (ja) データ圧縮方法、データ復元方法及び情報処理装置
EP0871295B1 (en) Method and apparatus for compression and decompression of data
JP3130324B2 (ja) データ圧縮方式
KR100481204B1 (ko) 데이터 문자의 입력 스트림을 코드의 출력 스트림으로 압축시키기 위한 데이터 압축 방법 및 장치
US6653950B2 (en) Data compression method and apparatus utilizing cascaded subdictionaries
Klein et al. Parallel Lempel Ziv Coding
US6608570B1 (en) Matrix implemented data compression apparatus and method

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
FPAY Annual fee payment

Payment date: 20090401

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee