중화사전망 - 자전 검색 - LZW 알고리즘 소개

LZW 알고리즘 소개

문자열과 코드의 대응 관계는 압축 중 동적으로 생성되며 압축된 데이터에 숨겨져 있습니다. 압축을 풀 때 표에 따라 복구하는 것은 무손실 압축이라고 할 수 있다.

렌펠-지프 웰치 코드 (LZW) 의 압축 알고리즘에 따르면 어떤 언어로도 구현할 수 있습니다.

LZW 압축 알고리즘의 기본 개념: LZW 압축에는 CharStream, CodeStream 및 컴파일 테이블의 세 가지 중요한 객체가 있습니다. 인코딩할 때 데이터 흐름은 입력 객체 (텍스트 파일의 데이터 시퀀스) 이고 인코딩된 스트림은 출력 객체 (압축 작업 후 인코딩된 데이터) 입니다. 디코딩할 때 인코딩 스트림은 입력 객체이고 데이터 스트림은 출력 객체입니다. 컴파일 테이블은 인코딩과 디코딩 모두에 필요한 객체입니다.

문자: 텍스트 파일의 바이트인 가장 기본적인 데이터 요소로, 그리드 데이터에 지정된 색상 리스트의 픽셀 색상에 대한 인덱스 값입니다.

문자열: 여러 개의 연속 문자로 구성됩니다.

접두어: 문자열이기도 하지만 일반적으로 다른 문자 앞에 사용되기 전에 길이는 0 이 될 수 있습니다.

루트: 길이 문자열;

코드: 테이블의 매핑된 값을 컴파일하기 위해 고정 길이 (코드 길이) 로 인코딩 스트림에서 가져온 숫자입니다. Pattern: 길이가 정해지지 않은 데이터 스트림에서 읽어 컴파일된 테이블 항목에 매핑하는 문자열입니다.

LZW 압축 알고리즘의 기본 원칙은 원본 텍스트 파일 데이터에서 다른 문자를 추출하고, 이러한 문자를 기반으로 컴파일된 테이블을 만든 다음, 원본 텍스트 파일 데이터의 해당 문자를 컴파일된 테이블의 문자 인덱스로 대체하여 원본 데이터의 크기를 줄이는 것입니다. 팔레트 이미지의 구현 원리와 비슷해 보이지만 여기서 컴파일된 테이블은 미리 만들어진 것이 아니라 원본 파일 데이터를 기반으로 동적으로 만들어졌으며 디코딩할 때 인코딩된 데이터에서 원래 컴파일된 테이블을 복원해야 한다는 점에 유의해야 합니다.