현재 위치 - 법률 상담 무료 플랫폼 - 특허 조회 - LZW 알고리즘 문제
LZW 알고리즘 문제
LZW 알고리즘의 전체 이름은 렌펠-지프-웰치 코드이며 데이터 압축 알고리즘입니다. 그것은 특허를 가지고 있지만, 대부분의 특허는 기한이 지났다. 텍스트를 간단히 압축할 수 있으며, 압축비는 여전히 일반 상황에 적용됩니다. 또한 GIF 사진은 더 많이 사용됩니다.

LZW 알고리즘에는 문자, 문자열 및 인코딩 테이블과 같은 몇 가지 중요한 개념이 있습니다. 데이터 스트림을 문자 시퀀스로 보고, 문자 시퀀스를 일련의 문자열로 구성하고, 각 문자열에 코드를 제공하고, 마지막으로 문자열의 코드를 저장하여 공간을 절약합니다. 예를 들어 ababba 는 코드 1532 로, 1523 은 12bit 로 표현할 수 있어 원래 5*8bit 보다 많은 공간을 절약할 수 있습니다. LZW 의 인코딩 테이블은 동적으로 생성되며 인코딩된 데이터 스트림에서 동일한 인코딩 테이블을 복구할 수 있으므로 데이터를 저장하고 전송할 때 원본 인코딩 테이블을 저장할 필요가 없습니다. 이는 인코딩 전에 고정 인코딩 테이블이 있는 알고리즘과는 매우 다릅니다.

1. 인코딩 프로세스:

LZW 는 고정 길이 인코딩 알고리즘입니다. 즉, 각 문자 또는 문자열의 인코딩 길이가 같습니다. 설명을 위해 16bit 를 인코딩으로, 처음 255 는 문자 인코딩으로, 나머지는 256,257 로 3 에서 설명하겠습니다. 따라서 문자열의 인코딩은 258 부터 시작됩니다.

인코딩의 전체 프로세스는 다음과 같습니다.

1. 인코딩 테이블을 초기화하고 시작 번호를 인코딩하며 현재 문자열을 공백으로 설정합니다.

2. 문자를 읽고, EOF 인 경우 현재 문자열을 출력하고, 종료하고, 그렇지 않은 경우 3 을 입력합니다.

3. 새로 읽은 문자와 현재 문자열을 새 문자열로 구성합니다. 새 문자열이 인코딩 테이블에 나타나면 2 로 진행합니다. 그렇지 않으면 4 로 진행합니다.

4. 인코딩 테이블에 신규 문자열을 추가하고, 번호를 지정하고, 현재 문자열의 길이를 n 으로 설정하고, 신규 문자열의 길이 접두어 인코딩 N- 1 을 입력하고, 현재 문자열을 현재 문자열의 접미어 1 으로 설정한 다음 2 를 실행합니다.

2. 디코딩 프로세스:

디코딩의 경우, 당신이 알아야 할 유일한 것은 코드의 길이이다. 인코딩 스트림에서 해당 비트의 길이를 읽을 때마다 코드가 형성되며, 이 코드를 통해 인코딩 테이블에서 해당 문자열을 찾아 출력할 수 있습니다. 해당 인코딩 테이블이 저장되지 않았기 때문에 디코딩할 때 인코딩 테이블을 함께 구성해야 합니다.

디코딩 프로세스는 다음과 같습니다.

1. 코드 테이블을 초기화하고 이전 코드를 null 로 설정합니다.

2. 코드를 선택합니다. 코드가 End 이면 End 입니다. 그렇지 않으면 3 까지 진행합니다.

3. 코드 표현의 문자열을 출력합니다. 이전 코드가 비어 있지 않으면 이전 코드의 문자열과 현재 문자열의 첫 번째 문자가 코드 테이블에 새 문자열로 추가되고 이전 코드가 현재 코드로 설정되고 2 가 실행됩니다.