lzw 압축 예제

또한 코드 테이블을 지우고 초기 상태로 복원해야 함을 나타내는 코드 예약(일반적으로 개별 알파벳 문자의 값 바로 다음의 첫 번째 값)과 나타내는 코드 예약이 포함됩니다. 데이터의 끝(일반적으로 clear 코드보다 큰 “중지 코드”) clear code를 사용하면 테이블이 채워진 후 테이블을 다시 초기화할 수 있으므로 인코딩이 입력 데이터의 변경 패턴에 맞게 조정할 수 있습니다. 스마트 인코더는 압축 효율을 모니터링하고 기존 테이블이 더 이상 입력과 잘 일치하지 않는 때마다 테이블을 지울 수 있습니다. 압축 기술의 두 가지 범주가 있습니다, 손실과 무손실. 각각 다른 기술을 사용하여 파일을 압축하는 동안 둘 다 그래픽(LZW의 경우 GIF)에서 중복 데이터를 찾고 훨씬 더 컴팩트한 데이터 표현을 사용하는 것과 같은 목표를 가지고 있습니다. 무손실 압축은 통계적 중복성을 식별하고 제거하여 비트를 줄입니다. 무손실 압축으로 정보가 손실되지 않습니다. 반면에 손실 압축은 불필요하거나 덜 중요한 정보를 제거하여 비트를 줄입니다. 그래서 우리는 주로 데이터 압축이 필요하기 때문에 : 다른 (우아한) 코드는 하스켈 위키 장난감 압축 LZW에서 찾을 수 있습니다 1986 주위에 유닉스 시스템에서 다소 표준 유틸리티가되었다 공공 도메인 프로그램 압축에 사용되었다. 그것은 이후 많은 배포에서 사라졌다, 모두 LZW 특허를 침해 하 고 gzip LZ77 기반 DEFLATE 알고리즘을 사용 하 여 더 나은 압축 비율을 생산 하기 때문에, 하지만 2008 년 현재 FreeBSD의 일환으로 압축 및 비압축 을 모두 포함 분포를 참조하십시오. 다른 여러 인기있는 압축 유틸리티는 LZW 또는 밀접하게 관련된 방법을 사용했다.

작동 방식은 다음과 같습니다. LZW 디코더는 먼저 인덱스(정수)로 읽고, 사전에서 인덱스를 찾으며, 인덱스와 관련된 하위 문자열을 출력합니다. 이 하위 문자열의 첫 번째 문자는 현재 작업 문자열에 연결됩니다. 이 새 연결은 사전에 추가됩니다(압축 중에 하위 문자열이 추가된 방법을 다시 시뮬레이션). 디코딩된 문자열은 현재 작업 문자열(현재 인덱스, 즉 하위 문자열이 기억됨)이 되고 프로세스가 반복됩니다. Welch의 1984년 용지[1]에서 설명하는 시나리오는 8비트 데이터의 시퀀스를 고정 길이 12비트 코드로 인코딩합니다. 0에서 255까지의 코드는 해당 8비트 문자로 구성된 1자 시퀀스를 나타내며, 코드 256~4095는 인코딩될 때 데이터에서 발생하는 시퀀스에 대한 사전에서 만들어집니다. 압축의 각 단계에서 입력 바이트는 다음 문자가 사전에 아직 코드가 없는 시퀀스를 만들 때까지 시퀀스로 수집됩니다. 시퀀스의 코드(해당 문자 가 없는)가 출력에 추가되고 해당 문자가 있는 시퀀스에 대한 새 코드가 사전에 추가됩니다. LZW 압축은 일련의 기호를 읽고, 기호를 문자열로 그룹화하고, 문자열을 코드로 변환하여 작동합니다.